// Copyright 2025 Google LLC.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Code generated file. DO NOT EDIT.

// Package displayvideo provides access to the Display & Video 360 API.
//
// For product documentation, see: https://developers.google.com/display-video/
//
// # Library status
//
// These client libraries are officially supported by Google. However, this
// library is considered complete and is in maintenance mode. This means
// that we will address critical bugs and security issues but will not add
// any new features.
//
// When possible, we recommend using our newer
// [Cloud Client Libraries for Go](https://pkg.go.dev/cloud.google.com/go)
// that are still actively being worked and iterated on.
//
// # Creating a client
//
// Usage example:
//
//	import "google.golang.org/api/displayvideo/v4"
//	...
//	ctx := context.Background()
//	displayvideoService, err := displayvideo.NewService(ctx)
//
// In this example, Google Application Default Credentials are used for
// authentication. For information on how to create and obtain Application
// Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
//
// # Other authentication options
//
// By default, all available scopes (see "Constants") are used to authenticate.
// To restrict scopes, use [google.golang.org/api/option.WithScopes]:
//
//	displayvideoService, err := displayvideo.NewService(ctx, option.WithScopes(displayvideo.DoubleclickbidmanagerScope))
//
// To use an API key for authentication (note: some APIs do not support API
// keys), use [google.golang.org/api/option.WithAPIKey]:
//
//	displayvideoService, err := displayvideo.NewService(ctx, option.WithAPIKey("AIza..."))
//
// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth
// flow, use [google.golang.org/api/option.WithTokenSource]:
//
//	config := &oauth2.Config{...}
//	// ...
//	token, err := config.Exchange(ctx, ...)
//	displayvideoService, err := displayvideo.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See [google.golang.org/api/option.ClientOption] for details on options.
package displayvideo // import "google.golang.org/api/displayvideo/v4"

import (
	"bytes"
	"context"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"log/slog"
	"net/http"
	"net/url"
	"strconv"
	"strings"

	"github.com/googleapis/gax-go/v2/internallog"
	googleapi "google.golang.org/api/googleapi"
	internal "google.golang.org/api/internal"
	gensupport "google.golang.org/api/internal/gensupport"
	option "google.golang.org/api/option"
	internaloption "google.golang.org/api/option/internaloption"
	htransport "google.golang.org/api/transport/http"
)

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

const apiId = "displayvideo:v4"
const apiName = "displayvideo"
const apiVersion = "v4"
const basePath = "https://displayvideo.googleapis.com/"
const basePathTemplate = "https://displayvideo.UNIVERSE_DOMAIN/"
const mtlsBasePath = "https://displayvideo.mtls.googleapis.com/"

// OAuth2 scopes used by this API.
const (
	// Create, see, edit, and permanently delete your Display & Video 360 entities
	// and reports
	DisplayVideoScope = "https://www.googleapis.com/auth/display-video"

	// Create, see, and edit Display & Video 360 Campaign entities and see billing
	// invoices
	DisplayVideoMediaplanningScope = "https://www.googleapis.com/auth/display-video-mediaplanning"

	// Private Service:
	// https://www.googleapis.com/auth/display-video-user-management
	DisplayVideoUserManagementScope = "https://www.googleapis.com/auth/display-video-user-management"

	// View and manage your reports in DoubleClick Bid Manager
	DoubleclickbidmanagerScope = "https://www.googleapis.com/auth/doubleclickbidmanager"
)

// NewService creates a new Service.
func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
	scopesOption := internaloption.WithDefaultScopes(
		"https://www.googleapis.com/auth/display-video",
		"https://www.googleapis.com/auth/display-video-mediaplanning",
		"https://www.googleapis.com/auth/display-video-user-management",
		"https://www.googleapis.com/auth/doubleclickbidmanager",
	)
	// NOTE: prepend, so we don't override user-specified scopes.
	opts = append([]option.ClientOption{scopesOption}, opts...)
	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
	opts = append(opts, internaloption.WithDefaultEndpointTemplate(basePathTemplate))
	opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath))
	opts = append(opts, internaloption.EnableNewAuthLibrary())
	client, endpoint, err := htransport.NewClient(ctx, opts...)
	if err != nil {
		return nil, err
	}
	s := &Service{client: client, BasePath: basePath, logger: internaloption.GetLogger(opts)}
	s.Advertisers = NewAdvertisersService(s)
	s.CombinedAudiences = NewCombinedAudiencesService(s)
	s.CustomBiddingAlgorithms = NewCustomBiddingAlgorithmsService(s)
	s.CustomLists = NewCustomListsService(s)
	s.FirstPartyAndPartnerAudiences = NewFirstPartyAndPartnerAudiencesService(s)
	s.FloodlightGroups = NewFloodlightGroupsService(s)
	s.GoogleAudiences = NewGoogleAudiencesService(s)
	s.GuaranteedOrders = NewGuaranteedOrdersService(s)
	s.InventorySourceGroups = NewInventorySourceGroupsService(s)
	s.InventorySources = NewInventorySourcesService(s)
	s.Media = NewMediaService(s)
	s.Partners = NewPartnersService(s)
	s.Sdfdownloadtasks = NewSdfdownloadtasksService(s)
	s.Sdfuploadtasks = NewSdfuploadtasksService(s)
	s.TargetingTypes = NewTargetingTypesService(s)
	s.Users = NewUsersService(s)
	if endpoint != "" {
		s.BasePath = endpoint
	}
	return s, nil
}

// New creates a new Service. It uses the provided http.Client for requests.
//
// Deprecated: please use NewService instead.
// To provide a custom HTTP client, use option.WithHTTPClient.
// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
func New(client *http.Client) (*Service, error) {
	if client == nil {
		return nil, errors.New("client is nil")
	}
	return NewService(context.TODO(), option.WithHTTPClient(client))
}

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

	Advertisers *AdvertisersService

	CombinedAudiences *CombinedAudiencesService

	CustomBiddingAlgorithms *CustomBiddingAlgorithmsService

	CustomLists *CustomListsService

	FirstPartyAndPartnerAudiences *FirstPartyAndPartnerAudiencesService

	FloodlightGroups *FloodlightGroupsService

	GoogleAudiences *GoogleAudiencesService

	GuaranteedOrders *GuaranteedOrdersService

	InventorySourceGroups *InventorySourceGroupsService

	InventorySources *InventorySourcesService

	Media *MediaService

	Partners *PartnersService

	Sdfdownloadtasks *SdfdownloadtasksService

	Sdfuploadtasks *SdfuploadtasksService

	TargetingTypes *TargetingTypesService

	Users *UsersService
}

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

func NewAdvertisersService(s *Service) *AdvertisersService {
	rs := &AdvertisersService{s: s}
	rs.AdGroupAds = NewAdvertisersAdGroupAdsService(s)
	rs.AdGroups = NewAdvertisersAdGroupsService(s)
	rs.Assets = NewAdvertisersAssetsService(s)
	rs.Campaigns = NewAdvertisersCampaignsService(s)
	rs.Channels = NewAdvertisersChannelsService(s)
	rs.Creatives = NewAdvertisersCreativesService(s)
	rs.InsertionOrders = NewAdvertisersInsertionOrdersService(s)
	rs.Invoices = NewAdvertisersInvoicesService(s)
	rs.LineItems = NewAdvertisersLineItemsService(s)
	rs.LocationLists = NewAdvertisersLocationListsService(s)
	rs.NegativeKeywordLists = NewAdvertisersNegativeKeywordListsService(s)
	rs.TargetingTypes = NewAdvertisersTargetingTypesService(s)
	return rs
}

type AdvertisersService struct {
	s *Service

	AdGroupAds *AdvertisersAdGroupAdsService

	AdGroups *AdvertisersAdGroupsService

	Assets *AdvertisersAssetsService

	Campaigns *AdvertisersCampaignsService

	Channels *AdvertisersChannelsService

	Creatives *AdvertisersCreativesService

	InsertionOrders *AdvertisersInsertionOrdersService

	Invoices *AdvertisersInvoicesService

	LineItems *AdvertisersLineItemsService

	LocationLists *AdvertisersLocationListsService

	NegativeKeywordLists *AdvertisersNegativeKeywordListsService

	TargetingTypes *AdvertisersTargetingTypesService
}

func NewAdvertisersAdGroupAdsService(s *Service) *AdvertisersAdGroupAdsService {
	rs := &AdvertisersAdGroupAdsService{s: s}
	return rs
}

type AdvertisersAdGroupAdsService struct {
	s *Service
}

func NewAdvertisersAdGroupsService(s *Service) *AdvertisersAdGroupsService {
	rs := &AdvertisersAdGroupsService{s: s}
	rs.TargetingTypes = NewAdvertisersAdGroupsTargetingTypesService(s)
	return rs
}

type AdvertisersAdGroupsService struct {
	s *Service

	TargetingTypes *AdvertisersAdGroupsTargetingTypesService
}

func NewAdvertisersAdGroupsTargetingTypesService(s *Service) *AdvertisersAdGroupsTargetingTypesService {
	rs := &AdvertisersAdGroupsTargetingTypesService{s: s}
	rs.AssignedTargetingOptions = NewAdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsService(s)
	return rs
}

type AdvertisersAdGroupsTargetingTypesService struct {
	s *Service

	AssignedTargetingOptions *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsService
}

func NewAdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsService(s *Service) *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsService {
	rs := &AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsService{s: s}
	return rs
}

type AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsService struct {
	s *Service
}

func NewAdvertisersAssetsService(s *Service) *AdvertisersAssetsService {
	rs := &AdvertisersAssetsService{s: s}
	return rs
}

type AdvertisersAssetsService struct {
	s *Service
}

func NewAdvertisersCampaignsService(s *Service) *AdvertisersCampaignsService {
	rs := &AdvertisersCampaignsService{s: s}
	return rs
}

type AdvertisersCampaignsService struct {
	s *Service
}

func NewAdvertisersChannelsService(s *Service) *AdvertisersChannelsService {
	rs := &AdvertisersChannelsService{s: s}
	rs.Sites = NewAdvertisersChannelsSitesService(s)
	return rs
}

type AdvertisersChannelsService struct {
	s *Service

	Sites *AdvertisersChannelsSitesService
}

func NewAdvertisersChannelsSitesService(s *Service) *AdvertisersChannelsSitesService {
	rs := &AdvertisersChannelsSitesService{s: s}
	return rs
}

type AdvertisersChannelsSitesService struct {
	s *Service
}

func NewAdvertisersCreativesService(s *Service) *AdvertisersCreativesService {
	rs := &AdvertisersCreativesService{s: s}
	return rs
}

type AdvertisersCreativesService struct {
	s *Service
}

func NewAdvertisersInsertionOrdersService(s *Service) *AdvertisersInsertionOrdersService {
	rs := &AdvertisersInsertionOrdersService{s: s}
	return rs
}

type AdvertisersInsertionOrdersService struct {
	s *Service
}

func NewAdvertisersInvoicesService(s *Service) *AdvertisersInvoicesService {
	rs := &AdvertisersInvoicesService{s: s}
	return rs
}

type AdvertisersInvoicesService struct {
	s *Service
}

func NewAdvertisersLineItemsService(s *Service) *AdvertisersLineItemsService {
	rs := &AdvertisersLineItemsService{s: s}
	rs.TargetingTypes = NewAdvertisersLineItemsTargetingTypesService(s)
	return rs
}

type AdvertisersLineItemsService struct {
	s *Service

	TargetingTypes *AdvertisersLineItemsTargetingTypesService
}

func NewAdvertisersLineItemsTargetingTypesService(s *Service) *AdvertisersLineItemsTargetingTypesService {
	rs := &AdvertisersLineItemsTargetingTypesService{s: s}
	rs.AssignedTargetingOptions = NewAdvertisersLineItemsTargetingTypesAssignedTargetingOptionsService(s)
	return rs
}

type AdvertisersLineItemsTargetingTypesService struct {
	s *Service

	AssignedTargetingOptions *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsService
}

func NewAdvertisersLineItemsTargetingTypesAssignedTargetingOptionsService(s *Service) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsService {
	rs := &AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsService{s: s}
	return rs
}

type AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsService struct {
	s *Service
}

func NewAdvertisersLocationListsService(s *Service) *AdvertisersLocationListsService {
	rs := &AdvertisersLocationListsService{s: s}
	rs.AssignedLocations = NewAdvertisersLocationListsAssignedLocationsService(s)
	return rs
}

type AdvertisersLocationListsService struct {
	s *Service

	AssignedLocations *AdvertisersLocationListsAssignedLocationsService
}

func NewAdvertisersLocationListsAssignedLocationsService(s *Service) *AdvertisersLocationListsAssignedLocationsService {
	rs := &AdvertisersLocationListsAssignedLocationsService{s: s}
	return rs
}

type AdvertisersLocationListsAssignedLocationsService struct {
	s *Service
}

func NewAdvertisersNegativeKeywordListsService(s *Service) *AdvertisersNegativeKeywordListsService {
	rs := &AdvertisersNegativeKeywordListsService{s: s}
	rs.NegativeKeywords = NewAdvertisersNegativeKeywordListsNegativeKeywordsService(s)
	return rs
}

type AdvertisersNegativeKeywordListsService struct {
	s *Service

	NegativeKeywords *AdvertisersNegativeKeywordListsNegativeKeywordsService
}

func NewAdvertisersNegativeKeywordListsNegativeKeywordsService(s *Service) *AdvertisersNegativeKeywordListsNegativeKeywordsService {
	rs := &AdvertisersNegativeKeywordListsNegativeKeywordsService{s: s}
	return rs
}

type AdvertisersNegativeKeywordListsNegativeKeywordsService struct {
	s *Service
}

func NewAdvertisersTargetingTypesService(s *Service) *AdvertisersTargetingTypesService {
	rs := &AdvertisersTargetingTypesService{s: s}
	rs.AssignedTargetingOptions = NewAdvertisersTargetingTypesAssignedTargetingOptionsService(s)
	return rs
}

type AdvertisersTargetingTypesService struct {
	s *Service

	AssignedTargetingOptions *AdvertisersTargetingTypesAssignedTargetingOptionsService
}

func NewAdvertisersTargetingTypesAssignedTargetingOptionsService(s *Service) *AdvertisersTargetingTypesAssignedTargetingOptionsService {
	rs := &AdvertisersTargetingTypesAssignedTargetingOptionsService{s: s}
	return rs
}

type AdvertisersTargetingTypesAssignedTargetingOptionsService struct {
	s *Service
}

func NewCombinedAudiencesService(s *Service) *CombinedAudiencesService {
	rs := &CombinedAudiencesService{s: s}
	return rs
}

type CombinedAudiencesService struct {
	s *Service
}

func NewCustomBiddingAlgorithmsService(s *Service) *CustomBiddingAlgorithmsService {
	rs := &CustomBiddingAlgorithmsService{s: s}
	rs.Rules = NewCustomBiddingAlgorithmsRulesService(s)
	rs.Scripts = NewCustomBiddingAlgorithmsScriptsService(s)
	return rs
}

type CustomBiddingAlgorithmsService struct {
	s *Service

	Rules *CustomBiddingAlgorithmsRulesService

	Scripts *CustomBiddingAlgorithmsScriptsService
}

func NewCustomBiddingAlgorithmsRulesService(s *Service) *CustomBiddingAlgorithmsRulesService {
	rs := &CustomBiddingAlgorithmsRulesService{s: s}
	return rs
}

type CustomBiddingAlgorithmsRulesService struct {
	s *Service
}

func NewCustomBiddingAlgorithmsScriptsService(s *Service) *CustomBiddingAlgorithmsScriptsService {
	rs := &CustomBiddingAlgorithmsScriptsService{s: s}
	return rs
}

type CustomBiddingAlgorithmsScriptsService struct {
	s *Service
}

func NewCustomListsService(s *Service) *CustomListsService {
	rs := &CustomListsService{s: s}
	return rs
}

type CustomListsService struct {
	s *Service
}

func NewFirstPartyAndPartnerAudiencesService(s *Service) *FirstPartyAndPartnerAudiencesService {
	rs := &FirstPartyAndPartnerAudiencesService{s: s}
	return rs
}

type FirstPartyAndPartnerAudiencesService struct {
	s *Service
}

func NewFloodlightGroupsService(s *Service) *FloodlightGroupsService {
	rs := &FloodlightGroupsService{s: s}
	rs.FloodlightActivities = NewFloodlightGroupsFloodlightActivitiesService(s)
	return rs
}

type FloodlightGroupsService struct {
	s *Service

	FloodlightActivities *FloodlightGroupsFloodlightActivitiesService
}

func NewFloodlightGroupsFloodlightActivitiesService(s *Service) *FloodlightGroupsFloodlightActivitiesService {
	rs := &FloodlightGroupsFloodlightActivitiesService{s: s}
	return rs
}

type FloodlightGroupsFloodlightActivitiesService struct {
	s *Service
}

func NewGoogleAudiencesService(s *Service) *GoogleAudiencesService {
	rs := &GoogleAudiencesService{s: s}
	return rs
}

type GoogleAudiencesService struct {
	s *Service
}

func NewGuaranteedOrdersService(s *Service) *GuaranteedOrdersService {
	rs := &GuaranteedOrdersService{s: s}
	return rs
}

type GuaranteedOrdersService struct {
	s *Service
}

func NewInventorySourceGroupsService(s *Service) *InventorySourceGroupsService {
	rs := &InventorySourceGroupsService{s: s}
	rs.AssignedInventorySources = NewInventorySourceGroupsAssignedInventorySourcesService(s)
	return rs
}

type InventorySourceGroupsService struct {
	s *Service

	AssignedInventorySources *InventorySourceGroupsAssignedInventorySourcesService
}

func NewInventorySourceGroupsAssignedInventorySourcesService(s *Service) *InventorySourceGroupsAssignedInventorySourcesService {
	rs := &InventorySourceGroupsAssignedInventorySourcesService{s: s}
	return rs
}

type InventorySourceGroupsAssignedInventorySourcesService struct {
	s *Service
}

func NewInventorySourcesService(s *Service) *InventorySourcesService {
	rs := &InventorySourcesService{s: s}
	return rs
}

type InventorySourcesService struct {
	s *Service
}

func NewMediaService(s *Service) *MediaService {
	rs := &MediaService{s: s}
	return rs
}

type MediaService struct {
	s *Service
}

func NewPartnersService(s *Service) *PartnersService {
	rs := &PartnersService{s: s}
	rs.Channels = NewPartnersChannelsService(s)
	rs.TargetingTypes = NewPartnersTargetingTypesService(s)
	return rs
}

type PartnersService struct {
	s *Service

	Channels *PartnersChannelsService

	TargetingTypes *PartnersTargetingTypesService
}

func NewPartnersChannelsService(s *Service) *PartnersChannelsService {
	rs := &PartnersChannelsService{s: s}
	rs.Sites = NewPartnersChannelsSitesService(s)
	return rs
}

type PartnersChannelsService struct {
	s *Service

	Sites *PartnersChannelsSitesService
}

func NewPartnersChannelsSitesService(s *Service) *PartnersChannelsSitesService {
	rs := &PartnersChannelsSitesService{s: s}
	return rs
}

type PartnersChannelsSitesService struct {
	s *Service
}

func NewPartnersTargetingTypesService(s *Service) *PartnersTargetingTypesService {
	rs := &PartnersTargetingTypesService{s: s}
	rs.AssignedTargetingOptions = NewPartnersTargetingTypesAssignedTargetingOptionsService(s)
	return rs
}

type PartnersTargetingTypesService struct {
	s *Service

	AssignedTargetingOptions *PartnersTargetingTypesAssignedTargetingOptionsService
}

func NewPartnersTargetingTypesAssignedTargetingOptionsService(s *Service) *PartnersTargetingTypesAssignedTargetingOptionsService {
	rs := &PartnersTargetingTypesAssignedTargetingOptionsService{s: s}
	return rs
}

type PartnersTargetingTypesAssignedTargetingOptionsService struct {
	s *Service
}

func NewSdfdownloadtasksService(s *Service) *SdfdownloadtasksService {
	rs := &SdfdownloadtasksService{s: s}
	rs.Operations = NewSdfdownloadtasksOperationsService(s)
	return rs
}

type SdfdownloadtasksService struct {
	s *Service

	Operations *SdfdownloadtasksOperationsService
}

func NewSdfdownloadtasksOperationsService(s *Service) *SdfdownloadtasksOperationsService {
	rs := &SdfdownloadtasksOperationsService{s: s}
	return rs
}

type SdfdownloadtasksOperationsService struct {
	s *Service
}

func NewSdfuploadtasksService(s *Service) *SdfuploadtasksService {
	rs := &SdfuploadtasksService{s: s}
	rs.Operations = NewSdfuploadtasksOperationsService(s)
	return rs
}

type SdfuploadtasksService struct {
	s *Service

	Operations *SdfuploadtasksOperationsService
}

func NewSdfuploadtasksOperationsService(s *Service) *SdfuploadtasksOperationsService {
	rs := &SdfuploadtasksOperationsService{s: s}
	return rs
}

type SdfuploadtasksOperationsService struct {
	s *Service
}

func NewTargetingTypesService(s *Service) *TargetingTypesService {
	rs := &TargetingTypesService{s: s}
	rs.TargetingOptions = NewTargetingTypesTargetingOptionsService(s)
	return rs
}

type TargetingTypesService struct {
	s *Service

	TargetingOptions *TargetingTypesTargetingOptionsService
}

func NewTargetingTypesTargetingOptionsService(s *Service) *TargetingTypesTargetingOptionsService {
	rs := &TargetingTypesTargetingOptionsService{s: s}
	return rs
}

type TargetingTypesTargetingOptionsService struct {
	s *Service
}

func NewUsersService(s *Service) *UsersService {
	rs := &UsersService{s: s}
	return rs
}

type UsersService struct {
	s *Service
}

// ActiveViewVideoViewabilityMetricConfig: Configuration for custom Active View
// video viewability metrics.
type ActiveViewVideoViewabilityMetricConfig struct {
	// DisplayName: Required. The display name of the custom metric.
	DisplayName string `json:"displayName,omitempty"`
	// MinimumDuration: The minimum visible video duration required (in seconds) in
	// order for an impression to be recorded. You must specify minimum_duration,
	// minimum_quartile or both. If both are specified, an impression meets the
	// metric criteria if either requirement is met (whichever happens first).
	//
	// Possible values:
	//   "VIDEO_DURATION_UNSPECIFIED" - Value is not specified or is unknown in
	// this version.
	//   "VIDEO_DURATION_SECONDS_NONE" - No duration value.
	//   "VIDEO_DURATION_SECONDS_0" - 0 seconds.
	//   "VIDEO_DURATION_SECONDS_1" - 1 second.
	//   "VIDEO_DURATION_SECONDS_2" - 2 seconds.
	//   "VIDEO_DURATION_SECONDS_3" - 3 seconds.
	//   "VIDEO_DURATION_SECONDS_4" - 4 seconds.
	//   "VIDEO_DURATION_SECONDS_5" - 5 seconds.
	//   "VIDEO_DURATION_SECONDS_6" - 6 seconds.
	//   "VIDEO_DURATION_SECONDS_7" - 7 seconds.
	//   "VIDEO_DURATION_SECONDS_8" - 8 seconds.
	//   "VIDEO_DURATION_SECONDS_9" - 9 seconds.
	//   "VIDEO_DURATION_SECONDS_10" - 10 seconds.
	//   "VIDEO_DURATION_SECONDS_11" - 11 seconds.
	//   "VIDEO_DURATION_SECONDS_12" - 12 seconds.
	//   "VIDEO_DURATION_SECONDS_13" - 13 seconds.
	//   "VIDEO_DURATION_SECONDS_14" - 14 seconds.
	//   "VIDEO_DURATION_SECONDS_15" - 15 seconds.
	//   "VIDEO_DURATION_SECONDS_30" - 30 seconds.
	//   "VIDEO_DURATION_SECONDS_45" - 45 seconds.
	//   "VIDEO_DURATION_SECONDS_60" - 60 seconds.
	MinimumDuration string `json:"minimumDuration,omitempty"`
	// MinimumQuartile: The minimum visible video duration required, based on the
	// video quartiles, in order for an impression to be recorded. You must specify
	// minimum_duration, minimum_quartile or both. If both are specified, an
	// impression meets the metric criteria if either requirement is met (whichever
	// happens first).
	//
	// Possible values:
	//   "VIDEO_DURATION_QUARTILE_UNSPECIFIED" - Value is not specified or is
	// unknown in this version.
	//   "VIDEO_DURATION_QUARTILE_NONE" - No quartile value.
	//   "VIDEO_DURATION_QUARTILE_FIRST" - First quartile.
	//   "VIDEO_DURATION_QUARTILE_SECOND" - Second quartile (midpoint).
	//   "VIDEO_DURATION_QUARTILE_THIRD" - Third quartile.
	//   "VIDEO_DURATION_QUARTILE_FOURTH" - Fourth quartile (completion).
	MinimumQuartile string `json:"minimumQuartile,omitempty"`
	// MinimumViewability: Required. The minimum percentage of the video ad's
	// pixels visible on the screen in order for an impression to be recorded.
	//
	// Possible values:
	//   "VIEWABILITY_PERCENT_UNSPECIFIED" - Value is not specified or is unknown
	// in this version.
	//   "VIEWABILITY_PERCENT_0" - 0% viewable.
	//   "VIEWABILITY_PERCENT_25" - 25% viewable.
	//   "VIEWABILITY_PERCENT_50" - 50% viewable.
	//   "VIEWABILITY_PERCENT_75" - 75% viewable.
	//   "VIEWABILITY_PERCENT_100" - 100% viewable.
	MinimumViewability string `json:"minimumViewability,omitempty"`
	// MinimumVolume: Required. The minimum percentage of the video ad's volume
	// required in order for an impression to be recorded.
	//
	// Possible values:
	//   "VIDEO_VOLUME_PERCENT_UNSPECIFIED" - Value is not specified or is unknown
	// in this version.
	//   "VIDEO_VOLUME_PERCENT_0" - 0% volume.
	//   "VIDEO_VOLUME_PERCENT_10" - 10% volume.
	MinimumVolume string `json:"minimumVolume,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ActiveViewVideoViewabilityMetricConfig) MarshalJSON() ([]byte, error) {
	type NoMethod ActiveViewVideoViewabilityMetricConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AdGroup: A single ad group associated with a line item.
type AdGroup struct {
	// AdGroupFormat: The format of the ads in the ad group.
	//
	// Possible values:
	//   "AD_GROUP_FORMAT_UNSPECIFIED" - Format value is not specified or is
	// unknown in this version.
	//   "AD_GROUP_FORMAT_IN_STREAM" - In-stream ads.
	//   "AD_GROUP_FORMAT_VIDEO_DISCOVERY" - In-feed ads.
	//   "AD_GROUP_FORMAT_BUMPER" - Bumper ads.
	//   "AD_GROUP_FORMAT_NON_SKIPPABLE_IN_STREAM" - Non-skippable in-stream ads.
	//   "AD_GROUP_FORMAT_AUDIO" - Non-skippable in-stream audio ads.
	//   "AD_GROUP_FORMAT_RESPONSIVE" - Responsive ads.
	//   "AD_GROUP_FORMAT_REACH" - [Effective reach ad groups]
	// (https://support.google.com/displayvideo/answer/9173684), including
	// in-stream and bumper ads.
	//   "AD_GROUP_FORMAT_MASTHEAD" - Masthead Ad that is surfaced on the top slot
	// on the YouTube homepage.
	AdGroupFormat string `json:"adGroupFormat,omitempty"`
	// AdGroupId: The unique ID of the ad group. Assigned by the system.
	AdGroupId int64 `json:"adGroupId,omitempty,string"`
	// AdvertiserId: The unique ID of the advertiser the ad group belongs to.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// BidStrategy: The bidding strategy used by the ad group. Only the
	// youtubeAndPartnersBid field can be used in the bidding strategy.
	BidStrategy *BiddingStrategy `json:"bidStrategy,omitempty"`
	// DisplayName: The display name of the ad group. Must be UTF-8 encoded with a
	// maximum size of 255 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// EntityStatus: Controls whether or not the ad group can spend its budget and
	// bid on inventory. If the ad group's parent line item is not active, the ad
	// group can't spend its budget even if its own status is
	// `ENTITY_STATUS_ACTIVE`.
	//
	// Possible values:
	//   "ENTITY_STATUS_UNSPECIFIED" - Default value when status is not specified
	// or is unknown in this version.
	//   "ENTITY_STATUS_ACTIVE" - The entity is enabled to bid and spend budget.
	//   "ENTITY_STATUS_ARCHIVED" - The entity is archived. Bidding and budget
	// spending are disabled. An entity can be deleted after archived. Deleted
	// entities cannot be retrieved.
	//   "ENTITY_STATUS_DRAFT" - The entity is under draft. Bidding and budget
	// spending are disabled.
	//   "ENTITY_STATUS_PAUSED" - Bidding and budget spending are paused for the
	// entity.
	//   "ENTITY_STATUS_SCHEDULED_FOR_DELETION" - The entity is scheduled for
	// deletion.
	EntityStatus string `json:"entityStatus,omitempty"`
	// LineItemId: The unique ID of the line item that the ad group belongs to.
	LineItemId int64 `json:"lineItemId,omitempty,string"`
	// Name: The resource name of the ad group.
	Name string `json:"name,omitempty"`
	// ProductFeedData: The settings of the product feed in this ad group.
	ProductFeedData *ProductFeedData `json:"productFeedData,omitempty"`
	// TargetingExpansion: The optimized targeting
	// (//support.google.com/displayvideo/answer/12060859) settings of the ad
	// group.
	TargetingExpansion *TargetingExpansionConfig `json:"targetingExpansion,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdGroupFormat") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdGroupFormat") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AdGroup) MarshalJSON() ([]byte, error) {
	type NoMethod AdGroup
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AdGroupAd: A single ad associated with an ad group.
type AdGroupAd struct {
	// AdGroupAdId: The unique ID of the ad. Assigned by the system.
	AdGroupAdId int64 `json:"adGroupAdId,omitempty,string"`
	// AdGroupId: The unique ID of the ad group that the ad belongs to.
	AdGroupId int64 `json:"adGroupId,omitempty,string"`
	// AdUrls: List of URLs used by the ad.
	AdUrls []*AdUrl `json:"adUrls,omitempty"`
	// AdvertiserId: The unique ID of the advertiser the ad belongs to.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// AudioAd: Details of an audio ad
	// (//support.google.com/displayvideo/answer/6274216) used for reach marketing
	// objectives.
	AudioAd *AudioAd `json:"audioAd,omitempty"`
	// BumperAd: Details of a non-skippable short video ad
	// (//support.google.com/displayvideo/answer/6274216), equal to or less than 6
	// seconds, used for reach.
	BumperAd *BumperAd `json:"bumperAd,omitempty"`
	// DisplayName: The display name of the ad. Must be UTF-8 encoded with a
	// maximum size of 255 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// DisplayVideoSourceAd: Details of an ad sourced from a Display & Video 360
	// creative.
	DisplayVideoSourceAd *DisplayVideoSourceAd `json:"displayVideoSourceAd,omitempty"`
	// EntityStatus: The entity status of the ad.
	//
	// Possible values:
	//   "ENTITY_STATUS_UNSPECIFIED" - Default value when status is not specified
	// or is unknown in this version.
	//   "ENTITY_STATUS_ACTIVE" - The entity is enabled to bid and spend budget.
	//   "ENTITY_STATUS_ARCHIVED" - The entity is archived. Bidding and budget
	// spending are disabled. An entity can be deleted after archived. Deleted
	// entities cannot be retrieved.
	//   "ENTITY_STATUS_DRAFT" - The entity is under draft. Bidding and budget
	// spending are disabled.
	//   "ENTITY_STATUS_PAUSED" - Bidding and budget spending are paused for the
	// entity.
	//   "ENTITY_STATUS_SCHEDULED_FOR_DELETION" - The entity is scheduled for
	// deletion.
	EntityStatus string `json:"entityStatus,omitempty"`
	// InStreamAd: Details of an in-stream ad skippable after 5 seconds
	// (//support.google.com/displayvideo/answer/6274216), used for brand awareness
	// or reach marketing objectives.
	InStreamAd *InStreamAd `json:"inStreamAd,omitempty"`
	// MastheadAd: Details of an ad served on the YouTube Home feed
	// (//support.google.com/google-ads/answer/9709826).
	MastheadAd *MastheadAd `json:"mastheadAd,omitempty"`
	// Name: The resource name of the ad.
	Name string `json:"name,omitempty"`
	// NonSkippableAd: Details of a non-skippable short in-stream video ad
	// (//support.google.com/displayvideo/answer/6274216), between 6 and 15
	// seconds, used for reach marketing objectives.
	NonSkippableAd *NonSkippableAd `json:"nonSkippableAd,omitempty"`
	// VideoDiscoverAd: Details of an ad promoting a video
	// (//support.google.com/displayvideo/answer/6274216) that shows in places of
	// discovery.
	VideoDiscoverAd *VideoDiscoveryAd `json:"videoDiscoverAd,omitempty"`
	// VideoPerformanceAd: Details of an ad used in a video action campaign
	// (//support.google.com/google-ads/answer/10147229) to drive actions to the
	// business, service or product.
	VideoPerformanceAd *VideoPerformanceAd `json:"videoPerformanceAd,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdGroupAdId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdGroupAdId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AdGroupAd) MarshalJSON() ([]byte, error) {
	type NoMethod AdGroupAd
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AdGroupAssignedTargetingOption: Wrapper object associating an
// AssignedTargetingOption resource and the ad group it is assigned to.
type AdGroupAssignedTargetingOption struct {
	// AdGroupId: The ID of the ad group the assigned targeting option is assigned
	// to.
	AdGroupId int64 `json:"adGroupId,omitempty,string"`
	// AssignedTargetingOption: The assigned targeting option resource.
	AssignedTargetingOption *AssignedTargetingOption `json:"assignedTargetingOption,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdGroupId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdGroupId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AdGroupAssignedTargetingOption) MarshalJSON() ([]byte, error) {
	type NoMethod AdGroupAssignedTargetingOption
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AdUrl: Additional URLs related to the ad, including beacons.
type AdUrl struct {
	// Type: The type of the Ad URL.
	//
	// Possible values:
	//   "AD_URL_TYPE_UNSPECIFIED" - Unknown or unspecified.
	//   "AD_URL_TYPE_BEACON_IMPRESSION" - A 1x1 tracking pixel to ping when an
	// impression of a creative is delivered.
	//   "AD_URL_TYPE_BEACON_EXPANDABLE_DCM_IMPRESSION" - Expandable DCM impression
	// beacon. At serving time, it is expanded to several beacons.
	//   "AD_URL_TYPE_BEACON_CLICK" - Tracking URL to ping when the click event is
	// triggered.
	//   "AD_URL_TYPE_BEACON_SKIP" - Tracking URL to ping when the skip event is
	// triggered.
	Type string `json:"type,omitempty"`
	// Url: The URL string value.
	Url string `json:"url,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Type") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Type") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AdUrl) MarshalJSON() ([]byte, error) {
	type NoMethod AdUrl
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Adloox: Details of Scope3 (previously known as Adloox) brand safety
// settings.
type Adloox struct {
	// AdultExplicitSexualContent: Optional. Adult and Explicit Sexual Content GARM
	// (https://wfanet.org/leadership/garm/about-garm) risk ranges to exclude.
	//
	// Possible values:
	//   "GARM_RISK_EXCLUSION_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any GARM risk exclusion option.
	//   "GARM_RISK_EXCLUSION_FLOOR" - Exclude floor risk.
	//   "GARM_RISK_EXCLUSION_HIGH" - Exclude high and floor risk.
	//   "GARM_RISK_EXCLUSION_MEDIUM" - Exclude medium, high, and floor risk.
	//   "GARM_RISK_EXCLUSION_LOW" - Exclude all levels of risk (low, medium, high
	// and floor).
	AdultExplicitSexualContent string `json:"adultExplicitSexualContent,omitempty"`
	// ArmsAmmunitionContent: Optional. Arms and Ammunition Content GARM
	// (https://wfanet.org/leadership/garm/about-garm) risk ranges to exclude.
	//
	// Possible values:
	//   "GARM_RISK_EXCLUSION_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any GARM risk exclusion option.
	//   "GARM_RISK_EXCLUSION_FLOOR" - Exclude floor risk.
	//   "GARM_RISK_EXCLUSION_HIGH" - Exclude high and floor risk.
	//   "GARM_RISK_EXCLUSION_MEDIUM" - Exclude medium, high, and floor risk.
	//   "GARM_RISK_EXCLUSION_LOW" - Exclude all levels of risk (low, medium, high
	// and floor).
	ArmsAmmunitionContent string `json:"armsAmmunitionContent,omitempty"`
	// CrimeHarmfulActsIndividualsSocietyHumanRightsViolationsContent: Optional.
	// Crime and Harmful Acts Content GARM
	// (https://wfanet.org/leadership/garm/about-garm) risk ranges to exclude.
	//
	// Possible values:
	//   "GARM_RISK_EXCLUSION_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any GARM risk exclusion option.
	//   "GARM_RISK_EXCLUSION_FLOOR" - Exclude floor risk.
	//   "GARM_RISK_EXCLUSION_HIGH" - Exclude high and floor risk.
	//   "GARM_RISK_EXCLUSION_MEDIUM" - Exclude medium, high, and floor risk.
	//   "GARM_RISK_EXCLUSION_LOW" - Exclude all levels of risk (low, medium, high
	// and floor).
	CrimeHarmfulActsIndividualsSocietyHumanRightsViolationsContent string `json:"crimeHarmfulActsIndividualsSocietyHumanRightsViolationsContent,omitempty"`
	// DeathInjuryMilitaryConflictContent: Optional. Death, Injury, or Military
	// Conflict Content GARM (https://wfanet.org/leadership/garm/about-garm) risk
	// ranges to exclude.
	//
	// Possible values:
	//   "GARM_RISK_EXCLUSION_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any GARM risk exclusion option.
	//   "GARM_RISK_EXCLUSION_FLOOR" - Exclude floor risk.
	//   "GARM_RISK_EXCLUSION_HIGH" - Exclude high and floor risk.
	//   "GARM_RISK_EXCLUSION_MEDIUM" - Exclude medium, high, and floor risk.
	//   "GARM_RISK_EXCLUSION_LOW" - Exclude all levels of risk (low, medium, high
	// and floor).
	DeathInjuryMilitaryConflictContent string `json:"deathInjuryMilitaryConflictContent,omitempty"`
	// DebatedSensitiveSocialIssueContent: Optional. Debated Sensitive Social Issue
	// Content GARM (https://wfanet.org/leadership/garm/about-garm) risk ranges to
	// exclude.
	//
	// Possible values:
	//   "GARM_RISK_EXCLUSION_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any GARM risk exclusion option.
	//   "GARM_RISK_EXCLUSION_FLOOR" - Exclude floor risk.
	//   "GARM_RISK_EXCLUSION_HIGH" - Exclude high and floor risk.
	//   "GARM_RISK_EXCLUSION_MEDIUM" - Exclude medium, high, and floor risk.
	//   "GARM_RISK_EXCLUSION_LOW" - Exclude all levels of risk (low, medium, high
	// and floor).
	DebatedSensitiveSocialIssueContent string `json:"debatedSensitiveSocialIssueContent,omitempty"`
	// DisplayIabViewability: Optional. IAB viewability threshold for display ads.
	//
	// Possible values:
	//   "DISPLAY_IAB_VIEWABILITY_UNSPECIFIED" - Default value when not specified
	// or is unknown in this version.
	//   "DISPLAY_IAB_VIEWABILITY_10" - 10%+ in view (IAB display viewability
	// standard).
	//   "DISPLAY_IAB_VIEWABILITY_20" - 20%+ in view (IAB display viewability
	// standard).
	//   "DISPLAY_IAB_VIEWABILITY_35" - 35%+ in view (IAB display viewability
	// standard).
	//   "DISPLAY_IAB_VIEWABILITY_50" - 50%+ in view (IAB display viewability
	// standard).
	//   "DISPLAY_IAB_VIEWABILITY_75" - 75%+ in view (IAB display viewability
	// standard).
	DisplayIabViewability string `json:"displayIabViewability,omitempty"`
	// ExcludedAdlooxCategories: Scope3 categories to exclude.
	//
	// Possible values:
	//   "ADLOOX_UNSPECIFIED" - Default value when a Scope3 category is not
	// specified or is unknown in this version.
	//   "ADULT_CONTENT_HARD" - Adult content (hard).
	//   "ADULT_CONTENT_SOFT" - Adult content (soft).
	//   "ILLEGAL_CONTENT" - Illegal content.
	//   "BORDERLINE_CONTENT" - Borderline content.
	//   "DISCRIMINATORY_CONTENT" - Discriminatory content.
	//   "VIOLENT_CONTENT_WEAPONS" - Violent content & weapons.
	//   "LOW_VIEWABILITY_DOMAINS" - Low viewability domains.
	//   "FRAUD" - Fraud.
	ExcludedAdlooxCategories []string `json:"excludedAdlooxCategories,omitempty"`
	// ExcludedFraudIvtMfaCategories: Optional. Scope3's fraud IVT MFA categories
	// to exclude.
	//
	// Possible values:
	//   "FRAUD_IVT_MFA_CATEGORY_UNSPECIFIED" - Default value when a Scope3 Fraud,
	// IVT, MFA category is not specified or is unknown in this version.
	//   "FRAUD_IVT_MFA" - FRAUD, IVT, MFA.
	ExcludedFraudIvtMfaCategories []string `json:"excludedFraudIvtMfaCategories,omitempty"`
	// HateSpeechActsAggressionContent: Optional. Hate Speech and Acts of
	// Aggression Content GARM (https://wfanet.org/leadership/garm/about-garm) risk
	// ranges to exclude.
	//
	// Possible values:
	//   "GARM_RISK_EXCLUSION_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any GARM risk exclusion option.
	//   "GARM_RISK_EXCLUSION_FLOOR" - Exclude floor risk.
	//   "GARM_RISK_EXCLUSION_HIGH" - Exclude high and floor risk.
	//   "GARM_RISK_EXCLUSION_MEDIUM" - Exclude medium, high, and floor risk.
	//   "GARM_RISK_EXCLUSION_LOW" - Exclude all levels of risk (low, medium, high
	// and floor).
	HateSpeechActsAggressionContent string `json:"hateSpeechActsAggressionContent,omitempty"`
	// IllegalDrugsTobaccoEcigarettesVapingAlcoholContent: Optional. Illegal
	// Drugs/Alcohol Content GARM (https://wfanet.org/leadership/garm/about-garm)
	// risk ranges to exclude.
	//
	// Possible values:
	//   "GARM_RISK_EXCLUSION_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any GARM risk exclusion option.
	//   "GARM_RISK_EXCLUSION_FLOOR" - Exclude floor risk.
	//   "GARM_RISK_EXCLUSION_HIGH" - Exclude high and floor risk.
	//   "GARM_RISK_EXCLUSION_MEDIUM" - Exclude medium, high, and floor risk.
	//   "GARM_RISK_EXCLUSION_LOW" - Exclude all levels of risk (low, medium, high
	// and floor).
	IllegalDrugsTobaccoEcigarettesVapingAlcoholContent string `json:"illegalDrugsTobaccoEcigarettesVapingAlcoholContent,omitempty"`
	// MisinformationContent: Optional. Misinformation Content GARM
	// (https://wfanet.org/leadership/garm/about-garm) risk ranges to exclude.
	//
	// Possible values:
	//   "GARM_RISK_EXCLUSION_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any GARM risk exclusion option.
	//   "GARM_RISK_EXCLUSION_FLOOR" - Exclude floor risk.
	//   "GARM_RISK_EXCLUSION_HIGH" - Exclude high and floor risk.
	//   "GARM_RISK_EXCLUSION_MEDIUM" - Exclude medium, high, and floor risk.
	//   "GARM_RISK_EXCLUSION_LOW" - Exclude all levels of risk (low, medium, high
	// and floor).
	MisinformationContent string `json:"misinformationContent,omitempty"`
	// ObscenityProfanityContent: Optional. Obscenity and Profanity Content GARM
	// (https://wfanet.org/leadership/garm/about-garm) risk ranges to exclude.
	//
	// Possible values:
	//   "GARM_RISK_EXCLUSION_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any GARM risk exclusion option.
	//   "GARM_RISK_EXCLUSION_FLOOR" - Exclude floor risk.
	//   "GARM_RISK_EXCLUSION_HIGH" - Exclude high and floor risk.
	//   "GARM_RISK_EXCLUSION_MEDIUM" - Exclude medium, high, and floor risk.
	//   "GARM_RISK_EXCLUSION_LOW" - Exclude all levels of risk (low, medium, high
	// and floor).
	ObscenityProfanityContent string `json:"obscenityProfanityContent,omitempty"`
	// OnlinePiracyContent: Optional. Online Piracy Content GARM
	// (https://wfanet.org/leadership/garm/about-garm) risk ranges to exclude.
	//
	// Possible values:
	//   "GARM_RISK_EXCLUSION_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any GARM risk exclusion option.
	//   "GARM_RISK_EXCLUSION_FLOOR" - Exclude floor risk.
	//   "GARM_RISK_EXCLUSION_HIGH" - Exclude high and floor risk.
	//   "GARM_RISK_EXCLUSION_MEDIUM" - Exclude medium, high, and floor risk.
	//   "GARM_RISK_EXCLUSION_LOW" - Exclude all levels of risk (low, medium, high
	// and floor).
	OnlinePiracyContent string `json:"onlinePiracyContent,omitempty"`
	// SpamHarmfulContent: Optional. Spam or Harmful Content GARM
	// (https://wfanet.org/leadership/garm/about-garm) risk ranges to exclude.
	//
	// Possible values:
	//   "GARM_RISK_EXCLUSION_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any GARM risk exclusion option.
	//   "GARM_RISK_EXCLUSION_FLOOR" - Exclude floor risk.
	//   "GARM_RISK_EXCLUSION_HIGH" - Exclude high and floor risk.
	//   "GARM_RISK_EXCLUSION_MEDIUM" - Exclude medium, high, and floor risk.
	//   "GARM_RISK_EXCLUSION_LOW" - Exclude all levels of risk (low, medium, high
	// and floor).
	SpamHarmfulContent string `json:"spamHarmfulContent,omitempty"`
	// TerrorismContent: Optional. Terrorism Content GARM
	// (https://wfanet.org/leadership/garm/about-garm) risk ranges to exclude.
	//
	// Possible values:
	//   "GARM_RISK_EXCLUSION_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any GARM risk exclusion option.
	//   "GARM_RISK_EXCLUSION_FLOOR" - Exclude floor risk.
	//   "GARM_RISK_EXCLUSION_HIGH" - Exclude high and floor risk.
	//   "GARM_RISK_EXCLUSION_MEDIUM" - Exclude medium, high, and floor risk.
	//   "GARM_RISK_EXCLUSION_LOW" - Exclude all levels of risk (low, medium, high
	// and floor).
	TerrorismContent string `json:"terrorismContent,omitempty"`
	// VideoIabViewability: Optional. IAB viewability threshold for video ads.
	//
	// Possible values:
	//   "VIDEO_IAB_VIEWABILITY_UNSPECIFIED" - Default value when not specified or
	// is unknown in this version.
	//   "VIDEO_IAB_VIEWABILITY_10" - 10%+ in view (IAB video viewability
	// standard).
	//   "VIDEO_IAB_VIEWABILITY_20" - 20%+ in view (IAB video viewability
	// standard).
	//   "VIDEO_IAB_VIEWABILITY_35" - 35%+ in view (IAB video viewability
	// standard).
	//   "VIDEO_IAB_VIEWABILITY_50" - 50%+ in view (IAB video viewability
	// standard).
	//   "VIDEO_IAB_VIEWABILITY_75" - 75%+ in view (IAB video viewability
	// standard).
	VideoIabViewability string `json:"videoIabViewability,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdultExplicitSexualContent")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdultExplicitSexualContent") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Adloox) MarshalJSON() ([]byte, error) {
	type NoMethod Adloox
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Advertiser: A single advertiser in Display & Video 360 (DV360).
type Advertiser struct {
	// AdServerConfig: Required. Immutable. Ad server related settings of the
	// advertiser.
	AdServerConfig *AdvertiserAdServerConfig `json:"adServerConfig,omitempty"`
	// AdvertiserId: Output only. The unique ID of the advertiser. Assigned by the
	// system.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// BillingConfig: Required. Billing related settings of the advertiser.
	BillingConfig *AdvertiserBillingConfig `json:"billingConfig,omitempty"`
	// CreativeConfig: Required. Creative related settings of the advertiser.
	CreativeConfig *AdvertiserCreativeConfig `json:"creativeConfig,omitempty"`
	// DataAccessConfig: Settings that control how advertiser data may be accessed.
	DataAccessConfig *AdvertiserDataAccessConfig `json:"dataAccessConfig,omitempty"`
	// DisplayName: Required. The display name of the advertiser. Must be UTF-8
	// encoded with a maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// EntityStatus: Required. Controls whether or not insertion orders and line
	// items of the advertiser can spend their budgets and bid on inventory. *
	// Accepted values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_PAUSED` and
	// `ENTITY_STATUS_SCHEDULED_FOR_DELETION`. * If set to
	// `ENTITY_STATUS_SCHEDULED_FOR_DELETION`, the advertiser will be deleted 30
	// days from when it was first scheduled for deletion.
	//
	// Possible values:
	//   "ENTITY_STATUS_UNSPECIFIED" - Default value when status is not specified
	// or is unknown in this version.
	//   "ENTITY_STATUS_ACTIVE" - The entity is enabled to bid and spend budget.
	//   "ENTITY_STATUS_ARCHIVED" - The entity is archived. Bidding and budget
	// spending are disabled. An entity can be deleted after archived. Deleted
	// entities cannot be retrieved.
	//   "ENTITY_STATUS_DRAFT" - The entity is under draft. Bidding and budget
	// spending are disabled.
	//   "ENTITY_STATUS_PAUSED" - Bidding and budget spending are paused for the
	// entity.
	//   "ENTITY_STATUS_SCHEDULED_FOR_DELETION" - The entity is scheduled for
	// deletion.
	EntityStatus string `json:"entityStatus,omitempty"`
	// GeneralConfig: Required. General settings of the advertiser.
	GeneralConfig *AdvertiserGeneralConfig `json:"generalConfig,omitempty"`
	// IntegrationDetails: Integration details of the advertiser. Only
	// integrationCode is currently applicable to advertiser. Other fields of
	// IntegrationDetails are not supported and will be ignored if provided.
	IntegrationDetails *IntegrationDetails `json:"integrationDetails,omitempty"`
	// Name: Output only. The resource name of the advertiser.
	Name string `json:"name,omitempty"`
	// PartnerId: Required. Immutable. The unique ID of the partner that the
	// advertiser belongs to.
	PartnerId int64 `json:"partnerId,omitempty,string"`
	// PrismaEnabled: Whether integration with Mediaocean (Prisma) is enabled. By
	// enabling this, you agree to the following: On behalf of my company, I
	// authorize Mediaocean (Prisma) to send budget segment plans to Google, and I
	// authorize Google to send corresponding reporting and invoices from DV360 to
	// Mediaocean for the purposes of budget planning, billing, and reconciliation
	// for this advertiser.
	PrismaEnabled bool `json:"prismaEnabled,omitempty"`
	// ServingConfig: Targeting settings related to ad serving of the advertiser.
	ServingConfig *AdvertiserTargetingConfig `json:"servingConfig,omitempty"`
	// UpdateTime: Output only. The timestamp when the advertiser was last updated.
	// Assigned by the system.
	UpdateTime string `json:"updateTime,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdServerConfig") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdServerConfig") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Advertiser) MarshalJSON() ([]byte, error) {
	type NoMethod Advertiser
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AdvertiserAdServerConfig: Ad server related settings of an advertiser.
type AdvertiserAdServerConfig struct {
	// CmHybridConfig: The configuration for advertisers that use both Campaign
	// Manager 360 (CM360) and third-party ad servers.
	CmHybridConfig *CmHybridConfig `json:"cmHybridConfig,omitempty"`
	// ThirdPartyOnlyConfig: The configuration for advertisers that use third-party
	// ad servers only.
	ThirdPartyOnlyConfig *ThirdPartyOnlyConfig `json:"thirdPartyOnlyConfig,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CmHybridConfig") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CmHybridConfig") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AdvertiserAdServerConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AdvertiserAdServerConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AdvertiserBillingConfig: Billing related settings of an advertiser.
type AdvertiserBillingConfig struct {
	// BillingProfileId: Required. The ID of a billing profile assigned to the
	// advertiser.
	BillingProfileId int64 `json:"billingProfileId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "BillingProfileId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BillingProfileId") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AdvertiserBillingConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AdvertiserBillingConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AdvertiserCreativeConfig: Creatives related settings of an advertiser.
type AdvertiserCreativeConfig struct {
	// DynamicCreativeEnabled: Whether or not the advertiser is enabled for dynamic
	// creatives.
	DynamicCreativeEnabled bool `json:"dynamicCreativeEnabled,omitempty"`
	// IasClientId: An ID for configuring campaign monitoring provided by Integral
	// Ad Service (IAS). The DV360 system will append an IAS "Campaign Monitor" tag
	// containing this ID to the creative tag.
	IasClientId int64 `json:"iasClientId,omitempty,string"`
	// ObaComplianceDisabled: Whether or not to disable Google's About this Ad
	// feature that adds badging (to identify the content as an ad) and
	// transparency information (on interaction with About this Ad) to your ads for
	// Online Behavioral Advertising (OBA) and regulatory requirements. About this
	// Ad gives users greater control over the ads they see and helps you explain
	// why they're seeing your ad. Learn more
	// (//support.google.com/displayvideo/answer/14315795). If you choose to set
	// this field to `true`, note that ads served through Display & Video 360 must
	// comply to the following: * Be Online Behavioral Advertising (OBA) compliant,
	// as per your contract with Google Marketing Platform. * In the European
	// Economic Area (EEA), include transparency information and a mechanism for
	// users to report illegal content in ads. If using an alternative ad badging,
	// transparency, and reporting solution, you must ensure it includes the
	// required transparency information and illegal content flagging mechanism and
	// that you notify Google of any illegal content reports using the appropriate
	// form
	// (//support.google.com/legal/troubleshooter/1114905?sjid=6787484030557261960-E
	// U#ts=2981967%2C2982031%2C12980091).
	ObaComplianceDisabled bool `json:"obaComplianceDisabled,omitempty"`
	// VideoCreativeDataSharingAuthorized: By setting this field to `true`, you, on
	// behalf of your company, authorize Google to use video creatives associated
	// with this Display & Video 360 advertiser to provide reporting and features
	// related to the advertiser's television campaigns. Applicable only when the
	// advertiser has a CM360 hybrid ad server configuration.
	VideoCreativeDataSharingAuthorized bool `json:"videoCreativeDataSharingAuthorized,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DynamicCreativeEnabled") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DynamicCreativeEnabled") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AdvertiserCreativeConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AdvertiserCreativeConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AdvertiserDataAccessConfig: Settings that control how advertiser related
// data may be accessed.
type AdvertiserDataAccessConfig struct {
	// SdfConfig: Structured Data Files (SDF) settings for the advertiser. If not
	// specified, the SDF settings of the parent partner are used.
	SdfConfig *AdvertiserSdfConfig `json:"sdfConfig,omitempty"`
	// ForceSendFields is a list of field names (e.g. "SdfConfig") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "SdfConfig") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AdvertiserDataAccessConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AdvertiserDataAccessConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AdvertiserGeneralConfig: General settings of an advertiser.
type AdvertiserGeneralConfig struct {
	// CurrencyCode: Required. Immutable. Advertiser's currency in ISO 4217 format.
	// Accepted codes and the currencies they represent are: Currency Code :
	// Currency Name * `ARS` : Argentine Peso * `AUD` : Australian Dollar * `BRL` :
	// Brazilian Real * `CAD` : Canadian Dollar * `CHF` : Swiss Franc * `CLP` :
	// Chilean Peso * `CNY` : Chinese Yuan * `COP` : Colombian Peso * `CZK` : Czech
	// Koruna * `DKK` : Danish Krone * `EGP` : Egyption Pound * `EUR` : Euro *
	// `GBP` : British Pound * `HKD` : Hong Kong Dollar * `HUF` : Hungarian Forint
	// * `IDR` : Indonesian Rupiah * `ILS` : Israeli Shekel * `INR` : Indian Rupee
	// * `JPY` : Japanese Yen * `KRW` : South Korean Won * `MXN` : Mexican Pesos *
	// `MYR` : Malaysian Ringgit * `NGN` : Nigerian Naira * `NOK` : Norwegian Krone
	// * `NZD` : New Zealand Dollar * `PEN` : Peruvian Nuevo Sol * `PLN` : Polish
	// Zloty * `RON` : New Romanian Leu * `RUB` : Russian Ruble * `SEK` : Swedish
	// Krona * `TRY` : Turkish Lira * `TWD` : New Taiwan Dollar * `USD` : US Dollar
	// * `ZAR` : South African Rand
	CurrencyCode string `json:"currencyCode,omitempty"`
	// DomainUrl: Required. The domain URL of the advertiser's primary website. The
	// system will send this information to publishers that require website URL to
	// associate a campaign with an advertiser. Provide a URL with no path or query
	// string, beginning with `http:` or `https:`. For example,
	// http://www.example.com
	DomainUrl string `json:"domainUrl,omitempty"`
	// TimeZone: Output only. The standard TZ database name of the advertiser's
	// time zone. For example, `America/New_York`. See more at:
	// https://en.wikipedia.org/wiki/List_of_tz_database_time_zones For CM360
	// hybrid advertisers, the time zone is the same as that of the associated
	// CM360 account; for third-party only advertisers, the time zone is the same
	// as that of the parent partner.
	TimeZone string `json:"timeZone,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CurrencyCode") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CurrencyCode") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AdvertiserGeneralConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AdvertiserGeneralConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AdvertiserSdfConfig: Structured Data Files (SDF) settings of an advertiser.
type AdvertiserSdfConfig struct {
	// OverridePartnerSdfConfig: Whether or not this advertiser overrides the SDF
	// configuration of its parent partner. By default, an advertiser inherits the
	// SDF configuration from the parent partner. To override the partner
	// configuration, set this field to `true` and provide the new configuration in
	// sdfConfig.
	OverridePartnerSdfConfig bool `json:"overridePartnerSdfConfig,omitempty"`
	// SdfConfig: The SDF configuration for the advertiser. * Required when
	// overridePartnerSdfConfig is `true`. * Output only when
	// overridePartnerSdfConfig is `false`.
	SdfConfig *SdfConfig `json:"sdfConfig,omitempty"`
	// ForceSendFields is a list of field names (e.g. "OverridePartnerSdfConfig")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "OverridePartnerSdfConfig") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AdvertiserSdfConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AdvertiserSdfConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AdvertiserTargetingConfig: Targeting settings related to ad serving of an
// advertiser.
type AdvertiserTargetingConfig struct {
	// ExemptTvFromViewabilityTargeting: Whether or not connected TV devices are
	// exempt from viewability targeting for all video line items under the
	// advertiser.
	ExemptTvFromViewabilityTargeting bool `json:"exemptTvFromViewabilityTargeting,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "ExemptTvFromViewabilityTargeting") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g.
	// "ExemptTvFromViewabilityTargeting") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. See https://pkg.go.dev/google.golang.org/api#hdr-NullFields for
	// more details.
	NullFields []string `json:"-"`
}

func (s AdvertiserTargetingConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AdvertiserTargetingConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgeRangeAssignedTargetingOptionDetails: Represents a targetable age range.
// This will be populated in the details field of an AssignedTargetingOption
// when targeting_type is `TARGETING_TYPE_AGE_RANGE`.
type AgeRangeAssignedTargetingOptionDetails struct {
	// AgeRange: Required. The age range of an audience. We only support targeting
	// a continuous age range of an audience. Thus, the age range represented in
	// this field can be 1) targeted solely, or, 2) part of a larger continuous age
	// range. The reach of a continuous age range targeting can be expanded by also
	// targeting an audience of an unknown age.
	//
	// Possible values:
	//   "AGE_RANGE_UNSPECIFIED" - Default value when age range is not specified in
	// this version. This enum is a placeholder for default value and does not
	// represent a real age range option.
	//   "AGE_RANGE_18_24" - The age range of the audience is 18 to 24.
	//   "AGE_RANGE_25_34" - The age range of the audience is 25 to 34.
	//   "AGE_RANGE_35_44" - The age range of the audience is 35 to 44.
	//   "AGE_RANGE_45_54" - The age range of the audience is 45 to 54.
	//   "AGE_RANGE_55_64" - The age range of the audience is 55 to 64.
	//   "AGE_RANGE_65_PLUS" - The age range of the audience is 65 and up.
	//   "AGE_RANGE_UNKNOWN" - The age range of the audience is unknown.
	//   "AGE_RANGE_18_20" - The age range of the audience is 18 to 20, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_21_24" - The age range of the audience is 21 to 24, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_25_29" - The age range of the audience is 25 to 29, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_30_34" - The age range of the audience is 30 to 34, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_35_39" - The age range of the audience is 35 to 39, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_40_44" - The age range of the audience is 40 to 44, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_45_49" - The age range of the audience is 45 to 49, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_50_54" - The age range of the audience is 50 to 54, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_55_59" - The age range of the audience is 55 to 59, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_60_64" - The age range of the audience is 60 to 64, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	AgeRange string `json:"ageRange,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AgeRange") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AgeRange") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgeRangeAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AgeRangeAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgeRangeTargetingOptionDetails: Represents a targetable age range. This will
// be populated in the age_range_details field when targeting_type is
// `TARGETING_TYPE_AGE_RANGE`.
type AgeRangeTargetingOptionDetails struct {
	// AgeRange: Output only. The age range of an audience.
	//
	// Possible values:
	//   "AGE_RANGE_UNSPECIFIED" - Default value when age range is not specified in
	// this version. This enum is a placeholder for default value and does not
	// represent a real age range option.
	//   "AGE_RANGE_18_24" - The age range of the audience is 18 to 24.
	//   "AGE_RANGE_25_34" - The age range of the audience is 25 to 34.
	//   "AGE_RANGE_35_44" - The age range of the audience is 35 to 44.
	//   "AGE_RANGE_45_54" - The age range of the audience is 45 to 54.
	//   "AGE_RANGE_55_64" - The age range of the audience is 55 to 64.
	//   "AGE_RANGE_65_PLUS" - The age range of the audience is 65 and up.
	//   "AGE_RANGE_UNKNOWN" - The age range of the audience is unknown.
	//   "AGE_RANGE_18_20" - The age range of the audience is 18 to 20, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_21_24" - The age range of the audience is 21 to 24, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_25_29" - The age range of the audience is 25 to 29, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_30_34" - The age range of the audience is 30 to 34, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_35_39" - The age range of the audience is 35 to 39, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_40_44" - The age range of the audience is 40 to 44, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_45_49" - The age range of the audience is 45 to 49, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_50_54" - The age range of the audience is 50 to 54, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_55_59" - The age range of the audience is 55 to 59, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	//   "AGE_RANGE_60_64" - The age range of the audience is 60 to 64, only
	// supported for the AdGroup of YouTube Programmatic Reservation line item.
	AgeRange string `json:"ageRange,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AgeRange") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AgeRange") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgeRangeTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AgeRangeTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AlgorithmRules: Rule-based algorithm.
type AlgorithmRules struct {
	// AttributionModelId: Attribution model for the algorithm. This field is only
	// supported for allowlisted partners.
	AttributionModelId int64 `json:"attributionModelId,omitempty,string"`
	// ImpressionSignalRuleset: Rules for the impression signals.
	ImpressionSignalRuleset *AlgorithmRulesRuleset `json:"impressionSignalRuleset,omitempty"`
	// PostImpressionSignalRuleset: Rules for the post-impression signals. This
	// field is only supported for allowlisted partners.
	PostImpressionSignalRuleset *AlgorithmRulesRuleset `json:"postImpressionSignalRuleset,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AttributionModelId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AttributionModelId") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AlgorithmRules) MarshalJSON() ([]byte, error) {
	type NoMethod AlgorithmRules
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AlgorithmRulesComparisonValue: A value to compare the signal to.
type AlgorithmRulesComparisonValue struct {
	// BoolValue: Boolean value.
	BoolValue bool `json:"boolValue,omitempty"`
	// CreativeDimensionValue: Creative dimension value.
	CreativeDimensionValue *Dimensions `json:"creativeDimensionValue,omitempty"`
	// DayAndTimeValue: Day and time value. Only `TIME_ZONE_RESOLUTION_END_USER` is
	// supported.
	DayAndTimeValue *DayAndTime `json:"dayAndTimeValue,omitempty"`
	// DeviceTypeValue: Device type value.
	//
	// Possible values:
	//   "RULE_DEVICE_TYPE_UNSPECIFIED" - Default value when device type is not
	// specified in this version. This enum is a placeholder for default value and
	// does not represent a real device type option.
	//   "RULE_DEVICE_TYPE_COMPUTER" - Computer.
	//   "RULE_DEVICE_TYPE_CONNECTED_TV" - Connected TV.
	//   "RULE_DEVICE_TYPE_SMART_PHONE" - Smart phone.
	//   "RULE_DEVICE_TYPE_TABLET" - Tablet.
	//   "RULE_DEVICE_TYPE_CONNECTED_DEVICE" - Connected device.
	//   "RULE_DEVICE_TYPE_SET_TOP_BOX" - Set top box.
	DeviceTypeValue string `json:"deviceTypeValue,omitempty"`
	// DoubleValue: Double value.
	DoubleValue float64 `json:"doubleValue,omitempty"`
	// EnvironmentValue: Environment value.
	//
	// Possible values:
	//   "ENVIRONMENT_UNSPECIFIED" - Default value when environment is not
	// specified in this version. This enum is a placeholder for default value and
	// does not represent a real environment option.
	//   "ENVIRONMENT_WEB_OPTIMIZED" - Target inventory displayed in browsers. This
	// includes inventory that was designed for the device it was viewed on, such
	// as mobile websites viewed on a mobile device. ENVIRONMENT_WEB_NOT_OPTIMIZED,
	// if targeted, should be deleted prior to the deletion of this targeting
	// option.
	//   "ENVIRONMENT_WEB_NOT_OPTIMIZED" - Target inventory displayed in browsers.
	// This includes inventory that was not designed for the device but viewed on
	// it, such as websites optimized for desktop but viewed on a mobile device.
	// ENVIRONMENT_WEB_OPTIMIZED should be targeted prior to the addition of this
	// targeting option.
	//   "ENVIRONMENT_APP" - Target inventory displayed in apps.
	EnvironmentValue string `json:"environmentValue,omitempty"`
	// ExchangeValue: Exchange value.
	//
	// Possible values:
	//   "EXCHANGE_UNSPECIFIED" - Exchange is not specified or is unknown in this
	// version.
	//   "EXCHANGE_GOOGLE_AD_MANAGER" - Google Ad Manager.
	//   "EXCHANGE_APPNEXUS" - AppNexus.
	//   "EXCHANGE_BRIGHTROLL" - BrightRoll Exchange for Video from Yahoo!.
	//   "EXCHANGE_ADFORM" - Adform.
	//   "EXCHANGE_ADMETA" - Admeta.
	//   "EXCHANGE_ADMIXER" - Admixer.
	//   "EXCHANGE_ADSMOGO" - AdsMogo.
	//   "EXCHANGE_ADSWIZZ" - AdsWizz.
	//   "EXCHANGE_BIDSWITCH" - BidSwitch.
	//   "EXCHANGE_BRIGHTROLL_DISPLAY" - BrightRoll Exchange for Display from
	// Yahoo!.
	//   "EXCHANGE_CADREON" - Cadreon.
	//   "EXCHANGE_DAILYMOTION" - Dailymotion.
	//   "EXCHANGE_FIVE" - Five.
	//   "EXCHANGE_FLUCT" - Fluct.
	//   "EXCHANGE_FREEWHEEL" - FreeWheel SSP.
	//   "EXCHANGE_GENIEE" - Geniee.
	//   "EXCHANGE_GUMGUM" - GumGum.
	//   "EXCHANGE_IMOBILE" - i-mobile.
	//   "EXCHANGE_IBILLBOARD" - iBILLBOARD.
	//   "EXCHANGE_IMPROVE_DIGITAL" - Improve Digital.
	//   "EXCHANGE_INDEX" - Index Exchange.
	//   "EXCHANGE_KARGO" - Kargo.
	//   "EXCHANGE_MICROAD" - MicroAd.
	//   "EXCHANGE_MOPUB" - MoPub.
	//   "EXCHANGE_NEND" - Nend.
	//   "EXCHANGE_ONE_BY_AOL_DISPLAY" - ONE by AOL: Display Market Place.
	//   "EXCHANGE_ONE_BY_AOL_MOBILE" - ONE by AOL: Mobile.
	//   "EXCHANGE_ONE_BY_AOL_VIDEO" - ONE by AOL: Video.
	//   "EXCHANGE_OOYALA" - Ooyala.
	//   "EXCHANGE_OPENX" - OpenX.
	//   "EXCHANGE_PERMODO" - Permodo.
	//   "EXCHANGE_PLATFORMONE" - Platform One.
	//   "EXCHANGE_PLATFORMID" - PlatformId.
	//   "EXCHANGE_PUBMATIC" - PubMatic.
	//   "EXCHANGE_PULSEPOINT" - PulsePoint.
	//   "EXCHANGE_REVENUEMAX" - RevenueMax.
	//   "EXCHANGE_RUBICON" - Rubicon.
	//   "EXCHANGE_SMARTCLIP" - SmartClip.
	//   "EXCHANGE_SMARTRTB" - SmartRTB+.
	//   "EXCHANGE_SMARTSTREAMTV" - SmartstreamTv.
	//   "EXCHANGE_SOVRN" - Sovrn.
	//   "EXCHANGE_SPOTXCHANGE" - SpotXchange.
	//   "EXCHANGE_STROER" - Ströer SSP.
	//   "EXCHANGE_TEADSTV" - TeadsTv.
	//   "EXCHANGE_TELARIA" - Telaria.
	//   "EXCHANGE_TVN" - TVN.
	//   "EXCHANGE_UNITED" - United.
	//   "EXCHANGE_YIELDLAB" - Yieldlab.
	//   "EXCHANGE_YIELDMO" - Yieldmo.
	//   "EXCHANGE_UNRULYX" - UnrulyX.
	//   "EXCHANGE_OPEN8" - Open8.
	//   "EXCHANGE_TRITON" - Triton.
	//   "EXCHANGE_TRIPLELIFT" - TripleLift.
	//   "EXCHANGE_TABOOLA" - Taboola.
	//   "EXCHANGE_INMOBI" - InMobi.
	//   "EXCHANGE_SMAATO" - Smaato.
	//   "EXCHANGE_AJA" - Aja.
	//   "EXCHANGE_SUPERSHIP" - Supership.
	//   "EXCHANGE_NEXSTAR_DIGITAL" - Nexstar Digital.
	//   "EXCHANGE_WAZE" - Waze.
	//   "EXCHANGE_SOUNDCAST" - SoundCast.
	//   "EXCHANGE_SHARETHROUGH" - Sharethrough.
	//   "EXCHANGE_FYBER" - Fyber.
	//   "EXCHANGE_RED_FOR_PUBLISHERS" - Red For Publishers.
	//   "EXCHANGE_MEDIANET" - Media.net.
	//   "EXCHANGE_TAPJOY" - Tapjoy.
	//   "EXCHANGE_VISTAR" - Vistar.
	//   "EXCHANGE_DAX" - DAX.
	//   "EXCHANGE_JCD" - JCD.
	//   "EXCHANGE_PLACE_EXCHANGE" - Place Exchange.
	//   "EXCHANGE_APPLOVIN" - AppLovin.
	//   "EXCHANGE_CONNATIX" - Connatix.
	//   "EXCHANGE_RESET_DIGITAL" - Reset Digital.
	//   "EXCHANGE_HIVESTACK" - Hivestack.
	//   "EXCHANGE_DRAX" - Drax.
	//   "EXCHANGE_APPLOVIN_GBID" - AppLovin MAX.
	//   "EXCHANGE_FYBER_GBID" - DT Fairbid.
	//   "EXCHANGE_UNITY_GBID" - Unity LevelPlay.
	//   "EXCHANGE_CHARTBOOST_GBID" - Chartboost Mediation.
	//   "EXCHANGE_ADMOST_GBID" - AdMost.
	//   "EXCHANGE_TOPON_GBID" - TopOn.
	//   "EXCHANGE_NETFLIX" - Netflix.
	//   "EXCHANGE_CORE" - Core.
	//   "EXCHANGE_COMMERCE_GRID" - Commerce Grid.
	//   "EXCHANGE_SPOTIFY" - Spotify.
	//   "EXCHANGE_TUBI" - Tubi.
	ExchangeValue string `json:"exchangeValue,omitempty"`
	// Int64Value: Integer value.
	Int64Value int64 `json:"int64Value,omitempty,string"`
	// OnScreenPositionValue: Ad position value.
	//
	// Possible values:
	//   "ON_SCREEN_POSITION_UNSPECIFIED" - On screen position is not specified in
	// this version. This enum is a place holder for a default value and does not
	// represent a real on screen position.
	//   "ON_SCREEN_POSITION_UNKNOWN" - The ad position is unknown on the screen.
	//   "ON_SCREEN_POSITION_ABOVE_THE_FOLD" - The ad is located above the fold.
	//   "ON_SCREEN_POSITION_BELOW_THE_FOLD" - The ad is located below the fold.
	OnScreenPositionValue string `json:"onScreenPositionValue,omitempty"`
	// StringValue: String value.
	StringValue string `json:"stringValue,omitempty"`
	// VideoPlayerSizeValue: Video player size value. This field is only supported
	// for allowlisted partners.
	//
	// Possible values:
	//   "VIDEO_PLAYER_SIZE_UNSPECIFIED" - Video player size is not specified in
	// this version. This enum is a place holder for a default value and does not
	// represent a real video player size.
	//   "VIDEO_PLAYER_SIZE_SMALL" - The dimensions of the video player are less
	// than 400×300 (desktop), or up to 20% of screen covered (mobile).
	//   "VIDEO_PLAYER_SIZE_LARGE" - The dimensions of the video player are between
	// 400x300 and 1280x720 pixels (desktop), or 20% to 90% of the screen covered
	// (mobile).
	//   "VIDEO_PLAYER_SIZE_HD" - The dimensions of the video player are 1280×720
	// or greater (desktop), or over 90% of the screen covered (mobile).
	//   "VIDEO_PLAYER_SIZE_UNKNOWN" - The dimensions of the video player are
	// unknown.
	VideoPlayerSizeValue string `json:"videoPlayerSizeValue,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BoolValue") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BoolValue") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AlgorithmRulesComparisonValue) MarshalJSON() ([]byte, error) {
	type NoMethod AlgorithmRulesComparisonValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *AlgorithmRulesComparisonValue) UnmarshalJSON(data []byte) error {
	type NoMethod AlgorithmRulesComparisonValue
	var s1 struct {
		DoubleValue gensupport.JSONFloat64 `json:"doubleValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DoubleValue = float64(s1.DoubleValue)
	return nil
}

// AlgorithmRulesFloodlightActivityConversionSignal: The rule to score
// impressions based on Floodlight conversion events.
type AlgorithmRulesFloodlightActivityConversionSignal struct {
	// ConversionCounting: Required. The type of conversions to be used in
	// impression value computation, for example, post-click conversions.
	//
	// Possible values:
	//   "CONVERSION_COUNTING_UNSPECIFIED" - The action is not specified.
	//   "ALL_CONVERSIONS" - All conversions.
	//   "POST_CLICK" - Post-click conversions.
	//   "POST_VIEW" - Post-view conversions.
	ConversionCounting string `json:"conversionCounting,omitempty"`
	// CountingMethod: Required. The way to acquire value from the floodlight
	// activity, for example, count of the conversion.
	//
	// Possible values:
	//   "COUNTING_METHOD_UNSPECIFIED" - The action is not specified.
	//   "CONVERSIONS_COUNT" - The count of conversions associated with the
	// conversion activity.
	//   "SALES_QUANTITY" - The number of sales items associated with the
	// conversion activity.
	//   "SALES_VALUE" - The sales revenue associated with the conversion activity.
	//   "UNIQUE_COUNT" - The count of unique conversions associated with the
	// conversion activity. Only one conversion can be counted per impression.
	CountingMethod string `json:"countingMethod,omitempty"`
	// FloodlightActivityId: Required. Id of the floodlight activity.
	FloodlightActivityId int64 `json:"floodlightActivityId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "ConversionCounting") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ConversionCounting") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AlgorithmRulesFloodlightActivityConversionSignal) MarshalJSON() ([]byte, error) {
	type NoMethod AlgorithmRulesFloodlightActivityConversionSignal
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AlgorithmRulesRule: Set of conditions. The return value of the rule is
// either: * The return value for single met condition or * The defined default
// return value if no conditions are met.
type AlgorithmRulesRule struct {
	// Conditions: List of conditions in this rule. The criteria among conditions
	// should be mutually exclusive.
	Conditions []*AlgorithmRulesRuleCondition `json:"conditions,omitempty"`
	// DefaultReturnValue: The default return value applied when none of the
	// conditions are met.
	DefaultReturnValue *AlgorithmRulesSignalValue `json:"defaultReturnValue,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Conditions") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Conditions") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AlgorithmRulesRule) MarshalJSON() ([]byte, error) {
	type NoMethod AlgorithmRulesRule
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AlgorithmRulesRuleCondition: Set of signal comparisons. Equivalent of an
// `if` statement.
type AlgorithmRulesRuleCondition struct {
	// ReturnValue: The value returned if the `signalComparisons` condition
	// evaluates to `TRUE`.
	ReturnValue *AlgorithmRulesSignalValue `json:"returnValue,omitempty"`
	// SignalComparisons: List of comparisons that build `if` statement condition.
	// The comparisons are combined into a single condition with `AND` logical
	// operators.
	SignalComparisons []*AlgorithmRulesSignalComparison `json:"signalComparisons,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ReturnValue") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ReturnValue") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AlgorithmRulesRuleCondition) MarshalJSON() ([]byte, error) {
	type NoMethod AlgorithmRulesRuleCondition
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AlgorithmRulesRuleset: A ruleset consisting of a list of rules and how to
// aggregate the resulting values.
type AlgorithmRulesRuleset struct {
	// AggregationType: How to aggregate values of evaluated rules.
	//
	// Possible values:
	//   "RULE_AGGREGATION_TYPE_UNSPECIFIED" - Unknown aggregation type.
	//   "SUM_OF_VALUES" - The sum of rule values.
	//   "PRODUCT_OF_VALUES" - The product of rule values.
	//   "MAXIMUM_VALUE" - The maximum rule value.
	AggregationType string `json:"aggregationType,omitempty"`
	// MaxValue: Maximum value the ruleset can evaluate to.
	MaxValue float64 `json:"maxValue,omitempty"`
	// Rules: List of rules to generate the impression value.
	Rules []*AlgorithmRulesRule `json:"rules,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AggregationType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AggregationType") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AlgorithmRulesRuleset) MarshalJSON() ([]byte, error) {
	type NoMethod AlgorithmRulesRuleset
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *AlgorithmRulesRuleset) UnmarshalJSON(data []byte) error {
	type NoMethod AlgorithmRulesRuleset
	var s1 struct {
		MaxValue gensupport.JSONFloat64 `json:"maxValue"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MaxValue = float64(s1.MaxValue)
	return nil
}

// AlgorithmRulesSignal: Signal used to evaluate rules.
type AlgorithmRulesSignal struct {
	// ActiveViewSignal: Signal based on active views. This field is only supported
	// for allowlisted partners.
	//
	// Possible values:
	//   "ACTIVE_VIEW_SIGNAL_UNSPECIFIED" - Unknown signal.
	//   "ACTIVE_VIEW_VIEWED" - Whether Active View detects that your ad has been
	// viewed. Value is stored in the boolValue field of the comparison value.
	//   "AUDIBLE" - Whether Active View detects that your ad was audible. Value is
	// stored in the boolValue field of the comparison value.
	//   "VIDEO_COMPLETED" - Whether the video was completed. Value is stored in
	// the boolValue field of the comparison value.
	//   "TIME_ON_SCREEN" - The time the ad was on screen in seconds. Value is
	// stored in the int64Value field of the comparison value.
	//   "VIDEO_PLAYER_SIZE" - The size of the video player displaying the ad.
	// Value is stored in the videoPlayerSizeValue field of the comparison value.
	//   "COMPLETED_IN_VIEW_AUDIBLE" - Whether the ad was completed in view and
	// audible. Value is stored in the boolValue field of the comparison value.
	ActiveViewSignal string `json:"activeViewSignal,omitempty"`
	// ClickSignal: Signal based on clicks. This field is only supported for
	// allowlisted partners.
	//
	// Possible values:
	//   "CLICK_SIGNAL_UNSPECIFIED" - Unknown signal.
	//   "CLICK" - Whether the ad was clicked. Value is stored in the boolValue
	// field of the comparison value.
	ClickSignal string `json:"clickSignal,omitempty"`
	// ImpressionSignal: Signal based on impressions.
	//
	// Possible values:
	//   "IMPRESSION_SIGNAL_UNSPECIFIED" - Unknown signal.
	//   "DAY_AND_TIME" - The day of the week and hour of day the impression was
	// made using browser's local time zone. Value is stored in the dayAndTimeValue
	// field of the comparison value.
	//   "DEVICE_TYPE" - Device type. Value is stored in the deviceTypeValue field
	// of the comparison value.
	//   "AD_POSITION" - Ad position. Value is stored in the onScreenPositionValue
	// field of the comparison value.
	//   "OPERATING_SYSTEM_ID" - The operating system identifier. Value is stored
	// in the int64Value field of the comparison value.
	//   "MOBILE_MODEL_ID" - The mobile model identifier. Value is stored in the
	// int64Value field of the comparison value.
	//   "EXCHANGE" - Exchange. Value is stored in the exchangeValue field of the
	// comparison value.
	//   "ENVIRONMENT" - Serving environment. Value is stored in the
	// environmentValue field of the comparison value.
	//   "COUNTRY_ID" - The country or region identifier. Value is stored in the
	// int64Value field of the comparison value.
	//   "CITY_ID" - The city identifier. Value is stored in the int64Value field
	// of the comparison value.
	//   "BROWSER_ID" - The browser identifier. Value is stored in the int64Value
	// field of the comparison value.
	//   "CREATIVE_DIMENSION" - Creative height and width in pixels. Value is
	// stored in the creativeDimensionValue field of the comparison value.
	ImpressionSignal string `json:"impressionSignal,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActiveViewSignal") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveViewSignal") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AlgorithmRulesSignal) MarshalJSON() ([]byte, error) {
	type NoMethod AlgorithmRulesSignal
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AlgorithmRulesSignalComparison: A single comparison. The comparison compares
// the `signal` to the `comparisonValue`. The comparison of `siteId==123` is
// represented with the following field values: * `signal` has an
// `impressionSignal` of `SITE_ID`. * `comparisonOperator` is set to `EQUAL`. *
// `comparisonValue` is set to 123.
type AlgorithmRulesSignalComparison struct {
	// ComparisonOperator: Operator used to compare the two values. In the
	// resulting experession, the `signal` will be the first value and the
	// `comparisonValue will be the second.
	//
	// Possible values:
	//   "COMPARISON_OPERATOR_UNSPECIFIED" - Unknown operator.
	//   "EQUAL" - Values are equal.
	//   "GREATER_THAN" - Signal value is greater than the comparison value.
	//   "LESS_THAN" - Signal value is less than the second.
	//   "GREATER_THAN_OR_EQUAL_TO" - Signal value is greater than or equal to the
	// second.
	//   "LESS_THAN_OR_EQUAL_TO" - Signal value is less than or equal to the
	// comparison value.
	ComparisonOperator string `json:"comparisonOperator,omitempty"`
	// ComparisonValue: Value to compare signal to.
	ComparisonValue *AlgorithmRulesComparisonValue `json:"comparisonValue,omitempty"`
	// Signal: Signal to compare.
	Signal *AlgorithmRulesSignal `json:"signal,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ComparisonOperator") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ComparisonOperator") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AlgorithmRulesSignalComparison) MarshalJSON() ([]byte, error) {
	type NoMethod AlgorithmRulesSignalComparison
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AlgorithmRulesSignalValue: Adjusted value of the signal used for rule
// evaluation.
type AlgorithmRulesSignalValue struct {
	// ActiveViewSignal: Signal based on active views. Only `TIME_ON_SCREEN` is
	// supported. This field is only supported for allowlisted partners.
	//
	// Possible values:
	//   "ACTIVE_VIEW_SIGNAL_UNSPECIFIED" - Unknown signal.
	//   "ACTIVE_VIEW_VIEWED" - Whether Active View detects that your ad has been
	// viewed. Value is stored in the boolValue field of the comparison value.
	//   "AUDIBLE" - Whether Active View detects that your ad was audible. Value is
	// stored in the boolValue field of the comparison value.
	//   "VIDEO_COMPLETED" - Whether the video was completed. Value is stored in
	// the boolValue field of the comparison value.
	//   "TIME_ON_SCREEN" - The time the ad was on screen in seconds. Value is
	// stored in the int64Value field of the comparison value.
	//   "VIDEO_PLAYER_SIZE" - The size of the video player displaying the ad.
	// Value is stored in the videoPlayerSizeValue field of the comparison value.
	//   "COMPLETED_IN_VIEW_AUDIBLE" - Whether the ad was completed in view and
	// audible. Value is stored in the boolValue field of the comparison value.
	ActiveViewSignal string `json:"activeViewSignal,omitempty"`
	// FloodlightActivityConversionSignal: Signal based on floodlight conversion
	// events. This field is only supported for allowlisted partners.
	FloodlightActivityConversionSignal *AlgorithmRulesFloodlightActivityConversionSignal `json:"floodlightActivityConversionSignal,omitempty"`
	// Number: Value to use as result.
	Number float64 `json:"number,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActiveViewSignal") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveViewSignal") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AlgorithmRulesSignalValue) MarshalJSON() ([]byte, error) {
	type NoMethod AlgorithmRulesSignalValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *AlgorithmRulesSignalValue) UnmarshalJSON(data []byte) error {
	type NoMethod AlgorithmRulesSignalValue
	var s1 struct {
		Number gensupport.JSONFloat64 `json:"number"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Number = float64(s1.Number)
	return nil
}

// AppAssignedTargetingOptionDetails: Details for assigned app targeting
// option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is `TARGETING_TYPE_APP`.
type AppAssignedTargetingOptionDetails struct {
	// AppId: Required. The ID of the app. Android's Play store app uses bundle ID,
	// for example `com.google.android.gm`. Apple's App store app ID uses 9 digit
	// string, for example `422689480`.
	AppId string `json:"appId,omitempty"`
	// AppPlatform: Indicates the platform of the targeted app. If this field is
	// not specified, the app platform will be assumed to be mobile (i.e., Android
	// or iOS), and we will derive the appropriate mobile platform from the app ID.
	//
	// Possible values:
	//   "APP_PLATFORM_UNSPECIFIED" - Default value when app platform is not
	// specified in this version. This enum is a placeholder for default value and
	// does not represent a real platform option.
	//   "APP_PLATFORM_IOS" - The app platform is iOS.
	//   "APP_PLATFORM_ANDROID" - The app platform is Android.
	//   "APP_PLATFORM_ROKU" - The app platform is Roku.
	//   "APP_PLATFORM_AMAZON_FIRETV" - The app platform is Amazon FireTV.
	//   "APP_PLATFORM_PLAYSTATION" - The app platform is Playstation.
	//   "APP_PLATFORM_APPLE_TV" - The app platform is Apple TV.
	//   "APP_PLATFORM_XBOX" - The app platform is Xbox.
	//   "APP_PLATFORM_SAMSUNG_TV" - The app platform is Samsung TV.
	//   "APP_PLATFORM_ANDROID_TV" - The app platform is Android TV.
	//   "APP_PLATFORM_GENERIC_CTV" - The app platform is a CTV platform that is
	// not explicitly listed elsewhere.
	//   "APP_PLATFORM_LG_TV" - The app platform is LG TV.
	//   "APP_PLATFORM_VIZIO_TV" - The app platform is VIZIO TV.
	AppPlatform string `json:"appPlatform,omitempty"`
	// DisplayName: Output only. The display name of the app.
	DisplayName string `json:"displayName,omitempty"`
	// Negative: Indicates if this option is being negatively targeted.
	Negative bool `json:"negative,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AppId") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AppId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AppAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AppAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AppCategoryAssignedTargetingOptionDetails: Details for assigned app category
// targeting option. This will be populated in the app_category_details field
// of an AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_APP_CATEGORY`.
type AppCategoryAssignedTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the app category.
	DisplayName string `json:"displayName,omitempty"`
	// Negative: Indicates if this option is being negatively targeted.
	Negative bool `json:"negative,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id field when
	// targeting_type is `TARGETING_TYPE_APP_CATEGORY`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AppCategoryAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AppCategoryAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AppCategoryTargetingOptionDetails: Represents a targetable collection of
// apps. A collection lets you target dynamic groups of related apps that are
// maintained by the platform, for example `All Apps/Google Play/Games`. This
// will be populated in the app_category_details field when targeting_type is
// `TARGETING_TYPE_APP_CATEGORY`.
type AppCategoryTargetingOptionDetails struct {
	// DisplayName: Output only. The name of the app collection.
	DisplayName string `json:"displayName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AppCategoryTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AppCategoryTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Asset: A single asset.
type Asset struct {
	// Content: The asset content. For uploaded assets, the content is the serving
	// path.
	Content string `json:"content,omitempty"`
	// MediaId: Media ID of the uploaded asset. This is a unique identifier for the
	// asset. This ID can be passed to other API calls, e.g. CreateCreative to
	// associate the asset with a creative. The Media ID space updated on **April
	// 5, 2023**. Update media IDs cached before **April 5, 2023** by retrieving
	// the new media ID from associated creative resources or re-uploading the
	// asset.
	MediaId int64 `json:"mediaId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "Content") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Content") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Asset) MarshalJSON() ([]byte, error) {
	type NoMethod Asset
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AssetAssociation: Asset association for the creative.
type AssetAssociation struct {
	// Asset: Optional. The associated asset.
	Asset *Asset `json:"asset,omitempty"`
	// Role: Optional. The role of this asset for the creative.
	//
	// Possible values:
	//   "ASSET_ROLE_UNSPECIFIED" - Asset role is not specified or is unknown in
	// this version.
	//   "ASSET_ROLE_MAIN" - The asset is the main asset of the creative.
	//   "ASSET_ROLE_BACKUP" - The asset is a backup asset of the creative.
	//   "ASSET_ROLE_POLITE_LOAD" - The asset is a polite load asset of the
	// creative.
	//   "ASSET_ROLE_HEADLINE" - Headline of a native creative. The content must be
	// UTF-8 encoded with a length of no more than 25 characters. This role is only
	// supported in the following creative_type: * `CREATIVE_TYPE_NATIVE` *
	// `CREATIVE_TYPE_NATIVE_SITE_SQUARE` * `CREATIVE_TYPE_NATIVE_VIDEO`
	//   "ASSET_ROLE_LONG_HEADLINE" - Long headline of a native creative. The
	// content must be UTF-8 encoded with a length of no more than 50 characters.
	// This role is only supported in the following creative_type: *
	// `CREATIVE_TYPE_NATIVE` * `CREATIVE_TYPE_NATIVE_SITE_SQUARE` *
	// `CREATIVE_TYPE_NATIVE_VIDEO`
	//   "ASSET_ROLE_BODY" - Body text of a native creative. The content must be
	// UTF-8 encoded with a length of no more than 90 characters. This role is only
	// supported in the following creative_type: * `CREATIVE_TYPE_NATIVE` *
	// `CREATIVE_TYPE_NATIVE_SITE_SQUARE` * `CREATIVE_TYPE_NATIVE_VIDEO`
	//   "ASSET_ROLE_LONG_BODY" - Long body text of a native creative. The content
	// must be UTF-8 encoded with a length of no more than 150 characters. This
	// role is only supported in the following creative_type: *
	// `CREATIVE_TYPE_NATIVE` * `CREATIVE_TYPE_NATIVE_SITE_SQUARE` *
	// `CREATIVE_TYPE_NATIVE_VIDEO`
	//   "ASSET_ROLE_CAPTION_URL" - A short, friendly version of the landing page
	// URL to show in the creative. This URL gives people an idea of where they'll
	// arrive after they click on the creative. The content must be UTF-8 encoded
	// with a length of no more than 30 characters. For example, if the landing
	// page URL is 'http://www.example.com/page', the caption URL can be
	// 'example.com'. The protocol (http://) is optional, but the URL can't contain
	// spaces or special characters. This role is only supported in the following
	// creative_type: * `CREATIVE_TYPE_NATIVE` * `CREATIVE_TYPE_NATIVE_SITE_SQUARE`
	// * `CREATIVE_TYPE_NATIVE_VIDEO`
	//   "ASSET_ROLE_CALL_TO_ACTION" - The text to use on the call-to-action button
	// of a native creative. The content must be UTF-8 encoded with a length of no
	// more than 15 characters. This role is only supported in the following
	// creative_type: * `CREATIVE_TYPE_NATIVE` * `CREATIVE_TYPE_NATIVE_SITE_SQUARE`
	// * `CREATIVE_TYPE_NATIVE_VIDEO`
	//   "ASSET_ROLE_ADVERTISER_NAME" - The text that identifies the advertiser or
	// brand name. The content must be UTF-8 encoded with a length of no more than
	// 25 characters. This role is only supported in the following creative_type: *
	// `CREATIVE_TYPE_NATIVE` * `CREATIVE_TYPE_NATIVE_SITE_SQUARE` *
	// `CREATIVE_TYPE_NATIVE_VIDEO`
	//   "ASSET_ROLE_PRICE" - The purchase price of your app in the Google play
	// store or iOS app store (for example, $5.99). Note that this value is not
	// automatically synced with the actual value listed in the store. It will
	// always be the one provided when save the creative. The content must be UTF-8
	// encoded with a length of no more than 15 characters. Assets of this role are
	// read-only.
	//   "ASSET_ROLE_ANDROID_APP_ID" - The ID of an Android app in the Google play
	// store. You can find this ID in the App’s Google Play Store URL after
	// ‘id’. For example, in
	// `https://play.google.com/store/apps/details?id=com.company.appname` the
	// identifier is com.company.appname. Assets of this role are read-only.
	//   "ASSET_ROLE_IOS_APP_ID" - The ID of an iOS app in the Apple app store.
	// This ID number can be found in the Apple App Store URL as the string of
	// numbers directly after "id". For example, in
	// `https://apps.apple.com/us/app/gmail-email-by-google/id422689480` the ID is
	// 422689480. Assets of this role are read-only.
	//   "ASSET_ROLE_RATING" - The rating of an app in the Google play store or iOS
	// app store. Note that this value is not automatically synced with the actual
	// rating in the store. It will always be the one provided when save the
	// creative. Assets of this role are read-only.
	//   "ASSET_ROLE_ICON" - The icon of a creative. This role is only supported
	// and required in the following creative_type: * `CREATIVE_TYPE_NATIVE` *
	// `CREATIVE_TYPE_NATIVE_SITE_SQUARE`
	//   "ASSET_ROLE_COVER_IMAGE" - The cover image of a native video creative.
	// This role is only supported and required in the following creative_type: *
	// `CREATIVE_TYPE_VIDEO`
	//   "ASSET_ROLE_BACKGROUND_COLOR" - The main color to use in a creative. This
	// role is only supported and required in the following creative_type: *
	// `CREATIVE_TYPE_ASSET_BASED_CREATIVE`
	//   "ASSET_ROLE_ACCENT_COLOR" - The accent color to use in a creative. This
	// role is only supported and required in the following creative_type: *
	// `CREATIVE_TYPE_ASSET_BASED_CREATIVE`
	//   "ASSET_ROLE_REQUIRE_LOGO" - Whether the creative must use a logo asset.
	// This role is only supported and required in the following creative_type: *
	// `CREATIVE_TYPE_ASSET_BASED_CREATIVE`
	//   "ASSET_ROLE_REQUIRE_IMAGE" - Whether the creative must use an image asset.
	// This role is only supported and required in the following creative_type: *
	// `CREATIVE_TYPE_ASSET_BASED_CREATIVE`
	//   "ASSET_ROLE_ENABLE_ASSET_ENHANCEMENTS" - Whether asset enhancements can be
	// applied to the creative. This role is only supported and required in the
	// following creative_type: * `CREATIVE_TYPE_ASSET_BASED_CREATIVE`
	Role string `json:"role,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Asset") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Asset") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AssetAssociation) MarshalJSON() ([]byte, error) {
	type NoMethod AssetAssociation
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AssignedInventorySource: An assignment between a targetable inventory source
// and an inventory source group.
type AssignedInventorySource struct {
	// AssignedInventorySourceId: Output only. The unique ID of the assigned
	// inventory source. The ID is only unique within a given inventory source
	// group. It may be reused in other contexts.
	AssignedInventorySourceId int64 `json:"assignedInventorySourceId,omitempty,string"`
	// InventorySourceId: Required. The ID of the inventory source entity being
	// targeted.
	InventorySourceId string `json:"inventorySourceId,omitempty"`
	// Name: Output only. The resource name of the assigned inventory source.
	Name string `json:"name,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AssignedInventorySourceId")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedInventorySourceId") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AssignedInventorySource) MarshalJSON() ([]byte, error) {
	type NoMethod AssignedInventorySource
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AssignedLocation: An assignment between a location list and a relevant
// targeting option.
type AssignedLocation struct {
	// AssignedLocationId: Output only. The unique ID of the assigned location. The
	// ID is only unique within a location list. It may be reused in other
	// contexts.
	AssignedLocationId int64 `json:"assignedLocationId,omitempty,string"`
	// Name: Output only. The resource name of the assigned location.
	Name string `json:"name,omitempty"`
	// TargetingOptionId: Required. The ID of the targeting option assigned to the
	// location list.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AssignedLocationId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedLocationId") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AssignedLocation) MarshalJSON() ([]byte, error) {
	type NoMethod AssignedLocation
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AssignedTargetingOption: A single assigned targeting option, which defines
// the state of a targeting option for an entity with targeting settings.
type AssignedTargetingOption struct {
	// AgeRangeDetails: Age range details. This field will be populated when the
	// targeting_type is `TARGETING_TYPE_AGE_RANGE`.
	AgeRangeDetails *AgeRangeAssignedTargetingOptionDetails `json:"ageRangeDetails,omitempty"`
	// AppCategoryDetails: App category details. This field will be populated when
	// the targeting_type is `TARGETING_TYPE_APP_CATEGORY`.
	AppCategoryDetails *AppCategoryAssignedTargetingOptionDetails `json:"appCategoryDetails,omitempty"`
	// AppDetails: App details. This field will be populated when the
	// targeting_type is `TARGETING_TYPE_APP`.
	AppDetails *AppAssignedTargetingOptionDetails `json:"appDetails,omitempty"`
	// AssignedTargetingOptionId: Output only. The unique ID of the assigned
	// targeting option. The ID is only unique within a given resource and
	// targeting type. It may be reused in other contexts.
	AssignedTargetingOptionId string `json:"assignedTargetingOptionId,omitempty"`
	// AssignedTargetingOptionIdAlias: Output only. An alias for the
	// assigned_targeting_option_id. This value can be used in place of
	// `assignedTargetingOptionId` when retrieving or deleting existing targeting.
	// This field will only be supported for all assigned targeting options of the
	// following targeting types: * `TARGETING_TYPE_AGE_RANGE` *
	// `TARGETING_TYPE_DEVICE_TYPE` *
	// `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` *
	// `TARGETING_TYPE_ENVIRONMENT` * `TARGETING_TYPE_EXCHANGE` *
	// `TARGETING_TYPE_GENDER` * `TARGETING_TYPE_HOUSEHOLD_INCOME` *
	// `TARGETING_TYPE_NATIVE_CONTENT_POSITION` * `TARGETING_TYPE_OMID` *
	// `TARGETING_TYPE_PARENTAL_STATUS` *
	// `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` *
	// `TARGETING_TYPE_VIDEO_PLAYER_SIZE` * `TARGETING_TYPE_VIEWABILITY` This field
	// is also supported for line item assigned targeting options of the following
	// targeting types: * `TARGETING_TYPE_CONTENT_INSTREAM_POSITION` *
	// `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION`
	AssignedTargetingOptionIdAlias string `json:"assignedTargetingOptionIdAlias,omitempty"`
	// AudienceGroupDetails: Audience targeting details. This field will be
	// populated when the targeting_type is `TARGETING_TYPE_AUDIENCE_GROUP`. You
	// can only target one audience group option per resource.
	AudienceGroupDetails *AudienceGroupAssignedTargetingOptionDetails `json:"audienceGroupDetails,omitempty"`
	// AudioContentTypeDetails: Audio content type details. This field will be
	// populated when the targeting_type is `TARGETING_TYPE_AUDIO_CONTENT_TYPE`.
	AudioContentTypeDetails *AudioContentTypeAssignedTargetingOptionDetails `json:"audioContentTypeDetails,omitempty"`
	// AuthorizedSellerStatusDetails: Authorized seller status details. This field
	// will be populated when the targeting_type is
	// `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS`. You can only target one
	// authorized seller status option per resource. If a resource doesn't have an
	// authorized seller status option, all authorized sellers indicated as DIRECT
	// or RESELLER in the ads.txt file are targeted by default.
	AuthorizedSellerStatusDetails *AuthorizedSellerStatusAssignedTargetingOptionDetails `json:"authorizedSellerStatusDetails,omitempty"`
	// BrowserDetails: Browser details. This field will be populated when the
	// targeting_type is `TARGETING_TYPE_BROWSER`.
	BrowserDetails *BrowserAssignedTargetingOptionDetails `json:"browserDetails,omitempty"`
	// BusinessChainDetails: Business chain details. This field will be populated
	// when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
	BusinessChainDetails *BusinessChainAssignedTargetingOptionDetails `json:"businessChainDetails,omitempty"`
	// CarrierAndIspDetails: Carrier and ISP details. This field will be populated
	// when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
	CarrierAndIspDetails *CarrierAndIspAssignedTargetingOptionDetails `json:"carrierAndIspDetails,omitempty"`
	// CategoryDetails: Category details. This field will be populated when the
	// targeting_type is `TARGETING_TYPE_CATEGORY`. Targeting a category will also
	// target its subcategories. If a category is excluded from targeting and a
	// subcategory is included, the exclusion will take precedence.
	CategoryDetails *CategoryAssignedTargetingOptionDetails `json:"categoryDetails,omitempty"`
	// ChannelDetails: Channel details. This field will be populated when the
	// targeting_type is `TARGETING_TYPE_CHANNEL`.
	ChannelDetails *ChannelAssignedTargetingOptionDetails `json:"channelDetails,omitempty"`
	// ContentDurationDetails: Content duration details. This field will be
	// populated when the targeting_type is `TARGETING_TYPE_CONTENT_DURATION`.
	ContentDurationDetails *ContentDurationAssignedTargetingOptionDetails `json:"contentDurationDetails,omitempty"`
	// ContentGenreDetails: Content genre details. This field will be populated
	// when the targeting_type is `TARGETING_TYPE_CONTENT_GENRE`.
	ContentGenreDetails *ContentGenreAssignedTargetingOptionDetails `json:"contentGenreDetails,omitempty"`
	// ContentInstreamPositionDetails: Content instream position details. This
	// field will be populated when the targeting_type is
	// `TARGETING_TYPE_CONTENT_INSTREAM_POSITION`.
	ContentInstreamPositionDetails *ContentInstreamPositionAssignedTargetingOptionDetails `json:"contentInstreamPositionDetails,omitempty"`
	// ContentOutstreamPositionDetails: Content outstream position details. This
	// field will be populated when the targeting_type is
	// `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION`.
	ContentOutstreamPositionDetails *ContentOutstreamPositionAssignedTargetingOptionDetails `json:"contentOutstreamPositionDetails,omitempty"`
	// ContentStreamTypeDetails: Content duration details. This field will be
	// populated when the TargetingType is `TARGETING_TYPE_CONTENT_STREAM_TYPE`.
	ContentStreamTypeDetails *ContentStreamTypeAssignedTargetingOptionDetails `json:"contentStreamTypeDetails,omitempty"`
	// ContentThemeExclusionDetails: Content theme details. This field will be
	// populated when the targeting_type is
	// `TARGETING_TYPE_CONTENT_THEME_EXCLUSION`. Content theme are targeting
	// exclusions. Advertiser level content theme exclusions, if set, are always
	// applied in serving (even though they aren't visible in resource settings).
	// Resource settings can exclude content theme in addition to advertiser
	// exclusions.
	ContentThemeExclusionDetails *ContentThemeAssignedTargetingOptionDetails `json:"contentThemeExclusionDetails,omitempty"`
	// DayAndTimeDetails: Day and time details. This field will be populated when
	// the targeting_type is `TARGETING_TYPE_DAY_AND_TIME`.
	DayAndTimeDetails *DayAndTimeAssignedTargetingOptionDetails `json:"dayAndTimeDetails,omitempty"`
	// DeviceMakeModelDetails: Device make and model details. This field will be
	// populated when the targeting_type is `TARGETING_TYPE_DEVICE_MAKE_MODEL`.
	DeviceMakeModelDetails *DeviceMakeModelAssignedTargetingOptionDetails `json:"deviceMakeModelDetails,omitempty"`
	// DeviceTypeDetails: Device Type details. This field will be populated when
	// the targeting_type is `TARGETING_TYPE_DEVICE_TYPE`.
	DeviceTypeDetails *DeviceTypeAssignedTargetingOptionDetails `json:"deviceTypeDetails,omitempty"`
	// DigitalContentLabelExclusionDetails: Digital content label details. This
	// field will be populated when the targeting_type is
	// `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION`. Digital content labels are
	// targeting exclusions. Advertiser level digital content label exclusions, if
	// set, are always applied in serving (even though they aren't visible in
	// resource settings). Resource settings can exclude content labels in addition
	// to advertiser exclusions, but can't override them. A line item won't serve
	// if all the digital content labels are excluded.
	DigitalContentLabelExclusionDetails *DigitalContentLabelAssignedTargetingOptionDetails `json:"digitalContentLabelExclusionDetails,omitempty"`
	// EnvironmentDetails: Environment details. This field will be populated when
	// the targeting_type is `TARGETING_TYPE_ENVIRONMENT`.
	EnvironmentDetails *EnvironmentAssignedTargetingOptionDetails `json:"environmentDetails,omitempty"`
	// ExchangeDetails: Exchange details. This field will be populated when the
	// targeting_type is `TARGETING_TYPE_EXCHANGE`.
	ExchangeDetails *ExchangeAssignedTargetingOptionDetails `json:"exchangeDetails,omitempty"`
	// GenderDetails: Gender details. This field will be populated when the
	// targeting_type is `TARGETING_TYPE_GENDER`.
	GenderDetails *GenderAssignedTargetingOptionDetails `json:"genderDetails,omitempty"`
	// GeoRegionDetails: Geographic region details. This field will be populated
	// when the targeting_type is `TARGETING_TYPE_GEO_REGION`.
	GeoRegionDetails *GeoRegionAssignedTargetingOptionDetails `json:"geoRegionDetails,omitempty"`
	// HouseholdIncomeDetails: Household income details. This field will be
	// populated when the targeting_type is `TARGETING_TYPE_HOUSEHOLD_INCOME`.
	HouseholdIncomeDetails *HouseholdIncomeAssignedTargetingOptionDetails `json:"householdIncomeDetails,omitempty"`
	// Inheritance: Output only. The inheritance status of the assigned targeting
	// option.
	//
	// Possible values:
	//   "INHERITANCE_UNSPECIFIED" - The inheritance is unspecified or unknown.
	//   "NOT_INHERITED" - The assigned targeting option is not inherited from
	// higher level entity.
	//   "INHERITED_FROM_PARTNER" - The assigned targeting option is inherited from
	// partner targeting settings.
	//   "INHERITED_FROM_ADVERTISER" - The assigned targeting option is inherited
	// from advertiser targeting settings.
	Inheritance string `json:"inheritance,omitempty"`
	// InventorySourceDetails: Inventory source details. This field will be
	// populated when the targeting_type is `TARGETING_TYPE_INVENTORY_SOURCE`.
	InventorySourceDetails *InventorySourceAssignedTargetingOptionDetails `json:"inventorySourceDetails,omitempty"`
	// InventorySourceGroupDetails: Inventory source group details. This field will
	// be populated when the targeting_type is
	// `TARGETING_TYPE_INVENTORY_SOURCE_GROUP`.
	InventorySourceGroupDetails *InventorySourceGroupAssignedTargetingOptionDetails `json:"inventorySourceGroupDetails,omitempty"`
	// KeywordDetails: Keyword details. This field will be populated when the
	// targeting_type is `TARGETING_TYPE_KEYWORD`. A maximum of 5000 direct
	// negative keywords can be assigned to a resource. No limit on number of
	// positive keywords that can be assigned.
	KeywordDetails *KeywordAssignedTargetingOptionDetails `json:"keywordDetails,omitempty"`
	// LanguageDetails: Language details. This field will be populated when the
	// targeting_type is `TARGETING_TYPE_LANGUAGE`.
	LanguageDetails *LanguageAssignedTargetingOptionDetails `json:"languageDetails,omitempty"`
	// Name: Output only. The resource name for this assigned targeting option.
	Name string `json:"name,omitempty"`
	// NativeContentPositionDetails: Native content position details. This field
	// will be populated when the targeting_type is
	// `TARGETING_TYPE_NATIVE_CONTENT_POSITION`.
	NativeContentPositionDetails *NativeContentPositionAssignedTargetingOptionDetails `json:"nativeContentPositionDetails,omitempty"`
	// NegativeKeywordListDetails: Keyword details. This field will be populated
	// when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum
	// of 4 negative keyword lists can be assigned to a resource.
	NegativeKeywordListDetails *NegativeKeywordListAssignedTargetingOptionDetails `json:"negativeKeywordListDetails,omitempty"`
	// OmidDetails: Open Measurement enabled inventory details. This field will be
	// populated when the targeting_type is `TARGETING_TYPE_OMID`.
	OmidDetails *OmidAssignedTargetingOptionDetails `json:"omidDetails,omitempty"`
	// OnScreenPositionDetails: On screen position details. This field will be
	// populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
	OnScreenPositionDetails *OnScreenPositionAssignedTargetingOptionDetails `json:"onScreenPositionDetails,omitempty"`
	// OperatingSystemDetails: Operating system details. This field will be
	// populated when the targeting_type is `TARGETING_TYPE_OPERATING_SYSTEM`.
	OperatingSystemDetails *OperatingSystemAssignedTargetingOptionDetails `json:"operatingSystemDetails,omitempty"`
	// ParentalStatusDetails: Parental status details. This field will be populated
	// when the targeting_type is `TARGETING_TYPE_PARENTAL_STATUS`.
	ParentalStatusDetails *ParentalStatusAssignedTargetingOptionDetails `json:"parentalStatusDetails,omitempty"`
	// PoiDetails: POI details. This field will be populated when the
	// targeting_type is `TARGETING_TYPE_POI`.
	PoiDetails *PoiAssignedTargetingOptionDetails `json:"poiDetails,omitempty"`
	// ProximityLocationListDetails: Proximity location list details. This field
	// will be populated when the targeting_type is
	// `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
	ProximityLocationListDetails *ProximityLocationListAssignedTargetingOptionDetails `json:"proximityLocationListDetails,omitempty"`
	// RegionalLocationListDetails: Regional location list details. This field will
	// be populated when the targeting_type is
	// `TARGETING_TYPE_REGIONAL_LOCATION_LIST`.
	RegionalLocationListDetails *RegionalLocationListAssignedTargetingOptionDetails `json:"regionalLocationListDetails,omitempty"`
	// SensitiveCategoryExclusionDetails: Sensitive category details. This field
	// will be populated when the targeting_type is
	// `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`. Sensitive categories are
	// targeting exclusions. Advertiser level sensitive category exclusions, if
	// set, are always applied in serving (even though they aren't visible in
	// resource settings). Resource settings can exclude sensitive categories in
	// addition to advertiser exclusions, but can't override them.
	SensitiveCategoryExclusionDetails *SensitiveCategoryAssignedTargetingOptionDetails `json:"sensitiveCategoryExclusionDetails,omitempty"`
	// SessionPositionDetails: Session position details. This field will be
	// populated when the targeting_type is `TARGETING_TYPE_SESSION_POSITION`.
	SessionPositionDetails *SessionPositionAssignedTargetingOptionDetails `json:"sessionPositionDetails,omitempty"`
	// SubExchangeDetails: Sub-exchange details. This field will be populated when
	// the targeting_type is `TARGETING_TYPE_SUB_EXCHANGE`.
	SubExchangeDetails *SubExchangeAssignedTargetingOptionDetails `json:"subExchangeDetails,omitempty"`
	// TargetingType: Output only. Identifies the type of this assigned targeting
	// option.
	//
	// Possible values:
	//   "TARGETING_TYPE_UNSPECIFIED" - Default value when type is not specified or
	// is unknown in this version.
	//   "TARGETING_TYPE_CHANNEL" - Target a channel (a custom group of related
	// websites or apps).
	//   "TARGETING_TYPE_APP_CATEGORY" - Target an app category (for example,
	// education or puzzle games).
	//   "TARGETING_TYPE_APP" - Target a specific app (for example, Angry Birds).
	//   "TARGETING_TYPE_URL" - Target a specific url (for example, quora.com).
	//   "TARGETING_TYPE_DAY_AND_TIME" - Target ads during a chosen time period on
	// a specific day.
	//   "TARGETING_TYPE_AGE_RANGE" - Target ads to a specific age range (for
	// example, 18-24).
	//   "TARGETING_TYPE_REGIONAL_LOCATION_LIST" - Target ads to the specified
	// regions on a regional location list.
	//   "TARGETING_TYPE_PROXIMITY_LOCATION_LIST" - Target ads to the specified
	// points of interest on a proximity location list.
	//   "TARGETING_TYPE_GENDER" - Target ads to a specific gender (for example,
	// female or male).
	//   "TARGETING_TYPE_VIDEO_PLAYER_SIZE" - Target a specific video player size
	// for video ads.
	//   "TARGETING_TYPE_USER_REWARDED_CONTENT" - Target user rewarded content for
	// video ads.
	//   "TARGETING_TYPE_PARENTAL_STATUS" - Target ads to a specific parental
	// status (for example, parent or not a parent).
	//   "TARGETING_TYPE_CONTENT_INSTREAM_POSITION" - Target video or audio ads in
	// a specific content instream position (for example, pre-roll, mid-roll, or
	// post-roll).
	//   "TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION" - Target ads in a specific
	// content outstream position.
	//   "TARGETING_TYPE_DEVICE_TYPE" - Target ads to a specific device type (for
	// example, tablet or connected TV).
	//   "TARGETING_TYPE_AUDIENCE_GROUP" - Target ads to an audience or groups of
	// audiences. Singleton field, at most one can exist on a single Lineitem at a
	// time.
	//   "TARGETING_TYPE_BROWSER" - Target ads to specific web browsers (for
	// example, Chrome).
	//   "TARGETING_TYPE_HOUSEHOLD_INCOME" - Target ads to a specific household
	// income range (for example, top 10%).
	//   "TARGETING_TYPE_ON_SCREEN_POSITION" - Target ads in a specific on screen
	// position.
	//   "TARGETING_TYPE_THIRD_PARTY_VERIFIER" - Filter web sites through third
	// party verification (for example, IAS or DoubleVerify).
	//   "TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION" - Filter web sites by
	// specific digital content label ratings (for example, DL-MA: suitable only
	// for mature audiences).
	//   "TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION" - Filter website content by
	// sensitive categories (for example, adult).
	//   "TARGETING_TYPE_ENVIRONMENT" - Target ads to a specific environment (for
	// example, web or app).
	//   "TARGETING_TYPE_CARRIER_AND_ISP" - Target ads to a specific network
	// carrier or internet service provider (ISP) (for example, Comcast or Orange).
	//   "TARGETING_TYPE_OPERATING_SYSTEM" - Target ads to a specific operating
	// system (for example, macOS).
	//   "TARGETING_TYPE_DEVICE_MAKE_MODEL" - Target ads to a specific device make
	// or model (for example, Roku or Samsung).
	//   "TARGETING_TYPE_KEYWORD" - Target ads to a specific keyword (for example,
	// dog or retriever).
	//   "TARGETING_TYPE_NEGATIVE_KEYWORD_LIST" - Target ads to a specific negative
	// keyword list.
	//   "TARGETING_TYPE_VIEWABILITY" - Target ads to a specific viewability (for
	// example, 80% viewable).
	//   "TARGETING_TYPE_CATEGORY" - Target ads to a specific content category (for
	// example, arts & entertainment).
	//   "TARGETING_TYPE_INVENTORY_SOURCE" - Purchase impressions from specific
	// deals and auction packages.
	//   "TARGETING_TYPE_LANGUAGE" - Target ads to a specific language (for
	// example, English or Japanese).
	//   "TARGETING_TYPE_AUTHORIZED_SELLER_STATUS" - Target ads to ads.txt
	// authorized sellers. If no targeting option of this type is assigned, the
	// resource uses the "Authorized Direct Sellers and Resellers" option by
	// default.
	//   "TARGETING_TYPE_GEO_REGION" - Target ads to a specific regional location
	// (for example, a city or state).
	//   "TARGETING_TYPE_INVENTORY_SOURCE_GROUP" - Purchase impressions from a
	// group of deals and auction packages.
	//   "TARGETING_TYPE_EXCHANGE" - Purchase impressions from specific exchanges.
	//   "TARGETING_TYPE_SUB_EXCHANGE" - Purchase impressions from specific
	// sub-exchanges.
	//   "TARGETING_TYPE_POI" - Target ads around a specific point of interest,
	// such as a notable building, a street address, or latitude/longitude
	// coordinates.
	//   "TARGETING_TYPE_BUSINESS_CHAIN" - Target ads around locations of a
	// business chain within a specific geo region.
	//   "TARGETING_TYPE_CONTENT_DURATION" - Target ads to a specific video content
	// duration.
	//   "TARGETING_TYPE_CONTENT_STREAM_TYPE" - Target ads to a specific video
	// content stream type.
	//   "TARGETING_TYPE_NATIVE_CONTENT_POSITION" - Target ads to a specific native
	// content position.
	//   "TARGETING_TYPE_OMID" - Target ads in an Open Measurement enabled
	// inventory.
	//   "TARGETING_TYPE_AUDIO_CONTENT_TYPE" - Target ads to a specific audio
	// content type.
	//   "TARGETING_TYPE_CONTENT_GENRE" - Target ads to a specific content genre.
	//   "TARGETING_TYPE_YOUTUBE_VIDEO" - Target ads to a specific YouTube video.
	// Targeting of this type cannot be created or updated using the API. Although
	// this targeting is inherited by child resources, **inherited targeting of
	// this type will not be retrieveable**.
	//   "TARGETING_TYPE_YOUTUBE_CHANNEL" - Target ads to a specific YouTube
	// channel. Targeting of this type cannot be created or updated using the API.
	// Although this targeting is inherited by child resources, **inherited
	// targeting of this type will not be retrieveable**.
	//   "TARGETING_TYPE_SESSION_POSITION" - Target ads to a serve it in a certain
	// position of a session. Only supported for Ad Group resources under YouTube
	// Programmatic Reservation line items. Targeting of this type cannot be
	// created or updated using the API.
	//   "TARGETING_TYPE_CONTENT_THEME_EXCLUSION" - Filter website content by
	// content themes (for example, religion). Only supported for Advertiser
	// resources. Targeting of this type cannot be created or updated using the
	// API. This targeting is only inherited by child YouTube and Demand Gen line
	// item resources.
	TargetingType string `json:"targetingType,omitempty"`
	// ThirdPartyVerifierDetails: Third party verification details. This field will
	// be populated when the targeting_type is
	// `TARGETING_TYPE_THIRD_PARTY_VERIFIER`.
	ThirdPartyVerifierDetails *ThirdPartyVerifierAssignedTargetingOptionDetails `json:"thirdPartyVerifierDetails,omitempty"`
	// UrlDetails: URL details. This field will be populated when the
	// targeting_type is `TARGETING_TYPE_URL`.
	UrlDetails *UrlAssignedTargetingOptionDetails `json:"urlDetails,omitempty"`
	// UserRewardedContentDetails: User rewarded content details. This field will
	// be populated when the targeting_type is
	// `TARGETING_TYPE_USER_REWARDED_CONTENT`.
	UserRewardedContentDetails *UserRewardedContentAssignedTargetingOptionDetails `json:"userRewardedContentDetails,omitempty"`
	// VideoPlayerSizeDetails: Video player size details. This field will be
	// populated when the targeting_type is `TARGETING_TYPE_VIDEO_PLAYER_SIZE`.
	VideoPlayerSizeDetails *VideoPlayerSizeAssignedTargetingOptionDetails `json:"videoPlayerSizeDetails,omitempty"`
	// ViewabilityDetails: Viewability details. This field will be populated when
	// the targeting_type is `TARGETING_TYPE_VIEWABILITY`. You can only target one
	// viewability option per resource.
	ViewabilityDetails *ViewabilityAssignedTargetingOptionDetails `json:"viewabilityDetails,omitempty"`
	// YoutubeChannelDetails: YouTube channel details. This field will be populated
	// when the targeting_type is `TARGETING_TYPE_YOUTUBE_CHANNEL`.
	YoutubeChannelDetails *YoutubeChannelAssignedTargetingOptionDetails `json:"youtubeChannelDetails,omitempty"`
	// YoutubeVideoDetails: YouTube video details. This field will be populated
	// when the targeting_type is `TARGETING_TYPE_YOUTUBE_VIDEO`.
	YoutubeVideoDetails *YoutubeVideoAssignedTargetingOptionDetails `json:"youtubeVideoDetails,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AgeRangeDetails") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AgeRangeDetails") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AssignedTargetingOption) MarshalJSON() ([]byte, error) {
	type NoMethod AssignedTargetingOption
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AssignedUserRole: A single assigned user role, which defines a user's
// authorized interaction with a specified partner or advertiser.
type AssignedUserRole struct {
	// AdvertiserId: The ID of the advertiser that the assigend user role applies
	// to.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// AssignedUserRoleId: Output only. The ID of the assigned user role.
	AssignedUserRoleId string `json:"assignedUserRoleId,omitempty"`
	// PartnerId: The ID of the partner that the assigned user role applies to.
	PartnerId int64 `json:"partnerId,omitempty,string"`
	// UserRole: Required. The user role to assign to a user for the entity.
	//
	// Possible values:
	//   "USER_ROLE_UNSPECIFIED" - Default value when the user role is not
	// specified or is unknown in this version.
	//   "ADMIN" - The user can manage campaigns, creatives, insertion orders, line
	// items, and reports for the entity. They can view and edit billing
	// information, create or modify users, and enable or disable exchanges. This
	// role can only be assigned for a partner entity.
	//   "ADMIN_PARTNER_CLIENT" - The user can manage campaigns, creatives,
	// insertion orders, line items, and reports for the entity. They can create
	// and modify other `ADMIN_PARTNER_CLIENT` users and view billing information.
	// They cannot view revenue models, markups, or any other reseller-sensitive
	// fields. This role can only be assigned for a partner entity.
	//   "STANDARD" - The user can manage campaigns, creatives, insertion orders,
	// line items, and reports for the entity. They cannot create and modify users
	// or view billing information.
	//   "STANDARD_PLANNER" - The user can view all campaigns, creatives, insertion
	// orders, line items, and reports for the entity, including all cost data.
	// They can create and modify planning-related features, including plans and
	// inventory.
	//   "STANDARD_PLANNER_LIMITED" - The user can view all campaigns, creatives,
	// insertion orders, line items, and reports for the entity. They can create or
	// modify planning-related features, including plans and inventory. They have
	// no access to cost data and cannot start, accept, or negotiate deals.
	//   "STANDARD_PARTNER_CLIENT" - The user can manage campaigns, creatives,
	// insertion orders, line items, and reports for the entity. They cannot create
	// or modify other users or view billing information. They cannot view revenue
	// models, markups, or any other reseller-sensitive fields. This role can only
	// be assigned for an advertiser entity.
	//   "READ_ONLY" - The user can only build reports and view data for the
	// entity.
	//   "REPORTING_ONLY" - The user can only create and manage reports.
	//   "LIMITED_REPORTING_ONLY" - The user can only create and manage the
	// following client-safe reports: General, Audience Performance, Cross-Partner,
	// Keyword, Order ID, Category, and Third-Party Data Provider.
	//   "CREATIVE" - The user can view media plan information they need to
	// collaborate, but can't view cost-related data or Marketplace.
	//   "CREATIVE_ADMIN" - The user can view media plan information they need to
	// collaborate, but can't view cost-related data or Marketplace. In addition,
	// they can add other creative admins or creative users to the entity.
	UserRole string `json:"userRole,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AssignedUserRole) MarshalJSON() ([]byte, error) {
	type NoMethod AssignedUserRole
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AudienceGroupAssignedTargetingOptionDetails: Assigned audience group
// targeting option details. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_AUDIENCE_GROUP`. The relation between each group is UNION,
// except for excluded_first_and_third_party_audience_group and
// excluded_google_audience_group, of which COMPLEMENT is used as an
// INTERSECTION with other groups.
type AudienceGroupAssignedTargetingOptionDetails struct {
	// ExcludedFirstPartyAndPartnerAudienceGroup: Optional. The first party and
	// partner audience ids and recencies of the excluded first party and partner
	// audience group. Used for negative targeting. The COMPLEMENT of the UNION of
	// this group and other excluded audience groups is used as an INTERSECTION to
	// any positive audience targeting. All items are logically ‘OR’ of each
	// other.
	ExcludedFirstPartyAndPartnerAudienceGroup *FirstPartyAndPartnerAudienceGroup `json:"excludedFirstPartyAndPartnerAudienceGroup,omitempty"`
	// ExcludedGoogleAudienceGroup: Optional. The Google audience ids of the
	// excluded Google audience group. Used for negative targeting. The COMPLEMENT
	// of the UNION of this group and other excluded audience groups is used as an
	// INTERSECTION to any positive audience targeting. Only contains Affinity,
	// In-market and Installed-apps type Google audiences. All items are logically
	// ‘OR’ of each other.
	ExcludedGoogleAudienceGroup *GoogleAudienceGroup `json:"excludedGoogleAudienceGroup,omitempty"`
	// IncludedCombinedAudienceGroup: Optional. The combined audience ids of the
	// included combined audience group. Contains combined audience ids only.
	IncludedCombinedAudienceGroup *CombinedAudienceGroup `json:"includedCombinedAudienceGroup,omitempty"`
	// IncludedCustomListGroup: Optional. The custom list ids of the included
	// custom list group. Contains custom list ids only.
	IncludedCustomListGroup *CustomListGroup `json:"includedCustomListGroup,omitempty"`
	// IncludedFirstPartyAndPartnerAudienceGroups: Optional. The first party and
	// partner audience ids and recencies of included first party and partner
	// audience groups. Each first party and partner audience group contains first
	// party and partner audience ids only. The relation between each first party
	// and partner audience group is INTERSECTION, and the result is UNION'ed with
	// other audience groups. Repeated groups with the same settings will be
	// ignored.
	IncludedFirstPartyAndPartnerAudienceGroups []*FirstPartyAndPartnerAudienceGroup `json:"includedFirstPartyAndPartnerAudienceGroups,omitempty"`
	// IncludedGoogleAudienceGroup: Optional. The Google audience ids of the
	// included Google audience group. Contains Google audience ids only.
	IncludedGoogleAudienceGroup *GoogleAudienceGroup `json:"includedGoogleAudienceGroup,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "ExcludedFirstPartyAndPartnerAudienceGroup") to unconditionally include in
	// API requests. By default, fields with empty or default values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g.
	// "ExcludedFirstPartyAndPartnerAudienceGroup") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted from
	// API requests. See https://pkg.go.dev/google.golang.org/api#hdr-NullFields
	// for more details.
	NullFields []string `json:"-"`
}

func (s AudienceGroupAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AudienceGroupAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AudioAd: Details for an audio ad.
type AudioAd struct {
	// DisplayUrl: The webpage address that appears with the ad.
	DisplayUrl string `json:"displayUrl,omitempty"`
	// FinalUrl: The URL address of the webpage that people reach after they click
	// the ad.
	FinalUrl string `json:"finalUrl,omitempty"`
	// TrackingUrl: The URL address loaded in the background for tracking purposes.
	TrackingUrl string `json:"trackingUrl,omitempty"`
	// Video: The YouTube video of the ad.
	Video *YoutubeVideoDetails `json:"video,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayUrl") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayUrl") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AudioAd) MarshalJSON() ([]byte, error) {
	type NoMethod AudioAd
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AudioContentTypeAssignedTargetingOptionDetails: Details for audio content
// type assigned targeting option. This will be populated in the
// audio_content_type_details field when targeting_type is
// `TARGETING_TYPE_AUDIO_CONTENT_TYPE`. Explicitly targeting all options is not
// supported. Remove all audio content type targeting options to achieve this
// effect.
type AudioContentTypeAssignedTargetingOptionDetails struct {
	// AudioContentType: Required. The audio content type.
	//
	// Possible values:
	//   "AUDIO_CONTENT_TYPE_UNSPECIFIED" - Audio content type is not specified in
	// this version. This enum is a place holder for a default value and does not
	// represent a real content stream type.
	//   "AUDIO_CONTENT_TYPE_UNKNOWN" - The audio content type is unknown.
	//   "AUDIO_CONTENT_TYPE_MUSIC" - The audio content type is music.
	//   "AUDIO_CONTENT_TYPE_BROADCAST" - The audio content type is broadcast.
	//   "AUDIO_CONTENT_TYPE_PODCAST" - The audio content type is podcast.
	AudioContentType string `json:"audioContentType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AudioContentType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AudioContentType") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AudioContentTypeAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AudioContentTypeAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AudioContentTypeTargetingOptionDetails: Represents a targetable audio
// content type. This will be populated in the audio_content_type_details field
// when targeting_type is `TARGETING_TYPE_AUDIO_CONTENT_TYPE`.
type AudioContentTypeTargetingOptionDetails struct {
	// AudioContentType: Output only. The audio content type.
	//
	// Possible values:
	//   "AUDIO_CONTENT_TYPE_UNSPECIFIED" - Audio content type is not specified in
	// this version. This enum is a place holder for a default value and does not
	// represent a real content stream type.
	//   "AUDIO_CONTENT_TYPE_UNKNOWN" - The audio content type is unknown.
	//   "AUDIO_CONTENT_TYPE_MUSIC" - The audio content type is music.
	//   "AUDIO_CONTENT_TYPE_BROADCAST" - The audio content type is broadcast.
	//   "AUDIO_CONTENT_TYPE_PODCAST" - The audio content type is podcast.
	AudioContentType string `json:"audioContentType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AudioContentType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AudioContentType") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AudioContentTypeTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AudioContentTypeTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AudioVideoOffset: The length an audio or a video has been played.
type AudioVideoOffset struct {
	// Percentage: Optional. The offset in percentage of the audio or video
	// duration.
	Percentage int64 `json:"percentage,omitempty,string"`
	// Seconds: Optional. The offset in seconds from the start of the audio or
	// video.
	Seconds int64 `json:"seconds,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "Percentage") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Percentage") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AudioVideoOffset) MarshalJSON() ([]byte, error) {
	type NoMethod AudioVideoOffset
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AuditAdvertiserResponse: Response message for
// AdvertiserService.AuditAdvertiser.
type AuditAdvertiserResponse struct {
	// AdGroupCriteriaCount: The number of individual targeting options from the
	// following targeting types that are assigned to a line item under this
	// advertiser. These individual targeting options count towards the limit of
	// 4500000 ad group targeting options per advertiser. Qualifying Targeting
	// types: * Channels, URLs, apps, and collections * Demographic * Google
	// Audiences, including Affinity, Custom Affinity, and In-market audiences *
	// Inventory source * Keyword * Mobile app category * User lists * Video
	// targeting * Viewability
	AdGroupCriteriaCount int64 `json:"adGroupCriteriaCount,omitempty,string"`
	// CampaignCriteriaCount: The number of individual targeting options from the
	// following targeting types that are assigned to a line item under this
	// advertiser. These individual targeting options count towards the limit of
	// 900000 campaign targeting options per advertiser. Qualifying Targeting
	// types: * Position * Browser * Connection speed * Day and time * Device and
	// operating system * Digital content label * Sensitive categories *
	// Environment * Geography, including business chains and proximity * ISP *
	// Language * Third-party verification
	CampaignCriteriaCount int64 `json:"campaignCriteriaCount,omitempty,string"`
	// ChannelsCount: The number of channels created under this advertiser. These
	// channels count towards the limit of 1000 channels per advertiser.
	ChannelsCount int64 `json:"channelsCount,omitempty,string"`
	// NegativeKeywordListsCount: The number of negative keyword lists created
	// under this advertiser. These negative keyword lists count towards the limit
	// of 20 negative keyword lists per advertiser.
	NegativeKeywordListsCount int64 `json:"negativeKeywordListsCount,omitempty,string"`
	// NegativelyTargetedChannelsCount: The number of negatively targeted channels
	// created under this advertiser. These negatively targeted channels count
	// towards the limit of 5 negatively targeted channels per advertiser.
	NegativelyTargetedChannelsCount int64 `json:"negativelyTargetedChannelsCount,omitempty,string"`
	// UsedCampaignsCount: The number of ACTIVE and PAUSED campaigns under this
	// advertiser. These campaigns count towards the limit of 9999 campaigns per
	// advertiser.
	UsedCampaignsCount int64 `json:"usedCampaignsCount,omitempty,string"`
	// UsedInsertionOrdersCount: The number of ACTIVE, PAUSED and DRAFT insertion
	// orders under this advertiser. These insertion orders count towards the limit
	// of 9999 insertion orders per advertiser.
	UsedInsertionOrdersCount int64 `json:"usedInsertionOrdersCount,omitempty,string"`
	// UsedLineItemsCount: The number of ACTIVE, PAUSED, and DRAFT line items under
	// this advertiser. These line items count towards the limit of 9999 line items
	// per advertiser.
	UsedLineItemsCount int64 `json:"usedLineItemsCount,omitempty,string"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdGroupCriteriaCount") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdGroupCriteriaCount") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AuditAdvertiserResponse) MarshalJSON() ([]byte, error) {
	type NoMethod AuditAdvertiserResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AuthorizedSellerStatusAssignedTargetingOptionDetails: Represents an assigned
// authorized seller status. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS`. If a resource does not have an
// `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS` assigned targeting option, it is
// using the "Authorized Direct Sellers and Resellers" option.
type AuthorizedSellerStatusAssignedTargetingOptionDetails struct {
	// AuthorizedSellerStatus: Output only. The authorized seller status to target.
	//
	// Possible values:
	//   "AUTHORIZED_SELLER_STATUS_UNSPECIFIED" - Default value when authorized
	// seller status is not specified in this version. This enum is a placeholder
	// for the default value, or "Authorized Direct Sellers and Resellers" in the
	// UI.
	//   "AUTHORIZED_SELLER_STATUS_AUTHORIZED_DIRECT_SELLERS_ONLY" - Only
	// authorized sellers that directly own the inventory being monetized, as
	// indicated by a DIRECT declaration in the ads.txt file. This value is
	// equivalent to "Authorized Direct Sellers" in the UI.
	//   "AUTHORIZED_SELLER_STATUS_AUTHORIZED_AND_NON_PARTICIPATING_PUBLISHERS" -
	// All authorized sellers, including publishers that have not posted an ads.txt
	// file. Display & Video 360 automatically disallows unauthorized sellers. This
	// value is equivalent to "Authorized and Non-Participating Publishers" in the
	// UI.
	AuthorizedSellerStatus string `json:"authorizedSellerStatus,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id of a TargetingOption of
	// type `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AuthorizedSellerStatus") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AuthorizedSellerStatus") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AuthorizedSellerStatusAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AuthorizedSellerStatusAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AuthorizedSellerStatusTargetingOptionDetails: Represents a targetable
// authorized seller status. This will be populated in the
// authorized_seller_status_details field when targeting_type is
// `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS`.
type AuthorizedSellerStatusTargetingOptionDetails struct {
	// AuthorizedSellerStatus: Output only. The authorized seller status.
	//
	// Possible values:
	//   "AUTHORIZED_SELLER_STATUS_UNSPECIFIED" - Default value when authorized
	// seller status is not specified in this version. This enum is a placeholder
	// for the default value, or "Authorized Direct Sellers and Resellers" in the
	// UI.
	//   "AUTHORIZED_SELLER_STATUS_AUTHORIZED_DIRECT_SELLERS_ONLY" - Only
	// authorized sellers that directly own the inventory being monetized, as
	// indicated by a DIRECT declaration in the ads.txt file. This value is
	// equivalent to "Authorized Direct Sellers" in the UI.
	//   "AUTHORIZED_SELLER_STATUS_AUTHORIZED_AND_NON_PARTICIPATING_PUBLISHERS" -
	// All authorized sellers, including publishers that have not posted an ads.txt
	// file. Display & Video 360 automatically disallows unauthorized sellers. This
	// value is equivalent to "Authorized and Non-Participating Publishers" in the
	// UI.
	AuthorizedSellerStatus string `json:"authorizedSellerStatus,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AuthorizedSellerStatus") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AuthorizedSellerStatus") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AuthorizedSellerStatusTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod AuthorizedSellerStatusTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BiddingStrategy: Settings that control the bid strategy. Bid strategy
// determines the bid price.
type BiddingStrategy struct {
	// FixedBid: A strategy that uses a fixed bid price.
	FixedBid *FixedBidStrategy `json:"fixedBid,omitempty"`
	// MaximizeSpendAutoBid: A strategy that automatically adjusts the bid to
	// optimize to your performance goal while spending the full budget. At
	// insertion order level, the markup_type of line items cannot be set to
	// `PARTNER_REVENUE_MODEL_MARKUP_TYPE_CPM`. In addition, when
	// performance_goal_type is one of: *
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` *
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` *
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED` , the line_item_type of
	// the insertion order line items must be either: *
	// `LINE_ITEM_TYPE_DISPLAY_DEFAULT` * `LINE_ITEM_TYPE_VIDEO_DEFAULT` , and when
	// performance_goal_type is either: *
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA` *
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN` the line_item_type of the
	// insertion order line items must be `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
	MaximizeSpendAutoBid *MaximizeSpendBidStrategy `json:"maximizeSpendAutoBid,omitempty"`
	// PerformanceGoalAutoBid: A strategy that automatically adjusts the bid to
	// meet or beat a specified performance goal. It is to be used only for a line
	// item entity.
	PerformanceGoalAutoBid *PerformanceGoalBidStrategy `json:"performanceGoalAutoBid,omitempty"`
	// YoutubeAndPartnersBid: A bid strategy used by YouTube and Partners
	// resources. It can only be used for a YouTube and Partners line item or ad
	// group entity.
	YoutubeAndPartnersBid *YoutubeAndPartnersBiddingStrategy `json:"youtubeAndPartnersBid,omitempty"`
	// ForceSendFields is a list of field names (e.g. "FixedBid") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "FixedBid") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BiddingStrategy) MarshalJSON() ([]byte, error) {
	type NoMethod BiddingStrategy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BrowserAssignedTargetingOptionDetails: Details for assigned browser
// targeting option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BROWSER`.
type BrowserAssignedTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the browser.
	DisplayName string `json:"displayName,omitempty"`
	// Negative: Indicates if this option is being negatively targeted. All
	// assigned browser targeting options on the same resource must have the same
	// value for this field.
	Negative bool `json:"negative,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id of a TargetingOption of
	// type `TARGETING_TYPE_BROWSER`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BrowserAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod BrowserAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BrowserTargetingOptionDetails: Represents a targetable browser. This will be
// populated in the browser_details field when targeting_type is
// `TARGETING_TYPE_BROWSER`.
type BrowserTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the browser.
	DisplayName string `json:"displayName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BrowserTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod BrowserTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BudgetSummary: Summarized information of an individual campaign budget.
type BudgetSummary struct {
	// ExternalBudgetId: Corresponds to the external_budget_id of a campaign
	// budget. If the value is not set in the campaign budget, this field will be
	// empty.
	ExternalBudgetId string `json:"externalBudgetId,omitempty"`
	// PreTaxAmountMicros: The sum of charges made under this budget before taxes,
	// in micros of the invoice's currency. For example, if currency_code is `USD`,
	// then 1000000 represents one US dollar.
	PreTaxAmountMicros int64 `json:"preTaxAmountMicros,omitempty,string"`
	// PrismaCpeCode: Relevant client, product, and estimate codes from the
	// Mediaocean Prisma tool. Only applicable for campaign budgets with an
	// external_budget_source of EXTERNAL_BUDGET_SOURCE_MEDIA_OCEAN.
	PrismaCpeCode *PrismaCpeCode `json:"prismaCpeCode,omitempty"`
	// TaxAmountMicros: The amount of tax applied to charges under this budget, in
	// micros of the invoice's currency. For example, if currency_code is `USD`,
	// then 1000000 represents one US dollar.
	TaxAmountMicros int64 `json:"taxAmountMicros,omitempty,string"`
	// TotalAmountMicros: The total sum of charges made under this budget,
	// including tax, in micros of the invoice's currency. For example, if
	// currency_code is `USD`, then 1000000 represents one US dollar.
	TotalAmountMicros int64 `json:"totalAmountMicros,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "ExternalBudgetId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ExternalBudgetId") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BudgetSummary) MarshalJSON() ([]byte, error) {
	type NoMethod BudgetSummary
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BulkEditAdvertiserAssignedTargetingOptionsRequest: Request message for
// BulkEditAdvertiserAssignedTargetingOptions.
type BulkEditAdvertiserAssignedTargetingOptionsRequest struct {
	// CreateRequests: The assigned targeting options to create in batch, specified
	// as a list of `CreateAssignedTargetingOptionsRequest`. Supported targeting
	// types: * `TARGETING_TYPE_CHANNEL` *
	// `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` *
	// `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` * `TARGETING_TYPE_KEYWORD`
	CreateRequests []*CreateAssignedTargetingOptionsRequest `json:"createRequests,omitempty"`
	// DeleteRequests: The assigned targeting options to delete in batch, specified
	// as a list of `DeleteAssignedTargetingOptionsRequest`. Supported targeting
	// types: * `TARGETING_TYPE_CHANNEL` *
	// `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` *
	// `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` * `TARGETING_TYPE_KEYWORD`
	DeleteRequests []*DeleteAssignedTargetingOptionsRequest `json:"deleteRequests,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreateRequests") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreateRequests") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditAdvertiserAssignedTargetingOptionsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditAdvertiserAssignedTargetingOptionsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type BulkEditAdvertiserAssignedTargetingOptionsResponse struct {
	// CreatedAssignedTargetingOptions: The list of assigned targeting options that
	// have been successfully created. This list will be absent if empty.
	CreatedAssignedTargetingOptions []*AssignedTargetingOption `json:"createdAssignedTargetingOptions,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g.
	// "CreatedAssignedTargetingOptions") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreatedAssignedTargetingOptions")
	// to include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditAdvertiserAssignedTargetingOptionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditAdvertiserAssignedTargetingOptionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BulkEditAssignedInventorySourcesRequest: Request message for
// AssignedInventorySourceService.BulkEdit.
type BulkEditAssignedInventorySourcesRequest struct {
	// AdvertiserId: The ID of the advertiser that owns the parent inventory source
	// group. The parent partner does not have access to these assigned inventory
	// sources.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// CreatedAssignedInventorySources: The assigned inventory sources to create in
	// bulk, specified as a list of AssignedInventorySources.
	CreatedAssignedInventorySources []*AssignedInventorySource `json:"createdAssignedInventorySources,omitempty"`
	// DeletedAssignedInventorySources: The IDs of the assigned inventory sources
	// to delete in bulk, specified as a list of assigned_inventory_source_ids.
	DeletedAssignedInventorySources googleapi.Int64s `json:"deletedAssignedInventorySources,omitempty"`
	// PartnerId: The ID of the partner that owns the inventory source group. Only
	// this partner has write access to these assigned inventory sources.
	PartnerId int64 `json:"partnerId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditAssignedInventorySourcesRequest) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditAssignedInventorySourcesRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BulkEditAssignedInventorySourcesResponse: Response message for
// AssignedInventorySourceService.BulkEdit.
type BulkEditAssignedInventorySourcesResponse struct {
	// AssignedInventorySources: The list of assigned inventory sources that have
	// been successfully created. This list will be absent if empty.
	AssignedInventorySources []*AssignedInventorySource `json:"assignedInventorySources,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AssignedInventorySources")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedInventorySources") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditAssignedInventorySourcesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditAssignedInventorySourcesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BulkEditAssignedLocationsRequest: Request message for
// AssignedLocationService.BulkEditAssignedLocations.
type BulkEditAssignedLocationsRequest struct {
	// CreatedAssignedLocations: The assigned locations to create in bulk,
	// specified as a list of AssignedLocation resources.
	CreatedAssignedLocations []*AssignedLocation `json:"createdAssignedLocations,omitempty"`
	// DeletedAssignedLocations: The IDs of the assigned locations to delete in
	// bulk, specified as a list of assignedLocationId values.
	DeletedAssignedLocations googleapi.Int64s `json:"deletedAssignedLocations,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreatedAssignedLocations")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreatedAssignedLocations") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditAssignedLocationsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditAssignedLocationsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type BulkEditAssignedLocationsResponse struct {
	// AssignedLocations: The list of assigned locations that have been
	// successfully created. This list will be absent if empty.
	AssignedLocations []*AssignedLocation `json:"assignedLocations,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AssignedLocations") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedLocations") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditAssignedLocationsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditAssignedLocationsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BulkEditAssignedTargetingOptionsRequest: Request message for
// BulkEditLineItemsAssignedTargetingOptions.
type BulkEditAssignedTargetingOptionsRequest struct {
	// CreateRequests: The assigned targeting options to create in batch, specified
	// as a list of CreateAssignedTargetingOptionsRequest. Supported targeting
	// types include: * `TARGETING_TYPE_AGE_RANGE` * `TARGETING_TYPE_APP` *
	// `TARGETING_TYPE_APP_CATEGORY` * `TARGETING_TYPE_AUDIENCE_GROUP` *
	// `TARGETING_TYPE_AUDIO_CONTENT_TYPE` *
	// `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS` * `TARGETING_TYPE_BROWSER` *
	// `TARGETING_TYPE_BUSINESS_CHAIN` * `TARGETING_TYPE_CARRIER_AND_ISP` *
	// `TARGETING_TYPE_CATEGORY` * `TARGETING_TYPE_CHANNEL` *
	// `TARGETING_TYPE_CONTENT_DURATION` * `TARGETING_TYPE_CONTENT_GENRE` *
	// `TARGETING_TYPE_CONTENT_INSTREAM_POSITION` *
	// `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION` *
	// `TARGETING_TYPE_CONTENT_STREAM_TYPE` * `TARGETING_TYPE_DAY_AND_TIME` *
	// `TARGETING_TYPE_DEVICE_MAKE_MODEL` * `TARGETING_TYPE_DEVICE_TYPE` *
	// `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` *
	// `TARGETING_TYPE_ENVIRONMENT` * `TARGETING_TYPE_EXCHANGE` *
	// `TARGETING_TYPE_GENDER` * `TARGETING_TYPE_GEO_REGION` *
	// `TARGETING_TYPE_HOUSEHOLD_INCOME` * `TARGETING_TYPE_INVENTORY_SOURCE` *
	// `TARGETING_TYPE_INVENTORY_SOURCE_GROUP` * `TARGETING_TYPE_KEYWORD` *
	// `TARGETING_TYPE_LANGUAGE` * `TARGETING_TYPE_NATIVE_CONTENT_POSITION` *
	// `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST` * `TARGETING_TYPE_OMID` *
	// `TARGETING_TYPE_ON_SCREEN_POSITION` * `TARGETING_TYPE_OPERATING_SYSTEM` *
	// `TARGETING_TYPE_PARENTAL_STATUS` * `TARGETING_TYPE_POI` *
	// `TARGETING_TYPE_PROXIMITY_LOCATION_LIST` *
	// `TARGETING_TYPE_REGIONAL_LOCATION_LIST` *
	// `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` *
	// `TARGETING_TYPE_SUB_EXCHANGE` * `TARGETING_TYPE_THIRD_PARTY_VERIFIER` *
	// `TARGETING_TYPE_URL` * `TARGETING_TYPE_USER_REWARDED_CONTENT` *
	// `TARGETING_TYPE_VIDEO_PLAYER_SIZE` * `TARGETING_TYPE_VIEWABILITY`
	CreateRequests []*CreateAssignedTargetingOptionsRequest `json:"createRequests,omitempty"`
	// DeleteRequests: The assigned targeting options to delete in batch, specified
	// as a list of DeleteAssignedTargetingOptionsRequest. Supported targeting
	// types include: * `TARGETING_TYPE_AGE_RANGE` * `TARGETING_TYPE_APP` *
	// `TARGETING_TYPE_APP_CATEGORY` * `TARGETING_TYPE_AUDIENCE_GROUP` *
	// `TARGETING_TYPE_AUDIO_CONTENT_TYPE` *
	// `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS` * `TARGETING_TYPE_BROWSER` *
	// `TARGETING_TYPE_BUSINESS_CHAIN` * `TARGETING_TYPE_CARRIER_AND_ISP` *
	// `TARGETING_TYPE_CATEGORY` * `TARGETING_TYPE_CHANNEL` *
	// `TARGETING_TYPE_CONTENT_DURATION` * `TARGETING_TYPE_CONTENT_GENRE` *
	// `TARGETING_TYPE_CONTENT_INSTREAM_POSITION` *
	// `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION` *
	// `TARGETING_TYPE_CONTENT_STREAM_TYPE` * `TARGETING_TYPE_DAY_AND_TIME` *
	// `TARGETING_TYPE_DEVICE_MAKE_MODEL` * `TARGETING_TYPE_DEVICE_TYPE` *
	// `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` *
	// `TARGETING_TYPE_ENVIRONMENT` * `TARGETING_TYPE_EXCHANGE` *
	// `TARGETING_TYPE_GENDER` * `TARGETING_TYPE_GEO_REGION` *
	// `TARGETING_TYPE_HOUSEHOLD_INCOME` * `TARGETING_TYPE_INVENTORY_SOURCE` *
	// `TARGETING_TYPE_INVENTORY_SOURCE_GROUP` * `TARGETING_TYPE_KEYWORD` *
	// `TARGETING_TYPE_LANGUAGE` * `TARGETING_TYPE_NATIVE_CONTENT_POSITION` *
	// `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST` * `TARGETING_TYPE_OMID` *
	// `TARGETING_TYPE_ON_SCREEN_POSITION` * `TARGETING_TYPE_OPERATING_SYSTEM` *
	// `TARGETING_TYPE_PARENTAL_STATUS` * `TARGETING_TYPE_POI` *
	// `TARGETING_TYPE_PROXIMITY_LOCATION_LIST` *
	// `TARGETING_TYPE_REGIONAL_LOCATION_LIST` *
	// `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` *
	// `TARGETING_TYPE_SUB_EXCHANGE` * `TARGETING_TYPE_THIRD_PARTY_VERIFIER` *
	// `TARGETING_TYPE_URL` * `TARGETING_TYPE_USER_REWARDED_CONTENT` *
	// `TARGETING_TYPE_VIDEO_PLAYER_SIZE` * `TARGETING_TYPE_VIEWABILITY`
	DeleteRequests []*DeleteAssignedTargetingOptionsRequest `json:"deleteRequests,omitempty"`
	// LineItemIds: Required. The ID of the line items whose targeting is being
	// updated.
	LineItemIds googleapi.Int64s `json:"lineItemIds,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreateRequests") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreateRequests") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditAssignedTargetingOptionsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditAssignedTargetingOptionsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type BulkEditAssignedTargetingOptionsResponse struct {
	// Errors: The error information for each line item that failed to update.
	Errors []*Status `json:"errors,omitempty"`
	// FailedLineItemIds: Output only. The IDs of the line items which failed.
	FailedLineItemIds googleapi.Int64s `json:"failedLineItemIds,omitempty"`
	// UpdatedLineItemIds: Output only. The IDs of the line items which
	// successfully updated.
	UpdatedLineItemIds googleapi.Int64s `json:"updatedLineItemIds,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Errors") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Errors") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditAssignedTargetingOptionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditAssignedTargetingOptionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BulkEditAssignedUserRolesRequest: Request message for
// BulkEditAssignedUserRoles.
type BulkEditAssignedUserRolesRequest struct {
	// CreatedAssignedUserRoles: The assigned user roles to create in batch,
	// specified as a list of AssignedUserRoles.
	CreatedAssignedUserRoles []*AssignedUserRole `json:"createdAssignedUserRoles,omitempty"`
	// DeletedAssignedUserRoles: The assigned user roles to delete in batch,
	// specified as a list of assigned_user_role_ids. The format of
	// assigned_user_role_id is `entityType-entityid`, for example `partner-123`.
	DeletedAssignedUserRoles []string `json:"deletedAssignedUserRoles,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreatedAssignedUserRoles")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreatedAssignedUserRoles") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditAssignedUserRolesRequest) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditAssignedUserRolesRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type BulkEditAssignedUserRolesResponse struct {
	// CreatedAssignedUserRoles: The list of assigned user roles that have been
	// successfully created. This list will be absent if empty.
	CreatedAssignedUserRoles []*AssignedUserRole `json:"createdAssignedUserRoles,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "CreatedAssignedUserRoles")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreatedAssignedUserRoles") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditAssignedUserRolesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditAssignedUserRolesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BulkEditNegativeKeywordsRequest: Request message for
// NegativeKeywordService.BulkEditNegativeKeywords.
type BulkEditNegativeKeywordsRequest struct {
	// CreatedNegativeKeywords: The negative keywords to create in batch, specified
	// as a list of NegativeKeywords.
	CreatedNegativeKeywords []*NegativeKeyword `json:"createdNegativeKeywords,omitempty"`
	// DeletedNegativeKeywords: The negative keywords to delete in batch, specified
	// as a list of keyword_values.
	DeletedNegativeKeywords []string `json:"deletedNegativeKeywords,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreatedNegativeKeywords") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreatedNegativeKeywords") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditNegativeKeywordsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditNegativeKeywordsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BulkEditNegativeKeywordsResponse: Response message for
// NegativeKeywordService.BulkEditNegativeKeywords.
type BulkEditNegativeKeywordsResponse struct {
	// NegativeKeywords: The list of negative keywords that have been successfully
	// created. This list will be absent if empty.
	NegativeKeywords []*NegativeKeyword `json:"negativeKeywords,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NegativeKeywords") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NegativeKeywords") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditNegativeKeywordsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditNegativeKeywordsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BulkEditPartnerAssignedTargetingOptionsRequest: Request message for
// BulkEditPartnerAssignedTargetingOptions.
type BulkEditPartnerAssignedTargetingOptionsRequest struct {
	// CreateRequests: The assigned targeting options to create in batch, specified
	// as a list of `CreateAssignedTargetingOptionsRequest`. Supported targeting
	// types: * `TARGETING_TYPE_CHANNEL`
	CreateRequests []*CreateAssignedTargetingOptionsRequest `json:"createRequests,omitempty"`
	// DeleteRequests: The assigned targeting options to delete in batch, specified
	// as a list of `DeleteAssignedTargetingOptionsRequest`. Supported targeting
	// types: * `TARGETING_TYPE_CHANNEL`
	DeleteRequests []*DeleteAssignedTargetingOptionsRequest `json:"deleteRequests,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreateRequests") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreateRequests") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditPartnerAssignedTargetingOptionsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditPartnerAssignedTargetingOptionsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type BulkEditPartnerAssignedTargetingOptionsResponse struct {
	// CreatedAssignedTargetingOptions: The list of assigned targeting options that
	// have been successfully created. This list will be absent if empty.
	CreatedAssignedTargetingOptions []*AssignedTargetingOption `json:"createdAssignedTargetingOptions,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g.
	// "CreatedAssignedTargetingOptions") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreatedAssignedTargetingOptions")
	// to include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditPartnerAssignedTargetingOptionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditPartnerAssignedTargetingOptionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BulkEditSitesRequest: Request message for SiteService.BulkEditSites.
type BulkEditSitesRequest struct {
	// AdvertiserId: The ID of the advertiser that owns the parent channel.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// CreatedSites: The sites to create in batch, specified as a list of Sites.
	CreatedSites []*Site `json:"createdSites,omitempty"`
	// DeletedSites: The sites to delete in batch, specified as a list of site
	// url_or_app_ids.
	DeletedSites []string `json:"deletedSites,omitempty"`
	// PartnerId: The ID of the partner that owns the parent channel.
	PartnerId int64 `json:"partnerId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditSitesRequest) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditSitesRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BulkEditSitesResponse: Response message for SiteService.BulkEditSites.
type BulkEditSitesResponse struct {
	// Sites: The list of sites that have been successfully created. This list will
	// be absent if empty.
	Sites []*Site `json:"sites,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Sites") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Sites") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkEditSitesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod BulkEditSitesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type BulkListAdGroupAssignedTargetingOptionsResponse struct {
	// AdGroupAssignedTargetingOptions: The list of wrapper objects, each providing
	// an assigned targeting option and the ad group it is assigned to. This list
	// will be absent if empty.
	AdGroupAssignedTargetingOptions []*AdGroupAssignedTargetingOption `json:"adGroupAssignedTargetingOptions,omitempty"`
	// NextPageToken: A token identifying the next page of results. This value
	// should be specified as the pageToken in a subsequent call to
	// `BulkListAdGroupAssignedTargetingOptions` to fetch the next page of results.
	// This token will be absent if there are no more
	// AdGroupAssignedTargetingOption resources to return.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g.
	// "AdGroupAssignedTargetingOptions") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdGroupAssignedTargetingOptions")
	// to include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkListAdGroupAssignedTargetingOptionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod BulkListAdGroupAssignedTargetingOptionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type BulkListAdvertiserAssignedTargetingOptionsResponse struct {
	// AssignedTargetingOptions: The list of assigned targeting options. This list
	// will be absent if empty.
	AssignedTargetingOptions []*AssignedTargetingOption `json:"assignedTargetingOptions,omitempty"`
	// NextPageToken: A token identifying the next page of results. This value
	// should be specified as the pageToken in a subsequent
	// BulkListAdvertiserAssignedTargetingOptionsRequest to fetch the next page of
	// results. This token will be absent if there are no more
	// assigned_targeting_options to return.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AssignedTargetingOptions")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedTargetingOptions") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkListAdvertiserAssignedTargetingOptionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod BulkListAdvertiserAssignedTargetingOptionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type BulkListAssignedTargetingOptionsResponse struct {
	// LineItemAssignedTargetingOptions: The list of wrapper objects, each
	// providing an assigned targeting option and the line item it is assigned to.
	// This list will be absent if empty.
	LineItemAssignedTargetingOptions []*LineItemAssignedTargetingOption `json:"lineItemAssignedTargetingOptions,omitempty"`
	// NextPageToken: A token identifying the next page of results. This value
	// should be specified as the pageToken in a subsequent call to
	// `BulkListAssignedTargetingOptions` to fetch the next page of results. This
	// token will be absent if there are no more
	// line_item_assigned_targeting_options to return.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g.
	// "LineItemAssignedTargetingOptions") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g.
	// "LineItemAssignedTargetingOptions") to include in API requests with the JSON
	// null value. By default, fields with empty values are omitted from API
	// requests. See https://pkg.go.dev/google.golang.org/api#hdr-NullFields for
	// more details.
	NullFields []string `json:"-"`
}

func (s BulkListAssignedTargetingOptionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod BulkListAssignedTargetingOptionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BulkUpdateLineItemsRequest: Request message for
// LineItemService.BulkUpdateLineItems.
type BulkUpdateLineItemsRequest struct {
	// LineItemIds: Required. IDs of line items to update.
	LineItemIds googleapi.Int64s `json:"lineItemIds,omitempty"`
	// TargetLineItem: Required. A line item object containing the fields to be
	// updated and the new values to assign to all line items specified in
	// line_item_ids."
	TargetLineItem *LineItem `json:"targetLineItem,omitempty"`
	// UpdateMask: Required. A field mask identifying which fields to update. Only
	// the following fields are currently supported: * entityStatus
	UpdateMask string `json:"updateMask,omitempty"`
	// ForceSendFields is a list of field names (e.g. "LineItemIds") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "LineItemIds") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkUpdateLineItemsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod BulkUpdateLineItemsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BulkUpdateLineItemsResponse: Response message for
// LineItemService.BulkUpdateLineItems.
type BulkUpdateLineItemsResponse struct {
	// Errors: Errors returned by line items that failed to update.
	Errors []*Status `json:"errors,omitempty"`
	// FailedLineItemIds: The IDs of line items that failed to update.
	FailedLineItemIds googleapi.Int64s `json:"failedLineItemIds,omitempty"`
	// SkippedLineItemIds: The IDs of line items that are skipped for updates. For
	// example, unnecessary mutates that will result in effectively no changes to
	// line items will be skipped and corresponding line item IDs can be tracked
	// here.
	SkippedLineItemIds googleapi.Int64s `json:"skippedLineItemIds,omitempty"`
	// UpdatedLineItemIds: The IDs of successfully updated line items.
	UpdatedLineItemIds googleapi.Int64s `json:"updatedLineItemIds,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Errors") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Errors") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BulkUpdateLineItemsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod BulkUpdateLineItemsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BumperAd: Details for a bumper ad.
type BumperAd struct {
	// CommonInStreamAttribute: Common ad attributes.
	CommonInStreamAttribute *CommonInStreamAttribute `json:"commonInStreamAttribute,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CommonInStreamAttribute") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CommonInStreamAttribute") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BumperAd) MarshalJSON() ([]byte, error) {
	type NoMethod BumperAd
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BusinessChainAssignedTargetingOptionDetails: Details for assigned Business
// chain targeting option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_BUSINESS_CHAIN`.
type BusinessChainAssignedTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of a business chain, e.g. "KFC",
	// "Chase Bank".
	DisplayName string `json:"displayName,omitempty"`
	// ProximityRadiusAmount: Required. The radius of the area around the business
	// chain that will be targeted. The units of the radius are specified by
	// proximity_radius_unit. Must be 1 to 800 if unit is
	// `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
	// The minimum increment for both cases is 0.1. Inputs will be rounded to the
	// nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
	ProximityRadiusAmount float64 `json:"proximityRadiusAmount,omitempty"`
	// ProximityRadiusUnit: Required. The unit of distance by which the targeting
	// radius is measured.
	//
	// Possible values:
	//   "DISTANCE_UNIT_UNSPECIFIED" - Type value is not specified or is unknown in
	// this version.
	//   "DISTANCE_UNIT_MILES" - Miles.
	//   "DISTANCE_UNIT_KILOMETERS" - Kilometers.
	ProximityRadiusUnit string `json:"proximityRadiusUnit,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id of a TargetingOption of
	// type `TARGETING_TYPE_BUSINESS_CHAIN`. Accepted business chain targeting
	// option IDs can be retrieved using SearchTargetingOptions.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BusinessChainAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod BusinessChainAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *BusinessChainAssignedTargetingOptionDetails) UnmarshalJSON(data []byte) error {
	type NoMethod BusinessChainAssignedTargetingOptionDetails
	var s1 struct {
		ProximityRadiusAmount gensupport.JSONFloat64 `json:"proximityRadiusAmount"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ProximityRadiusAmount = float64(s1.ProximityRadiusAmount)
	return nil
}

// BusinessChainSearchTerms: Search terms for Business Chain targeting options.
// At least one of the field should be populated.
type BusinessChainSearchTerms struct {
	// BusinessChainQuery: The search query for the desired business chain. The
	// query must be the full name of the business, e.g. "KFC", "mercedes-benz".
	BusinessChainQuery string `json:"businessChainQuery,omitempty"`
	// RegionQuery: The search query for the desired geo region, e.g. "Seattle",
	// "United State".
	RegionQuery string `json:"regionQuery,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BusinessChainQuery") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BusinessChainQuery") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BusinessChainSearchTerms) MarshalJSON() ([]byte, error) {
	type NoMethod BusinessChainSearchTerms
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BusinessChainTargetingOptionDetails: Represents a targetable business chain
// within a geo region. This will be populated in the business_chain_details
// field when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
type BusinessChainTargetingOptionDetails struct {
	// BusinessChain: Output only. The display name of the business chain, e.g.
	// "KFC", "Chase Bank".
	BusinessChain string `json:"businessChain,omitempty"`
	// GeoRegion: Output only. The display name of the geographic region, e.g.
	// "Ontario, Canada".
	GeoRegion string `json:"geoRegion,omitempty"`
	// GeoRegionType: Output only. The type of the geographic region.
	//
	// Possible values:
	//   "GEO_REGION_TYPE_UNKNOWN" - The geographic region type is unknown.
	//   "GEO_REGION_TYPE_OTHER" - The geographic region type is other.
	//   "GEO_REGION_TYPE_COUNTRY" - The geographic region is a country.
	//   "GEO_REGION_TYPE_REGION" - The geographic region type is region.
	//   "GEO_REGION_TYPE_TERRITORY" - The geographic region is a territory.
	//   "GEO_REGION_TYPE_PROVINCE" - The geographic region is a province.
	//   "GEO_REGION_TYPE_STATE" - The geographic region is a state.
	//   "GEO_REGION_TYPE_PREFECTURE" - The geographic region is a prefecture.
	//   "GEO_REGION_TYPE_GOVERNORATE" - The geographic region is a governorate.
	//   "GEO_REGION_TYPE_CANTON" - The geographic region is a canton.
	//   "GEO_REGION_TYPE_UNION_TERRITORY" - The geographic region is a union
	// territory.
	//   "GEO_REGION_TYPE_AUTONOMOUS_COMMUNITY" - The geographic region is an
	// autonomous community.
	//   "GEO_REGION_TYPE_DMA_REGION" - The geographic region is a designated
	// market area (DMA) region.
	//   "GEO_REGION_TYPE_METRO" - The geographic region type is metro.
	//   "GEO_REGION_TYPE_CONGRESSIONAL_DISTRICT" - The geographic region is a
	// congressional district.
	//   "GEO_REGION_TYPE_COUNTY" - The geographic region is a county.
	//   "GEO_REGION_TYPE_MUNICIPALITY" - The geographic region is a municipality.
	//   "GEO_REGION_TYPE_CITY" - The geographic region is a city.
	//   "GEO_REGION_TYPE_POSTAL_CODE" - The geographic region targeting type is
	// postal code.
	//   "GEO_REGION_TYPE_DEPARTMENT" - The geographic region targeting type is
	// department.
	//   "GEO_REGION_TYPE_AIRPORT" - The geographic region is an airport.
	//   "GEO_REGION_TYPE_TV_REGION" - The geographic region is a TV region.
	//   "GEO_REGION_TYPE_OKRUG" - The geographic region is an okrug.
	//   "GEO_REGION_TYPE_BOROUGH" - The geographic region is a borough.
	//   "GEO_REGION_TYPE_CITY_REGION" - The geographic region is a city region.
	//   "GEO_REGION_TYPE_ARRONDISSEMENT" - The geographic region is an
	// arrondissement.
	//   "GEO_REGION_TYPE_NEIGHBORHOOD" - The geographic region is a neighborhood.
	//   "GEO_REGION_TYPE_UNIVERSITY" - The geographic region is a university.
	//   "GEO_REGION_TYPE_DISTRICT" - The geographic region is a district.
	//   "GEO_REGION_TYPE_NATIONAL_PARK" - The geographic region is a national
	// park.
	//   "GEO_REGION_TYPE_BARRIO" - The geographic region is a barrio.
	//   "GEO_REGION_TYPE_SUB_WARD" - The geographic region is a sub ward.
	//   "GEO_REGION_TYPE_MUNICIPALITY_DISTRICT" - The geographic region is a
	// municipality district.
	//   "GEO_REGION_TYPE_SUB_DISTRICT" - The geographic region is a sub district.
	//   "GEO_REGION_TYPE_QUARTER" - The geographic region is a quarter.
	//   "GEO_REGION_TYPE_DIVISION" - The geographic region is a division.
	//   "GEO_REGION_TYPE_COMMUNE" - The geographic region is a commune.
	//   "GEO_REGION_TYPE_COLLOQUIAL_AREA" - The geographic region is a colloquial
	// area.
	GeoRegionType string `json:"geoRegionType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BusinessChain") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BusinessChain") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BusinessChainTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod BusinessChainTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Campaign: A single campaign.
type Campaign struct {
	// AdvertiserId: Output only. The unique ID of the advertiser the campaign
	// belongs to.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// CampaignBudgets: The list of budgets available to this campaign. If this
	// field is not set, the campaign uses an unlimited budget.
	CampaignBudgets []*CampaignBudget `json:"campaignBudgets,omitempty"`
	// CampaignFlight: Required. The planned spend and duration of the campaign.
	CampaignFlight *CampaignFlight `json:"campaignFlight,omitempty"`
	// CampaignGoal: Required. The goal of the campaign.
	CampaignGoal *CampaignGoal `json:"campaignGoal,omitempty"`
	// CampaignId: Output only. The unique ID of the campaign. Assigned by the
	// system.
	CampaignId int64 `json:"campaignId,omitempty,string"`
	// DisplayName: Required. The display name of the campaign. Must be UTF-8
	// encoded with a maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// EntityStatus: Required. Controls whether or not the insertion orders under
	// this campaign can spend their budgets and bid on inventory. * Accepted
	// values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_ARCHIVED`, and
	// `ENTITY_STATUS_PAUSED`. * For CreateCampaign method,
	// `ENTITY_STATUS_ARCHIVED` is not allowed.
	//
	// Possible values:
	//   "ENTITY_STATUS_UNSPECIFIED" - Default value when status is not specified
	// or is unknown in this version.
	//   "ENTITY_STATUS_ACTIVE" - The entity is enabled to bid and spend budget.
	//   "ENTITY_STATUS_ARCHIVED" - The entity is archived. Bidding and budget
	// spending are disabled. An entity can be deleted after archived. Deleted
	// entities cannot be retrieved.
	//   "ENTITY_STATUS_DRAFT" - The entity is under draft. Bidding and budget
	// spending are disabled.
	//   "ENTITY_STATUS_PAUSED" - Bidding and budget spending are paused for the
	// entity.
	//   "ENTITY_STATUS_SCHEDULED_FOR_DELETION" - The entity is scheduled for
	// deletion.
	EntityStatus string `json:"entityStatus,omitempty"`
	// FrequencyCap: Required. The frequency cap setting of the campaign.
	// *Warning*: On **February 28, 2025**, frequency cap time periods greater than
	// 30 days will no longer be accepted. Read more about this announced change
	// (/display-video/api/deprecations#features.lifetime_frequency_cap)
	FrequencyCap *FrequencyCap `json:"frequencyCap,omitempty"`
	// Name: Output only. The resource name of the campaign.
	Name string `json:"name,omitempty"`
	// UpdateTime: Output only. The timestamp when the campaign was last updated.
	// Assigned by the system.
	UpdateTime string `json:"updateTime,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Campaign) MarshalJSON() ([]byte, error) {
	type NoMethod Campaign
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CampaignBudget: Settings that control how the campaign budget is allocated.
type CampaignBudget struct {
	// BudgetAmountMicros: Required. The total amount the linked insertion order
	// segments can budget. The amount is in micros. Must be greater than 0. For
	// example, 500000000 represents 500 standard units of the currency.
	BudgetAmountMicros int64 `json:"budgetAmountMicros,omitempty,string"`
	// BudgetId: The unique ID of the campaign budget. Assigned by the system. Do
	// not set for new budgets. Must be included when updating or adding budgets to
	// campaign_budgets. Otherwise, a new ID will be generated and assigned.
	BudgetId int64 `json:"budgetId,omitempty,string"`
	// BudgetUnit: Required. Immutable. Specifies whether the budget is measured in
	// currency or impressions.
	//
	// Possible values:
	//   "BUDGET_UNIT_UNSPECIFIED" - Type value is not specified or is unknown in
	// this version.
	//   "BUDGET_UNIT_CURRENCY" - Budgeting in currency amounts.
	//   "BUDGET_UNIT_IMPRESSIONS" - Budgeting in impression amounts.
	BudgetUnit string `json:"budgetUnit,omitempty"`
	// DateRange: Required. The date range for the campaign budget. Linked budget
	// segments may have a different date range. They are resolved relative to the
	// parent advertiser's time zone. Both `start_date` and `end_date` must be
	// before the year 2037.
	DateRange *DateRange `json:"dateRange,omitempty"`
	// DisplayName: Required. The display name of the budget. Must be UTF-8 encoded
	// with a maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// ExternalBudgetId: Immutable. The ID identifying this budget to the external
	// source. If this field is set and the invoice detail level of the
	// corresponding billing profile is set to "Budget level PO", all impressions
	// served against this budget will include this ID on the invoice. Must be
	// unique under the campaign.
	ExternalBudgetId string `json:"externalBudgetId,omitempty"`
	// ExternalBudgetSource: Required. The external source of the budget.
	//
	// Possible values:
	//   "EXTERNAL_BUDGET_SOURCE_UNSPECIFIED" - External budget source value is not
	// specified or unknown in this version.
	//   "EXTERNAL_BUDGET_SOURCE_NONE" - Budget has no external source.
	//   "EXTERNAL_BUDGET_SOURCE_MEDIA_OCEAN" - Budget source is Mediaocean.
	ExternalBudgetSource string `json:"externalBudgetSource,omitempty"`
	// InvoiceGroupingId: Immutable. The ID used to group budgets to be included
	// the same invoice. If this field is set and the invoice level of the
	// corresponding billing profile is set to "Budget invoice grouping ID", all
	// external_budget_id sharing the same invoice_grouping_id will be grouped in
	// the same invoice.
	InvoiceGroupingId string `json:"invoiceGroupingId,omitempty"`
	// PrismaConfig: Additional metadata for use by the Mediaocean Prisma tool.
	// Required for Mediaocean budgets. Only applicable to prisma_enabled
	// advertisers.
	PrismaConfig *PrismaConfig `json:"prismaConfig,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BudgetAmountMicros") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BudgetAmountMicros") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CampaignBudget) MarshalJSON() ([]byte, error) {
	type NoMethod CampaignBudget
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CampaignFlight: Settings that track the planned spend and duration of a
// campaign.
type CampaignFlight struct {
	// PlannedDates: Required. The dates that the campaign is expected to run. They
	// are resolved relative to the parent advertiser's time zone. * The dates
	// specified here will not affect serving. They are used to generate alerts and
	// warnings. For example, if the flight date of any child insertion order is
	// outside the range of these dates, the user interface will show a warning. *
	// `start_date` is required and must be the current date or later. * `end_date`
	// is optional. If specified, it must be the `start_date` or later. * Any
	// specified date must be before the year 2037.
	PlannedDates *DateRange `json:"plannedDates,omitempty"`
	// PlannedSpendAmountMicros: The amount the campaign is expected to spend for
	// its given planned_dates. This will not limit serving, but will be used for
	// tracking spend in the DV360 UI. The amount is in micros. Must be greater
	// than or equal to 0. For example, 500000000 represents 500 standard units of
	// the currency.
	PlannedSpendAmountMicros int64 `json:"plannedSpendAmountMicros,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "PlannedDates") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "PlannedDates") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CampaignFlight) MarshalJSON() ([]byte, error) {
	type NoMethod CampaignFlight
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CampaignGoal: Settings that control the goal of a campaign.
type CampaignGoal struct {
	// CampaignGoalType: Required. The type of the campaign goal.
	//
	// Possible values:
	//   "CAMPAIGN_GOAL_TYPE_UNSPECIFIED" - Goal value is not specified or unknown
	// in this version.
	//   "CAMPAIGN_GOAL_TYPE_APP_INSTALL" - Drive app installs or engagements.
	//   "CAMPAIGN_GOAL_TYPE_BRAND_AWARENESS" - Raise awareness of a brand or
	// product.
	//   "CAMPAIGN_GOAL_TYPE_OFFLINE_ACTION" - Drive offline or in-store sales.
	//   "CAMPAIGN_GOAL_TYPE_ONLINE_ACTION" - Drive online action or visits.
	CampaignGoalType string `json:"campaignGoalType,omitempty"`
	// PerformanceGoal: Required. The performance goal of the campaign. Acceptable
	// values for performance_goal_type are: * `PERFORMANCE_GOAL_TYPE_CPM` *
	// `PERFORMANCE_GOAL_TYPE_CPC` * `PERFORMANCE_GOAL_TYPE_CPA` *
	// `PERFORMANCE_GOAL_TYPE_CPIAVC` * `PERFORMANCE_GOAL_TYPE_CTR` *
	// `PERFORMANCE_GOAL_TYPE_VIEWABILITY` * `PERFORMANCE_GOAL_TYPE_OTHER`
	PerformanceGoal *PerformanceGoal `json:"performanceGoal,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CampaignGoalType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CampaignGoalType") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CampaignGoal) MarshalJSON() ([]byte, error) {
	type NoMethod CampaignGoal
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CarrierAndIspAssignedTargetingOptionDetails: Details for assigned carrier
// and ISP targeting option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_CARRIER_AND_ISP`.
type CarrierAndIspAssignedTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the carrier or ISP.
	DisplayName string `json:"displayName,omitempty"`
	// Negative: Indicates if this option is being negatively targeted. All
	// assigned carrier and ISP targeting options on the same resource must have
	// the same value for this field.
	Negative bool `json:"negative,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id of a TargetingOption of
	// type `TARGETING_TYPE_CARRIER_AND_ISP`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CarrierAndIspAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod CarrierAndIspAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CarrierAndIspTargetingOptionDetails: Represents a targetable carrier or ISP.
// This will be populated in the carrier_and_isp_details field of a
// TargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
type CarrierAndIspTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the carrier or ISP.
	DisplayName string `json:"displayName,omitempty"`
	// Type: Output only. The type indicating if it's carrier or ISP.
	//
	// Possible values:
	//   "CARRIER_AND_ISP_TYPE_UNSPECIFIED" - Default value when type is not
	// specified or is unknown in this version.
	//   "CARRIER_AND_ISP_TYPE_ISP" - Indicates this targeting resource refers to
	// an ISP.
	//   "CARRIER_AND_ISP_TYPE_CARRIER" - Indicates this targeting resource refers
	// to a mobile carrier.
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CarrierAndIspTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod CarrierAndIspTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CategoryAssignedTargetingOptionDetails: Assigned category targeting option
// details. This will be populated in the category_details field when
// targeting_type is `TARGETING_TYPE_CATEGORY`.
type CategoryAssignedTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the category.
	DisplayName string `json:"displayName,omitempty"`
	// Negative: Indicates if this option is being negatively targeted.
	Negative bool `json:"negative,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id field when
	// targeting_type is `TARGETING_TYPE_CATEGORY`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CategoryAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod CategoryAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CategoryTargetingOptionDetails: Represents a targetable category. This will
// be populated in the category_details field of a TargetingOption when
// targeting_type is `TARGETING_TYPE_CATEGORY`.
type CategoryTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the category.
	DisplayName string `json:"displayName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CategoryTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod CategoryTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Channel: A single channel. Channels are custom groups of related websites
// and apps.
type Channel struct {
	// AdvertiserId: The ID of the advertiser that owns the channel.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// ChannelId: Output only. The unique ID of the channel. Assigned by the
	// system.
	ChannelId int64 `json:"channelId,omitempty,string"`
	// DisplayName: Required. The display name of the channel. Must be UTF-8
	// encoded with a maximum length of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// Name: Output only. The resource name of the channel.
	Name string `json:"name,omitempty"`
	// NegativelyTargetedLineItemCount: Output only. Number of line items that are
	// directly targeting this channel negatively.
	NegativelyTargetedLineItemCount int64 `json:"negativelyTargetedLineItemCount,omitempty,string"`
	// PartnerId: The ID of the partner that owns the channel.
	PartnerId int64 `json:"partnerId,omitempty,string"`
	// PositivelyTargetedLineItemCount: Output only. Number of line items that are
	// directly targeting this channel positively.
	PositivelyTargetedLineItemCount int64 `json:"positivelyTargetedLineItemCount,omitempty,string"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Channel) MarshalJSON() ([]byte, error) {
	type NoMethod Channel
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ChannelAssignedTargetingOptionDetails: Details for assigned channel
// targeting option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CHANNEL`.
type ChannelAssignedTargetingOptionDetails struct {
	// ChannelId: Required. ID of the channel. Should refer to the channel ID field
	// on a Partner-owned channel (partners.channels#Channel.FIELDS.channel_id) or
	// advertiser-owned channel (advertisers.channels#Channel.FIELDS.channel_id)
	// resource.
	ChannelId int64 `json:"channelId,omitempty,string"`
	// Negative: Indicates if this option is being negatively targeted. For
	// advertiser level assigned targeting option, this field must be true.
	Negative bool `json:"negative,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ChannelId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ChannelId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ChannelAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ChannelAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CmHybridConfig: Settings for advertisers that use both Campaign Manager 360
// (CM360) and third-party ad servers.
type CmHybridConfig struct {
	// CmAccountId: Required. Immutable. Account ID of the CM360 Floodlight
	// configuration linked with the DV360 advertiser.
	CmAccountId int64 `json:"cmAccountId,omitempty,string"`
	// CmAdvertiserIds: Output only. The set of CM360 Advertiser IDs sharing the
	// CM360 Floodlight configuration.
	CmAdvertiserIds googleapi.Int64s `json:"cmAdvertiserIds,omitempty"`
	// CmFloodlightConfigId: Required. Immutable. ID of the CM360 Floodlight
	// configuration linked with the DV360 advertiser.
	CmFloodlightConfigId int64 `json:"cmFloodlightConfigId,omitempty,string"`
	// CmFloodlightLinkingAuthorized: Required. Immutable. By setting this field to
	// `true`, you, on behalf of your company, authorize the sharing of information
	// from the given Floodlight configuration to this Display & Video 360
	// advertiser.
	CmFloodlightLinkingAuthorized bool `json:"cmFloodlightLinkingAuthorized,omitempty"`
	// CmSyncableSiteIds: A list of CM360 sites whose placements will be synced to
	// DV360 as creatives. If absent or empty in CreateAdvertiser method, the
	// system will automatically create a CM360 site. Removing sites from this list
	// may cause DV360 creatives synced from CM360 to be deleted. At least one site
	// must be specified.
	CmSyncableSiteIds googleapi.Int64s `json:"cmSyncableSiteIds,omitempty"`
	// Dv360ToCmCostReportingEnabled: Whether or not to report DV360 cost to CM360.
	Dv360ToCmCostReportingEnabled bool `json:"dv360ToCmCostReportingEnabled,omitempty"`
	// Dv360ToCmDataSharingEnabled: Whether or not to include DV360 data in CM360
	// data transfer reports.
	Dv360ToCmDataSharingEnabled bool `json:"dv360ToCmDataSharingEnabled,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CmAccountId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CmAccountId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CmHybridConfig) MarshalJSON() ([]byte, error) {
	type NoMethod CmHybridConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CmTrackingAd: A Campaign Manager 360 tracking ad.
type CmTrackingAd struct {
	// CmAdId: Optional. The ad ID of the campaign manager 360 tracking Ad.
	CmAdId int64 `json:"cmAdId,omitempty,string"`
	// CmCreativeId: Optional. The creative ID of the campaign manager 360 tracking
	// Ad.
	CmCreativeId int64 `json:"cmCreativeId,omitempty,string"`
	// CmPlacementId: Optional. The placement ID of the campaign manager 360
	// tracking Ad.
	CmPlacementId int64 `json:"cmPlacementId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "CmAdId") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CmAdId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CmTrackingAd) MarshalJSON() ([]byte, error) {
	type NoMethod CmTrackingAd
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CombinedAudience: Describes a combined audience resource.
type CombinedAudience struct {
	// CombinedAudienceId: Output only. The unique ID of the combined audience.
	// Assigned by the system.
	CombinedAudienceId int64 `json:"combinedAudienceId,omitempty,string"`
	// DisplayName: Output only. The display name of the combined audience. .
	DisplayName string `json:"displayName,omitempty"`
	// Name: Output only. The resource name of the combined audience.
	Name string `json:"name,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "CombinedAudienceId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CombinedAudienceId") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CombinedAudience) MarshalJSON() ([]byte, error) {
	type NoMethod CombinedAudience
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CombinedAudienceGroup: Details of combined audience group. All combined
// audience targeting settings are logically ‘OR’ of each other.
type CombinedAudienceGroup struct {
	// Settings: Required. All combined audience targeting settings in combined
	// audience group. Repeated settings with the same id will be ignored. The
	// number of combined audience settings should be no more than five, error will
	// be thrown otherwise.
	Settings []*CombinedAudienceTargetingSetting `json:"settings,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Settings") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Settings") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CombinedAudienceGroup) MarshalJSON() ([]byte, error) {
	type NoMethod CombinedAudienceGroup
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CombinedAudienceTargetingSetting: Details of combined audience targeting
// setting.
type CombinedAudienceTargetingSetting struct {
	// CombinedAudienceId: Required. Combined audience id of combined audience
	// targeting setting. This id is combined_audience_id.
	CombinedAudienceId int64 `json:"combinedAudienceId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "CombinedAudienceId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CombinedAudienceId") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CombinedAudienceTargetingSetting) MarshalJSON() ([]byte, error) {
	type NoMethod CombinedAudienceTargetingSetting
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CommonInStreamAttribute: Common attributes for in-stream, non-skippable and
// bumper ads.
type CommonInStreamAttribute struct {
	// ActionButtonLabel: The text on the call-to-action button.
	ActionButtonLabel string `json:"actionButtonLabel,omitempty"`
	// ActionHeadline: The headline of the call-to-action banner.
	ActionHeadline string `json:"actionHeadline,omitempty"`
	// CompanionBanner: The image which shows next to the video ad.
	CompanionBanner *ImageAsset `json:"companionBanner,omitempty"`
	// DisplayUrl: The webpage address that appears with the ad.
	DisplayUrl string `json:"displayUrl,omitempty"`
	// FinalUrl: The URL address of the webpage that people reach after they click
	// the ad.
	FinalUrl string `json:"finalUrl,omitempty"`
	// TrackingUrl: The URL address loaded in the background for tracking purposes.
	TrackingUrl string `json:"trackingUrl,omitempty"`
	// Video: The YouTube video of the ad.
	Video *YoutubeVideoDetails `json:"video,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActionButtonLabel") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActionButtonLabel") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CommonInStreamAttribute) MarshalJSON() ([]byte, error) {
	type NoMethod CommonInStreamAttribute
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Consent: User consent status.
type Consent struct {
	// AdPersonalization: Represents consent for ad personalization.
	//
	// Possible values:
	//   "CONSENT_STATUS_UNSPECIFIED" - Type value is not specified or is unknown
	// in this version.
	//   "CONSENT_STATUS_GRANTED" - Consent is granted.
	//   "CONSENT_STATUS_DENIED" - Consent is denied.
	AdPersonalization string `json:"adPersonalization,omitempty"`
	// AdUserData: Represents consent for ad user data.
	//
	// Possible values:
	//   "CONSENT_STATUS_UNSPECIFIED" - Type value is not specified or is unknown
	// in this version.
	//   "CONSENT_STATUS_GRANTED" - Consent is granted.
	//   "CONSENT_STATUS_DENIED" - Consent is denied.
	AdUserData string `json:"adUserData,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdPersonalization") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdPersonalization") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Consent) MarshalJSON() ([]byte, error) {
	type NoMethod Consent
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContactInfo: Contact information defining a Customer Match audience member.
type ContactInfo struct {
	// CountryCode: Country code of the member. Must also be set with the following
	// fields: * hashed_first_name * hashed_last_name * zip_codes
	CountryCode string `json:"countryCode,omitempty"`
	// HashedEmails: A list of SHA256 hashed email of the member. Before hashing,
	// remove all whitespace and make sure the string is all lowercase.
	HashedEmails []string `json:"hashedEmails,omitempty"`
	// HashedFirstName: SHA256 hashed first name of the member. Before hashing,
	// remove all whitespace and make sure the string is all lowercase. Must also
	// be set with the following fields: * country_code * hashed_last_name *
	// zip_codes
	HashedFirstName string `json:"hashedFirstName,omitempty"`
	// HashedLastName: SHA256 hashed last name of the member. Before hashing,
	// remove all whitespace and make sure the string is all lowercase. Must also
	// be set with the following fields: * country_code * hashed_first_name *
	// zip_codes
	HashedLastName string `json:"hashedLastName,omitempty"`
	// HashedPhoneNumbers: A list of SHA256 hashed phone numbers of the member.
	// Before hashing, all phone numbers must be formatted using the E.164 format
	// (//en.wikipedia.org/wiki/E.164) and include the country calling code.
	HashedPhoneNumbers []string `json:"hashedPhoneNumbers,omitempty"`
	// ZipCodes: A list of zip codes of the member. Must also be set with the
	// following fields: * country_code * hashed_first_name * hashed_last_name
	ZipCodes []string `json:"zipCodes,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CountryCode") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CountryCode") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContactInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ContactInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContactInfoList: Wrapper message for a list of contact information defining
// Customer Match audience members.
type ContactInfoList struct {
	// Consent: Input only. The consent setting for the users in contact_infos.
	// Leaving this field unset indicates that consent is not specified. If
	// ad_user_data or ad_personalization fields are set to
	// `CONSENT_STATUS_DENIED`, the request will return an error.
	Consent *Consent `json:"consent,omitempty"`
	// ContactInfos: A list of ContactInfo objects defining Customer Match audience
	// members. The size of members after splitting the contact_infos mustn't be
	// greater than 500,000.
	ContactInfos []*ContactInfo `json:"contactInfos,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Consent") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Consent") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContactInfoList) MarshalJSON() ([]byte, error) {
	type NoMethod ContactInfoList
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContentDurationAssignedTargetingOptionDetails: Details for content duration
// assigned targeting option. This will be populated in the
// content_duration_details field when targeting_type is
// `TARGETING_TYPE_CONTENT_DURATION`. Explicitly targeting all options is not
// supported. Remove all content duration targeting options to achieve this
// effect.
type ContentDurationAssignedTargetingOptionDetails struct {
	// ContentDuration: Output only. The content duration.
	//
	// Possible values:
	//   "CONTENT_DURATION_UNSPECIFIED" - Content duration is not specified in this
	// version. This enum is a place holder for a default value and does not
	// represent a real content duration.
	//   "CONTENT_DURATION_UNKNOWN" - The content duration is unknown.
	//   "CONTENT_DURATION_0_TO_1_MIN" - Content is 0-1 minute long.
	//   "CONTENT_DURATION_1_TO_5_MIN" - Content is 1-5 minutes long.
	//   "CONTENT_DURATION_5_TO_15_MIN" - Content is 5-15 minutes long.
	//   "CONTENT_DURATION_15_TO_30_MIN" - Content is 15-30 minutes long.
	//   "CONTENT_DURATION_30_TO_60_MIN" - Content is 30-60 minutes long.
	//   "CONTENT_DURATION_OVER_60_MIN" - Content is over 60 minutes long.
	ContentDuration string `json:"contentDuration,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id field when
	// targeting_type is `TARGETING_TYPE_CONTENT_DURATION`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ContentDuration") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ContentDuration") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContentDurationAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ContentDurationAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContentDurationTargetingOptionDetails: Represents a targetable content
// duration. This will be populated in the content_duration_details field when
// targeting_type is `TARGETING_TYPE_CONTENT_DURATION`.
type ContentDurationTargetingOptionDetails struct {
	// ContentDuration: Output only. The content duration.
	//
	// Possible values:
	//   "CONTENT_DURATION_UNSPECIFIED" - Content duration is not specified in this
	// version. This enum is a place holder for a default value and does not
	// represent a real content duration.
	//   "CONTENT_DURATION_UNKNOWN" - The content duration is unknown.
	//   "CONTENT_DURATION_0_TO_1_MIN" - Content is 0-1 minute long.
	//   "CONTENT_DURATION_1_TO_5_MIN" - Content is 1-5 minutes long.
	//   "CONTENT_DURATION_5_TO_15_MIN" - Content is 5-15 minutes long.
	//   "CONTENT_DURATION_15_TO_30_MIN" - Content is 15-30 minutes long.
	//   "CONTENT_DURATION_30_TO_60_MIN" - Content is 30-60 minutes long.
	//   "CONTENT_DURATION_OVER_60_MIN" - Content is over 60 minutes long.
	ContentDuration string `json:"contentDuration,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ContentDuration") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ContentDuration") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContentDurationTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ContentDurationTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContentGenreAssignedTargetingOptionDetails: Details for content genre
// assigned targeting option. This will be populated in the
// content_genre_details field when targeting_type is
// `TARGETING_TYPE_CONTENT_GENRE`. Explicitly targeting all options is not
// supported. Remove all content genre targeting options to achieve this
// effect.
type ContentGenreAssignedTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the content genre.
	DisplayName string `json:"displayName,omitempty"`
	// Negative: Indicates if this option is being negatively targeted.
	Negative bool `json:"negative,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id field when
	// targeting_type is `TARGETING_TYPE_CONTENT_GENRE`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContentGenreAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ContentGenreAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContentGenreTargetingOptionDetails: Represents a targetable content genre.
// This will be populated in the content_genre_details field when
// targeting_type is `TARGETING_TYPE_CONTENT_GENRE`.
type ContentGenreTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the content genre
	DisplayName string `json:"displayName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContentGenreTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ContentGenreTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContentInstreamPositionAssignedTargetingOptionDetails: Assigned content
// instream position targeting option details. This will be populated in the
// content_instream_position_details field when targeting_type is
// `TARGETING_TYPE_CONTENT_INSTREAM_POSITION`.
type ContentInstreamPositionAssignedTargetingOptionDetails struct {
	// AdType: Output only. The ad type to target. Only applicable to insertion
	// order targeting and new line items supporting the specified ad type will
	// inherit this targeting option by default. Possible values are: *
	// `AD_TYPE_VIDEO`, the setting will be inherited by new line item when
	// line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`. * `AD_TYPE_AUDIO`, the
	// setting will be inherited by new line item when line_item_type is
	// `LINE_ITEM_TYPE_AUDIO_DEFAULT`.
	//
	// Possible values:
	//   "AD_TYPE_UNSPECIFIED" - Ad type is not specified or is unknown in this
	// version.
	//   "AD_TYPE_DISPLAY" - Display creatives, e.g. image and HTML5.
	//   "AD_TYPE_VIDEO" - Video creatives, e.g. video ads that play during
	// streaming content in video players.
	//   "AD_TYPE_AUDIO" - Audio creatives, e.g. audio ads that play during audio
	// content.
	AdType string `json:"adType,omitempty"`
	// ContentInstreamPosition: Required. The content instream position for video
	// or audio ads.
	//
	// Possible values:
	//   "CONTENT_INSTREAM_POSITION_UNSPECIFIED" - Content instream position is not
	// specified in this version. This enum is a place holder for a default value
	// and does not represent a real in stream ad position.
	//   "CONTENT_INSTREAM_POSITION_PRE_ROLL" - Ads that play before streaming
	// content.
	//   "CONTENT_INSTREAM_POSITION_MID_ROLL" - Ads that play between the beginning
	// and end of streaming content.
	//   "CONTENT_INSTREAM_POSITION_POST_ROLL" - Ads that play at the end of
	// streaming content.
	//   "CONTENT_INSTREAM_POSITION_UNKNOWN" - Ads instream position is unknown.
	ContentInstreamPosition string `json:"contentInstreamPosition,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdType") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContentInstreamPositionAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ContentInstreamPositionAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContentInstreamPositionTargetingOptionDetails: Represents a targetable
// content instream position, which could be used by video and audio ads. This
// will be populated in the content_instream_position_details field when
// targeting_type is `TARGETING_TYPE_CONTENT_INSTREAM_POSITION`.
type ContentInstreamPositionTargetingOptionDetails struct {
	// ContentInstreamPosition: Output only. The content instream position.
	//
	// Possible values:
	//   "CONTENT_INSTREAM_POSITION_UNSPECIFIED" - Content instream position is not
	// specified in this version. This enum is a place holder for a default value
	// and does not represent a real in stream ad position.
	//   "CONTENT_INSTREAM_POSITION_PRE_ROLL" - Ads that play before streaming
	// content.
	//   "CONTENT_INSTREAM_POSITION_MID_ROLL" - Ads that play between the beginning
	// and end of streaming content.
	//   "CONTENT_INSTREAM_POSITION_POST_ROLL" - Ads that play at the end of
	// streaming content.
	//   "CONTENT_INSTREAM_POSITION_UNKNOWN" - Ads instream position is unknown.
	ContentInstreamPosition string `json:"contentInstreamPosition,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ContentInstreamPosition") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ContentInstreamPosition") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContentInstreamPositionTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ContentInstreamPositionTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContentOutstreamPositionAssignedTargetingOptionDetails: Assigned content
// outstream position targeting option details. This will be populated in the
// content_outstream_position_details field when targeting_type is
// `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION`.
type ContentOutstreamPositionAssignedTargetingOptionDetails struct {
	// AdType: Output only. The ad type to target. Only applicable to insertion
	// order targeting and new line items supporting the specified ad type will
	// inherit this targeting option by default. Possible values are: *
	// `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when
	// line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the
	// setting will be inherited by new line item when line_item_type is
	// `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
	//
	// Possible values:
	//   "AD_TYPE_UNSPECIFIED" - Ad type is not specified or is unknown in this
	// version.
	//   "AD_TYPE_DISPLAY" - Display creatives, e.g. image and HTML5.
	//   "AD_TYPE_VIDEO" - Video creatives, e.g. video ads that play during
	// streaming content in video players.
	//   "AD_TYPE_AUDIO" - Audio creatives, e.g. audio ads that play during audio
	// content.
	AdType string `json:"adType,omitempty"`
	// ContentOutstreamPosition: Required. The content outstream position.
	//
	// Possible values:
	//   "CONTENT_OUTSTREAM_POSITION_UNSPECIFIED" - Content outstream position is
	// not specified in this version. This enum is a place holder for a default
	// value and does not represent a real content outstream position.
	//   "CONTENT_OUTSTREAM_POSITION_UNKNOWN" - The ad position is unknown in the
	// content outstream.
	//   "CONTENT_OUTSTREAM_POSITION_IN_ARTICLE" - Ads that appear between the
	// paragraphs of your pages.
	//   "CONTENT_OUTSTREAM_POSITION_IN_BANNER" - Ads that display on the top and
	// the sides of a page.
	//   "CONTENT_OUTSTREAM_POSITION_IN_FEED" - Ads that appear in a scrollable
	// stream of content. A feed is typically editorial (e.g. a list of articles or
	// news) or listings (e.g. a list of products or services).
	//   "CONTENT_OUTSTREAM_POSITION_INTERSTITIAL" - Ads shown before or between
	// content loads.
	ContentOutstreamPosition string `json:"contentOutstreamPosition,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdType") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContentOutstreamPositionAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ContentOutstreamPositionAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContentOutstreamPositionTargetingOptionDetails: Represents a targetable
// content outstream position, which could be used by display and video ads.
// This will be populated in the content_outstream_position_details field when
// targeting_type is `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION`.
type ContentOutstreamPositionTargetingOptionDetails struct {
	// ContentOutstreamPosition: Output only. The content outstream position.
	//
	// Possible values:
	//   "CONTENT_OUTSTREAM_POSITION_UNSPECIFIED" - Content outstream position is
	// not specified in this version. This enum is a place holder for a default
	// value and does not represent a real content outstream position.
	//   "CONTENT_OUTSTREAM_POSITION_UNKNOWN" - The ad position is unknown in the
	// content outstream.
	//   "CONTENT_OUTSTREAM_POSITION_IN_ARTICLE" - Ads that appear between the
	// paragraphs of your pages.
	//   "CONTENT_OUTSTREAM_POSITION_IN_BANNER" - Ads that display on the top and
	// the sides of a page.
	//   "CONTENT_OUTSTREAM_POSITION_IN_FEED" - Ads that appear in a scrollable
	// stream of content. A feed is typically editorial (e.g. a list of articles or
	// news) or listings (e.g. a list of products or services).
	//   "CONTENT_OUTSTREAM_POSITION_INTERSTITIAL" - Ads shown before or between
	// content loads.
	ContentOutstreamPosition string `json:"contentOutstreamPosition,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ContentOutstreamPosition")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ContentOutstreamPosition") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContentOutstreamPositionTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ContentOutstreamPositionTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContentStreamTypeAssignedTargetingOptionDetails: Details for content stream
// type assigned targeting option. This will be populated in the
// content_stream_type_details field when targeting_type is
// `TARGETING_TYPE_CONTENT_STREAM_TYPE`. Explicitly targeting all options is
// not supported. Remove all content stream type targeting options to achieve
// this effect.
type ContentStreamTypeAssignedTargetingOptionDetails struct {
	// ContentStreamType: Output only. The content stream type.
	//
	// Possible values:
	//   "CONTENT_STREAM_TYPE_UNSPECIFIED" - Content stream type is not specified
	// in this version. This enum is a place holder for a default value and does
	// not represent a real content stream type.
	//   "CONTENT_LIVE_STREAM" - The content is being live-streamed.
	//   "CONTENT_ON_DEMAND" - The content is viewed on-demand.
	ContentStreamType string `json:"contentStreamType,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id field when
	// targeting_type is `TARGETING_TYPE_CONTENT_STREAM_TYPE`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ContentStreamType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ContentStreamType") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContentStreamTypeAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ContentStreamTypeAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContentStreamTypeTargetingOptionDetails: Represents a targetable content
// stream type. This will be populated in the content_stream_type_details field
// when targeting_type is `TARGETING_TYPE_CONTENT_STREAM_TYPE`.
type ContentStreamTypeTargetingOptionDetails struct {
	// ContentStreamType: Output only. The content stream type.
	//
	// Possible values:
	//   "CONTENT_STREAM_TYPE_UNSPECIFIED" - Content stream type is not specified
	// in this version. This enum is a place holder for a default value and does
	// not represent a real content stream type.
	//   "CONTENT_LIVE_STREAM" - The content is being live-streamed.
	//   "CONTENT_ON_DEMAND" - The content is viewed on-demand.
	ContentStreamType string `json:"contentStreamType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ContentStreamType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ContentStreamType") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContentStreamTypeTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ContentStreamTypeTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContentThemeAssignedTargetingOptionDetails: Targeting details for content
// theme. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_CONTENT_THEME_EXCLUSION`.
type ContentThemeAssignedTargetingOptionDetails struct {
	// ContentTheme: Output only. An enum for the DV360 content theme classifier.
	//
	// Possible values:
	//   "CONTENT_THEME_UNSPECIFIED" - Content theme is not specified or is unknown
	// in this version.
	//   "CONTENT_THEME_FIGHTING_VIDEO_GAMES" - Fighting video games.
	//   "CONTENT_THEME_MATURE_GAMES" - Mature games.
	//   "CONTENT_THEME_NOT_YET_DETERMINED_HEALTH_SOURCES" - Not yet determined
	// health sources.
	//   "CONTENT_THEME_NOT_YET_DETERMINED_NEWS_SOURCES" - Not yet determined news
	// sources.
	//   "CONTENT_THEME_POLITICS" - Politics.
	//   "CONTENT_THEME_RECENT_NEWS" - Recent news.
	//   "CONTENT_THEME_RELIGION" - Religion.
	//   "CONTENT_THEME_UNPLEASANT_HEALTH_CONTENT" - Unpleasant health content.
	//   "CONTENT_THEME_UNPLEASANT_NEWS" - Unpleasant news.
	ContentTheme string `json:"contentTheme,omitempty"`
	// ExcludedContentTheme: Required. An enum for the DV360 content theme
	// classified to be EXCLUDED.
	//
	// Possible values:
	//   "CONTENT_THEME_UNSPECIFIED" - Content theme is not specified or is unknown
	// in this version.
	//   "CONTENT_THEME_FIGHTING_VIDEO_GAMES" - Fighting video games.
	//   "CONTENT_THEME_MATURE_GAMES" - Mature games.
	//   "CONTENT_THEME_NOT_YET_DETERMINED_HEALTH_SOURCES" - Not yet determined
	// health sources.
	//   "CONTENT_THEME_NOT_YET_DETERMINED_NEWS_SOURCES" - Not yet determined news
	// sources.
	//   "CONTENT_THEME_POLITICS" - Politics.
	//   "CONTENT_THEME_RECENT_NEWS" - Recent news.
	//   "CONTENT_THEME_RELIGION" - Religion.
	//   "CONTENT_THEME_UNPLEASANT_HEALTH_CONTENT" - Unpleasant health content.
	//   "CONTENT_THEME_UNPLEASANT_NEWS" - Unpleasant news.
	ExcludedContentTheme string `json:"excludedContentTheme,omitempty"`
	// ExcludedTargetingOptionId: Required. ID of the content theme to be EXCLUDED.
	ExcludedTargetingOptionId string `json:"excludedTargetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ContentTheme") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ContentTheme") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContentThemeAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ContentThemeAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContentThemeTargetingOptionDetails: Represents a targetable content theme.
// This will be populated in the content_theme_details field of the
// TargetingOption when targeting_type is
// `TARGETING_TYPE_CONTENT_THEME_EXCLUSION`.
type ContentThemeTargetingOptionDetails struct {
	// ContentTheme: Output only. An enum for the DV360 content theme content
	// classifier.
	//
	// Possible values:
	//   "CONTENT_THEME_UNSPECIFIED" - Content theme is not specified or is unknown
	// in this version.
	//   "CONTENT_THEME_FIGHTING_VIDEO_GAMES" - Fighting video games.
	//   "CONTENT_THEME_MATURE_GAMES" - Mature games.
	//   "CONTENT_THEME_NOT_YET_DETERMINED_HEALTH_SOURCES" - Not yet determined
	// health sources.
	//   "CONTENT_THEME_NOT_YET_DETERMINED_NEWS_SOURCES" - Not yet determined news
	// sources.
	//   "CONTENT_THEME_POLITICS" - Politics.
	//   "CONTENT_THEME_RECENT_NEWS" - Recent news.
	//   "CONTENT_THEME_RELIGION" - Religion.
	//   "CONTENT_THEME_UNPLEASANT_HEALTH_CONTENT" - Unpleasant health content.
	//   "CONTENT_THEME_UNPLEASANT_NEWS" - Unpleasant news.
	ContentTheme string `json:"contentTheme,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ContentTheme") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ContentTheme") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContentThemeTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ContentThemeTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ConversionCountingConfig: Settings that control how conversions are counted.
// All post-click conversions will be counted. A percentage value can be set
// for post-view conversions counting.
type ConversionCountingConfig struct {
	// FloodlightActivityConfigs: The Floodlight activity configs used to track
	// conversions. The number of conversions counted is the sum of all of the
	// conversions counted by all of the Floodlight activity IDs specified in this
	// field. This field can't be updated if a custom bidding algorithm is assigned
	// to the line item. If you set this field and assign a custom bidding
	// algorithm in the same request, the floodlight activities must match the ones
	// used by the custom bidding algorithm.
	FloodlightActivityConfigs []*TrackingFloodlightActivityConfig `json:"floodlightActivityConfigs,omitempty"`
	// PostViewCountPercentageMillis: The percentage of post-view conversions to
	// count, in millis (1/1000 of a percent). Must be between 0 and 100000
	// inclusive. For example, to track 50% of the post-click conversions, set a
	// value of 50000.
	PostViewCountPercentageMillis int64 `json:"postViewCountPercentageMillis,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "FloodlightActivityConfigs")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "FloodlightActivityConfigs") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ConversionCountingConfig) MarshalJSON() ([]byte, error) {
	type NoMethod ConversionCountingConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CounterEvent: Counter event of the creative.
type CounterEvent struct {
	// Name: Required. The name of the counter event.
	Name string `json:"name,omitempty"`
	// ReportingName: Required. The name used to identify this counter event in
	// reports.
	ReportingName string `json:"reportingName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Name") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Name") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CounterEvent) MarshalJSON() ([]byte, error) {
	type NoMethod CounterEvent
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CreateAssetRequest: A request message for CreateAsset.
type CreateAssetRequest struct {
	// Filename: Required. The filename of the asset, including the file extension.
	// The filename must be UTF-8 encoded with a maximum size of 240 bytes.
	Filename string `json:"filename,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Filename") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Filename") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CreateAssetRequest) MarshalJSON() ([]byte, error) {
	type NoMethod CreateAssetRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CreateAssetResponse: A response message for CreateAsset.
type CreateAssetResponse struct {
	// Asset: The uploaded asset, if successful.
	Asset *Asset `json:"asset,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Asset") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Asset") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CreateAssetResponse) MarshalJSON() ([]byte, error) {
	type NoMethod CreateAssetResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CreateAssignedTargetingOptionsRequest: A request listing which assigned
// targeting options of a given targeting type should be created and added.
type CreateAssignedTargetingOptionsRequest struct {
	// AssignedTargetingOptions: Required. The assigned targeting options to create
	// and add.
	AssignedTargetingOptions []*AssignedTargetingOption `json:"assignedTargetingOptions,omitempty"`
	// TargetingType: Required. Identifies the type of this assigned targeting
	// option.
	//
	// Possible values:
	//   "TARGETING_TYPE_UNSPECIFIED" - Default value when type is not specified or
	// is unknown in this version.
	//   "TARGETING_TYPE_CHANNEL" - Target a channel (a custom group of related
	// websites or apps).
	//   "TARGETING_TYPE_APP_CATEGORY" - Target an app category (for example,
	// education or puzzle games).
	//   "TARGETING_TYPE_APP" - Target a specific app (for example, Angry Birds).
	//   "TARGETING_TYPE_URL" - Target a specific url (for example, quora.com).
	//   "TARGETING_TYPE_DAY_AND_TIME" - Target ads during a chosen time period on
	// a specific day.
	//   "TARGETING_TYPE_AGE_RANGE" - Target ads to a specific age range (for
	// example, 18-24).
	//   "TARGETING_TYPE_REGIONAL_LOCATION_LIST" - Target ads to the specified
	// regions on a regional location list.
	//   "TARGETING_TYPE_PROXIMITY_LOCATION_LIST" - Target ads to the specified
	// points of interest on a proximity location list.
	//   "TARGETING_TYPE_GENDER" - Target ads to a specific gender (for example,
	// female or male).
	//   "TARGETING_TYPE_VIDEO_PLAYER_SIZE" - Target a specific video player size
	// for video ads.
	//   "TARGETING_TYPE_USER_REWARDED_CONTENT" - Target user rewarded content for
	// video ads.
	//   "TARGETING_TYPE_PARENTAL_STATUS" - Target ads to a specific parental
	// status (for example, parent or not a parent).
	//   "TARGETING_TYPE_CONTENT_INSTREAM_POSITION" - Target video or audio ads in
	// a specific content instream position (for example, pre-roll, mid-roll, or
	// post-roll).
	//   "TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION" - Target ads in a specific
	// content outstream position.
	//   "TARGETING_TYPE_DEVICE_TYPE" - Target ads to a specific device type (for
	// example, tablet or connected TV).
	//   "TARGETING_TYPE_AUDIENCE_GROUP" - Target ads to an audience or groups of
	// audiences. Singleton field, at most one can exist on a single Lineitem at a
	// time.
	//   "TARGETING_TYPE_BROWSER" - Target ads to specific web browsers (for
	// example, Chrome).
	//   "TARGETING_TYPE_HOUSEHOLD_INCOME" - Target ads to a specific household
	// income range (for example, top 10%).
	//   "TARGETING_TYPE_ON_SCREEN_POSITION" - Target ads in a specific on screen
	// position.
	//   "TARGETING_TYPE_THIRD_PARTY_VERIFIER" - Filter web sites through third
	// party verification (for example, IAS or DoubleVerify).
	//   "TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION" - Filter web sites by
	// specific digital content label ratings (for example, DL-MA: suitable only
	// for mature audiences).
	//   "TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION" - Filter website content by
	// sensitive categories (for example, adult).
	//   "TARGETING_TYPE_ENVIRONMENT" - Target ads to a specific environment (for
	// example, web or app).
	//   "TARGETING_TYPE_CARRIER_AND_ISP" - Target ads to a specific network
	// carrier or internet service provider (ISP) (for example, Comcast or Orange).
	//   "TARGETING_TYPE_OPERATING_SYSTEM" - Target ads to a specific operating
	// system (for example, macOS).
	//   "TARGETING_TYPE_DEVICE_MAKE_MODEL" - Target ads to a specific device make
	// or model (for example, Roku or Samsung).
	//   "TARGETING_TYPE_KEYWORD" - Target ads to a specific keyword (for example,
	// dog or retriever).
	//   "TARGETING_TYPE_NEGATIVE_KEYWORD_LIST" - Target ads to a specific negative
	// keyword list.
	//   "TARGETING_TYPE_VIEWABILITY" - Target ads to a specific viewability (for
	// example, 80% viewable).
	//   "TARGETING_TYPE_CATEGORY" - Target ads to a specific content category (for
	// example, arts & entertainment).
	//   "TARGETING_TYPE_INVENTORY_SOURCE" - Purchase impressions from specific
	// deals and auction packages.
	//   "TARGETING_TYPE_LANGUAGE" - Target ads to a specific language (for
	// example, English or Japanese).
	//   "TARGETING_TYPE_AUTHORIZED_SELLER_STATUS" - Target ads to ads.txt
	// authorized sellers. If no targeting option of this type is assigned, the
	// resource uses the "Authorized Direct Sellers and Resellers" option by
	// default.
	//   "TARGETING_TYPE_GEO_REGION" - Target ads to a specific regional location
	// (for example, a city or state).
	//   "TARGETING_TYPE_INVENTORY_SOURCE_GROUP" - Purchase impressions from a
	// group of deals and auction packages.
	//   "TARGETING_TYPE_EXCHANGE" - Purchase impressions from specific exchanges.
	//   "TARGETING_TYPE_SUB_EXCHANGE" - Purchase impressions from specific
	// sub-exchanges.
	//   "TARGETING_TYPE_POI" - Target ads around a specific point of interest,
	// such as a notable building, a street address, or latitude/longitude
	// coordinates.
	//   "TARGETING_TYPE_BUSINESS_CHAIN" - Target ads around locations of a
	// business chain within a specific geo region.
	//   "TARGETING_TYPE_CONTENT_DURATION" - Target ads to a specific video content
	// duration.
	//   "TARGETING_TYPE_CONTENT_STREAM_TYPE" - Target ads to a specific video
	// content stream type.
	//   "TARGETING_TYPE_NATIVE_CONTENT_POSITION" - Target ads to a specific native
	// content position.
	//   "TARGETING_TYPE_OMID" - Target ads in an Open Measurement enabled
	// inventory.
	//   "TARGETING_TYPE_AUDIO_CONTENT_TYPE" - Target ads to a specific audio
	// content type.
	//   "TARGETING_TYPE_CONTENT_GENRE" - Target ads to a specific content genre.
	//   "TARGETING_TYPE_YOUTUBE_VIDEO" - Target ads to a specific YouTube video.
	// Targeting of this type cannot be created or updated using the API. Although
	// this targeting is inherited by child resources, **inherited targeting of
	// this type will not be retrieveable**.
	//   "TARGETING_TYPE_YOUTUBE_CHANNEL" - Target ads to a specific YouTube
	// channel. Targeting of this type cannot be created or updated using the API.
	// Although this targeting is inherited by child resources, **inherited
	// targeting of this type will not be retrieveable**.
	//   "TARGETING_TYPE_SESSION_POSITION" - Target ads to a serve it in a certain
	// position of a session. Only supported for Ad Group resources under YouTube
	// Programmatic Reservation line items. Targeting of this type cannot be
	// created or updated using the API.
	//   "TARGETING_TYPE_CONTENT_THEME_EXCLUSION" - Filter website content by
	// content themes (for example, religion). Only supported for Advertiser
	// resources. Targeting of this type cannot be created or updated using the
	// API. This targeting is only inherited by child YouTube and Demand Gen line
	// item resources.
	TargetingType string `json:"targetingType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AssignedTargetingOptions")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedTargetingOptions") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CreateAssignedTargetingOptionsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod CreateAssignedTargetingOptionsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CreateSdfDownloadTaskRequest: Request message for
// [SdfDownloadTaskService.CreateSdfDownloadTask].
type CreateSdfDownloadTaskRequest struct {
	// AdvertiserId: The ID of the advertiser to download SDF for.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// IdFilter: Filters on entities by their entity IDs.
	IdFilter *IdFilter `json:"idFilter,omitempty"`
	// InventorySourceFilter: Filters on Inventory Sources by their IDs.
	InventorySourceFilter *InventorySourceFilter `json:"inventorySourceFilter,omitempty"`
	// ParentEntityFilter: Filters on selected file types. The entities in each
	// file are filtered by a chosen set of filter entities. The filter entities
	// must be the same type as, or a parent type of, the selected file types.
	ParentEntityFilter *ParentEntityFilter `json:"parentEntityFilter,omitempty"`
	// PartnerId: The ID of the partner to download SDF for.
	PartnerId int64 `json:"partnerId,omitempty,string"`
	// Version: Required. The SDF version of the downloaded file. If set to
	// `SDF_VERSION_UNSPECIFIED`, this will default to the version specified by the
	// advertiser or partner identified by `root_id`. An advertiser inherits its
	// SDF version from its partner unless configured otherwise.
	//
	// Possible values:
	//   "SDF_VERSION_UNSPECIFIED" - SDF version value is not specified or is
	// unknown in this version.
	//   "SDF_VERSION_3_1" - SDF version 3.1
	//   "SDF_VERSION_4" - SDF version 4
	//   "SDF_VERSION_4_1" - SDF version 4.1
	//   "SDF_VERSION_4_2" - SDF version 4.2
	//   "SDF_VERSION_5" - SDF version 5.
	//   "SDF_VERSION_5_1" - SDF version 5.1
	//   "SDF_VERSION_5_2" - SDF version 5.2
	//   "SDF_VERSION_5_3" - SDF version 5.3
	//   "SDF_VERSION_5_4" - SDF version 5.4
	//   "SDF_VERSION_5_5" - SDF version 5.5
	//   "SDF_VERSION_6" - SDF version 6
	//   "SDF_VERSION_7" - SDF version 7. Read the [v7 migration
	// guide](/display-video/api/structured-data-file/v7-migration-guide) before
	// migrating to this version.
	//   "SDF_VERSION_7_1" - SDF version 7.1. Read the [v7 migration
	// guide](/display-video/api/structured-data-file/v7-migration-guide) before
	// migrating to this version.
	//   "SDF_VERSION_8" - SDF version 8. Read the [v8 migration
	// guide](/display-video/api/structured-data-file/v8-migration-guide) before
	// migrating to this version.
	//   "SDF_VERSION_8_1" - SDF version 8.1.
	Version string `json:"version,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CreateSdfDownloadTaskRequest) MarshalJSON() ([]byte, error) {
	type NoMethod CreateSdfDownloadTaskRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Creative: A single Creative.
type Creative struct {
	// AdditionalDimensions: Optional. Additional dimensions. Applicable when
	// creative_type is one of: * `CREATIVE_TYPE_STANDARD` *
	// `CREATIVE_TYPE_EXPANDABLE` * `CREATIVE_TYPE_NATIVE` *
	// `CREATIVE_TYPE_NATIVE_SITE_SQUARE` * `CREATIVE_TYPE_LIGHTBOX` *
	// `CREATIVE_TYPE_PUBLISHER_HOSTED` If this field is specified, width_pixels
	// and height_pixels are both required and must be greater than or equal to 0.
	AdditionalDimensions []*Dimensions `json:"additionalDimensions,omitempty"`
	// AdvertiserId: Output only. The unique ID of the advertiser the creative
	// belongs to.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// AppendedTag: Optional. Third-party HTML tracking tag to be appended to the
	// creative tag.
	AppendedTag string `json:"appendedTag,omitempty"`
	// Assets: Required. Assets associated to this creative.
	Assets []*AssetAssociation `json:"assets,omitempty"`
	// CmPlacementId: Output only. The unique ID of the Campaign Manager 360
	// placement associated with the creative. This field is only applicable for
	// creatives that are synced from Campaign Manager.
	CmPlacementId int64 `json:"cmPlacementId,omitempty,string"`
	// CmTrackingAd: Optional. The Campaign Manager 360 tracking ad associated with
	// the creative. Optional for the following creative_type when created by an
	// advertiser that uses both Campaign Manager 360 and third-party ad serving: *
	// `CREATIVE_TYPE_NATIVE` * `CREATIVE_TYPE_NATIVE_SITE_SQUARE` Output only for
	// other cases.
	CmTrackingAd *CmTrackingAd `json:"cmTrackingAd,omitempty"`
	// CompanionCreativeIds: Optional. The IDs of companion creatives for a video
	// creative. You can assign existing display creatives (with image or HTML5
	// assets) to serve surrounding the publisher's video player. Companions
	// display around the video player while the video is playing and remain after
	// the video has completed. Creatives contain additional dimensions can not be
	// companion creatives. This field is only supported for the following
	// creative_type: * `CREATIVE_TYPE_AUDIO` * `CREATIVE_TYPE_VIDEO`
	CompanionCreativeIds googleapi.Int64s `json:"companionCreativeIds,omitempty"`
	// CounterEvents: Optional. Counter events for a rich media creative. Counters
	// track the number of times that a user interacts with any part of a rich
	// media creative in a specified way (mouse-overs, mouse-outs, clicks, taps,
	// data loading, keyboard entries, etc.). Any event that can be captured in the
	// creative can be recorded as a counter. Leave it empty or unset for creatives
	// containing image assets only.
	CounterEvents []*CounterEvent `json:"counterEvents,omitempty"`
	// CreateTime: Output only. The timestamp when the creative was created.
	// Assigned by the system.
	CreateTime string `json:"createTime,omitempty"`
	// CreativeAttributes: Output only. A list of attributes of the creative that
	// is generated by the system.
	//
	// Possible values:
	//   "CREATIVE_ATTRIBUTE_UNSPECIFIED" - The creative attribute is not specified
	// or is unknown in this version.
	//   "CREATIVE_ATTRIBUTE_VAST" - The creative is a VAST creative.
	//   "CREATIVE_ATTRIBUTE_VPAID_LINEAR" - The creative is a linear VPAID
	// creative.
	//   "CREATIVE_ATTRIBUTE_VPAID_NON_LINEAR" - The creative is a non-linear VPAID
	// creative.
	CreativeAttributes []string `json:"creativeAttributes,omitempty"`
	// CreativeId: Output only. The unique ID of the creative. Assigned by the
	// system.
	CreativeId int64 `json:"creativeId,omitempty,string"`
	// CreativeType: Required. Immutable. The type of the creative.
	//
	// Possible values:
	//   "CREATIVE_TYPE_UNSPECIFIED" - Type value is not specified or is unknown in
	// this version.
	//   "CREATIVE_TYPE_STANDARD" - Standard display creative. Create and update
	// methods are supported for this creative type if the hosting_source is one of
	// the following: * `HOSTING_SOURCE_HOSTED` * `HOSTING_SOURCE_THIRD_PARTY`
	//   "CREATIVE_TYPE_EXPANDABLE" - Expandable creative. Create and update
	// methods are supported for this creative type if the hosting_source is
	// `HOSTING_SOURCE_THIRD_PARTY`
	//   "CREATIVE_TYPE_VIDEO" - Video creative. Create and update methods are
	// supported for this creative type if the hosting_source is one of the
	// following: * `HOSTING_SOURCE_HOSTED` * `HOSTING_SOURCE_THIRD_PARTY`
	//   "CREATIVE_TYPE_NATIVE" - Native creative rendered by publishers with
	// assets from advertiser. Create and update methods are supported for this
	// creative type if the hosting_source is `HOSTING_SOURCE_HOSTED`
	//   "CREATIVE_TYPE_TEMPLATED_APP_INSTALL" - Templated app install mobile
	// creative (banner). Create and update methods are **not** supported for this
	// creative type.
	//   "CREATIVE_TYPE_NATIVE_SITE_SQUARE" - Square native creative. Create and
	// update methods are supported for this creative type if the hosting_source is
	// `HOSTING_SOURCE_HOSTED`
	//   "CREATIVE_TYPE_TEMPLATED_APP_INSTALL_INTERSTITIAL" - Interstitial creative
	// including both display and video. Create and update methods are **not**
	// supported for this creative type.
	//   "CREATIVE_TYPE_LIGHTBOX" - Responsive and expandable Lightbox creative.
	// Create and update methods are **not** supported for this creative type.
	//   "CREATIVE_TYPE_NATIVE_APP_INSTALL" - Native app install creative. Create
	// and update methods are **not** supported for this creative type.
	//   "CREATIVE_TYPE_NATIVE_APP_INSTALL_SQUARE" - Square native app install
	// creative. Create and update methods are **not** supported for this creative
	// type.
	//   "CREATIVE_TYPE_AUDIO" - Audio creative. Create and update methods are
	// supported for this creative type if the hosting_source is
	// `HOSTING_SOURCE_HOSTED`
	//   "CREATIVE_TYPE_PUBLISHER_HOSTED" - Publisher hosted creative. Create and
	// update methods are **not** supported for this creative type.
	//   "CREATIVE_TYPE_NATIVE_VIDEO" - Native video creative. Create and update
	// methods are supported for this creative type if the hosting_source is
	// `HOSTING_SOURCE_HOSTED`
	//   "CREATIVE_TYPE_TEMPLATED_APP_INSTALL_VIDEO" - Templated app install mobile
	// video creative. Create and update methods are **not** supported for this
	// creative type.
	//   "CREATIVE_TYPE_ASSET_BASED_CREATIVE" - Asset-based creative. Create and
	// update methods are supported for this creative type if the hosting_source is
	// `HOSTING_SOURCE_HOSTED`.
	CreativeType string `json:"creativeType,omitempty"`
	// Dimensions: Required. Primary dimensions of the creative. Applicable to all
	// creative types. The value of width_pixels and height_pixels defaults to `0`
	// when creative_type is one of: * `CREATIVE_TYPE_VIDEO` *
	// `CREATIVE_TYPE_AUDIO` * `CREATIVE_TYPE_NATIVE_VIDEO`
	Dimensions *Dimensions `json:"dimensions,omitempty"`
	// DisplayName: Required. The display name of the creative. Must be UTF-8
	// encoded with a maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// Dynamic: Output only. Indicates whether the creative is dynamic.
	Dynamic bool `json:"dynamic,omitempty"`
	// EntityStatus: Required. Controls whether or not the creative can serve.
	// Accepted values are: * `ENTITY_STATUS_ACTIVE` * `ENTITY_STATUS_ARCHIVED` *
	// `ENTITY_STATUS_PAUSED`
	//
	// Possible values:
	//   "ENTITY_STATUS_UNSPECIFIED" - Default value when status is not specified
	// or is unknown in this version.
	//   "ENTITY_STATUS_ACTIVE" - The entity is enabled to bid and spend budget.
	//   "ENTITY_STATUS_ARCHIVED" - The entity is archived. Bidding and budget
	// spending are disabled. An entity can be deleted after archived. Deleted
	// entities cannot be retrieved.
	//   "ENTITY_STATUS_DRAFT" - The entity is under draft. Bidding and budget
	// spending are disabled.
	//   "ENTITY_STATUS_PAUSED" - Bidding and budget spending are paused for the
	// entity.
	//   "ENTITY_STATUS_SCHEDULED_FOR_DELETION" - The entity is scheduled for
	// deletion.
	EntityStatus string `json:"entityStatus,omitempty"`
	// ExitEvents: Required. Exit events for this creative. An exit (also known as
	// a click tag) is any area in your creative that someone can click or tap to
	// open an advertiser's landing page. Every creative must include at least one
	// exit. You can add an exit to your creative in any of the following ways: *
	// Use Google Web Designer's tap area. * Define a JavaScript variable called
	// "clickTag". * Use the Enabler (Enabler.exit()) to track exits in rich media
	// formats.
	ExitEvents []*ExitEvent `json:"exitEvents,omitempty"`
	// ExpandOnHover: Optional. Indicates the creative will automatically expand on
	// hover. Optional and only valid for third-party expandable creatives.
	// Third-party expandable creatives are creatives with following hosting
	// source: * `HOSTING_SOURCE_THIRD_PARTY` combined with following
	// creative_type: * `CREATIVE_TYPE_EXPANDABLE`
	ExpandOnHover bool `json:"expandOnHover,omitempty"`
	// ExpandingDirection: Optional. Specifies the expanding direction of the
	// creative. Required and only valid for third-party expandable creatives.
	// Third-party expandable creatives are creatives with following hosting
	// source: * `HOSTING_SOURCE_THIRD_PARTY` combined with following
	// creative_type: * `CREATIVE_TYPE_EXPANDABLE`
	//
	// Possible values:
	//   "EXPANDING_DIRECTION_UNSPECIFIED" - The expanding direction is not
	// specified.
	//   "EXPANDING_DIRECTION_NONE" - Does not expand in any direction.
	//   "EXPANDING_DIRECTION_UP" - Expands up.
	//   "EXPANDING_DIRECTION_DOWN" - Expands down.
	//   "EXPANDING_DIRECTION_LEFT" - Expands left.
	//   "EXPANDING_DIRECTION_RIGHT" - Expands right.
	//   "EXPANDING_DIRECTION_UP_AND_LEFT" - Expands up and to the left side.
	//   "EXPANDING_DIRECTION_UP_AND_RIGHT" - Expands up and to the right side.
	//   "EXPANDING_DIRECTION_DOWN_AND_LEFT" - Expands down and to the left side.
	//   "EXPANDING_DIRECTION_DOWN_AND_RIGHT" - Expands down and to the right side.
	//   "EXPANDING_DIRECTION_UP_OR_DOWN" - Expands either up or down.
	//   "EXPANDING_DIRECTION_LEFT_OR_RIGHT" - Expands to either the left or the
	// right side.
	//   "EXPANDING_DIRECTION_ANY_DIAGONAL" - Can expand in any diagonal direction.
	ExpandingDirection string `json:"expandingDirection,omitempty"`
	// HostingSource: Required. Indicates where the creative is hosted.
	//
	// Possible values:
	//   "HOSTING_SOURCE_UNSPECIFIED" - Hosting source is not specified or is
	// unknown in this version.
	//   "HOSTING_SOURCE_CM" - A creative synced from Campaign Manager 360. Create
	// and update methods are **not** supported for this hosting type.
	//   "HOSTING_SOURCE_THIRD_PARTY" - A creative hosted by a third-party ad
	// server (3PAS). Create and update methods are supported for this hosting type
	// if the creative_type is one of the following: * `CREATIVE_TYPE_AUDIO` *
	// `CREATIVE_TYPE_EXPANDABLE` * `CREATIVE_TYPE_STANDARD` *
	// `CREATIVE_TYPE_VIDEO`
	//   "HOSTING_SOURCE_HOSTED" - A creative created in DV360 and hosted by
	// Campaign Manager 360. Create and update methods are supported for this
	// hosting type if the creative_type is one of the following: *
	// `CREATIVE_TYPE_AUDIO` * `CREATIVE_TYPE_NATIVE` *
	// `CREATIVE_TYPE_NATIVE_SITE_SQUARE` * `CREATIVE_TYPE_NATIVE_VIDEO` *
	// `CREATIVE_TYPE_STANDARD` * `CREATIVE_TYPE_VIDEO`
	//   "HOSTING_SOURCE_RICH_MEDIA" - A rich media creative created in Studio and
	// hosted by Campaign Manager 360. Create and update methods are **not**
	// supported for this hosting type.
	HostingSource string `json:"hostingSource,omitempty"`
	// Html5Video: Output only. Indicates the third-party VAST tag creative
	// requires HTML5 Video support. Output only and only valid for third-party
	// VAST tag creatives. Third-party VAST tag creatives are creatives with
	// following hosting_source: * `HOSTING_SOURCE_THIRD_PARTY` combined with
	// following creative_type: * `CREATIVE_TYPE_VIDEO`
	Html5Video bool `json:"html5Video,omitempty"`
	// IasCampaignMonitoring: Optional. Indicates whether Integral Ad Science (IAS)
	// campaign monitoring is enabled. To enable this for the creative, make sure
	// the Advertiser.creative_config.ias_client_id has been set to your IAS client
	// ID.
	IasCampaignMonitoring bool `json:"iasCampaignMonitoring,omitempty"`
	// IntegrationCode: Optional. ID information used to link this creative to an
	// external system. Must be UTF-8 encoded with a length of no more than 10,000
	// characters.
	IntegrationCode string `json:"integrationCode,omitempty"`
	// JsTrackerUrl: Optional. JavaScript measurement URL from supported
	// third-party verification providers (ComScore, DoubleVerify, IAS, Moat). HTML
	// script tags are not supported. This field is only writeable in the following
	// creative_type: * `CREATIVE_TYPE_NATIVE` * `CREATIVE_TYPE_NATIVE_SITE_SQUARE`
	// * `CREATIVE_TYPE_NATIVE_VIDEO`
	JsTrackerUrl string `json:"jsTrackerUrl,omitempty"`
	// LineItemIds: Output only. The IDs of the line items this creative is
	// associated with. To associate a creative to a line item, use
	// LineItem.creative_ids instead.
	LineItemIds googleapi.Int64s `json:"lineItemIds,omitempty"`
	// MediaDuration: Output only. Media duration of the creative. Applicable when
	// creative_type is one of: * `CREATIVE_TYPE_VIDEO` * `CREATIVE_TYPE_AUDIO` *
	// `CREATIVE_TYPE_NATIVE_VIDEO` * `CREATIVE_TYPE_PUBLISHER_HOSTED`
	MediaDuration string `json:"mediaDuration,omitempty"`
	// Mp3Audio: Output only. Indicates the third-party audio creative supports
	// MP3. Output only and only valid for third-party audio creatives. Third-party
	// audio creatives are creatives with following hosting_source: *
	// `HOSTING_SOURCE_THIRD_PARTY` combined with following creative_type: *
	// `CREATIVE_TYPE_AUDIO`
	Mp3Audio bool `json:"mp3Audio,omitempty"`
	// Name: Output only. The resource name of the creative.
	Name string `json:"name,omitempty"`
	// Notes: Optional. User notes for this creative. Must be UTF-8 encoded with a
	// length of no more than 20,000 characters.
	Notes string `json:"notes,omitempty"`
	// ObaIcon: Optional. Specifies the OBA icon for a video creative. This field
	// is only supported in the following creative_type: * `CREATIVE_TYPE_VIDEO`
	ObaIcon *ObaIcon `json:"obaIcon,omitempty"`
	// OggAudio: Output only. Indicates the third-party audio creative supports
	// OGG. Output only and only valid for third-party audio creatives. Third-party
	// audio creatives are creatives with following hosting_source: *
	// `HOSTING_SOURCE_THIRD_PARTY` combined with following creative_type: *
	// `CREATIVE_TYPE_AUDIO`
	OggAudio bool `json:"oggAudio,omitempty"`
	// ProgressOffset: Optional. Amount of time to play the video before counting a
	// view. This field is required when skippable is true. This field is only
	// supported for the following creative_type: * `CREATIVE_TYPE_VIDEO`
	ProgressOffset *AudioVideoOffset `json:"progressOffset,omitempty"`
	// RequireHtml5: Optional. Indicates that the creative relies on HTML5 to
	// render properly. Optional and only valid for third-party tag creatives.
	// Third-party tag creatives are creatives with following hosting_source: *
	// `HOSTING_SOURCE_THIRD_PARTY` combined with following creative_type: *
	// `CREATIVE_TYPE_STANDARD` * `CREATIVE_TYPE_EXPANDABLE`
	RequireHtml5 bool `json:"requireHtml5,omitempty"`
	// RequireMraid: Optional. Indicates that the creative requires MRAID (Mobile
	// Rich Media Ad Interface Definitions system). Set this if the creative relies
	// on mobile gestures for interactivity, such as swiping or tapping. Optional
	// and only valid for third-party tag creatives. Third-party tag creatives are
	// creatives with following hosting_source: * `HOSTING_SOURCE_THIRD_PARTY`
	// combined with following creative_type: * `CREATIVE_TYPE_STANDARD` *
	// `CREATIVE_TYPE_EXPANDABLE`
	RequireMraid bool `json:"requireMraid,omitempty"`
	// RequirePingForAttribution: Optional. Indicates that the creative will wait
	// for a return ping for attribution. Only valid when using a Campaign Manager
	// 360 tracking ad with a third-party ad server parameter and the
	// ${DC_DBM_TOKEN} macro. Optional and only valid for third-party tag creatives
	// or third-party VAST tag creatives. Third-party tag creatives are creatives
	// with following hosting_source: * `HOSTING_SOURCE_THIRD_PARTY` combined with
	// following creative_type: * `CREATIVE_TYPE_STANDARD` *
	// `CREATIVE_TYPE_EXPANDABLE` Third-party VAST tag creatives are creatives with
	// following hosting_source: * `HOSTING_SOURCE_THIRD_PARTY` combined with
	// following creative_type: * `CREATIVE_TYPE_AUDIO` * `CREATIVE_TYPE_VIDEO`
	RequirePingForAttribution bool `json:"requirePingForAttribution,omitempty"`
	// ReviewStatus: Output only. The current status of the creative review
	// process.
	ReviewStatus *ReviewStatusInfo `json:"reviewStatus,omitempty"`
	// SkipOffset: Optional. Amount of time to play the video before the skip
	// button appears. This field is required when skippable is true. This field is
	// only supported for the following creative_type: * `CREATIVE_TYPE_VIDEO`
	SkipOffset *AudioVideoOffset `json:"skipOffset,omitempty"`
	// Skippable: Optional. Whether the user can choose to skip a video creative.
	// This field is only supported for the following creative_type: *
	// `CREATIVE_TYPE_VIDEO`
	Skippable bool `json:"skippable,omitempty"`
	// ThirdPartyTag: Optional. The original third-party tag used for the creative.
	// Required and only valid for third-party tag creatives. Third-party tag
	// creatives are creatives with following hosting_source: *
	// `HOSTING_SOURCE_THIRD_PARTY` combined with following creative_type: *
	// `CREATIVE_TYPE_STANDARD` * `CREATIVE_TYPE_EXPANDABLE`
	ThirdPartyTag string `json:"thirdPartyTag,omitempty"`
	// ThirdPartyUrls: Optional. Tracking URLs from third parties to track
	// interactions with a video creative. This field is only supported for the
	// following creative_type: * `CREATIVE_TYPE_AUDIO` * `CREATIVE_TYPE_VIDEO` *
	// `CREATIVE_TYPE_NATIVE_VIDEO`
	ThirdPartyUrls []*ThirdPartyUrl `json:"thirdPartyUrls,omitempty"`
	// TimerEvents: Optional. Timer custom events for a rich media creative. Timers
	// track the time during which a user views and interacts with a specified part
	// of a rich media creative. A creative can have multiple timer events, each
	// timed independently. Leave it empty or unset for creatives containing image
	// assets only.
	TimerEvents []*TimerEvent `json:"timerEvents,omitempty"`
	// TrackerUrls: Optional. Tracking URLs for analytics providers or third-party
	// ad technology vendors. The URLs must start with `https:` (except on
	// inventory that doesn't require SSL compliance). If using macros in your URL,
	// use only macros supported by Display & Video 360. Standard URLs only, no IMG
	// or SCRIPT tags. This field is only writeable in the following creative_type:
	// * `CREATIVE_TYPE_NATIVE` * `CREATIVE_TYPE_NATIVE_SITE_SQUARE` *
	// `CREATIVE_TYPE_NATIVE_VIDEO`
	TrackerUrls []string `json:"trackerUrls,omitempty"`
	// Transcodes: Output only. Audio/Video transcodes. Display & Video 360
	// transcodes the main asset into a number of alternative versions that use
	// different file formats or have different properties (resolution, audio bit
	// rate, and video bit rate), each designed for specific video players or
	// bandwidths. These transcodes give a publisher's system more options to
	// choose from for each impression on your video and ensures that the
	// appropriate file serves based on the viewer’s connection and screen size.
	// This field is only supported in the following creative_type: *
	// `CREATIVE_TYPE_VIDEO` * `CREATIVE_TYPE_NATIVE_VIDEO` * `CREATIVE_TYPE_AUDIO`
	Transcodes []*Transcode `json:"transcodes,omitempty"`
	// UniversalAdId: Optional. An optional creative identifier provided by a
	// registry that is unique across all platforms. Universal Ad ID is part of the
	// VAST 4.0 standard. It can be modified after the creative is created. This
	// field is only supported for the following creative_type: *
	// `CREATIVE_TYPE_VIDEO`
	UniversalAdId *UniversalAdId `json:"universalAdId,omitempty"`
	// UpdateTime: Output only. The timestamp when the creative was last updated,
	// either by the user or system (e.g. creative review). Assigned by the system.
	UpdateTime string `json:"updateTime,omitempty"`
	// VastTagUrl: Optional. The URL of the VAST tag for a third-party VAST tag
	// creative. Required and only valid for third-party VAST tag creatives.
	// Third-party VAST tag creatives are creatives with following hosting_source:
	// * `HOSTING_SOURCE_THIRD_PARTY` combined with following creative_type: *
	// `CREATIVE_TYPE_AUDIO` * `CREATIVE_TYPE_VIDEO`
	VastTagUrl string `json:"vastTagUrl,omitempty"`
	// Vpaid: Output only. Indicates the third-party VAST tag creative requires
	// VPAID (Digital Video Player-Ad Interface). Output only and only valid for
	// third-party VAST tag creatives. Third-party VAST tag creatives are creatives
	// with following hosting_source: * `HOSTING_SOURCE_THIRD_PARTY` combined with
	// following creative_type: * `CREATIVE_TYPE_VIDEO`
	Vpaid bool `json:"vpaid,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdditionalDimensions") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdditionalDimensions") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Creative) MarshalJSON() ([]byte, error) {
	type NoMethod Creative
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CreativeConfig: Creative requirements configuration for the inventory
// source.
type CreativeConfig struct {
	// CreativeType: The type of creative that can be assigned to the inventory
	// source. Only the following types are supported: * `CREATIVE_TYPE_STANDARD` *
	// `CREATIVE_TYPE_VIDEO`
	//
	// Possible values:
	//   "CREATIVE_TYPE_UNSPECIFIED" - Type value is not specified or is unknown in
	// this version.
	//   "CREATIVE_TYPE_STANDARD" - Standard display creative. Create and update
	// methods are supported for this creative type if the hosting_source is one of
	// the following: * `HOSTING_SOURCE_HOSTED` * `HOSTING_SOURCE_THIRD_PARTY`
	//   "CREATIVE_TYPE_EXPANDABLE" - Expandable creative. Create and update
	// methods are supported for this creative type if the hosting_source is
	// `HOSTING_SOURCE_THIRD_PARTY`
	//   "CREATIVE_TYPE_VIDEO" - Video creative. Create and update methods are
	// supported for this creative type if the hosting_source is one of the
	// following: * `HOSTING_SOURCE_HOSTED` * `HOSTING_SOURCE_THIRD_PARTY`
	//   "CREATIVE_TYPE_NATIVE" - Native creative rendered by publishers with
	// assets from advertiser. Create and update methods are supported for this
	// creative type if the hosting_source is `HOSTING_SOURCE_HOSTED`
	//   "CREATIVE_TYPE_TEMPLATED_APP_INSTALL" - Templated app install mobile
	// creative (banner). Create and update methods are **not** supported for this
	// creative type.
	//   "CREATIVE_TYPE_NATIVE_SITE_SQUARE" - Square native creative. Create and
	// update methods are supported for this creative type if the hosting_source is
	// `HOSTING_SOURCE_HOSTED`
	//   "CREATIVE_TYPE_TEMPLATED_APP_INSTALL_INTERSTITIAL" - Interstitial creative
	// including both display and video. Create and update methods are **not**
	// supported for this creative type.
	//   "CREATIVE_TYPE_LIGHTBOX" - Responsive and expandable Lightbox creative.
	// Create and update methods are **not** supported for this creative type.
	//   "CREATIVE_TYPE_NATIVE_APP_INSTALL" - Native app install creative. Create
	// and update methods are **not** supported for this creative type.
	//   "CREATIVE_TYPE_NATIVE_APP_INSTALL_SQUARE" - Square native app install
	// creative. Create and update methods are **not** supported for this creative
	// type.
	//   "CREATIVE_TYPE_AUDIO" - Audio creative. Create and update methods are
	// supported for this creative type if the hosting_source is
	// `HOSTING_SOURCE_HOSTED`
	//   "CREATIVE_TYPE_PUBLISHER_HOSTED" - Publisher hosted creative. Create and
	// update methods are **not** supported for this creative type.
	//   "CREATIVE_TYPE_NATIVE_VIDEO" - Native video creative. Create and update
	// methods are supported for this creative type if the hosting_source is
	// `HOSTING_SOURCE_HOSTED`
	//   "CREATIVE_TYPE_TEMPLATED_APP_INSTALL_VIDEO" - Templated app install mobile
	// video creative. Create and update methods are **not** supported for this
	// creative type.
	//   "CREATIVE_TYPE_ASSET_BASED_CREATIVE" - Asset-based creative. Create and
	// update methods are supported for this creative type if the hosting_source is
	// `HOSTING_SOURCE_HOSTED`.
	CreativeType string `json:"creativeType,omitempty"`
	// DisplayCreativeConfig: The configuration for display creatives. Applicable
	// when creative_type is `CREATIVE_TYPE_STANDARD`.
	DisplayCreativeConfig *InventorySourceDisplayCreativeConfig `json:"displayCreativeConfig,omitempty"`
	// VideoCreativeConfig: The configuration for video creatives. Applicable when
	// creative_type is `CREATIVE_TYPE_VIDEO`.
	VideoCreativeConfig *InventorySourceVideoCreativeConfig `json:"videoCreativeConfig,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreativeType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreativeType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CreativeConfig) MarshalJSON() ([]byte, error) {
	type NoMethod CreativeConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomBiddingAlgorithm: A single custom bidding algorithm.
type CustomBiddingAlgorithm struct {
	// AdvertiserId: Immutable. The unique ID of the advertiser that owns the
	// custom bidding algorithm.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// CustomBiddingAlgorithmId: Output only. The unique ID of the custom bidding
	// algorithm. Assigned by the system.
	CustomBiddingAlgorithmId int64 `json:"customBiddingAlgorithmId,omitempty,string"`
	// CustomBiddingAlgorithmType: Required. Immutable. The type of custom bidding
	// algorithm.
	//
	// Possible values:
	//   "CUSTOM_BIDDING_ALGORITHM_TYPE_UNSPECIFIED" - Algorithm type is not
	// specified or is unknown in this version.
	//   "SCRIPT_BASED" - Algorithm generated through customer-uploaded custom
	// bidding script files.
	//   "RULE_BASED" - Algorithm based in defined rules. These rules are defined
	// in the API using the AlgorithmRules object. This algorithm type is only
	// available to allowlisted customers. Other customers attempting to use this
	// type will receive an error.
	CustomBiddingAlgorithmType string `json:"customBiddingAlgorithmType,omitempty"`
	// DisplayName: Required. The display name of the custom bidding algorithm.
	// Must be UTF-8 encoded with a maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// EntityStatus: Controls whether or not the custom bidding algorithm can be
	// used as a bidding strategy. Accepted values are: * `ENTITY_STATUS_ACTIVE` *
	// `ENTITY_STATUS_ARCHIVED`
	//
	// Possible values:
	//   "ENTITY_STATUS_UNSPECIFIED" - Default value when status is not specified
	// or is unknown in this version.
	//   "ENTITY_STATUS_ACTIVE" - The entity is enabled to bid and spend budget.
	//   "ENTITY_STATUS_ARCHIVED" - The entity is archived. Bidding and budget
	// spending are disabled. An entity can be deleted after archived. Deleted
	// entities cannot be retrieved.
	//   "ENTITY_STATUS_DRAFT" - The entity is under draft. Bidding and budget
	// spending are disabled.
	//   "ENTITY_STATUS_PAUSED" - Bidding and budget spending are paused for the
	// entity.
	//   "ENTITY_STATUS_SCHEDULED_FOR_DELETION" - The entity is scheduled for
	// deletion.
	EntityStatus string `json:"entityStatus,omitempty"`
	// ModelDetails: Output only. The details of custom bidding models for each
	// advertiser who has access. This field may only include the details of the
	// queried advertiser if the algorithm `owner`
	// (/display-video/api/reference/rest/v1/customBiddingAlgorithms#CustomBiddingAl
	// gorithm.FIELDS.oneof_owner) is a partner and is being retrieved using an
	// advertiser `accessor`
	// (/display-video/api/reference/rest/v1/customBiddingAlgorithms/list#body.QUERY
	// _PARAMETERS.oneof_accessor).
	ModelDetails []*CustomBiddingModelDetails `json:"modelDetails,omitempty"`
	// Name: Output only. The resource name of the custom bidding algorithm.
	Name string `json:"name,omitempty"`
	// PartnerId: Immutable. The unique ID of the partner that owns the custom
	// bidding algorithm.
	PartnerId int64 `json:"partnerId,omitempty,string"`
	// SharedAdvertiserIds: The IDs of the advertisers who have access to this
	// algorithm. If advertiser_id is set, this field will only consist of that
	// value. This field will not be set if the algorithm `owner`
	// (/display-video/api/reference/rest/v1/customBiddingAlgorithms#CustomBiddingAl
	// gorithm.FIELDS.oneof_owner) is a partner and is being retrieved using an
	// advertiser `accessor`
	// (/display-video/api/reference/rest/v1/customBiddingAlgorithms/list#body.QUERY
	// _PARAMETERS.oneof_accessor).
	SharedAdvertiserIds googleapi.Int64s `json:"sharedAdvertiserIds,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomBiddingAlgorithm) MarshalJSON() ([]byte, error) {
	type NoMethod CustomBiddingAlgorithm
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomBiddingAlgorithmRules: A single custom bidding algorithm rules.
type CustomBiddingAlgorithmRules struct {
	// Active: Output only. Whether the rules resource is currently being used for
	// scoring by the parent algorithm.
	Active bool `json:"active,omitempty"`
	// CreateTime: Output only. The time when the rules resource was created.
	CreateTime string `json:"createTime,omitempty"`
	// CustomBiddingAlgorithmId: Output only. The unique ID of the custom bidding
	// algorithm that the rules resource belongs to.
	CustomBiddingAlgorithmId int64 `json:"customBiddingAlgorithmId,omitempty,string"`
	// CustomBiddingAlgorithmRulesId: Output only. The unique ID of the rules
	// resource.
	CustomBiddingAlgorithmRulesId int64 `json:"customBiddingAlgorithmRulesId,omitempty,string"`
	// Error: Output only. Error code of the rejected rules resource. This field
	// will only be populated when the state is `REJECTED`.
	Error *CustomBiddingAlgorithmRulesError `json:"error,omitempty"`
	// Name: Output only. The resource name of the rules resource.
	Name string `json:"name,omitempty"`
	// Rules: Required. Immutable. The reference to the uploaded AlgorithmRules
	// file.
	Rules *CustomBiddingAlgorithmRulesRef `json:"rules,omitempty"`
	// State: Output only. The state of the rules resource.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - The rules state are unspecified or unknown in this
	// version.
	//   "ACCEPTED" - The rules have been accepted for scoring impressions.
	//   "REJECTED" - The rules have been rejected by backend pipelines. They may
	// have errors.
	State string `json:"state,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Active") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Active") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomBiddingAlgorithmRules) MarshalJSON() ([]byte, error) {
	type NoMethod CustomBiddingAlgorithmRules
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomBiddingAlgorithmRulesError: An error message for a
// CustomBiddingAlgorithmRules resource.
type CustomBiddingAlgorithmRulesError struct {
	// ErrorCode: The type of error.
	//
	// Possible values:
	//   "ERROR_CODE_UNSPECIFIED" - The error is not specified or is unknown in
	// this version.
	//   "SYNTAX_ERROR" - The rules have a syntax error.
	//   "CONSTRAINT_VIOLATION_ERROR" - The rules have a constraint violation
	// error.
	//   "INTERNAL_ERROR" - Internal errors were thrown while processing the rules.
	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 or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ErrorCode") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomBiddingAlgorithmRulesError) MarshalJSON() ([]byte, error) {
	type NoMethod CustomBiddingAlgorithmRulesError
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomBiddingAlgorithmRulesRef: The reference to the uploaded AlgorithmRules
// file. Retrieve the location to upload new AlgorithmRules file to using
// customBiddingAlgorithms.uploadRules.
type CustomBiddingAlgorithmRulesRef struct {
	// ResourceName: A resource name to be used in media.download to download the
	// rules files. Or media.upload to upload the rules files. Resource names have
	// the format
	// `customBiddingAlgorithms/{custom_bidding_algorithm_id}/rulesRef/{ref_id}`.
	ResourceName string `json:"resourceName,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "ResourceName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ResourceName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomBiddingAlgorithmRulesRef) MarshalJSON() ([]byte, error) {
	type NoMethod CustomBiddingAlgorithmRulesRef
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomBiddingModelDetails: The details of a custom bidding algorithm model
// for a single shared advertiser.
type CustomBiddingModelDetails struct {
	// AdvertiserId: The unique ID of the relevant advertiser.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// ReadinessState: The readiness state of custom bidding model.
	//
	// Possible values:
	//   "READINESS_STATE_UNSPECIFIED" - State is not specified or is unknown in
	// this version.
	//   "READINESS_STATE_ACTIVE" - The model is trained and ready for serving.
	//   "READINESS_STATE_INSUFFICIENT_DATA" - There is not enough data to train
	// the serving model.
	//   "READINESS_STATE_TRAINING" - The model is training and not ready for
	// serving.
	//   "READINESS_STATE_NO_VALID_SCRIPT" - A valid custom bidding script has not
	// been provided with which to train the model. This state will only be applied
	// to algorithms whose `custom_bidding_algorithm_type` is `SCRIPT_BASED`.
	//   "READINESS_STATE_EVALUATION_FAILURE" - A valid script was provided but
	// failed evaluation. This is applicable for scripts that could not be
	// evaluated in the alloted time.
	ReadinessState string `json:"readinessState,omitempty"`
	// SuspensionState: Output only. The suspension state of custom bidding model.
	//
	// Possible values:
	//   "SUSPENSION_STATE_UNSPECIFIED" - State is not specified or is unknown in
	// this version.
	//   "SUSPENSION_STATE_ENABLED" - Model is enabled, either recently used,
	// currently used or scheduled to be used. The algorithm is actively scoring
	// impressions for this advertiser.
	//   "SUSPENSION_STATE_DORMANT" - Model has not been used recently. Although
	// the model still acts as `ENABLED`, it will eventually be suspended if not
	// used.
	//   "SUSPENSION_STATE_SUSPENDED" - Model is suspended from scoring impressions
	// and cannot serve. If the algorithm is assigned to a line item under this
	// advertiser or otherwise updated, it will switch back to the `ENABLED` state
	// and require time to prepare the serving model again.
	SuspensionState string `json:"suspensionState,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomBiddingModelDetails) MarshalJSON() ([]byte, error) {
	type NoMethod CustomBiddingModelDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomBiddingScript: A single custom bidding script.
type CustomBiddingScript struct {
	// Active: Output only. Whether the script is currently being used for scoring
	// by the parent algorithm.
	Active bool `json:"active,omitempty"`
	// CreateTime: Output only. The time when the script was created.
	CreateTime string `json:"createTime,omitempty"`
	// CustomBiddingAlgorithmId: Output only. The unique ID of the custom bidding
	// algorithm the script belongs to.
	CustomBiddingAlgorithmId int64 `json:"customBiddingAlgorithmId,omitempty,string"`
	// CustomBiddingScriptId: Output only. The unique ID of the custom bidding
	// script.
	CustomBiddingScriptId int64 `json:"customBiddingScriptId,omitempty,string"`
	// Errors: Output only. Error details of a rejected custom bidding script. This
	// field will only be populated when state is REJECTED.
	Errors []*ScriptError `json:"errors,omitempty"`
	// Name: Output only. The resource name of the custom bidding script.
	Name string `json:"name,omitempty"`
	// Script: The reference to the uploaded script file.
	Script *CustomBiddingScriptRef `json:"script,omitempty"`
	// State: Output only. The state of the custom bidding script.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - The script state is not specified or is unknown in
	// this version.
	//   "ACCEPTED" - The script has been accepted for scoring impressions.
	//   "REJECTED" - The script has been rejected by backend pipelines. It may
	// have errors.
	//   "PENDING" - The script is being processed for backend pipelines.
	State string `json:"state,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Active") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Active") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomBiddingScript) MarshalJSON() ([]byte, error) {
	type NoMethod CustomBiddingScript
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomBiddingScriptRef: The reference to the uploaded custom bidding script
// file.
type CustomBiddingScriptRef struct {
	// ResourceName: A resource name to be used in media.download to Download the
	// script files. Or media.upload to Upload the script files. Resource names
	// have the format
	// `customBiddingAlgorithms/{custom_bidding_algorithm_id}/scriptRef/{ref_id}`.
	ResourceName string `json:"resourceName,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "ResourceName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ResourceName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomBiddingScriptRef) MarshalJSON() ([]byte, error) {
	type NoMethod CustomBiddingScriptRef
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomLabel: The key and value of a custom label.
type CustomLabel struct {
	// Key: The key of the label.
	//
	// Possible values:
	//   "CUSTOM_LABEL_KEY_UNSPECIFIED" - Not specified or unknown.
	//   "CUSTOM_LABEL_KEY_0" - Key index 0.
	//   "CUSTOM_LABEL_KEY_1" - Key index 1.
	//   "CUSTOM_LABEL_KEY_2" - Key index 2.
	//   "CUSTOM_LABEL_KEY_3" - Key index 3.
	//   "CUSTOM_LABEL_KEY_4" - Key index 4.
	Key string `json:"key,omitempty"`
	// Value: The value of the label.
	Value string `json:"value,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Key") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Key") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomLabel) MarshalJSON() ([]byte, error) {
	type NoMethod CustomLabel
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomList: Describes a custom list entity, such as a custom affinity or
// custom intent audience list.
type CustomList struct {
	// CustomListId: Output only. The unique ID of the custom list. Assigned by the
	// system.
	CustomListId int64 `json:"customListId,omitempty,string"`
	// DisplayName: Output only. The display name of the custom list. .
	DisplayName string `json:"displayName,omitempty"`
	// Name: Output only. The resource name of the custom list.
	Name string `json:"name,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "CustomListId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CustomListId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomList) MarshalJSON() ([]byte, error) {
	type NoMethod CustomList
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomListGroup: Details of custom list group. All custom list targeting
// settings are logically ‘OR’ of each other.
type CustomListGroup struct {
	// Settings: Required. All custom list targeting settings in custom list group.
	// Repeated settings with the same id will be ignored.
	Settings []*CustomListTargetingSetting `json:"settings,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Settings") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Settings") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomListGroup) MarshalJSON() ([]byte, error) {
	type NoMethod CustomListGroup
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomListTargetingSetting: Details of custom list targeting setting.
type CustomListTargetingSetting struct {
	// CustomListId: Required. Custom id of custom list targeting setting. This id
	// is custom_list_id.
	CustomListId int64 `json:"customListId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "CustomListId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CustomListId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomListTargetingSetting) MarshalJSON() ([]byte, error) {
	type NoMethod CustomListTargetingSetting
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Date: Represents a whole or partial calendar date, such as a birthday. The
// time of day and time zone are either specified elsewhere or are
// insignificant. The date is relative to the Gregorian Calendar. This can
// represent one of the following: * A full date, with non-zero year, month,
// and day values. * A month and day, with a zero year (for example, an
// anniversary). * A year on its own, with a zero month and a zero day. * A
// year and month, with a zero day (for example, a credit card expiration
// date). Related types: * google.type.TimeOfDay * google.type.DateTime *
// google.protobuf.Timestamp
type Date struct {
	// Day: Day of a month. Must be from 1 to 31 and valid for the year and month,
	// or 0 to specify a year by itself or a year and month where the day isn't
	// significant.
	Day int64 `json:"day,omitempty"`
	// Month: Month of a year. Must be from 1 to 12, or 0 to specify a year without
	// a month and day.
	Month int64 `json:"month,omitempty"`
	// Year: Year of the date. Must be from 1 to 9999, or 0 to specify a date
	// without a year.
	Year int64 `json:"year,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Day") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Day") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Date) MarshalJSON() ([]byte, error) {
	type NoMethod Date
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DateRange: A date range.
type DateRange struct {
	// EndDate: The upper bound of the date range, inclusive. Must specify a
	// positive value for `year`, `month`, and `day`.
	EndDate *Date `json:"endDate,omitempty"`
	// StartDate: The lower bound of the date range, inclusive. Must specify a
	// positive value for `year`, `month`, and `day`.
	StartDate *Date `json:"startDate,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EndDate") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "EndDate") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DateRange) MarshalJSON() ([]byte, error) {
	type NoMethod DateRange
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DayAndTime: Representation of time defined by day of the week and hour of
// the day.
type DayAndTime struct {
	// DayOfWeek: Required. Day of the week.
	//
	// Possible values:
	//   "DAY_OF_WEEK_UNSPECIFIED" - The day of the week is unspecified.
	//   "MONDAY" - Monday
	//   "TUESDAY" - Tuesday
	//   "WEDNESDAY" - Wednesday
	//   "THURSDAY" - Thursday
	//   "FRIDAY" - Friday
	//   "SATURDAY" - Saturday
	//   "SUNDAY" - Sunday
	DayOfWeek string `json:"dayOfWeek,omitempty"`
	// HourOfDay: Required. Hour of the day.
	HourOfDay int64 `json:"hourOfDay,omitempty"`
	// TimeZoneResolution: Required. The mechanism used to determine the relevant
	// timezone.
	//
	// Possible values:
	//   "TIME_ZONE_RESOLUTION_UNSPECIFIED" - Time zone resolution is either
	// unspecific or unknown.
	//   "TIME_ZONE_RESOLUTION_END_USER" - Times are resolved in the time zone of
	// the user that saw the ad.
	//   "TIME_ZONE_RESOLUTION_ADVERTISER" - Times are resolved in the time zone of
	// the advertiser that served the ad.
	TimeZoneResolution string `json:"timeZoneResolution,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DayOfWeek") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DayOfWeek") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DayAndTime) MarshalJSON() ([]byte, error) {
	type NoMethod DayAndTime
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DayAndTimeAssignedTargetingOptionDetails: Representation of a segment of
// time defined on a specific day of the week and with a start and end time.
// The time represented by `start_hour` must be before the time represented by
// `end_hour`.
type DayAndTimeAssignedTargetingOptionDetails struct {
	// DayOfWeek: Required. The day of the week for this day and time targeting
	// setting.
	//
	// Possible values:
	//   "DAY_OF_WEEK_UNSPECIFIED" - The day of the week is unspecified.
	//   "MONDAY" - Monday
	//   "TUESDAY" - Tuesday
	//   "WEDNESDAY" - Wednesday
	//   "THURSDAY" - Thursday
	//   "FRIDAY" - Friday
	//   "SATURDAY" - Saturday
	//   "SUNDAY" - Sunday
	DayOfWeek string `json:"dayOfWeek,omitempty"`
	// EndHour: Required. The end hour for day and time targeting. Must be between
	// 1 (1 hour after start of day) and 24 (end of day).
	EndHour int64 `json:"endHour,omitempty"`
	// StartHour: Required. The start hour for day and time targeting. Must be
	// between 0 (start of day) and 23 (1 hour before end of day).
	StartHour int64 `json:"startHour,omitempty"`
	// TimeZoneResolution: Required. The mechanism used to determine which timezone
	// to use for this day and time targeting setting.
	//
	// Possible values:
	//   "TIME_ZONE_RESOLUTION_UNSPECIFIED" - Time zone resolution is either
	// unspecific or unknown.
	//   "TIME_ZONE_RESOLUTION_END_USER" - Times are resolved in the time zone of
	// the user that saw the ad.
	//   "TIME_ZONE_RESOLUTION_ADVERTISER" - Times are resolved in the time zone of
	// the advertiser that served the ad.
	TimeZoneResolution string `json:"timeZoneResolution,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DayOfWeek") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DayOfWeek") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DayAndTimeAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod DayAndTimeAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DeleteAssignedTargetingOptionsRequest: A request listing which assigned
// targeting options of a given targeting type should be deleted.
type DeleteAssignedTargetingOptionsRequest struct {
	// AssignedTargetingOptionIds: Required. The assigned targeting option IDs to
	// delete.
	AssignedTargetingOptionIds []string `json:"assignedTargetingOptionIds,omitempty"`
	// TargetingType: Required. Identifies the type of this assigned targeting
	// option.
	//
	// Possible values:
	//   "TARGETING_TYPE_UNSPECIFIED" - Default value when type is not specified or
	// is unknown in this version.
	//   "TARGETING_TYPE_CHANNEL" - Target a channel (a custom group of related
	// websites or apps).
	//   "TARGETING_TYPE_APP_CATEGORY" - Target an app category (for example,
	// education or puzzle games).
	//   "TARGETING_TYPE_APP" - Target a specific app (for example, Angry Birds).
	//   "TARGETING_TYPE_URL" - Target a specific url (for example, quora.com).
	//   "TARGETING_TYPE_DAY_AND_TIME" - Target ads during a chosen time period on
	// a specific day.
	//   "TARGETING_TYPE_AGE_RANGE" - Target ads to a specific age range (for
	// example, 18-24).
	//   "TARGETING_TYPE_REGIONAL_LOCATION_LIST" - Target ads to the specified
	// regions on a regional location list.
	//   "TARGETING_TYPE_PROXIMITY_LOCATION_LIST" - Target ads to the specified
	// points of interest on a proximity location list.
	//   "TARGETING_TYPE_GENDER" - Target ads to a specific gender (for example,
	// female or male).
	//   "TARGETING_TYPE_VIDEO_PLAYER_SIZE" - Target a specific video player size
	// for video ads.
	//   "TARGETING_TYPE_USER_REWARDED_CONTENT" - Target user rewarded content for
	// video ads.
	//   "TARGETING_TYPE_PARENTAL_STATUS" - Target ads to a specific parental
	// status (for example, parent or not a parent).
	//   "TARGETING_TYPE_CONTENT_INSTREAM_POSITION" - Target video or audio ads in
	// a specific content instream position (for example, pre-roll, mid-roll, or
	// post-roll).
	//   "TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION" - Target ads in a specific
	// content outstream position.
	//   "TARGETING_TYPE_DEVICE_TYPE" - Target ads to a specific device type (for
	// example, tablet or connected TV).
	//   "TARGETING_TYPE_AUDIENCE_GROUP" - Target ads to an audience or groups of
	// audiences. Singleton field, at most one can exist on a single Lineitem at a
	// time.
	//   "TARGETING_TYPE_BROWSER" - Target ads to specific web browsers (for
	// example, Chrome).
	//   "TARGETING_TYPE_HOUSEHOLD_INCOME" - Target ads to a specific household
	// income range (for example, top 10%).
	//   "TARGETING_TYPE_ON_SCREEN_POSITION" - Target ads in a specific on screen
	// position.
	//   "TARGETING_TYPE_THIRD_PARTY_VERIFIER" - Filter web sites through third
	// party verification (for example, IAS or DoubleVerify).
	//   "TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION" - Filter web sites by
	// specific digital content label ratings (for example, DL-MA: suitable only
	// for mature audiences).
	//   "TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION" - Filter website content by
	// sensitive categories (for example, adult).
	//   "TARGETING_TYPE_ENVIRONMENT" - Target ads to a specific environment (for
	// example, web or app).
	//   "TARGETING_TYPE_CARRIER_AND_ISP" - Target ads to a specific network
	// carrier or internet service provider (ISP) (for example, Comcast or Orange).
	//   "TARGETING_TYPE_OPERATING_SYSTEM" - Target ads to a specific operating
	// system (for example, macOS).
	//   "TARGETING_TYPE_DEVICE_MAKE_MODEL" - Target ads to a specific device make
	// or model (for example, Roku or Samsung).
	//   "TARGETING_TYPE_KEYWORD" - Target ads to a specific keyword (for example,
	// dog or retriever).
	//   "TARGETING_TYPE_NEGATIVE_KEYWORD_LIST" - Target ads to a specific negative
	// keyword list.
	//   "TARGETING_TYPE_VIEWABILITY" - Target ads to a specific viewability (for
	// example, 80% viewable).
	//   "TARGETING_TYPE_CATEGORY" - Target ads to a specific content category (for
	// example, arts & entertainment).
	//   "TARGETING_TYPE_INVENTORY_SOURCE" - Purchase impressions from specific
	// deals and auction packages.
	//   "TARGETING_TYPE_LANGUAGE" - Target ads to a specific language (for
	// example, English or Japanese).
	//   "TARGETING_TYPE_AUTHORIZED_SELLER_STATUS" - Target ads to ads.txt
	// authorized sellers. If no targeting option of this type is assigned, the
	// resource uses the "Authorized Direct Sellers and Resellers" option by
	// default.
	//   "TARGETING_TYPE_GEO_REGION" - Target ads to a specific regional location
	// (for example, a city or state).
	//   "TARGETING_TYPE_INVENTORY_SOURCE_GROUP" - Purchase impressions from a
	// group of deals and auction packages.
	//   "TARGETING_TYPE_EXCHANGE" - Purchase impressions from specific exchanges.
	//   "TARGETING_TYPE_SUB_EXCHANGE" - Purchase impressions from specific
	// sub-exchanges.
	//   "TARGETING_TYPE_POI" - Target ads around a specific point of interest,
	// such as a notable building, a street address, or latitude/longitude
	// coordinates.
	//   "TARGETING_TYPE_BUSINESS_CHAIN" - Target ads around locations of a
	// business chain within a specific geo region.
	//   "TARGETING_TYPE_CONTENT_DURATION" - Target ads to a specific video content
	// duration.
	//   "TARGETING_TYPE_CONTENT_STREAM_TYPE" - Target ads to a specific video
	// content stream type.
	//   "TARGETING_TYPE_NATIVE_CONTENT_POSITION" - Target ads to a specific native
	// content position.
	//   "TARGETING_TYPE_OMID" - Target ads in an Open Measurement enabled
	// inventory.
	//   "TARGETING_TYPE_AUDIO_CONTENT_TYPE" - Target ads to a specific audio
	// content type.
	//   "TARGETING_TYPE_CONTENT_GENRE" - Target ads to a specific content genre.
	//   "TARGETING_TYPE_YOUTUBE_VIDEO" - Target ads to a specific YouTube video.
	// Targeting of this type cannot be created or updated using the API. Although
	// this targeting is inherited by child resources, **inherited targeting of
	// this type will not be retrieveable**.
	//   "TARGETING_TYPE_YOUTUBE_CHANNEL" - Target ads to a specific YouTube
	// channel. Targeting of this type cannot be created or updated using the API.
	// Although this targeting is inherited by child resources, **inherited
	// targeting of this type will not be retrieveable**.
	//   "TARGETING_TYPE_SESSION_POSITION" - Target ads to a serve it in a certain
	// position of a session. Only supported for Ad Group resources under YouTube
	// Programmatic Reservation line items. Targeting of this type cannot be
	// created or updated using the API.
	//   "TARGETING_TYPE_CONTENT_THEME_EXCLUSION" - Filter website content by
	// content themes (for example, religion). Only supported for Advertiser
	// resources. Targeting of this type cannot be created or updated using the
	// API. This targeting is only inherited by child YouTube and Demand Gen line
	// item resources.
	TargetingType string `json:"targetingType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AssignedTargetingOptionIds")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedTargetingOptionIds") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DeleteAssignedTargetingOptionsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod DeleteAssignedTargetingOptionsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DeviceMakeModelAssignedTargetingOptionDetails: Assigned device make and
// model targeting option details. This will be populated in the
// device_make_model_details field when targeting_type is
// `TARGETING_TYPE_DEVICE_MAKE_MODEL`.
type DeviceMakeModelAssignedTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the device make and model.
	DisplayName string `json:"displayName,omitempty"`
	// Negative: Indicates if this option is being negatively targeted.
	Negative bool `json:"negative,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id field when
	// targeting_type is `TARGETING_TYPE_DEVICE_MAKE_MODEL`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DeviceMakeModelAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod DeviceMakeModelAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DeviceMakeModelTargetingOptionDetails: Represents a targetable device make
// and model. This will be populated in the device_make_model_details field of
// a TargetingOption when targeting_type is `TARGETING_TYPE_DEVICE_MAKE_MODEL`.
type DeviceMakeModelTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the device make and model.
	DisplayName string `json:"displayName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DeviceMakeModelTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod DeviceMakeModelTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DeviceTypeAssignedTargetingOptionDetails: Targeting details for device type.
// This will be populated in the details field of an AssignedTargetingOption
// when targeting_type is `TARGETING_TYPE_DEVICE_TYPE`.
type DeviceTypeAssignedTargetingOptionDetails struct {
	// DeviceType: Required. The display name of the device type.
	//
	// Possible values:
	//   "DEVICE_TYPE_UNSPECIFIED" - Default value when device type is not
	// specified in this version. This enum is a placeholder for default value and
	// does not represent a real device type option.
	//   "DEVICE_TYPE_COMPUTER" - Computer.
	//   "DEVICE_TYPE_CONNECTED_TV" - Connected TV.
	//   "DEVICE_TYPE_SMART_PHONE" - Smart phone.
	//   "DEVICE_TYPE_TABLET" - Tablet.
	//   "DEVICE_TYPE_CONNECTED_DEVICE" - Connected device.
	DeviceType string `json:"deviceType,omitempty"`
	// YoutubeAndPartnersBidMultiplier: Output only. Bid multiplier allows you to
	// show your ads more or less frequently based on the device type. It will
	// apply a multiplier on the original bid price. When this field is 0, it
	// indicates this field is not applicable instead of multiplying 0 on the
	// original bid price. For example, if the bid price without multiplier is
	// $10.0 and the multiplier is 1.5 for Tablet, the resulting bid price for
	// Tablet will be $15.0. Only applicable to YouTube and Partners line items.
	YoutubeAndPartnersBidMultiplier float64 `json:"youtubeAndPartnersBidMultiplier,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DeviceType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DeviceType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DeviceTypeAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod DeviceTypeAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *DeviceTypeAssignedTargetingOptionDetails) UnmarshalJSON(data []byte) error {
	type NoMethod DeviceTypeAssignedTargetingOptionDetails
	var s1 struct {
		YoutubeAndPartnersBidMultiplier gensupport.JSONFloat64 `json:"youtubeAndPartnersBidMultiplier"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.YoutubeAndPartnersBidMultiplier = float64(s1.YoutubeAndPartnersBidMultiplier)
	return nil
}

// DeviceTypeTargetingOptionDetails: Represents a targetable device type. This
// will be populated in the device_type_details field of a TargetingOption when
// targeting_type is `TARGETING_TYPE_DEVICE_TYPE`.
type DeviceTypeTargetingOptionDetails struct {
	// DeviceType: Output only. The device type that is used to be targeted.
	//
	// Possible values:
	//   "DEVICE_TYPE_UNSPECIFIED" - Default value when device type is not
	// specified in this version. This enum is a placeholder for default value and
	// does not represent a real device type option.
	//   "DEVICE_TYPE_COMPUTER" - Computer.
	//   "DEVICE_TYPE_CONNECTED_TV" - Connected TV.
	//   "DEVICE_TYPE_SMART_PHONE" - Smart phone.
	//   "DEVICE_TYPE_TABLET" - Tablet.
	//   "DEVICE_TYPE_CONNECTED_DEVICE" - Connected device.
	DeviceType string `json:"deviceType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DeviceType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DeviceType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DeviceTypeTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod DeviceTypeTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DigitalContentLabelAssignedTargetingOptionDetails: Targeting details for
// digital content label. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION`.
type DigitalContentLabelAssignedTargetingOptionDetails struct {
	// ExcludedContentRatingTier: Required. The display name of the digital content
	// label rating tier to be EXCLUDED.
	//
	// Possible values:
	//   "CONTENT_RATING_TIER_UNSPECIFIED" - Content label is not specified in this
	// version. This enum is a place holder for a default value and does not
	// represent a real content rating.
	//   "CONTENT_RATING_TIER_UNRATED" - Content that has not been labeled.
	//   "CONTENT_RATING_TIER_GENERAL" - Content suitable for general audiences.
	//   "CONTENT_RATING_TIER_PARENTAL_GUIDANCE" - Content suitable for most
	// audiences with parental guidance.
	//   "CONTENT_RATING_TIER_TEENS" - Content suitable for teen and older
	// audiences.
	//   "CONTENT_RATING_TIER_MATURE" - Content suitable only for mature audiences.
	//   "CONTENT_RATING_TIER_FAMILIES" - Content suitable for family audiences. It
	// is a subset of CONTENT_RATING_TIER_GENERAL. Only applicable to YouTube and
	// Partners line items.
	ExcludedContentRatingTier string `json:"excludedContentRatingTier,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ExcludedContentRatingTier")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ExcludedContentRatingTier") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DigitalContentLabelAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod DigitalContentLabelAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DigitalContentLabelTargetingOptionDetails: Represents a targetable digital
// content label rating tier. This will be populated in the
// digital_content_label_details field of the TargetingOption when
// targeting_type is `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION`.
type DigitalContentLabelTargetingOptionDetails struct {
	// ContentRatingTier: Output only. An enum for the content label brand safety
	// tiers.
	//
	// Possible values:
	//   "CONTENT_RATING_TIER_UNSPECIFIED" - Content label is not specified in this
	// version. This enum is a place holder for a default value and does not
	// represent a real content rating.
	//   "CONTENT_RATING_TIER_UNRATED" - Content that has not been labeled.
	//   "CONTENT_RATING_TIER_GENERAL" - Content suitable for general audiences.
	//   "CONTENT_RATING_TIER_PARENTAL_GUIDANCE" - Content suitable for most
	// audiences with parental guidance.
	//   "CONTENT_RATING_TIER_TEENS" - Content suitable for teen and older
	// audiences.
	//   "CONTENT_RATING_TIER_MATURE" - Content suitable only for mature audiences.
	//   "CONTENT_RATING_TIER_FAMILIES" - Content suitable for family audiences. It
	// is a subset of CONTENT_RATING_TIER_GENERAL. Only applicable to YouTube and
	// Partners line items.
	ContentRatingTier string `json:"contentRatingTier,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ContentRatingTier") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ContentRatingTier") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DigitalContentLabelTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod DigitalContentLabelTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Dimensions: Dimensions.
type Dimensions struct {
	// HeightPixels: The height in pixels.
	HeightPixels int64 `json:"heightPixels,omitempty"`
	// WidthPixels: The width in pixels.
	WidthPixels int64 `json:"widthPixels,omitempty"`
	// ForceSendFields is a list of field names (e.g. "HeightPixels") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "HeightPixels") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Dimensions) MarshalJSON() ([]byte, error) {
	type NoMethod Dimensions
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DisplayVideoSourceAd: The ad sourced from a DV360 creative.
type DisplayVideoSourceAd struct {
	// CreativeId: The ID of the source creative.
	CreativeId int64 `json:"creativeId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "CreativeId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreativeId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DisplayVideoSourceAd) MarshalJSON() ([]byte, error) {
	type NoMethod DisplayVideoSourceAd
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DoubleVerify: Details of DoubleVerify settings.
type DoubleVerify struct {
	// AppStarRating: Avoid bidding on apps with the star ratings.
	AppStarRating *DoubleVerifyAppStarRating `json:"appStarRating,omitempty"`
	// AvoidedAgeRatings: Avoid bidding on apps with the age rating.
	//
	// Possible values:
	//   "AGE_RATING_UNSPECIFIED" - This enum is only a placeholder and it doesn't
	// specify any age rating options.
	//   "APP_AGE_RATE_UNKNOWN" - Apps with unknown age rating.
	//   "APP_AGE_RATE_4_PLUS" - Apps rated for Everyone (4+).
	//   "APP_AGE_RATE_9_PLUS" - Apps rated for Everyone (9+).
	//   "APP_AGE_RATE_12_PLUS" - Apps rated for Teens (12+).
	//   "APP_AGE_RATE_17_PLUS" - Apps rated for Mature (17+).
	//   "APP_AGE_RATE_18_PLUS" - Apps rated for Adults Only (18+).
	AvoidedAgeRatings []string `json:"avoidedAgeRatings,omitempty"`
	// BrandSafetyCategories: DV Brand Safety Controls.
	BrandSafetyCategories *DoubleVerifyBrandSafetyCategories `json:"brandSafetyCategories,omitempty"`
	// CustomSegmentId: The custom segment ID provided by DoubleVerify. The ID must
	// start with "51" and consist of eight digits. Custom segment ID cannot be
	// specified along with any of the following fields: * brand_safety_categories
	// * avoided_age_ratings * app_star_rating * fraud_invalid_traffic
	CustomSegmentId int64 `json:"customSegmentId,omitempty,string"`
	// DisplayViewability: Display viewability settings (applicable to display line
	// items only).
	DisplayViewability *DoubleVerifyDisplayViewability `json:"displayViewability,omitempty"`
	// FraudInvalidTraffic: Avoid Sites and Apps with historical Fraud & IVT Rates.
	FraudInvalidTraffic *DoubleVerifyFraudInvalidTraffic `json:"fraudInvalidTraffic,omitempty"`
	// VideoViewability: Video viewability settings (applicable to video line items
	// only).
	VideoViewability *DoubleVerifyVideoViewability `json:"videoViewability,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AppStarRating") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AppStarRating") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DoubleVerify) MarshalJSON() ([]byte, error) {
	type NoMethod DoubleVerify
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DoubleVerifyAppStarRating: Details of DoubleVerify star ratings settings.
type DoubleVerifyAppStarRating struct {
	// AvoidInsufficientStarRating: Avoid bidding on apps with insufficient star
	// ratings.
	AvoidInsufficientStarRating bool `json:"avoidInsufficientStarRating,omitempty"`
	// AvoidedStarRating: Avoid bidding on apps with the star ratings.
	//
	// Possible values:
	//   "APP_STAR_RATE_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any app star rating options.
	//   "APP_STAR_RATE_1_POINT_5_LESS" - Official Apps with rating < 1.5 Stars.
	//   "APP_STAR_RATE_2_LESS" - Official Apps with rating < 2 Stars.
	//   "APP_STAR_RATE_2_POINT_5_LESS" - Official Apps with rating < 2.5 Stars.
	//   "APP_STAR_RATE_3_LESS" - Official Apps with rating < 3 Stars.
	//   "APP_STAR_RATE_3_POINT_5_LESS" - Official Apps with rating < 3.5 Stars.
	//   "APP_STAR_RATE_4_LESS" - Official Apps with rating < 4 Stars.
	//   "APP_STAR_RATE_4_POINT_5_LESS" - Official Apps with rating < 4.5 Stars.
	AvoidedStarRating string `json:"avoidedStarRating,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "AvoidInsufficientStarRating") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. See https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields
	// for more details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AvoidInsufficientStarRating") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DoubleVerifyAppStarRating) MarshalJSON() ([]byte, error) {
	type NoMethod DoubleVerifyAppStarRating
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DoubleVerifyBrandSafetyCategories: Settings for brand safety controls.
type DoubleVerifyBrandSafetyCategories struct {
	// AvoidUnknownBrandSafetyCategory: Unknown or unrateable.
	AvoidUnknownBrandSafetyCategory bool `json:"avoidUnknownBrandSafetyCategory,omitempty"`
	// AvoidedHighSeverityCategories: Brand safety high severity avoidance
	// categories.
	//
	// Possible values:
	//   "HIGHER_SEVERITY_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any high severity categories.
	//   "ADULT_CONTENT_PORNOGRAPHY" - Adult Content: Pornography, Mature Topics &
	// Nudity.
	//   "COPYRIGHT_INFRINGEMENT" - Copyright Infringement.
	//   "SUBSTANCE_ABUSE" - Drugs/Alcohol/Controlled Substances: Substance Abuse.
	//   "GRAPHIC_VIOLENCE_WEAPONS" - Extreme Graphic/Explicit Violence/Weapons.
	//   "HATE_PROFANITY" - Hate/Profanity.
	//   "CRIMINAL_SKILLS" - Illegal Activities: Criminal Skills.
	//   "NUISANCE_INCENTIVIZED_MALWARE_CLUTTER" - Incentivized/Malware/Clutter.
	AvoidedHighSeverityCategories []string `json:"avoidedHighSeverityCategories,omitempty"`
	// AvoidedMediumSeverityCategories: Brand safety medium severity avoidance
	// categories.
	//
	// Possible values:
	//   "MEDIUM_SEVERITY_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any medium severity categories.
	//   "AD_SERVERS" - Ad Servers.
	//   "ADULT_CONTENT_SWIMSUIT" - Adult Content: Swimsuit.
	//   "ALTERNATIVE_LIFESTYLES" - Controversial Subjects: Alternative Lifestyles.
	//   "CELEBRITY_GOSSIP" - Controversial Subjects: Celebrity Gossip.
	//   "GAMBLING" - Controversial Subjects: Gambling.
	//   "OCCULT" - Controversial Subjects: Occult.
	//   "SEX_EDUCATION" - Controversial Subjects: Sex Education.
	//   "DISASTER_AVIATION" - Disaster: Aviation.
	//   "DISASTER_MAN_MADE" - Disaster: Man-made.
	//   "DISASTER_NATURAL" - Disaster: Natural.
	//   "DISASTER_TERRORIST_EVENTS" - Disaster: Terrorist Events.
	//   "DISASTER_VEHICLE" - Disaster: Vehicle.
	//   "ALCOHOL" - Drugs/Alcohol/Controlled Substances: Alcohol.
	//   "SMOKING" - Drugs/Alcohol/Controlled Substances: Smoking.
	//   "NEGATIVE_NEWS_FINANCIAL" - Negative News: Financial.
	//   "NON_ENGLISH" - Non-Std Content: Non-English.
	//   "PARKING_PAGE" - Non-Std Content: Parking Page.
	//   "UNMODERATED_UGC" - Unmoderated UGC: Forums, Images & Video.
	//   "INFLAMMATORY_POLITICS_AND_NEWS" - Controversial Subjects: Inflammatory
	// Politics and News.
	//   "NEGATIVE_NEWS_PHARMACEUTICAL" - Negative News: Pharmaceutical.
	AvoidedMediumSeverityCategories []string `json:"avoidedMediumSeverityCategories,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "AvoidUnknownBrandSafetyCategory") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AvoidUnknownBrandSafetyCategory")
	// to include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DoubleVerifyBrandSafetyCategories) MarshalJSON() ([]byte, error) {
	type NoMethod DoubleVerifyBrandSafetyCategories
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DoubleVerifyDisplayViewability: Details of DoubleVerify display viewability
// settings.
type DoubleVerifyDisplayViewability struct {
	// Iab: Target web and app inventory to maximize IAB viewable rate.
	//
	// Possible values:
	//   "IAB_VIEWED_RATE_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any IAB viewed rate options.
	//   "IAB_VIEWED_RATE_80_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 80% or higher.
	//   "IAB_VIEWED_RATE_75_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 75% or higher.
	//   "IAB_VIEWED_RATE_70_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 70% or higher.
	//   "IAB_VIEWED_RATE_65_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 65% or higher.
	//   "IAB_VIEWED_RATE_60_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 60% or higher.
	//   "IAB_VIEWED_RATE_55_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 55% or higher.
	//   "IAB_VIEWED_RATE_50_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 50% or higher.
	//   "IAB_VIEWED_RATE_40_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 40% or higher.
	//   "IAB_VIEWED_RATE_30_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 30% or higher.
	Iab string `json:"iab,omitempty"`
	// ViewableDuring: Target web and app inventory to maximize 100% viewable
	// duration.
	//
	// Possible values:
	//   "AVERAGE_VIEW_DURATION_UNSPECIFIED" - This enum is only a placeholder and
	// it doesn't specify any average view duration options.
	//   "AVERAGE_VIEW_DURATION_5_SEC" - Target web and app inventory to maximize
	// 100% viewable duration 5 seconds or more.
	//   "AVERAGE_VIEW_DURATION_10_SEC" - Target web and app inventory to maximize
	// 100% viewable duration 10 seconds or more.
	//   "AVERAGE_VIEW_DURATION_15_SEC" - Target web and app inventory to maximize
	// 100% viewable duration 15 seconds or more.
	ViewableDuring string `json:"viewableDuring,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Iab") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Iab") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DoubleVerifyDisplayViewability) MarshalJSON() ([]byte, error) {
	type NoMethod DoubleVerifyDisplayViewability
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DoubleVerifyFraudInvalidTraffic: DoubleVerify Fraud & Invalid Traffic
// settings.
type DoubleVerifyFraudInvalidTraffic struct {
	// AvoidInsufficientOption: Insufficient Historical Fraud & IVT Stats.
	AvoidInsufficientOption bool `json:"avoidInsufficientOption,omitempty"`
	// AvoidedFraudOption: Avoid Sites and Apps with historical Fraud & IVT.
	//
	// Possible values:
	//   "FRAUD_UNSPECIFIED" - This enum is only a placeholder and it doesn't
	// specify any fraud and invalid traffic options.
	//   "AD_IMPRESSION_FRAUD_100" - 100% Fraud & IVT.
	//   "AD_IMPRESSION_FRAUD_50" - 50% or Higher Fraud & IVT.
	//   "AD_IMPRESSION_FRAUD_25" - 25% or Higher Fraud & IVT.
	//   "AD_IMPRESSION_FRAUD_10" - 10% or Higher Fraud & IVT.
	//   "AD_IMPRESSION_FRAUD_8" - 8% or Higher Fraud & IVT.
	//   "AD_IMPRESSION_FRAUD_6" - 6% or Higher Fraud & IVT.
	//   "AD_IMPRESSION_FRAUD_4" - 4% or Higher Fraud & IVT.
	//   "AD_IMPRESSION_FRAUD_2" - 2% or Higher Fraud & IVT.
	AvoidedFraudOption string `json:"avoidedFraudOption,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AvoidInsufficientOption") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AvoidInsufficientOption") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DoubleVerifyFraudInvalidTraffic) MarshalJSON() ([]byte, error) {
	type NoMethod DoubleVerifyFraudInvalidTraffic
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DoubleVerifyVideoViewability: Details of DoubleVerify video viewability
// settings.
type DoubleVerifyVideoViewability struct {
	// PlayerImpressionRate: Target inventory to maximize impressions with 400x300
	// or greater player size.
	//
	// Possible values:
	//   "PLAYER_SIZE_400X300_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any impressions options.
	//   "PLAYER_SIZE_400X300_95" - Sites with 95%+ of impressions.
	//   "PLAYER_SIZE_400X300_70" - Sites with 70%+ of impressions.
	//   "PLAYER_SIZE_400X300_25" - Sites with 25%+ of impressions.
	//   "PLAYER_SIZE_400X300_5" - Sites with 5%+ of impressions.
	PlayerImpressionRate string `json:"playerImpressionRate,omitempty"`
	// VideoIab: Target web inventory to maximize IAB viewable rate.
	//
	// Possible values:
	//   "VIDEO_IAB_UNSPECIFIED" - This enum is only a placeholder and it doesn't
	// specify any video IAB viewable rate options.
	//   "IAB_VIEWABILITY_80_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 80% or higher.
	//   "IAB_VIEWABILITY_75_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 75% or higher.
	//   "IAB_VIEWABILITY_70_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 70% or higher.
	//   "IAB_VIEWABILITY_65_PERCENT_HIHGER" - Target web and app inventory to
	// maximize IAB viewable rate 65% or higher.
	//   "IAB_VIEWABILITY_60_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 60% or higher.
	//   "IAB_VIEWABILITY_55_PERCENT_HIHGER" - Target web and app inventory to
	// maximize IAB viewable rate 55% or higher.
	//   "IAB_VIEWABILITY_50_PERCENT_HIGHER" - Target web and app inventory to
	// maximize IAB viewable rate 50% or higher.
	//   "IAB_VIEWABILITY_40_PERCENT_HIHGER" - Target web and app inventory to
	// maximize IAB viewable rate 40% or higher.
	//   "IAB_VIEWABILITY_30_PERCENT_HIHGER" - Target web and app inventory to
	// maximize IAB viewable rate 30% or higher.
	VideoIab string `json:"videoIab,omitempty"`
	// VideoViewableRate: Target web inventory to maximize fully viewable rate.
	//
	// Possible values:
	//   "VIDEO_VIEWABLE_RATE_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any video viewable rate options.
	//   "VIEWED_PERFORMANCE_40_PERCENT_HIGHER" - Target web inventory to maximize
	// fully viewable rate 40% or higher.
	//   "VIEWED_PERFORMANCE_35_PERCENT_HIGHER" - Target web inventory to maximize
	// fully viewable rate 35% or higher.
	//   "VIEWED_PERFORMANCE_30_PERCENT_HIGHER" - Target web inventory to maximize
	// fully viewable rate 30% or higher.
	//   "VIEWED_PERFORMANCE_25_PERCENT_HIGHER" - Target web inventory to maximize
	// fully viewable rate 25% or higher.
	//   "VIEWED_PERFORMANCE_20_PERCENT_HIGHER" - Target web inventory to maximize
	// fully viewable rate 20% or higher.
	//   "VIEWED_PERFORMANCE_10_PERCENT_HIGHER" - Target web inventory to maximize
	// fully viewable rate 10% or higher.
	VideoViewableRate string `json:"videoViewableRate,omitempty"`
	// ForceSendFields is a list of field names (e.g. "PlayerImpressionRate") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "PlayerImpressionRate") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DoubleVerifyVideoViewability) MarshalJSON() ([]byte, error) {
	type NoMethod DoubleVerifyVideoViewability
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DuplicateLineItemRequest: Request message for
// LineItemService.DuplicateLineItem.
type DuplicateLineItemRequest struct {
	// TargetDisplayName: The display name of the new line item. Must be UTF-8
	// encoded with a maximum size of 240 bytes.
	TargetDisplayName string `json:"targetDisplayName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "TargetDisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "TargetDisplayName") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DuplicateLineItemRequest) MarshalJSON() ([]byte, error) {
	type NoMethod DuplicateLineItemRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type DuplicateLineItemResponse struct {
	// DuplicateLineItemId: The ID of the created line item.
	DuplicateLineItemId int64 `json:"duplicateLineItemId,omitempty,string"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "DuplicateLineItemId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DuplicateLineItemId") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DuplicateLineItemResponse) MarshalJSON() ([]byte, error) {
	type NoMethod DuplicateLineItemResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// EditCustomerMatchMembersRequest: Request message for
// FirstAndThirdPartyAudienceService.EditCustomerMatchMembers.
type EditCustomerMatchMembersRequest struct {
	// AddedContactInfoList: Input only. A list of contact information to define
	// the members to be added.
	AddedContactInfoList *ContactInfoList `json:"addedContactInfoList,omitempty"`
	// AddedMobileDeviceIdList: Input only. A list of mobile device IDs to define
	// the members to be added.
	AddedMobileDeviceIdList *MobileDeviceIdList `json:"addedMobileDeviceIdList,omitempty"`
	// AdvertiserId: Required. The ID of the owner advertiser of the updated
	// Customer Match FirstAndThirdPartyAudience.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// RemovedContactInfoList: Input only. A list of contact information to define
	// the members to be removed.
	RemovedContactInfoList *ContactInfoList `json:"removedContactInfoList,omitempty"`
	// RemovedMobileDeviceIdList: Input only. A list of mobile device IDs to define
	// the members to be removed.
	RemovedMobileDeviceIdList *MobileDeviceIdList `json:"removedMobileDeviceIdList,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AddedContactInfoList") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AddedContactInfoList") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s EditCustomerMatchMembersRequest) MarshalJSON() ([]byte, error) {
	type NoMethod EditCustomerMatchMembersRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// EditCustomerMatchMembersResponse: The response of
// FirstAndThirdPartyAudienceService.EditCustomerMatchMembers.
type EditCustomerMatchMembersResponse struct {
	// FirstPartyAndPartnerAudienceId: Required. The ID of the updated Customer
	// Match FirstPartyAndPartnerAudience.
	FirstPartyAndPartnerAudienceId int64 `json:"firstPartyAndPartnerAudienceId,omitempty,string"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g.
	// "FirstPartyAndPartnerAudienceId") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "FirstPartyAndPartnerAudienceId")
	// to include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s EditCustomerMatchMembersResponse) MarshalJSON() ([]byte, error) {
	type NoMethod EditCustomerMatchMembersResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// EditGuaranteedOrderReadAccessorsRequest: Request message for
// GuaranteedOrderService.EditGuaranteedOrderReadAccessors.
type EditGuaranteedOrderReadAccessorsRequest struct {
	// AddedAdvertisers: The advertisers to add as read accessors to the guaranteed
	// order.
	AddedAdvertisers googleapi.Int64s `json:"addedAdvertisers,omitempty"`
	// PartnerId: Required. The partner context in which the change is being made.
	PartnerId int64 `json:"partnerId,omitempty,string"`
	// ReadAccessInherited: Whether to give all advertisers of the read/write
	// accessor partner read access to the guaranteed order. Only applicable if
	// read_write_partner_id is set in the guaranteed order.
	ReadAccessInherited bool `json:"readAccessInherited,omitempty"`
	// RemovedAdvertisers: The advertisers to remove as read accessors to the
	// guaranteed order.
	RemovedAdvertisers googleapi.Int64s `json:"removedAdvertisers,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AddedAdvertisers") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AddedAdvertisers") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s EditGuaranteedOrderReadAccessorsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod EditGuaranteedOrderReadAccessorsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type EditGuaranteedOrderReadAccessorsResponse struct {
	// ReadAccessInherited: Whether all advertisers of read_write_partner_id have
	// read access to the guaranteed order.
	ReadAccessInherited bool `json:"readAccessInherited,omitempty"`
	// ReadAdvertiserIds: The IDs of advertisers with read access to the guaranteed
	// order.
	ReadAdvertiserIds googleapi.Int64s `json:"readAdvertiserIds,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "ReadAccessInherited") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ReadAccessInherited") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s EditGuaranteedOrderReadAccessorsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod EditGuaranteedOrderReadAccessorsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// EditInventorySourceReadWriteAccessorsRequest: Request message for
// InventorySourceService.EditInventorySourceReadWriteAccessors.
type EditInventorySourceReadWriteAccessorsRequest struct {
	// AdvertisersUpdate: The advertisers to add or remove from the list of
	// advertisers that have read/write access to the inventory source. This change
	// will remove an existing partner read/write accessor.
	AdvertisersUpdate *EditInventorySourceReadWriteAccessorsRequestAdvertisersUpdate `json:"advertisersUpdate,omitempty"`
	// AssignPartner: Set the partner context as read/write accessor of the
	// inventory source. This will remove all other current read/write advertiser
	// accessors.
	AssignPartner bool `json:"assignPartner,omitempty"`
	// PartnerId: Required. The partner context by which the accessors change is
	// being made.
	PartnerId int64 `json:"partnerId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "AdvertisersUpdate") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertisersUpdate") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s EditInventorySourceReadWriteAccessorsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod EditInventorySourceReadWriteAccessorsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// EditInventorySourceReadWriteAccessorsRequestAdvertisersUpdate: Update to the
// list of advertisers with read/write access to the inventory source.
type EditInventorySourceReadWriteAccessorsRequestAdvertisersUpdate struct {
	// AddedAdvertisers: The advertisers to add.
	AddedAdvertisers googleapi.Int64s `json:"addedAdvertisers,omitempty"`
	// RemovedAdvertisers: The advertisers to remove.
	RemovedAdvertisers googleapi.Int64s `json:"removedAdvertisers,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AddedAdvertisers") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AddedAdvertisers") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s EditInventorySourceReadWriteAccessorsRequestAdvertisersUpdate) MarshalJSON() ([]byte, error) {
	type NoMethod EditInventorySourceReadWriteAccessorsRequestAdvertisersUpdate
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Empty: A generic empty message that you can re-use to avoid defining
// duplicated empty messages in your APIs. A typical example is to use it as
// the request or the response type of an API method. For instance: service Foo
// { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
type Empty struct {
	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
}

// EnvironmentAssignedTargetingOptionDetails: Assigned environment targeting
// option details. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is `TARGETING_TYPE_ENVIRONMENT`.
type EnvironmentAssignedTargetingOptionDetails struct {
	// Environment: Required. The serving environment.
	//
	// Possible values:
	//   "ENVIRONMENT_UNSPECIFIED" - Default value when environment is not
	// specified in this version. This enum is a placeholder for default value and
	// does not represent a real environment option.
	//   "ENVIRONMENT_WEB_OPTIMIZED" - Target inventory displayed in browsers. This
	// includes inventory that was designed for the device it was viewed on, such
	// as mobile websites viewed on a mobile device. ENVIRONMENT_WEB_NOT_OPTIMIZED,
	// if targeted, should be deleted prior to the deletion of this targeting
	// option.
	//   "ENVIRONMENT_WEB_NOT_OPTIMIZED" - Target inventory displayed in browsers.
	// This includes inventory that was not designed for the device but viewed on
	// it, such as websites optimized for desktop but viewed on a mobile device.
	// ENVIRONMENT_WEB_OPTIMIZED should be targeted prior to the addition of this
	// targeting option.
	//   "ENVIRONMENT_APP" - Target inventory displayed in apps.
	Environment string `json:"environment,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Environment") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Environment") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s EnvironmentAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod EnvironmentAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// EnvironmentTargetingOptionDetails: Represents a targetable environment. This
// will be populated in the environment_details field of a TargetingOption when
// targeting_type is `TARGETING_TYPE_ENVIRONMENT`.
type EnvironmentTargetingOptionDetails struct {
	// Environment: Output only. The serving environment.
	//
	// Possible values:
	//   "ENVIRONMENT_UNSPECIFIED" - Default value when environment is not
	// specified in this version. This enum is a placeholder for default value and
	// does not represent a real environment option.
	//   "ENVIRONMENT_WEB_OPTIMIZED" - Target inventory displayed in browsers. This
	// includes inventory that was designed for the device it was viewed on, such
	// as mobile websites viewed on a mobile device. ENVIRONMENT_WEB_NOT_OPTIMIZED,
	// if targeted, should be deleted prior to the deletion of this targeting
	// option.
	//   "ENVIRONMENT_WEB_NOT_OPTIMIZED" - Target inventory displayed in browsers.
	// This includes inventory that was not designed for the device but viewed on
	// it, such as websites optimized for desktop but viewed on a mobile device.
	// ENVIRONMENT_WEB_OPTIMIZED should be targeted prior to the addition of this
	// targeting option.
	//   "ENVIRONMENT_APP" - Target inventory displayed in apps.
	Environment string `json:"environment,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Environment") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Environment") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s EnvironmentTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod EnvironmentTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ExchangeAssignedTargetingOptionDetails: Details for assigned exchange
// targeting option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is `TARGETING_TYPE_EXCHANGE`.
type ExchangeAssignedTargetingOptionDetails struct {
	// Exchange: Required. The enum value for the exchange.
	//
	// Possible values:
	//   "EXCHANGE_UNSPECIFIED" - Exchange is not specified or is unknown in this
	// version.
	//   "EXCHANGE_GOOGLE_AD_MANAGER" - Google Ad Manager.
	//   "EXCHANGE_APPNEXUS" - AppNexus.
	//   "EXCHANGE_BRIGHTROLL" - BrightRoll Exchange for Video from Yahoo!.
	//   "EXCHANGE_ADFORM" - Adform.
	//   "EXCHANGE_ADMETA" - Admeta.
	//   "EXCHANGE_ADMIXER" - Admixer.
	//   "EXCHANGE_ADSMOGO" - AdsMogo.
	//   "EXCHANGE_ADSWIZZ" - AdsWizz.
	//   "EXCHANGE_BIDSWITCH" - BidSwitch.
	//   "EXCHANGE_BRIGHTROLL_DISPLAY" - BrightRoll Exchange for Display from
	// Yahoo!.
	//   "EXCHANGE_CADREON" - Cadreon.
	//   "EXCHANGE_DAILYMOTION" - Dailymotion.
	//   "EXCHANGE_FIVE" - Five.
	//   "EXCHANGE_FLUCT" - Fluct.
	//   "EXCHANGE_FREEWHEEL" - FreeWheel SSP.
	//   "EXCHANGE_GENIEE" - Geniee.
	//   "EXCHANGE_GUMGUM" - GumGum.
	//   "EXCHANGE_IMOBILE" - i-mobile.
	//   "EXCHANGE_IBILLBOARD" - iBILLBOARD.
	//   "EXCHANGE_IMPROVE_DIGITAL" - Improve Digital.
	//   "EXCHANGE_INDEX" - Index Exchange.
	//   "EXCHANGE_KARGO" - Kargo.
	//   "EXCHANGE_MICROAD" - MicroAd.
	//   "EXCHANGE_MOPUB" - MoPub.
	//   "EXCHANGE_NEND" - Nend.
	//   "EXCHANGE_ONE_BY_AOL_DISPLAY" - ONE by AOL: Display Market Place.
	//   "EXCHANGE_ONE_BY_AOL_MOBILE" - ONE by AOL: Mobile.
	//   "EXCHANGE_ONE_BY_AOL_VIDEO" - ONE by AOL: Video.
	//   "EXCHANGE_OOYALA" - Ooyala.
	//   "EXCHANGE_OPENX" - OpenX.
	//   "EXCHANGE_PERMODO" - Permodo.
	//   "EXCHANGE_PLATFORMONE" - Platform One.
	//   "EXCHANGE_PLATFORMID" - PlatformId.
	//   "EXCHANGE_PUBMATIC" - PubMatic.
	//   "EXCHANGE_PULSEPOINT" - PulsePoint.
	//   "EXCHANGE_REVENUEMAX" - RevenueMax.
	//   "EXCHANGE_RUBICON" - Rubicon.
	//   "EXCHANGE_SMARTCLIP" - SmartClip.
	//   "EXCHANGE_SMARTRTB" - SmartRTB+.
	//   "EXCHANGE_SMARTSTREAMTV" - SmartstreamTv.
	//   "EXCHANGE_SOVRN" - Sovrn.
	//   "EXCHANGE_SPOTXCHANGE" - SpotXchange.
	//   "EXCHANGE_STROER" - Ströer SSP.
	//   "EXCHANGE_TEADSTV" - TeadsTv.
	//   "EXCHANGE_TELARIA" - Telaria.
	//   "EXCHANGE_TVN" - TVN.
	//   "EXCHANGE_UNITED" - United.
	//   "EXCHANGE_YIELDLAB" - Yieldlab.
	//   "EXCHANGE_YIELDMO" - Yieldmo.
	//   "EXCHANGE_UNRULYX" - UnrulyX.
	//   "EXCHANGE_OPEN8" - Open8.
	//   "EXCHANGE_TRITON" - Triton.
	//   "EXCHANGE_TRIPLELIFT" - TripleLift.
	//   "EXCHANGE_TABOOLA" - Taboola.
	//   "EXCHANGE_INMOBI" - InMobi.
	//   "EXCHANGE_SMAATO" - Smaato.
	//   "EXCHANGE_AJA" - Aja.
	//   "EXCHANGE_SUPERSHIP" - Supership.
	//   "EXCHANGE_NEXSTAR_DIGITAL" - Nexstar Digital.
	//   "EXCHANGE_WAZE" - Waze.
	//   "EXCHANGE_SOUNDCAST" - SoundCast.
	//   "EXCHANGE_SHARETHROUGH" - Sharethrough.
	//   "EXCHANGE_FYBER" - Fyber.
	//   "EXCHANGE_RED_FOR_PUBLISHERS" - Red For Publishers.
	//   "EXCHANGE_MEDIANET" - Media.net.
	//   "EXCHANGE_TAPJOY" - Tapjoy.
	//   "EXCHANGE_VISTAR" - Vistar.
	//   "EXCHANGE_DAX" - DAX.
	//   "EXCHANGE_JCD" - JCD.
	//   "EXCHANGE_PLACE_EXCHANGE" - Place Exchange.
	//   "EXCHANGE_APPLOVIN" - AppLovin.
	//   "EXCHANGE_CONNATIX" - Connatix.
	//   "EXCHANGE_RESET_DIGITAL" - Reset Digital.
	//   "EXCHANGE_HIVESTACK" - Hivestack.
	//   "EXCHANGE_DRAX" - Drax.
	//   "EXCHANGE_APPLOVIN_GBID" - AppLovin MAX.
	//   "EXCHANGE_FYBER_GBID" - DT Fairbid.
	//   "EXCHANGE_UNITY_GBID" - Unity LevelPlay.
	//   "EXCHANGE_CHARTBOOST_GBID" - Chartboost Mediation.
	//   "EXCHANGE_ADMOST_GBID" - AdMost.
	//   "EXCHANGE_TOPON_GBID" - TopOn.
	//   "EXCHANGE_NETFLIX" - Netflix.
	//   "EXCHANGE_CORE" - Core.
	//   "EXCHANGE_COMMERCE_GRID" - Commerce Grid.
	//   "EXCHANGE_SPOTIFY" - Spotify.
	//   "EXCHANGE_TUBI" - Tubi.
	Exchange string `json:"exchange,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Exchange") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Exchange") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ExchangeAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ExchangeAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ExchangeConfig: Settings that control which exchanges are enabled for a
// partner.
type ExchangeConfig struct {
	// EnabledExchanges: All enabled exchanges in the partner. Duplicate enabled
	// exchanges will be ignored.
	EnabledExchanges []*ExchangeConfigEnabledExchange `json:"enabledExchanges,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EnabledExchanges") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "EnabledExchanges") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ExchangeConfig) MarshalJSON() ([]byte, error) {
	type NoMethod ExchangeConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ExchangeConfigEnabledExchange: An enabled exchange in the partner.
type ExchangeConfigEnabledExchange struct {
	// Exchange: The enabled exchange.
	//
	// Possible values:
	//   "EXCHANGE_UNSPECIFIED" - Exchange is not specified or is unknown in this
	// version.
	//   "EXCHANGE_GOOGLE_AD_MANAGER" - Google Ad Manager.
	//   "EXCHANGE_APPNEXUS" - AppNexus.
	//   "EXCHANGE_BRIGHTROLL" - BrightRoll Exchange for Video from Yahoo!.
	//   "EXCHANGE_ADFORM" - Adform.
	//   "EXCHANGE_ADMETA" - Admeta.
	//   "EXCHANGE_ADMIXER" - Admixer.
	//   "EXCHANGE_ADSMOGO" - AdsMogo.
	//   "EXCHANGE_ADSWIZZ" - AdsWizz.
	//   "EXCHANGE_BIDSWITCH" - BidSwitch.
	//   "EXCHANGE_BRIGHTROLL_DISPLAY" - BrightRoll Exchange for Display from
	// Yahoo!.
	//   "EXCHANGE_CADREON" - Cadreon.
	//   "EXCHANGE_DAILYMOTION" - Dailymotion.
	//   "EXCHANGE_FIVE" - Five.
	//   "EXCHANGE_FLUCT" - Fluct.
	//   "EXCHANGE_FREEWHEEL" - FreeWheel SSP.
	//   "EXCHANGE_GENIEE" - Geniee.
	//   "EXCHANGE_GUMGUM" - GumGum.
	//   "EXCHANGE_IMOBILE" - i-mobile.
	//   "EXCHANGE_IBILLBOARD" - iBILLBOARD.
	//   "EXCHANGE_IMPROVE_DIGITAL" - Improve Digital.
	//   "EXCHANGE_INDEX" - Index Exchange.
	//   "EXCHANGE_KARGO" - Kargo.
	//   "EXCHANGE_MICROAD" - MicroAd.
	//   "EXCHANGE_MOPUB" - MoPub.
	//   "EXCHANGE_NEND" - Nend.
	//   "EXCHANGE_ONE_BY_AOL_DISPLAY" - ONE by AOL: Display Market Place.
	//   "EXCHANGE_ONE_BY_AOL_MOBILE" - ONE by AOL: Mobile.
	//   "EXCHANGE_ONE_BY_AOL_VIDEO" - ONE by AOL: Video.
	//   "EXCHANGE_OOYALA" - Ooyala.
	//   "EXCHANGE_OPENX" - OpenX.
	//   "EXCHANGE_PERMODO" - Permodo.
	//   "EXCHANGE_PLATFORMONE" - Platform One.
	//   "EXCHANGE_PLATFORMID" - PlatformId.
	//   "EXCHANGE_PUBMATIC" - PubMatic.
	//   "EXCHANGE_PULSEPOINT" - PulsePoint.
	//   "EXCHANGE_REVENUEMAX" - RevenueMax.
	//   "EXCHANGE_RUBICON" - Rubicon.
	//   "EXCHANGE_SMARTCLIP" - SmartClip.
	//   "EXCHANGE_SMARTRTB" - SmartRTB+.
	//   "EXCHANGE_SMARTSTREAMTV" - SmartstreamTv.
	//   "EXCHANGE_SOVRN" - Sovrn.
	//   "EXCHANGE_SPOTXCHANGE" - SpotXchange.
	//   "EXCHANGE_STROER" - Ströer SSP.
	//   "EXCHANGE_TEADSTV" - TeadsTv.
	//   "EXCHANGE_TELARIA" - Telaria.
	//   "EXCHANGE_TVN" - TVN.
	//   "EXCHANGE_UNITED" - United.
	//   "EXCHANGE_YIELDLAB" - Yieldlab.
	//   "EXCHANGE_YIELDMO" - Yieldmo.
	//   "EXCHANGE_UNRULYX" - UnrulyX.
	//   "EXCHANGE_OPEN8" - Open8.
	//   "EXCHANGE_TRITON" - Triton.
	//   "EXCHANGE_TRIPLELIFT" - TripleLift.
	//   "EXCHANGE_TABOOLA" - Taboola.
	//   "EXCHANGE_INMOBI" - InMobi.
	//   "EXCHANGE_SMAATO" - Smaato.
	//   "EXCHANGE_AJA" - Aja.
	//   "EXCHANGE_SUPERSHIP" - Supership.
	//   "EXCHANGE_NEXSTAR_DIGITAL" - Nexstar Digital.
	//   "EXCHANGE_WAZE" - Waze.
	//   "EXCHANGE_SOUNDCAST" - SoundCast.
	//   "EXCHANGE_SHARETHROUGH" - Sharethrough.
	//   "EXCHANGE_FYBER" - Fyber.
	//   "EXCHANGE_RED_FOR_PUBLISHERS" - Red For Publishers.
	//   "EXCHANGE_MEDIANET" - Media.net.
	//   "EXCHANGE_TAPJOY" - Tapjoy.
	//   "EXCHANGE_VISTAR" - Vistar.
	//   "EXCHANGE_DAX" - DAX.
	//   "EXCHANGE_JCD" - JCD.
	//   "EXCHANGE_PLACE_EXCHANGE" - Place Exchange.
	//   "EXCHANGE_APPLOVIN" - AppLovin.
	//   "EXCHANGE_CONNATIX" - Connatix.
	//   "EXCHANGE_RESET_DIGITAL" - Reset Digital.
	//   "EXCHANGE_HIVESTACK" - Hivestack.
	//   "EXCHANGE_DRAX" - Drax.
	//   "EXCHANGE_APPLOVIN_GBID" - AppLovin MAX.
	//   "EXCHANGE_FYBER_GBID" - DT Fairbid.
	//   "EXCHANGE_UNITY_GBID" - Unity LevelPlay.
	//   "EXCHANGE_CHARTBOOST_GBID" - Chartboost Mediation.
	//   "EXCHANGE_ADMOST_GBID" - AdMost.
	//   "EXCHANGE_TOPON_GBID" - TopOn.
	//   "EXCHANGE_NETFLIX" - Netflix.
	//   "EXCHANGE_CORE" - Core.
	//   "EXCHANGE_COMMERCE_GRID" - Commerce Grid.
	//   "EXCHANGE_SPOTIFY" - Spotify.
	//   "EXCHANGE_TUBI" - Tubi.
	Exchange string `json:"exchange,omitempty"`
	// GoogleAdManagerAgencyId: Output only. Agency ID of Google Ad Manager. The
	// field is only relevant when Google Ad Manager is the enabled exchange.
	GoogleAdManagerAgencyId string `json:"googleAdManagerAgencyId,omitempty"`
	// GoogleAdManagerBuyerNetworkId: Output only. Network ID of Google Ad Manager.
	// The field is only relevant when Google Ad Manager is the enabled exchange.
	GoogleAdManagerBuyerNetworkId string `json:"googleAdManagerBuyerNetworkId,omitempty"`
	// SeatId: Output only. Seat ID of the enabled exchange.
	SeatId string `json:"seatId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Exchange") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Exchange") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ExchangeConfigEnabledExchange) MarshalJSON() ([]byte, error) {
	type NoMethod ExchangeConfigEnabledExchange
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ExchangeReviewStatus: Exchange review status for the creative.
type ExchangeReviewStatus struct {
	// Exchange: The exchange reviewing the creative.
	//
	// Possible values:
	//   "EXCHANGE_UNSPECIFIED" - Exchange is not specified or is unknown in this
	// version.
	//   "EXCHANGE_GOOGLE_AD_MANAGER" - Google Ad Manager.
	//   "EXCHANGE_APPNEXUS" - AppNexus.
	//   "EXCHANGE_BRIGHTROLL" - BrightRoll Exchange for Video from Yahoo!.
	//   "EXCHANGE_ADFORM" - Adform.
	//   "EXCHANGE_ADMETA" - Admeta.
	//   "EXCHANGE_ADMIXER" - Admixer.
	//   "EXCHANGE_ADSMOGO" - AdsMogo.
	//   "EXCHANGE_ADSWIZZ" - AdsWizz.
	//   "EXCHANGE_BIDSWITCH" - BidSwitch.
	//   "EXCHANGE_BRIGHTROLL_DISPLAY" - BrightRoll Exchange for Display from
	// Yahoo!.
	//   "EXCHANGE_CADREON" - Cadreon.
	//   "EXCHANGE_DAILYMOTION" - Dailymotion.
	//   "EXCHANGE_FIVE" - Five.
	//   "EXCHANGE_FLUCT" - Fluct.
	//   "EXCHANGE_FREEWHEEL" - FreeWheel SSP.
	//   "EXCHANGE_GENIEE" - Geniee.
	//   "EXCHANGE_GUMGUM" - GumGum.
	//   "EXCHANGE_IMOBILE" - i-mobile.
	//   "EXCHANGE_IBILLBOARD" - iBILLBOARD.
	//   "EXCHANGE_IMPROVE_DIGITAL" - Improve Digital.
	//   "EXCHANGE_INDEX" - Index Exchange.
	//   "EXCHANGE_KARGO" - Kargo.
	//   "EXCHANGE_MICROAD" - MicroAd.
	//   "EXCHANGE_MOPUB" - MoPub.
	//   "EXCHANGE_NEND" - Nend.
	//   "EXCHANGE_ONE_BY_AOL_DISPLAY" - ONE by AOL: Display Market Place.
	//   "EXCHANGE_ONE_BY_AOL_MOBILE" - ONE by AOL: Mobile.
	//   "EXCHANGE_ONE_BY_AOL_VIDEO" - ONE by AOL: Video.
	//   "EXCHANGE_OOYALA" - Ooyala.
	//   "EXCHANGE_OPENX" - OpenX.
	//   "EXCHANGE_PERMODO" - Permodo.
	//   "EXCHANGE_PLATFORMONE" - Platform One.
	//   "EXCHANGE_PLATFORMID" - PlatformId.
	//   "EXCHANGE_PUBMATIC" - PubMatic.
	//   "EXCHANGE_PULSEPOINT" - PulsePoint.
	//   "EXCHANGE_REVENUEMAX" - RevenueMax.
	//   "EXCHANGE_RUBICON" - Rubicon.
	//   "EXCHANGE_SMARTCLIP" - SmartClip.
	//   "EXCHANGE_SMARTRTB" - SmartRTB+.
	//   "EXCHANGE_SMARTSTREAMTV" - SmartstreamTv.
	//   "EXCHANGE_SOVRN" - Sovrn.
	//   "EXCHANGE_SPOTXCHANGE" - SpotXchange.
	//   "EXCHANGE_STROER" - Ströer SSP.
	//   "EXCHANGE_TEADSTV" - TeadsTv.
	//   "EXCHANGE_TELARIA" - Telaria.
	//   "EXCHANGE_TVN" - TVN.
	//   "EXCHANGE_UNITED" - United.
	//   "EXCHANGE_YIELDLAB" - Yieldlab.
	//   "EXCHANGE_YIELDMO" - Yieldmo.
	//   "EXCHANGE_UNRULYX" - UnrulyX.
	//   "EXCHANGE_OPEN8" - Open8.
	//   "EXCHANGE_TRITON" - Triton.
	//   "EXCHANGE_TRIPLELIFT" - TripleLift.
	//   "EXCHANGE_TABOOLA" - Taboola.
	//   "EXCHANGE_INMOBI" - InMobi.
	//   "EXCHANGE_SMAATO" - Smaato.
	//   "EXCHANGE_AJA" - Aja.
	//   "EXCHANGE_SUPERSHIP" - Supership.
	//   "EXCHANGE_NEXSTAR_DIGITAL" - Nexstar Digital.
	//   "EXCHANGE_WAZE" - Waze.
	//   "EXCHANGE_SOUNDCAST" - SoundCast.
	//   "EXCHANGE_SHARETHROUGH" - Sharethrough.
	//   "EXCHANGE_FYBER" - Fyber.
	//   "EXCHANGE_RED_FOR_PUBLISHERS" - Red For Publishers.
	//   "EXCHANGE_MEDIANET" - Media.net.
	//   "EXCHANGE_TAPJOY" - Tapjoy.
	//   "EXCHANGE_VISTAR" - Vistar.
	//   "EXCHANGE_DAX" - DAX.
	//   "EXCHANGE_JCD" - JCD.
	//   "EXCHANGE_PLACE_EXCHANGE" - Place Exchange.
	//   "EXCHANGE_APPLOVIN" - AppLovin.
	//   "EXCHANGE_CONNATIX" - Connatix.
	//   "EXCHANGE_RESET_DIGITAL" - Reset Digital.
	//   "EXCHANGE_HIVESTACK" - Hivestack.
	//   "EXCHANGE_DRAX" - Drax.
	//   "EXCHANGE_APPLOVIN_GBID" - AppLovin MAX.
	//   "EXCHANGE_FYBER_GBID" - DT Fairbid.
	//   "EXCHANGE_UNITY_GBID" - Unity LevelPlay.
	//   "EXCHANGE_CHARTBOOST_GBID" - Chartboost Mediation.
	//   "EXCHANGE_ADMOST_GBID" - AdMost.
	//   "EXCHANGE_TOPON_GBID" - TopOn.
	//   "EXCHANGE_NETFLIX" - Netflix.
	//   "EXCHANGE_CORE" - Core.
	//   "EXCHANGE_COMMERCE_GRID" - Commerce Grid.
	//   "EXCHANGE_SPOTIFY" - Spotify.
	//   "EXCHANGE_TUBI" - Tubi.
	Exchange string `json:"exchange,omitempty"`
	// Status: Status of the exchange review.
	//
	// Possible values:
	//   "REVIEW_STATUS_UNSPECIFIED" - Type value is not specified or is unknown in
	// this version.
	//   "REVIEW_STATUS_APPROVED" - The creative is approved.
	//   "REVIEW_STATUS_REJECTED" - The creative is rejected.
	//   "REVIEW_STATUS_PENDING" - The creative is pending review.
	Status string `json:"status,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Exchange") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Exchange") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ExchangeReviewStatus) MarshalJSON() ([]byte, error) {
	type NoMethod ExchangeReviewStatus
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ExchangeTargetingOptionDetails: Represents a targetable exchange. This will
// be populated in the exchange_details field of a TargetingOption when
// targeting_type is `TARGETING_TYPE_EXCHANGE`.
type ExchangeTargetingOptionDetails struct {
	// Exchange: Output only. The type of exchange.
	//
	// Possible values:
	//   "EXCHANGE_UNSPECIFIED" - Exchange is not specified or is unknown in this
	// version.
	//   "EXCHANGE_GOOGLE_AD_MANAGER" - Google Ad Manager.
	//   "EXCHANGE_APPNEXUS" - AppNexus.
	//   "EXCHANGE_BRIGHTROLL" - BrightRoll Exchange for Video from Yahoo!.
	//   "EXCHANGE_ADFORM" - Adform.
	//   "EXCHANGE_ADMETA" - Admeta.
	//   "EXCHANGE_ADMIXER" - Admixer.
	//   "EXCHANGE_ADSMOGO" - AdsMogo.
	//   "EXCHANGE_ADSWIZZ" - AdsWizz.
	//   "EXCHANGE_BIDSWITCH" - BidSwitch.
	//   "EXCHANGE_BRIGHTROLL_DISPLAY" - BrightRoll Exchange for Display from
	// Yahoo!.
	//   "EXCHANGE_CADREON" - Cadreon.
	//   "EXCHANGE_DAILYMOTION" - Dailymotion.
	//   "EXCHANGE_FIVE" - Five.
	//   "EXCHANGE_FLUCT" - Fluct.
	//   "EXCHANGE_FREEWHEEL" - FreeWheel SSP.
	//   "EXCHANGE_GENIEE" - Geniee.
	//   "EXCHANGE_GUMGUM" - GumGum.
	//   "EXCHANGE_IMOBILE" - i-mobile.
	//   "EXCHANGE_IBILLBOARD" - iBILLBOARD.
	//   "EXCHANGE_IMPROVE_DIGITAL" - Improve Digital.
	//   "EXCHANGE_INDEX" - Index Exchange.
	//   "EXCHANGE_KARGO" - Kargo.
	//   "EXCHANGE_MICROAD" - MicroAd.
	//   "EXCHANGE_MOPUB" - MoPub.
	//   "EXCHANGE_NEND" - Nend.
	//   "EXCHANGE_ONE_BY_AOL_DISPLAY" - ONE by AOL: Display Market Place.
	//   "EXCHANGE_ONE_BY_AOL_MOBILE" - ONE by AOL: Mobile.
	//   "EXCHANGE_ONE_BY_AOL_VIDEO" - ONE by AOL: Video.
	//   "EXCHANGE_OOYALA" - Ooyala.
	//   "EXCHANGE_OPENX" - OpenX.
	//   "EXCHANGE_PERMODO" - Permodo.
	//   "EXCHANGE_PLATFORMONE" - Platform One.
	//   "EXCHANGE_PLATFORMID" - PlatformId.
	//   "EXCHANGE_PUBMATIC" - PubMatic.
	//   "EXCHANGE_PULSEPOINT" - PulsePoint.
	//   "EXCHANGE_REVENUEMAX" - RevenueMax.
	//   "EXCHANGE_RUBICON" - Rubicon.
	//   "EXCHANGE_SMARTCLIP" - SmartClip.
	//   "EXCHANGE_SMARTRTB" - SmartRTB+.
	//   "EXCHANGE_SMARTSTREAMTV" - SmartstreamTv.
	//   "EXCHANGE_SOVRN" - Sovrn.
	//   "EXCHANGE_SPOTXCHANGE" - SpotXchange.
	//   "EXCHANGE_STROER" - Ströer SSP.
	//   "EXCHANGE_TEADSTV" - TeadsTv.
	//   "EXCHANGE_TELARIA" - Telaria.
	//   "EXCHANGE_TVN" - TVN.
	//   "EXCHANGE_UNITED" - United.
	//   "EXCHANGE_YIELDLAB" - Yieldlab.
	//   "EXCHANGE_YIELDMO" - Yieldmo.
	//   "EXCHANGE_UNRULYX" - UnrulyX.
	//   "EXCHANGE_OPEN8" - Open8.
	//   "EXCHANGE_TRITON" - Triton.
	//   "EXCHANGE_TRIPLELIFT" - TripleLift.
	//   "EXCHANGE_TABOOLA" - Taboola.
	//   "EXCHANGE_INMOBI" - InMobi.
	//   "EXCHANGE_SMAATO" - Smaato.
	//   "EXCHANGE_AJA" - Aja.
	//   "EXCHANGE_SUPERSHIP" - Supership.
	//   "EXCHANGE_NEXSTAR_DIGITAL" - Nexstar Digital.
	//   "EXCHANGE_WAZE" - Waze.
	//   "EXCHANGE_SOUNDCAST" - SoundCast.
	//   "EXCHANGE_SHARETHROUGH" - Sharethrough.
	//   "EXCHANGE_FYBER" - Fyber.
	//   "EXCHANGE_RED_FOR_PUBLISHERS" - Red For Publishers.
	//   "EXCHANGE_MEDIANET" - Media.net.
	//   "EXCHANGE_TAPJOY" - Tapjoy.
	//   "EXCHANGE_VISTAR" - Vistar.
	//   "EXCHANGE_DAX" - DAX.
	//   "EXCHANGE_JCD" - JCD.
	//   "EXCHANGE_PLACE_EXCHANGE" - Place Exchange.
	//   "EXCHANGE_APPLOVIN" - AppLovin.
	//   "EXCHANGE_CONNATIX" - Connatix.
	//   "EXCHANGE_RESET_DIGITAL" - Reset Digital.
	//   "EXCHANGE_HIVESTACK" - Hivestack.
	//   "EXCHANGE_DRAX" - Drax.
	//   "EXCHANGE_APPLOVIN_GBID" - AppLovin MAX.
	//   "EXCHANGE_FYBER_GBID" - DT Fairbid.
	//   "EXCHANGE_UNITY_GBID" - Unity LevelPlay.
	//   "EXCHANGE_CHARTBOOST_GBID" - Chartboost Mediation.
	//   "EXCHANGE_ADMOST_GBID" - AdMost.
	//   "EXCHANGE_TOPON_GBID" - TopOn.
	//   "EXCHANGE_NETFLIX" - Netflix.
	//   "EXCHANGE_CORE" - Core.
	//   "EXCHANGE_COMMERCE_GRID" - Commerce Grid.
	//   "EXCHANGE_SPOTIFY" - Spotify.
	//   "EXCHANGE_TUBI" - Tubi.
	Exchange string `json:"exchange,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Exchange") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Exchange") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ExchangeTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ExchangeTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ExitEvent: Exit event of the creative.
type ExitEvent struct {
	// Name: Optional. The name of the click tag of the exit event. The name must
	// be unique within one creative. Leave it empty or unset for creatives
	// containing image assets only.
	Name string `json:"name,omitempty"`
	// ReportingName: Optional. The name used to identify this event in reports.
	// Leave it empty or unset for creatives containing image assets only.
	ReportingName string `json:"reportingName,omitempty"`
	// Type: Required. The type of the exit event.
	//
	// Possible values:
	//   "EXIT_EVENT_TYPE_UNSPECIFIED" - Exit event type is not specified or is
	// unknown in this version.
	//   "EXIT_EVENT_TYPE_DEFAULT" - The exit event is the default one.
	//   "EXIT_EVENT_TYPE_BACKUP" - The exit event is a backup exit event. There
	// could be multiple backup exit events in a creative.
	Type string `json:"type,omitempty"`
	// Url: Required. The click through URL of the exit event. This is required
	// when type is: * `EXIT_EVENT_TYPE_DEFAULT` * `EXIT_EVENT_TYPE_BACKUP`
	Url string `json:"url,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Name") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Name") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ExitEvent) MarshalJSON() ([]byte, error) {
	type NoMethod ExitEvent
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// FirstPartyAndPartnerAudience: Describes a first or partner audience list
// used for targeting. First party audiences are created via usage of client
// data. Partner audiences are provided by Third Party data providers and can
// only be licensed to customers.
type FirstPartyAndPartnerAudience struct {
	// ActiveDisplayAudienceSize: Output only. The estimated audience size for the
	// Display network in the past month. If the size is less than 1000, the number
	// will be hidden and 0 will be returned due to privacy reasons. Otherwise, the
	// number will be rounded off to two significant digits. Only returned in GET
	// request.
	ActiveDisplayAudienceSize int64 `json:"activeDisplayAudienceSize,omitempty,string"`
	// AppId: Optional. The app_id matches with the type of the mobile_device_ids
	// being uploaded. Only applicable to audience_type `CUSTOMER_MATCH_DEVICE_ID`
	AppId string `json:"appId,omitempty"`
	// AudienceSource: Output only. The source of the audience.
	//
	// Possible values:
	//   "AUDIENCE_SOURCE_UNSPECIFIED" - Default value when audience source is not
	// specified or is unknown.
	//   "DISPLAY_VIDEO_360" - Originated from Display & Video 360.
	//   "CAMPAIGN_MANAGER" - Originated from Campaign Manager 360.
	//   "AD_MANAGER" - Originated from Google Ad Manager.
	//   "SEARCH_ADS_360" - Originated from Search Ads 360.
	//   "YOUTUBE" - Originated from Youtube.
	//   "ADS_DATA_HUB" - Originated from Ads Data Hub.
	AudienceSource string `json:"audienceSource,omitempty"`
	// AudienceType: Output only. The type of the audience.
	//
	// Possible values:
	//   "AUDIENCE_TYPE_UNSPECIFIED" - Default value when type is not specified or
	// is unknown.
	//   "CUSTOMER_MATCH_CONTACT_INFO" - Audience was generated through matching
	// customers to known contact information.
	//   "CUSTOMER_MATCH_DEVICE_ID" - Audience was generated through matching
	// customers to known Mobile device IDs.
	//   "CUSTOMER_MATCH_USER_ID" - Audience was generated through matching
	// customers to known User IDs.
	//   "ACTIVITY_BASED" - Audience was created based on campaign activity.
	//   "FREQUENCY_CAP" - Audience was created based on excluding the number of
	// impressions they were served.
	//   "TAG_BASED" - Audience was created based on custom variables attached to
	// pixel.
	//   "YOUTUBE_USERS" - Audience was created based on past interactions with
	// videos, YouTube ads, or YouTube channel.
	//   "THIRD_PARTY" - Audience has been licensed for use from a third party.
	//   "COMMERCE" - Audience provided by commerce partners for a fee.
	//   "LINEAR" - Audience for Linear TV content.
	AudienceType string `json:"audienceType,omitempty"`
	// ContactInfoList: Input only. A list of contact information to define the
	// initial audience members. Only applicable to audience_type
	// `CUSTOMER_MATCH_CONTACT_INFO`
	ContactInfoList *ContactInfoList `json:"contactInfoList,omitempty"`
	// Description: Output only. The user-provided description of the audience.
	// Only applicable to first party audiences.
	Description string `json:"description,omitempty"`
	// DisplayAudienceSize: Output only. The estimated audience size for the
	// Display network. If the size is less than 1000, the number will be hidden
	// and 0 will be returned due to privacy reasons. Otherwise, the number will be
	// rounded off to two significant digits. Only returned in GET request.
	DisplayAudienceSize int64 `json:"displayAudienceSize,omitempty,string"`
	// DisplayDesktopAudienceSize: Output only. The estimated desktop audience size
	// in Display network. If the size is less than 1000, the number will be hidden
	// and 0 will be returned due to privacy reasons. Otherwise, the number will be
	// rounded off to two significant digits. Only applicable to first party
	// audiences. Only returned in GET request.
	DisplayDesktopAudienceSize int64 `json:"displayDesktopAudienceSize,omitempty,string"`
	// DisplayMobileAppAudienceSize: Output only. The estimated mobile app audience
	// size in Display network. If the size is less than 1000, the number will be
	// hidden and 0 will be returned due to privacy reasons. Otherwise, the number
	// will be rounded off to two significant digits. Only applicable to first
	// party audiences. Only returned in GET request.
	DisplayMobileAppAudienceSize int64 `json:"displayMobileAppAudienceSize,omitempty,string"`
	// DisplayMobileWebAudienceSize: Output only. The estimated mobile web audience
	// size in Display network. If the size is less than 1000, the number will be
	// hidden and 0 will be returned due to privacy reasons. Otherwise, the number
	// will be rounded off to two significant digits. Only applicable to first
	// party audiences. Only returned in GET request.
	DisplayMobileWebAudienceSize int64 `json:"displayMobileWebAudienceSize,omitempty,string"`
	// DisplayName: Output only. The display name of the first party and partner
	// audience.
	DisplayName string `json:"displayName,omitempty"`
	// FirstPartyAndPartnerAudienceId: Identifier. The unique ID of the first party
	// and partner audience. Assigned by the system.
	FirstPartyAndPartnerAudienceId int64 `json:"firstPartyAndPartnerAudienceId,omitempty,string"`
	// FirstPartyAndPartnerAudienceType: Output only. Whether the audience is a
	// first party and partner audience.
	//
	// Possible values:
	//   "FIRST_PARTY_AND_PARTNER_AUDIENCE_TYPE_UNSPECIFIED" - Default value when
	// type is not specified or is unknown.
	//   "TYPE_FIRST_PARTY" - Audience that is created via usage of client data.
	//   "TYPE_PARTNER" - Audience that is provided by Third Party data providers.
	FirstPartyAndPartnerAudienceType string `json:"firstPartyAndPartnerAudienceType,omitempty"`
	// GmailAudienceSize: Output only. The estimated audience size for Gmail
	// network. If the size is less than 1000, the number will be hidden and 0 will
	// be returned due to privacy reasons. Otherwise, the number will be rounded
	// off to two significant digits. Only applicable to first party audiences.
	// Only returned in GET request.
	GmailAudienceSize int64 `json:"gmailAudienceSize,omitempty,string"`
	// MembershipDurationDays: Output only. The duration in days that an entry
	// remains in the audience after the qualifying event. The set value must be
	// greater than 0 and less than or equal to 540. Only applicable to first party
	// audiences. This field is required if one of the following audience_type is
	// used: * `CUSTOMER_MATCH_CONTACT_INFO` * `CUSTOMER_MATCH_DEVICE_ID`
	MembershipDurationDays int64 `json:"membershipDurationDays,omitempty,string"`
	// MobileDeviceIdList: Input only. A list of mobile device IDs to define the
	// initial audience members. Only applicable to audience_type
	// `CUSTOMER_MATCH_DEVICE_ID`
	MobileDeviceIdList *MobileDeviceIdList `json:"mobileDeviceIdList,omitempty"`
	// Name: Output only. The resource name of the first party and partner
	// audience.
	Name string `json:"name,omitempty"`
	// YoutubeAudienceSize: Output only. The estimated audience size for YouTube
	// network. If the size is less than 1000, the number will be hidden and 0 will
	// be returned due to privacy reasons. Otherwise, the number will be rounded
	// off to two significant digits. Only applicable to first party audiences.
	// Only returned in GET request.
	YoutubeAudienceSize int64 `json:"youtubeAudienceSize,omitempty,string"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "ActiveDisplayAudienceSize")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveDisplayAudienceSize") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s FirstPartyAndPartnerAudience) MarshalJSON() ([]byte, error) {
	type NoMethod FirstPartyAndPartnerAudience
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// FirstPartyAndPartnerAudienceGroup: Details of first party and partner
// audience group. All first party and partner audience targeting settings are
// logically ‘OR’ of each other.
type FirstPartyAndPartnerAudienceGroup struct {
	// Settings: Required. All first party and partner audience targeting settings
	// in first party and partner audience group. Repeated settings with the same
	// id are not allowed.
	Settings []*FirstPartyAndPartnerAudienceTargetingSetting `json:"settings,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Settings") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Settings") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s FirstPartyAndPartnerAudienceGroup) MarshalJSON() ([]byte, error) {
	type NoMethod FirstPartyAndPartnerAudienceGroup
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// FirstPartyAndPartnerAudienceTargetingSetting: Details of first party and
// partner audience targeting setting.
type FirstPartyAndPartnerAudienceTargetingSetting struct {
	// FirstPartyAndPartnerAudienceId: Required. First party and partner audience
	// id of the first party and partner audience targeting setting. This id is
	// first_party_and_partner_audience_id.
	FirstPartyAndPartnerAudienceId int64 `json:"firstPartyAndPartnerAudienceId,omitempty,string"`
	// Recency: Required. The recency of the first party and partner audience
	// targeting setting. Only applicable to first party audiences, otherwise will
	// be ignored. For more info, refer to
	// https://support.google.com/displayvideo/answer/2949947#recency When
	// unspecified, no recency limit will be used.
	//
	// Possible values:
	//   "RECENCY_NO_LIMIT" - No limit of recency.
	//   "RECENCY_1_MINUTE" - Recency is 1 minute.
	//   "RECENCY_5_MINUTES" - Recency is 5 minutes.
	//   "RECENCY_10_MINUTES" - Recency is 10 minutes.
	//   "RECENCY_15_MINUTES" - Recency is 15 minutes.
	//   "RECENCY_30_MINUTES" - Recency is 30 minutes.
	//   "RECENCY_1_HOUR" - Recency is 1 hour.
	//   "RECENCY_2_HOURS" - Recency is 2 hours.
	//   "RECENCY_3_HOURS" - Recency is 3 hours.
	//   "RECENCY_6_HOURS" - Recency is 6 hours.
	//   "RECENCY_12_HOURS" - Recency is 12 hours.
	//   "RECENCY_1_DAY" - Recency is 1 day.
	//   "RECENCY_2_DAYS" - Recency is 2 days.
	//   "RECENCY_3_DAYS" - Recency is 3 days.
	//   "RECENCY_5_DAYS" - Recency is 5 days.
	//   "RECENCY_7_DAYS" - Recency is 7 days.
	//   "RECENCY_10_DAYS" - Recency is 10 days.
	//   "RECENCY_14_DAYS" - Recency is 14 days.
	//   "RECENCY_15_DAYS" - Recency is 15 days.
	//   "RECENCY_21_DAYS" - Recency is 21 days.
	//   "RECENCY_28_DAYS" - Recency is 28 days.
	//   "RECENCY_30_DAYS" - Recency is 30 days.
	//   "RECENCY_40_DAYS" - Recency is 40 days.
	//   "RECENCY_45_DAYS" - Recency is 45 days.
	//   "RECENCY_60_DAYS" - Recency is 60 days.
	//   "RECENCY_90_DAYS" - Recency is 90 days.
	//   "RECENCY_120_DAYS" - Recency is 120 days.
	//   "RECENCY_180_DAYS" - Recency is 180 days.
	//   "RECENCY_270_DAYS" - Recency is 270 days.
	//   "RECENCY_365_DAYS" - Recency is 365 days.
	Recency string `json:"recency,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "FirstPartyAndPartnerAudienceId") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "FirstPartyAndPartnerAudienceId")
	// to include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s FirstPartyAndPartnerAudienceTargetingSetting) MarshalJSON() ([]byte, error) {
	type NoMethod FirstPartyAndPartnerAudienceTargetingSetting
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// FixedBidStrategy: A strategy that uses a fixed bidding price.
type FixedBidStrategy struct {
	// BidAmountMicros: The fixed bid amount, in micros of the advertiser's
	// currency. For insertion order entity, bid_amount_micros should be set as 0.
	// For line item entity, bid_amount_micros must be greater than or equal to
	// billable unit of the given currency and smaller than or equal to the upper
	// limit 1000000000. For example, 1500000 represents 1.5 standard units of the
	// currency.
	BidAmountMicros int64 `json:"bidAmountMicros,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "BidAmountMicros") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BidAmountMicros") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s FixedBidStrategy) MarshalJSON() ([]byte, error) {
	type NoMethod FixedBidStrategy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// FloodlightActivity: A single Floodlight activity.
type FloodlightActivity struct {
	// AdvertiserIds: Output only. IDs of the advertisers that have access to the
	// parent Floodlight group. Only advertisers under the provided partner ID will
	// be listed in this field.
	AdvertiserIds googleapi.Int64s `json:"advertiserIds,omitempty"`
	// DisplayName: Required. The display name of the Floodlight activity.
	DisplayName string `json:"displayName,omitempty"`
	// FloodlightActivityId: Output only. The unique ID of the Floodlight activity.
	// Assigned by the system.
	FloodlightActivityId int64 `json:"floodlightActivityId,omitempty,string"`
	// FloodlightGroupId: Required. Immutable. The ID of the parent Floodlight
	// group.
	FloodlightGroupId int64 `json:"floodlightGroupId,omitempty,string"`
	// Name: Output only. The resource name of the Floodlight activity.
	Name string `json:"name,omitempty"`
	// RemarketingConfigs: Output only. A list of configuration objects designating
	// whether remarketing for this Floodlight Activity is enabled and available
	// for a specifc advertiser. If enabled, this Floodlight Activity generates a
	// remarketing user list that is able to be used in targeting under the
	// advertiser.
	RemarketingConfigs []*RemarketingConfig `json:"remarketingConfigs,omitempty"`
	// ServingStatus: Optional. Whether the Floodlight activity is served.
	//
	// Possible values:
	//   "FLOODLIGHT_ACTIVITY_SERVING_STATUS_UNSPECIFIED" - Type value is not
	// specified or is unknown in this version.
	//   "FLOODLIGHT_ACTIVITY_SERVING_STATUS_ENABLED" - Enabled.
	//   "FLOODLIGHT_ACTIVITY_SERVING_STATUS_DISABLED" - Disabled.
	ServingStatus string `json:"servingStatus,omitempty"`
	// SslRequired: Output only. Whether tags are required to be compliant.
	SslRequired bool `json:"sslRequired,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserIds") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserIds") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s FloodlightActivity) MarshalJSON() ([]byte, error) {
	type NoMethod FloodlightActivity
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// FloodlightGroup: A single Floodlight group.
type FloodlightGroup struct {
	// ActiveViewConfig: The Active View video viewability metric configuration for
	// the Floodlight group.
	ActiveViewConfig *ActiveViewVideoViewabilityMetricConfig `json:"activeViewConfig,omitempty"`
	// CustomVariables: User-defined custom variables owned by the Floodlight
	// group. Use custom Floodlight variables to create reporting data that is
	// tailored to your unique business needs. Custom Floodlight variables use the
	// keys `U1=`, `U2=`, and so on, and can take any values that you choose to
	// pass to them. You can use them to track virtually any type of data that you
	// collect about your customers, such as the genre of movie that a customer
	// purchases, the country to which the item is shipped, and so on. Custom
	// Floodlight variables may not be used to pass any data that could be used or
	// recognized as personally identifiable information (PII). Example:
	// `custom_variables { fields { "U1": value { number_value: 123.4 }, "U2":
	// value { string_value: "MyVariable2" }, "U3": value { string_value:
	// "MyVariable3" } } }` Acceptable values for keys are "U1" through "U100",
	// inclusive. String values must be less than 64 characters long, and cannot
	// contain the following characters: "<>`.
	CustomVariables googleapi.RawMessage `json:"customVariables,omitempty"`
	// DisplayName: Required. The display name of the Floodlight group.
	DisplayName string `json:"displayName,omitempty"`
	// FloodlightGroupId: Output only. The unique ID of the Floodlight group.
	// Assigned by the system.
	FloodlightGroupId int64 `json:"floodlightGroupId,omitempty,string"`
	// LookbackWindow: Required. The lookback window for the Floodlight group. Both
	// click_days and impression_days are required. Acceptable values for both are
	// `0` to `90`, inclusive.
	LookbackWindow *LookbackWindow `json:"lookbackWindow,omitempty"`
	// Name: Output only. The resource name of the Floodlight group.
	Name string `json:"name,omitempty"`
	// WebTagType: Required. The web tag type enabled for the Floodlight group.
	//
	// Possible values:
	//   "WEB_TAG_TYPE_UNSPECIFIED" - Type value is not specified or is unknown in
	// this version.
	//   "WEB_TAG_TYPE_NONE" - No tag type.
	//   "WEB_TAG_TYPE_IMAGE" - Image tag.
	//   "WEB_TAG_TYPE_DYNAMIC" - Dynamic tag.
	WebTagType string `json:"webTagType,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "ActiveViewConfig") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveViewConfig") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s FloodlightGroup) MarshalJSON() ([]byte, error) {
	type NoMethod FloodlightGroup
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// FrequencyCap: Settings that control the number of times a user may be shown
// with the same ad during a given time period.
type FrequencyCap struct {
	// MaxImpressions: The maximum number of times a user may be shown the same ad
	// during this period. Must be greater than 0. Required when unlimited is
	// `false` and max_views is not set.
	MaxImpressions int64 `json:"maxImpressions,omitempty"`
	// MaxViews: Optional. The maximum number of times a user may click-through or
	// fully view an ad during this period until it is no longer served to them.
	// Must be greater than 0. Only applicable to YouTube and Partners resources.
	// Required when unlimited is `false` and max_impressions is not set.
	MaxViews int64 `json:"maxViews,omitempty"`
	// TimeUnit: The time unit in which the frequency cap will be applied. Required
	// when unlimited is `false`.
	//
	// Possible values:
	//   "TIME_UNIT_UNSPECIFIED" - Time unit value is not specified or is unknown
	// in this version.
	//   "TIME_UNIT_LIFETIME" - The frequency cap will be applied to the whole life
	// time of the line item.
	//   "TIME_UNIT_MONTHS" - The frequency cap will be applied to a number of
	// months.
	//   "TIME_UNIT_WEEKS" - The frequency cap will be applied to a number of
	// weeks.
	//   "TIME_UNIT_DAYS" - The frequency cap will be applied to a number of days.
	//   "TIME_UNIT_HOURS" - The frequency cap will be applied to a number of
	// hours.
	//   "TIME_UNIT_MINUTES" - The frequency cap will be applied to a number of
	// minutes.
	TimeUnit string `json:"timeUnit,omitempty"`
	// TimeUnitCount: The number of time_unit the frequency cap will last. Required
	// when unlimited is `false`. The following restrictions apply based on the
	// value of time_unit: * `TIME_UNIT_MONTHS` - must be 1 * `TIME_UNIT_WEEKS` -
	// must be between 1 and 4 * `TIME_UNIT_DAYS` - must be between 1 and 6 *
	// `TIME_UNIT_HOURS` - must be between 1 and 23 * `TIME_UNIT_MINUTES` - must be
	// between 1 and 59
	TimeUnitCount int64 `json:"timeUnitCount,omitempty"`
	// Unlimited: Whether unlimited frequency capping is applied. When this field
	// is set to `true`, the remaining frequency cap fields are not applicable.
	Unlimited bool `json:"unlimited,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MaxImpressions") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "MaxImpressions") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s FrequencyCap) MarshalJSON() ([]byte, error) {
	type NoMethod FrequencyCap
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GenderAssignedTargetingOptionDetails: Details for assigned gender targeting
// option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is `TARGETING_TYPE_GENDER`.
type GenderAssignedTargetingOptionDetails struct {
	// Gender: Required. The gender of the audience.
	//
	// Possible values:
	//   "GENDER_UNSPECIFIED" - Default value when gender is not specified in this
	// version. This enum is a place holder for default value and does not
	// represent a real gender option.
	//   "GENDER_MALE" - The audience gender is male.
	//   "GENDER_FEMALE" - The audience gender is female.
	//   "GENDER_UNKNOWN" - The audience gender is unknown.
	Gender string `json:"gender,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Gender") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Gender") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GenderAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GenderAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GenderTargetingOptionDetails: Represents a targetable gender. This will be
// populated in the gender_details field of a TargetingOption when
// targeting_type is `TARGETING_TYPE_GENDER`.
type GenderTargetingOptionDetails struct {
	// Gender: Output only. The gender of an audience.
	//
	// Possible values:
	//   "GENDER_UNSPECIFIED" - Default value when gender is not specified in this
	// version. This enum is a place holder for default value and does not
	// represent a real gender option.
	//   "GENDER_MALE" - The audience gender is male.
	//   "GENDER_FEMALE" - The audience gender is female.
	//   "GENDER_UNKNOWN" - The audience gender is unknown.
	Gender string `json:"gender,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Gender") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Gender") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GenderTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GenderTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GenerateDefaultLineItemRequest: Request message for
// LineItemService.GenerateDefaultLineItem.
type GenerateDefaultLineItemRequest struct {
	// DisplayName: Required. The display name of the line item. Must be UTF-8
	// encoded with a maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// InsertionOrderId: Required. The unique ID of the insertion order that the
	// line item belongs to.
	InsertionOrderId int64 `json:"insertionOrderId,omitempty,string"`
	// LineItemType: Required. The type of the line item.
	//
	// Possible values:
	//   "LINE_ITEM_TYPE_UNSPECIFIED" - Type value is not specified or is unknown
	// in this version. Line items of this type and their targeting cannot be
	// created or updated using the API.
	//   "LINE_ITEM_TYPE_DISPLAY_DEFAULT" - Image, HTML5, native, or rich media
	// ads.
	//   "LINE_ITEM_TYPE_DISPLAY_MOBILE_APP_INSTALL" - Display ads that drive
	// installs of an app.
	//   "LINE_ITEM_TYPE_VIDEO_DEFAULT" - Video ads sold on a CPM basis for a
	// variety of environments.
	//   "LINE_ITEM_TYPE_VIDEO_MOBILE_APP_INSTALL" - Video ads that drive installs
	// of an app.
	//   "LINE_ITEM_TYPE_DISPLAY_MOBILE_APP_INVENTORY" - Display ads served on
	// mobile app inventory. Line items of this type and their targeting cannot be
	// created or updated using the API.
	//   "LINE_ITEM_TYPE_VIDEO_MOBILE_APP_INVENTORY" - Video ads served on mobile
	// app inventory. Line items of this type and their targeting cannot be created
	// or updated using the API.
	//   "LINE_ITEM_TYPE_AUDIO_DEFAULT" - RTB Audio ads sold for a variety of
	// environments.
	//   "LINE_ITEM_TYPE_VIDEO_OVER_THE_TOP" - Over-the-top ads present in OTT
	// insertion orders. This type is only applicable to line items with an
	// insertion order of insertion_order_type `OVER_THE_TOP`.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_ACTION" - YouTube video ads that
	// promote conversions. Line items of this type and their targeting cannot be
	// created or updated using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_NON_SKIPPABLE" - YouTube video ads
	// (up to 15 seconds) that cannot be skipped. Line items of this type and their
	// targeting cannot be created or updated using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_VIDEO_SEQUENCE" - YouTube video ads
	// that show a story in a particular sequence using a mix of formats. Line
	// items of this type and their targeting cannot be created or updated using
	// the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_AUDIO" - YouTube audio ads. Line
	// items of this type and their targeting cannot be created or updated using
	// the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_REACH" - YouTube video ads that
	// optimize reaching more unique users at lower cost. May include bumper ads,
	// skippable in-stream ads, or a mix of types. Line items of this type and
	// their targeting cannot be created or updated using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_SIMPLE" - Default YouTube video ads.
	// Line items of this type and their targeting cannot be created or updated
	// using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_NON_SKIPPABLE_OVER_THE_TOP" -
	// Connected TV youTube video ads (up to 15 seconds) that cannot be skipped.
	// Line items of this type and their targeting cannot be created or updated
	// using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_REACH_OVER_THE_TOP" - Connected TV
	// youTube video ads that optimize reaching more unique users at lower cost.
	// May include bumper ads, skippable in-stream ads, or a mix of types. Line
	// items of this type and their targeting cannot be created or updated using
	// the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_SIMPLE_OVER_THE_TOP" - Connected TV
	// default YouTube video ads. Only include in-stream ad-format. Line items of
	// this type and their targeting cannot be created or updated using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_TARGET_FREQUENCY" - The goal of this
	// line item type is to show the YouTube ads target number of times to the same
	// person in a certain period of time. Line items of this type and their
	// targeting cannot be created or updated using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_VIEW" - YouTube video ads that aim to
	// get more views with a variety of ad formats. Line items of this type and
	// their targeting cannot be created or updated using the API.
	//   "LINE_ITEM_TYPE_DISPLAY_OUT_OF_HOME" - Display ads served on
	// digital-out-of-home inventory. Line items of this type and their targeting
	// cannot be created or updated using the API.
	//   "LINE_ITEM_TYPE_VIDEO_OUT_OF_HOME" - Video ads served on
	// digital-out-of-home inventory. Line items of this type and their targeting
	// cannot be created or updated using the API.
	LineItemType string `json:"lineItemType,omitempty"`
	// MobileApp: The mobile app promoted by the line item. This is applicable only
	// when line_item_type is either `LINE_ITEM_TYPE_DISPLAY_MOBILE_APP_INSTALL` or
	// `LINE_ITEM_TYPE_VIDEO_MOBILE_APP_INSTALL`.
	MobileApp *MobileApp `json:"mobileApp,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GenerateDefaultLineItemRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GenerateDefaultLineItemRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GeoRegionAssignedTargetingOptionDetails: Details for assigned geographic
// region targeting option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is `TARGETING_TYPE_GEO_REGION`.
type GeoRegionAssignedTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the geographic region (e.g.,
	// "Ontario, Canada").
	DisplayName string `json:"displayName,omitempty"`
	// GeoRegionType: Output only. The type of geographic region targeting.
	//
	// Possible values:
	//   "GEO_REGION_TYPE_UNKNOWN" - The geographic region type is unknown.
	//   "GEO_REGION_TYPE_OTHER" - The geographic region type is other.
	//   "GEO_REGION_TYPE_COUNTRY" - The geographic region is a country.
	//   "GEO_REGION_TYPE_REGION" - The geographic region type is region.
	//   "GEO_REGION_TYPE_TERRITORY" - The geographic region is a territory.
	//   "GEO_REGION_TYPE_PROVINCE" - The geographic region is a province.
	//   "GEO_REGION_TYPE_STATE" - The geographic region is a state.
	//   "GEO_REGION_TYPE_PREFECTURE" - The geographic region is a prefecture.
	//   "GEO_REGION_TYPE_GOVERNORATE" - The geographic region is a governorate.
	//   "GEO_REGION_TYPE_CANTON" - The geographic region is a canton.
	//   "GEO_REGION_TYPE_UNION_TERRITORY" - The geographic region is a union
	// territory.
	//   "GEO_REGION_TYPE_AUTONOMOUS_COMMUNITY" - The geographic region is an
	// autonomous community.
	//   "GEO_REGION_TYPE_DMA_REGION" - The geographic region is a designated
	// market area (DMA) region.
	//   "GEO_REGION_TYPE_METRO" - The geographic region type is metro.
	//   "GEO_REGION_TYPE_CONGRESSIONAL_DISTRICT" - The geographic region is a
	// congressional district.
	//   "GEO_REGION_TYPE_COUNTY" - The geographic region is a county.
	//   "GEO_REGION_TYPE_MUNICIPALITY" - The geographic region is a municipality.
	//   "GEO_REGION_TYPE_CITY" - The geographic region is a city.
	//   "GEO_REGION_TYPE_POSTAL_CODE" - The geographic region targeting type is
	// postal code.
	//   "GEO_REGION_TYPE_DEPARTMENT" - The geographic region targeting type is
	// department.
	//   "GEO_REGION_TYPE_AIRPORT" - The geographic region is an airport.
	//   "GEO_REGION_TYPE_TV_REGION" - The geographic region is a TV region.
	//   "GEO_REGION_TYPE_OKRUG" - The geographic region is an okrug.
	//   "GEO_REGION_TYPE_BOROUGH" - The geographic region is a borough.
	//   "GEO_REGION_TYPE_CITY_REGION" - The geographic region is a city region.
	//   "GEO_REGION_TYPE_ARRONDISSEMENT" - The geographic region is an
	// arrondissement.
	//   "GEO_REGION_TYPE_NEIGHBORHOOD" - The geographic region is a neighborhood.
	//   "GEO_REGION_TYPE_UNIVERSITY" - The geographic region is a university.
	//   "GEO_REGION_TYPE_DISTRICT" - The geographic region is a district.
	//   "GEO_REGION_TYPE_NATIONAL_PARK" - The geographic region is a national
	// park.
	//   "GEO_REGION_TYPE_BARRIO" - The geographic region is a barrio.
	//   "GEO_REGION_TYPE_SUB_WARD" - The geographic region is a sub ward.
	//   "GEO_REGION_TYPE_MUNICIPALITY_DISTRICT" - The geographic region is a
	// municipality district.
	//   "GEO_REGION_TYPE_SUB_DISTRICT" - The geographic region is a sub district.
	//   "GEO_REGION_TYPE_QUARTER" - The geographic region is a quarter.
	//   "GEO_REGION_TYPE_DIVISION" - The geographic region is a division.
	//   "GEO_REGION_TYPE_COMMUNE" - The geographic region is a commune.
	//   "GEO_REGION_TYPE_COLLOQUIAL_AREA" - The geographic region is a colloquial
	// area.
	GeoRegionType string `json:"geoRegionType,omitempty"`
	// Negative: Indicates if this option is being negatively targeted.
	Negative bool `json:"negative,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id of a TargetingOption of
	// type `TARGETING_TYPE_GEO_REGION`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GeoRegionAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GeoRegionAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GeoRegionSearchTerms: Search terms for geo region targeting options.
type GeoRegionSearchTerms struct {
	// GeoRegionQuery: The search query for the desired geo region. The query can
	// be a prefix, e.g. "New Yor", "Seattle", "USA", etc.
	GeoRegionQuery string `json:"geoRegionQuery,omitempty"`
	// ForceSendFields is a list of field names (e.g. "GeoRegionQuery") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "GeoRegionQuery") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GeoRegionSearchTerms) MarshalJSON() ([]byte, error) {
	type NoMethod GeoRegionSearchTerms
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GeoRegionTargetingOptionDetails: Represents a targetable geographic region.
// This will be populated in the geo_region_details field when targeting_type
// is `TARGETING_TYPE_GEO_REGION`.
type GeoRegionTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the geographic region (e.g.,
	// "Ontario, Canada").
	DisplayName string `json:"displayName,omitempty"`
	// GeoRegionType: Output only. The type of geographic region targeting.
	//
	// Possible values:
	//   "GEO_REGION_TYPE_UNKNOWN" - The geographic region type is unknown.
	//   "GEO_REGION_TYPE_OTHER" - The geographic region type is other.
	//   "GEO_REGION_TYPE_COUNTRY" - The geographic region is a country.
	//   "GEO_REGION_TYPE_REGION" - The geographic region type is region.
	//   "GEO_REGION_TYPE_TERRITORY" - The geographic region is a territory.
	//   "GEO_REGION_TYPE_PROVINCE" - The geographic region is a province.
	//   "GEO_REGION_TYPE_STATE" - The geographic region is a state.
	//   "GEO_REGION_TYPE_PREFECTURE" - The geographic region is a prefecture.
	//   "GEO_REGION_TYPE_GOVERNORATE" - The geographic region is a governorate.
	//   "GEO_REGION_TYPE_CANTON" - The geographic region is a canton.
	//   "GEO_REGION_TYPE_UNION_TERRITORY" - The geographic region is a union
	// territory.
	//   "GEO_REGION_TYPE_AUTONOMOUS_COMMUNITY" - The geographic region is an
	// autonomous community.
	//   "GEO_REGION_TYPE_DMA_REGION" - The geographic region is a designated
	// market area (DMA) region.
	//   "GEO_REGION_TYPE_METRO" - The geographic region type is metro.
	//   "GEO_REGION_TYPE_CONGRESSIONAL_DISTRICT" - The geographic region is a
	// congressional district.
	//   "GEO_REGION_TYPE_COUNTY" - The geographic region is a county.
	//   "GEO_REGION_TYPE_MUNICIPALITY" - The geographic region is a municipality.
	//   "GEO_REGION_TYPE_CITY" - The geographic region is a city.
	//   "GEO_REGION_TYPE_POSTAL_CODE" - The geographic region targeting type is
	// postal code.
	//   "GEO_REGION_TYPE_DEPARTMENT" - The geographic region targeting type is
	// department.
	//   "GEO_REGION_TYPE_AIRPORT" - The geographic region is an airport.
	//   "GEO_REGION_TYPE_TV_REGION" - The geographic region is a TV region.
	//   "GEO_REGION_TYPE_OKRUG" - The geographic region is an okrug.
	//   "GEO_REGION_TYPE_BOROUGH" - The geographic region is a borough.
	//   "GEO_REGION_TYPE_CITY_REGION" - The geographic region is a city region.
	//   "GEO_REGION_TYPE_ARRONDISSEMENT" - The geographic region is an
	// arrondissement.
	//   "GEO_REGION_TYPE_NEIGHBORHOOD" - The geographic region is a neighborhood.
	//   "GEO_REGION_TYPE_UNIVERSITY" - The geographic region is a university.
	//   "GEO_REGION_TYPE_DISTRICT" - The geographic region is a district.
	//   "GEO_REGION_TYPE_NATIONAL_PARK" - The geographic region is a national
	// park.
	//   "GEO_REGION_TYPE_BARRIO" - The geographic region is a barrio.
	//   "GEO_REGION_TYPE_SUB_WARD" - The geographic region is a sub ward.
	//   "GEO_REGION_TYPE_MUNICIPALITY_DISTRICT" - The geographic region is a
	// municipality district.
	//   "GEO_REGION_TYPE_SUB_DISTRICT" - The geographic region is a sub district.
	//   "GEO_REGION_TYPE_QUARTER" - The geographic region is a quarter.
	//   "GEO_REGION_TYPE_DIVISION" - The geographic region is a division.
	//   "GEO_REGION_TYPE_COMMUNE" - The geographic region is a commune.
	//   "GEO_REGION_TYPE_COLLOQUIAL_AREA" - The geographic region is a colloquial
	// area.
	GeoRegionType string `json:"geoRegionType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GeoRegionTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GeoRegionTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleAudience: Describes a Google audience resource. Includes Google
// audience lists.
type GoogleAudience struct {
	// DisplayName: Output only. The display name of the Google audience. .
	DisplayName string `json:"displayName,omitempty"`
	// GoogleAudienceId: Output only. The unique ID of the Google audience.
	// Assigned by the system.
	GoogleAudienceId int64 `json:"googleAudienceId,omitempty,string"`
	// GoogleAudienceType: Output only. The type of Google audience. .
	//
	// Possible values:
	//   "GOOGLE_AUDIENCE_TYPE_UNSPECIFIED" - Default value when type is not
	// specified or is unknown.
	//   "GOOGLE_AUDIENCE_TYPE_AFFINITY" - Affinity type Google audience.
	//   "GOOGLE_AUDIENCE_TYPE_IN_MARKET" - In-Market type Google audience.
	//   "GOOGLE_AUDIENCE_TYPE_INSTALLED_APPS" - Installed-Apps type Google
	// audience.
	//   "GOOGLE_AUDIENCE_TYPE_NEW_MOBILE_DEVICES" - New-Mobile-Devices type Google
	// audience.
	//   "GOOGLE_AUDIENCE_TYPE_LIFE_EVENT" - Life-Event type Google audience.
	//   "GOOGLE_AUDIENCE_TYPE_EXTENDED_DEMOGRAPHIC" - Extended-Demographic type
	// Google audience.
	GoogleAudienceType string `json:"googleAudienceType,omitempty"`
	// Name: Output only. The resource name of the google audience.
	Name string `json:"name,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleAudience) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAudience
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleAudienceGroup: Details of Google audience group. All Google audience
// targeting settings are logically ‘OR’ of each other.
type GoogleAudienceGroup struct {
	// Settings: Required. All Google audience targeting settings in Google
	// audience group. Repeated settings with the same id will be ignored.
	Settings []*GoogleAudienceTargetingSetting `json:"settings,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Settings") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Settings") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleAudienceGroup) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAudienceGroup
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleAudienceTargetingSetting: Details of Google audience targeting
// setting.
type GoogleAudienceTargetingSetting struct {
	// GoogleAudienceId: Required. Google audience id of the Google audience
	// targeting setting. This id is google_audience_id.
	GoogleAudienceId int64 `json:"googleAudienceId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "GoogleAudienceId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "GoogleAudienceId") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleAudienceTargetingSetting) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleAudienceTargetingSetting
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleBytestreamMedia: Media resource.
type GoogleBytestreamMedia struct {
	// ResourceName: Name of the media resource.
	ResourceName string `json:"resourceName,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "ResourceName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ResourceName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleBytestreamMedia) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleBytestreamMedia
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GuaranteedOrder: A guaranteed order. Guaranteed orders are parent entity of
// guaranteed inventory sources. When creating a guaranteed inventory source, a
// guaranteed order ID must be assigned to the inventory source.
type GuaranteedOrder struct {
	// DefaultAdvertiserId: Output only. The ID of default advertiser of the
	// guaranteed order. The default advertiser is either the
	// read_write_advertiser_id or, if that is not set, the first advertiser listed
	// in read_advertiser_ids. Otherwise, there is no default advertiser.
	DefaultAdvertiserId int64 `json:"defaultAdvertiserId,omitempty,string"`
	// DefaultCampaignId: The ID of the default campaign that is assigned to the
	// guaranteed order. The default campaign must belong to the default
	// advertiser.
	DefaultCampaignId int64 `json:"defaultCampaignId,omitempty,string"`
	// DisplayName: Required. The display name of the guaranteed order. Must be
	// UTF-8 encoded with a maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// Exchange: Required. Immutable. The exchange where the guaranteed order
	// originated.
	//
	// Possible values:
	//   "EXCHANGE_UNSPECIFIED" - Exchange is not specified or is unknown in this
	// version.
	//   "EXCHANGE_GOOGLE_AD_MANAGER" - Google Ad Manager.
	//   "EXCHANGE_APPNEXUS" - AppNexus.
	//   "EXCHANGE_BRIGHTROLL" - BrightRoll Exchange for Video from Yahoo!.
	//   "EXCHANGE_ADFORM" - Adform.
	//   "EXCHANGE_ADMETA" - Admeta.
	//   "EXCHANGE_ADMIXER" - Admixer.
	//   "EXCHANGE_ADSMOGO" - AdsMogo.
	//   "EXCHANGE_ADSWIZZ" - AdsWizz.
	//   "EXCHANGE_BIDSWITCH" - BidSwitch.
	//   "EXCHANGE_BRIGHTROLL_DISPLAY" - BrightRoll Exchange for Display from
	// Yahoo!.
	//   "EXCHANGE_CADREON" - Cadreon.
	//   "EXCHANGE_DAILYMOTION" - Dailymotion.
	//   "EXCHANGE_FIVE" - Five.
	//   "EXCHANGE_FLUCT" - Fluct.
	//   "EXCHANGE_FREEWHEEL" - FreeWheel SSP.
	//   "EXCHANGE_GENIEE" - Geniee.
	//   "EXCHANGE_GUMGUM" - GumGum.
	//   "EXCHANGE_IMOBILE" - i-mobile.
	//   "EXCHANGE_IBILLBOARD" - iBILLBOARD.
	//   "EXCHANGE_IMPROVE_DIGITAL" - Improve Digital.
	//   "EXCHANGE_INDEX" - Index Exchange.
	//   "EXCHANGE_KARGO" - Kargo.
	//   "EXCHANGE_MICROAD" - MicroAd.
	//   "EXCHANGE_MOPUB" - MoPub.
	//   "EXCHANGE_NEND" - Nend.
	//   "EXCHANGE_ONE_BY_AOL_DISPLAY" - ONE by AOL: Display Market Place.
	//   "EXCHANGE_ONE_BY_AOL_MOBILE" - ONE by AOL: Mobile.
	//   "EXCHANGE_ONE_BY_AOL_VIDEO" - ONE by AOL: Video.
	//   "EXCHANGE_OOYALA" - Ooyala.
	//   "EXCHANGE_OPENX" - OpenX.
	//   "EXCHANGE_PERMODO" - Permodo.
	//   "EXCHANGE_PLATFORMONE" - Platform One.
	//   "EXCHANGE_PLATFORMID" - PlatformId.
	//   "EXCHANGE_PUBMATIC" - PubMatic.
	//   "EXCHANGE_PULSEPOINT" - PulsePoint.
	//   "EXCHANGE_REVENUEMAX" - RevenueMax.
	//   "EXCHANGE_RUBICON" - Rubicon.
	//   "EXCHANGE_SMARTCLIP" - SmartClip.
	//   "EXCHANGE_SMARTRTB" - SmartRTB+.
	//   "EXCHANGE_SMARTSTREAMTV" - SmartstreamTv.
	//   "EXCHANGE_SOVRN" - Sovrn.
	//   "EXCHANGE_SPOTXCHANGE" - SpotXchange.
	//   "EXCHANGE_STROER" - Ströer SSP.
	//   "EXCHANGE_TEADSTV" - TeadsTv.
	//   "EXCHANGE_TELARIA" - Telaria.
	//   "EXCHANGE_TVN" - TVN.
	//   "EXCHANGE_UNITED" - United.
	//   "EXCHANGE_YIELDLAB" - Yieldlab.
	//   "EXCHANGE_YIELDMO" - Yieldmo.
	//   "EXCHANGE_UNRULYX" - UnrulyX.
	//   "EXCHANGE_OPEN8" - Open8.
	//   "EXCHANGE_TRITON" - Triton.
	//   "EXCHANGE_TRIPLELIFT" - TripleLift.
	//   "EXCHANGE_TABOOLA" - Taboola.
	//   "EXCHANGE_INMOBI" - InMobi.
	//   "EXCHANGE_SMAATO" - Smaato.
	//   "EXCHANGE_AJA" - Aja.
	//   "EXCHANGE_SUPERSHIP" - Supership.
	//   "EXCHANGE_NEXSTAR_DIGITAL" - Nexstar Digital.
	//   "EXCHANGE_WAZE" - Waze.
	//   "EXCHANGE_SOUNDCAST" - SoundCast.
	//   "EXCHANGE_SHARETHROUGH" - Sharethrough.
	//   "EXCHANGE_FYBER" - Fyber.
	//   "EXCHANGE_RED_FOR_PUBLISHERS" - Red For Publishers.
	//   "EXCHANGE_MEDIANET" - Media.net.
	//   "EXCHANGE_TAPJOY" - Tapjoy.
	//   "EXCHANGE_VISTAR" - Vistar.
	//   "EXCHANGE_DAX" - DAX.
	//   "EXCHANGE_JCD" - JCD.
	//   "EXCHANGE_PLACE_EXCHANGE" - Place Exchange.
	//   "EXCHANGE_APPLOVIN" - AppLovin.
	//   "EXCHANGE_CONNATIX" - Connatix.
	//   "EXCHANGE_RESET_DIGITAL" - Reset Digital.
	//   "EXCHANGE_HIVESTACK" - Hivestack.
	//   "EXCHANGE_DRAX" - Drax.
	//   "EXCHANGE_APPLOVIN_GBID" - AppLovin MAX.
	//   "EXCHANGE_FYBER_GBID" - DT Fairbid.
	//   "EXCHANGE_UNITY_GBID" - Unity LevelPlay.
	//   "EXCHANGE_CHARTBOOST_GBID" - Chartboost Mediation.
	//   "EXCHANGE_ADMOST_GBID" - AdMost.
	//   "EXCHANGE_TOPON_GBID" - TopOn.
	//   "EXCHANGE_NETFLIX" - Netflix.
	//   "EXCHANGE_CORE" - Core.
	//   "EXCHANGE_COMMERCE_GRID" - Commerce Grid.
	//   "EXCHANGE_SPOTIFY" - Spotify.
	//   "EXCHANGE_TUBI" - Tubi.
	Exchange string `json:"exchange,omitempty"`
	// GuaranteedOrderId: Output only. The unique identifier of the guaranteed
	// order. The guaranteed order IDs have the format
	// `{exchange}-{legacy_guaranteed_order_id}`.
	GuaranteedOrderId string `json:"guaranteedOrderId,omitempty"`
	// LegacyGuaranteedOrderId: Output only. The legacy ID of the guaranteed order.
	// Assigned by the original exchange. The legacy ID is unique within one
	// exchange, but is not guaranteed to be unique across all guaranteed orders.
	// This ID is used in SDF and UI.
	LegacyGuaranteedOrderId string `json:"legacyGuaranteedOrderId,omitempty"`
	// Name: Output only. The resource name of the guaranteed order.
	Name string `json:"name,omitempty"`
	// PublisherName: Required. The publisher name of the guaranteed order. Must be
	// UTF-8 encoded with a maximum size of 240 bytes.
	PublisherName string `json:"publisherName,omitempty"`
	// ReadAccessInherited: Whether all advertisers of read_write_partner_id have
	// read access to the guaranteed order. Only applicable if
	// read_write_partner_id is set. If True, overrides read_advertiser_ids.
	ReadAccessInherited bool `json:"readAccessInherited,omitempty"`
	// ReadAdvertiserIds: The IDs of advertisers with read access to the guaranteed
	// order. This field must not include the advertiser assigned to
	// read_write_advertiser_id if it is set. All advertisers in this field must
	// belong to read_write_partner_id or the same partner as
	// read_write_advertiser_id.
	ReadAdvertiserIds googleapi.Int64s `json:"readAdvertiserIds,omitempty"`
	// ReadWriteAdvertiserId: The advertiser with read/write access to the
	// guaranteed order. This is also the default advertiser of the guaranteed
	// order.
	ReadWriteAdvertiserId int64 `json:"readWriteAdvertiserId,omitempty,string"`
	// ReadWritePartnerId: The partner with read/write access to the guaranteed
	// order.
	ReadWritePartnerId int64 `json:"readWritePartnerId,omitempty,string"`
	// Status: The status settings of the guaranteed order.
	Status *GuaranteedOrderStatus `json:"status,omitempty"`
	// UpdateTime: Output only. The timestamp when the guaranteed order was last
	// updated. Assigned by the system.
	UpdateTime string `json:"updateTime,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "DefaultAdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DefaultAdvertiserId") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GuaranteedOrder) MarshalJSON() ([]byte, error) {
	type NoMethod GuaranteedOrder
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GuaranteedOrderStatus: The status settings of the guaranteed order.
type GuaranteedOrderStatus struct {
	// ConfigStatus: Output only. The configuration status of the guaranteed order.
	// Acceptable values are `PENDING` and `COMPLETED`. A guaranteed order must be
	// configured (fill in the required fields, choose creatives, and select a
	// default campaign) before it can serve. Currently the configuration action
	// can only be performed via UI.
	//
	// Possible values:
	//   "GUARANTEED_ORDER_CONFIG_STATUS_UNSPECIFIED" - The approval status is not
	// specified or is unknown in this version.
	//   "PENDING" - The beginning state of a guaranteed order. The guaranteed
	// order in this state needs to be configured before it can serve.
	//   "COMPLETED" - The state after the buyer configures a guaranteed order.
	ConfigStatus string `json:"configStatus,omitempty"`
	// EntityPauseReason: The user-provided reason for pausing this guaranteed
	// order. Must be UTF-8 encoded with a maximum length of 100 bytes. Only
	// applicable when entity_status is set to `ENTITY_STATUS_PAUSED`.
	EntityPauseReason string `json:"entityPauseReason,omitempty"`
	// EntityStatus: Whether or not the guaranteed order is servable. Acceptable
	// values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_ARCHIVED`, and
	// `ENTITY_STATUS_PAUSED`. Default value is `ENTITY_STATUS_ACTIVE`.
	//
	// Possible values:
	//   "ENTITY_STATUS_UNSPECIFIED" - Default value when status is not specified
	// or is unknown in this version.
	//   "ENTITY_STATUS_ACTIVE" - The entity is enabled to bid and spend budget.
	//   "ENTITY_STATUS_ARCHIVED" - The entity is archived. Bidding and budget
	// spending are disabled. An entity can be deleted after archived. Deleted
	// entities cannot be retrieved.
	//   "ENTITY_STATUS_DRAFT" - The entity is under draft. Bidding and budget
	// spending are disabled.
	//   "ENTITY_STATUS_PAUSED" - Bidding and budget spending are paused for the
	// entity.
	//   "ENTITY_STATUS_SCHEDULED_FOR_DELETION" - The entity is scheduled for
	// deletion.
	EntityStatus string `json:"entityStatus,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ConfigStatus") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ConfigStatus") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GuaranteedOrderStatus) MarshalJSON() ([]byte, error) {
	type NoMethod GuaranteedOrderStatus
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// HouseholdIncomeAssignedTargetingOptionDetails: Details for assigned
// household income targeting option. This will be populated in the details
// field of an AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_HOUSEHOLD_INCOME`.
type HouseholdIncomeAssignedTargetingOptionDetails struct {
	// HouseholdIncome: Required. The household income of the audience.
	//
	// Possible values:
	//   "HOUSEHOLD_INCOME_UNSPECIFIED" - Default value when household income is
	// not specified in this version. This enum is a placeholder for default value
	// and does not represent a real household income option.
	//   "HOUSEHOLD_INCOME_UNKNOWN" - The household income of the audience is
	// unknown.
	//   "HOUSEHOLD_INCOME_LOWER_50_PERCENT" - The audience is in the lower 50% of
	// U.S. household incomes.
	//   "HOUSEHOLD_INCOME_TOP_41_TO_50_PERCENT" - The audience is in the top
	// 41-50% of U.S. household incomes.
	//   "HOUSEHOLD_INCOME_TOP_31_TO_40_PERCENT" - The audience is in the top
	// 31-40% of U.S. household incomes.
	//   "HOUSEHOLD_INCOME_TOP_21_TO_30_PERCENT" - The audience is in the top
	// 21-30% of U.S. household incomes.
	//   "HOUSEHOLD_INCOME_TOP_11_TO_20_PERCENT" - The audience is in the top
	// 11-20% of U.S. household incomes.
	//   "HOUSEHOLD_INCOME_TOP_10_PERCENT" - The audience is in the top 10% of U.S.
	// household incomes.
	HouseholdIncome string `json:"householdIncome,omitempty"`
	// ForceSendFields is a list of field names (e.g. "HouseholdIncome") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "HouseholdIncome") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s HouseholdIncomeAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod HouseholdIncomeAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// HouseholdIncomeTargetingOptionDetails: Represents a targetable household
// income. This will be populated in the household_income_details field of a
// TargetingOption when targeting_type is `TARGETING_TYPE_HOUSEHOLD_INCOME`.
type HouseholdIncomeTargetingOptionDetails struct {
	// HouseholdIncome: Output only. The household income of an audience.
	//
	// Possible values:
	//   "HOUSEHOLD_INCOME_UNSPECIFIED" - Default value when household income is
	// not specified in this version. This enum is a placeholder for default value
	// and does not represent a real household income option.
	//   "HOUSEHOLD_INCOME_UNKNOWN" - The household income of the audience is
	// unknown.
	//   "HOUSEHOLD_INCOME_LOWER_50_PERCENT" - The audience is in the lower 50% of
	// U.S. household incomes.
	//   "HOUSEHOLD_INCOME_TOP_41_TO_50_PERCENT" - The audience is in the top
	// 41-50% of U.S. household incomes.
	//   "HOUSEHOLD_INCOME_TOP_31_TO_40_PERCENT" - The audience is in the top
	// 31-40% of U.S. household incomes.
	//   "HOUSEHOLD_INCOME_TOP_21_TO_30_PERCENT" - The audience is in the top
	// 21-30% of U.S. household incomes.
	//   "HOUSEHOLD_INCOME_TOP_11_TO_20_PERCENT" - The audience is in the top
	// 11-20% of U.S. household incomes.
	//   "HOUSEHOLD_INCOME_TOP_10_PERCENT" - The audience is in the top 10% of U.S.
	// household incomes.
	HouseholdIncome string `json:"householdIncome,omitempty"`
	// ForceSendFields is a list of field names (e.g. "HouseholdIncome") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "HouseholdIncome") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s HouseholdIncomeTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod HouseholdIncomeTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// IdFilter: A filtering option that filters entities by their entity IDs.
type IdFilter struct {
	// AdGroupAdIds: YouTube Ads to download by ID. All IDs must belong to the same
	// Advertiser or Partner specified in CreateSdfDownloadTaskRequest.
	AdGroupAdIds googleapi.Int64s `json:"adGroupAdIds,omitempty"`
	// AdGroupIds: YouTube Ad Groups to download by ID. All IDs must belong to the
	// same Advertiser or Partner specified in CreateSdfDownloadTaskRequest.
	AdGroupIds googleapi.Int64s `json:"adGroupIds,omitempty"`
	// AdGroupQaIds: Optional. YouTube Ad Groups, by ID, to download in QA format.
	// All IDs must belong to the same Advertiser or Partner specified in
	// CreateSdfDownloadTaskRequest.
	AdGroupQaIds googleapi.Int64s `json:"adGroupQaIds,omitempty"`
	// CampaignIds: Campaigns to download by ID. All IDs must belong to the same
	// Advertiser or Partner specified in CreateSdfDownloadTaskRequest.
	CampaignIds googleapi.Int64s `json:"campaignIds,omitempty"`
	// InsertionOrderIds: Insertion Orders to download by ID. All IDs must belong
	// to the same Advertiser or Partner specified in CreateSdfDownloadTaskRequest.
	InsertionOrderIds googleapi.Int64s `json:"insertionOrderIds,omitempty"`
	// LineItemIds: Line Items to download by ID. All IDs must belong to the same
	// Advertiser or Partner specified in CreateSdfDownloadTaskRequest.
	LineItemIds googleapi.Int64s `json:"lineItemIds,omitempty"`
	// LineItemQaIds: Optional. Line Items, by ID, to download in QA format. All
	// IDs must belong to the same Advertiser or Partner specified in
	// CreateSdfDownloadTaskRequest.
	LineItemQaIds googleapi.Int64s `json:"lineItemQaIds,omitempty"`
	// MediaProductIds: Media Products to download by ID. All IDs must belong to
	// the same Advertiser or Partner specified in CreateSdfDownloadTaskRequest.
	MediaProductIds googleapi.Int64s `json:"mediaProductIds,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdGroupAdIds") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdGroupAdIds") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s IdFilter) MarshalJSON() ([]byte, error) {
	type NoMethod IdFilter
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ImageAsset: Meta data of an image asset.
type ImageAsset struct {
	// FileSize: File size of the image asset in bytes.
	FileSize int64 `json:"fileSize,omitempty,string"`
	// FullSize: Metadata for this image at its original size.
	FullSize *Dimensions `json:"fullSize,omitempty"`
	// MimeType: MIME type of the image asset.
	MimeType string `json:"mimeType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "FileSize") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "FileSize") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ImageAsset) MarshalJSON() ([]byte, error) {
	type NoMethod ImageAsset
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InStreamAd: Details for an in-stream ad.
type InStreamAd struct {
	// CommonInStreamAttribute: Common ad attributes.
	CommonInStreamAttribute *CommonInStreamAttribute `json:"commonInStreamAttribute,omitempty"`
	// CustomParameters: The custom parameters to pass custom values to tracking
	// URL template.
	CustomParameters map[string]string `json:"customParameters,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CommonInStreamAttribute") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CommonInStreamAttribute") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InStreamAd) MarshalJSON() ([]byte, error) {
	type NoMethod InStreamAd
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InsertionOrder: A single insertion order.
type InsertionOrder struct {
	// AdvertiserId: Output only. The unique ID of the advertiser the insertion
	// order belongs to.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// BidStrategy: Optional. The bidding strategy of the insertion order. By
	// default, fixed_bid is set.
	BidStrategy *BiddingStrategy `json:"bidStrategy,omitempty"`
	// Budget: Required. The budget allocation settings of the insertion order.
	Budget *InsertionOrderBudget `json:"budget,omitempty"`
	// CampaignId: Required. Immutable. The unique ID of the campaign that the
	// insertion order belongs to.
	CampaignId int64 `json:"campaignId,omitempty,string"`
	// DisplayName: Required. The display name of the insertion order. Must be
	// UTF-8 encoded with a maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// EntityStatus: Required. Controls whether or not the insertion order can
	// spend its budget and bid on inventory. * For CreateInsertionOrder method,
	// only `ENTITY_STATUS_DRAFT` is allowed. To activate an insertion order, use
	// UpdateInsertionOrder method and update the status to `ENTITY_STATUS_ACTIVE`
	// after creation. * An insertion order cannot be changed back to
	// `ENTITY_STATUS_DRAFT` status from any other status. * An insertion order
	// cannot be set to `ENTITY_STATUS_ACTIVE` if its parent campaign is not
	// active.
	//
	// Possible values:
	//   "ENTITY_STATUS_UNSPECIFIED" - Default value when status is not specified
	// or is unknown in this version.
	//   "ENTITY_STATUS_ACTIVE" - The entity is enabled to bid and spend budget.
	//   "ENTITY_STATUS_ARCHIVED" - The entity is archived. Bidding and budget
	// spending are disabled. An entity can be deleted after archived. Deleted
	// entities cannot be retrieved.
	//   "ENTITY_STATUS_DRAFT" - The entity is under draft. Bidding and budget
	// spending are disabled.
	//   "ENTITY_STATUS_PAUSED" - Bidding and budget spending are paused for the
	// entity.
	//   "ENTITY_STATUS_SCHEDULED_FOR_DELETION" - The entity is scheduled for
	// deletion.
	EntityStatus string `json:"entityStatus,omitempty"`
	// FrequencyCap: Required. The frequency capping setting of the insertion
	// order.
	FrequencyCap *FrequencyCap `json:"frequencyCap,omitempty"`
	// InsertionOrderId: Output only. The unique ID of the insertion order.
	// Assigned by the system.
	InsertionOrderId int64 `json:"insertionOrderId,omitempty,string"`
	// InsertionOrderType: Optional. The type of insertion order. If this field is
	// unspecified in creation, the value defaults to `RTB`.
	//
	// Possible values:
	//   "INSERTION_ORDER_TYPE_UNSPECIFIED" - Insertion order type is not specified
	// or is unknown.
	//   "RTB" - Real-time bidding.
	//   "OVER_THE_TOP" - Over-the-top.
	InsertionOrderType string `json:"insertionOrderType,omitempty"`
	// IntegrationDetails: Optional. Additional integration details of the
	// insertion order.
	IntegrationDetails *IntegrationDetails `json:"integrationDetails,omitempty"`
	// Kpi: Required. The key performance indicator (KPI) of the insertion order.
	// This is represented as referred to as the "Goal" in the Display & Video 360
	// interface.
	Kpi *Kpi `json:"kpi,omitempty"`
	// Name: Output only. The resource name of the insertion order.
	Name string `json:"name,omitempty"`
	// OptimizationObjective: Optional. Required. The optimization objective of the
	// insertion order.
	//
	// Possible values:
	//   "OPTIMIZATION_OBJECTIVE_UNSPECIFIED" - Type value is not specified or is
	// unknown in this version.
	//   "CONVERSION" - Prioritize impressions that increase sales and conversions.
	//   "CLICK" - Prioritize impressions that increase website traffic, apps, app
	// stores.
	//   "BRAND_AWARENESS" - Prioritize impressions of specific quality.
	//   "CUSTOM" - Objective is defined by the assigned custom bidding algorithm.
	//   "NO_OBJECTIVE" - Objective is not defined. Any KPI or bidding strategy can
	// be used.
	OptimizationObjective string `json:"optimizationObjective,omitempty"`
	// Pacing: Required. The budget spending speed setting of the insertion order.
	// pacing_type `PACING_TYPE_ASAP` is not compatible with pacing_period
	// `PACING_PERIOD_FLIGHT`.
	Pacing *Pacing `json:"pacing,omitempty"`
	// PartnerCosts: Optional. The partner costs associated with the insertion
	// order. If absent or empty in CreateInsertionOrder method, the newly created
	// insertion order will inherit partner costs from the partner settings.
	PartnerCosts []*PartnerCost `json:"partnerCosts,omitempty"`
	// ReservationType: Output only. The reservation type of the insertion order.
	//
	// Possible values:
	//   "RESERVATION_TYPE_UNSPECIFIED" - Reservation type value is not specified
	// or is unknown in this version.
	//   "RESERVATION_TYPE_NOT_GUARANTEED" - Not created through a guaranteed
	// inventory source.
	//   "RESERVATION_TYPE_PROGRAMMATIC_GUARANTEED" - Created through a
	// programmatic guaranteed inventory source.
	//   "RESERVATION_TYPE_TAG_GUARANTEED" - Created through a tag guaranteed
	// inventory source.
	//   "RESERVATION_TYPE_PETRA_VIRAL" - Created through a Petra inventory source.
	// Only applicable to YouTube and Partners line items.
	//   "RESERVATION_TYPE_INSTANT_RESERVE" - Created with an instant quote. Only
	// applicable to YouTube and partners line items.
	ReservationType string `json:"reservationType,omitempty"`
	// UpdateTime: Output only. The timestamp when the insertion order was last
	// updated. Assigned by the system.
	UpdateTime string `json:"updateTime,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InsertionOrder) MarshalJSON() ([]byte, error) {
	type NoMethod InsertionOrder
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InsertionOrderBudget: Settings that control how insertion order budget is
// allocated.
type InsertionOrderBudget struct {
	// AutomationType: Optional. The type of automation used to manage bid and
	// budget for the insertion order. If this field is unspecified in creation,
	// the value defaults to `INSERTION_ORDER_AUTOMATION_TYPE_NONE`.
	//
	// Possible values:
	//   "INSERTION_ORDER_AUTOMATION_TYPE_UNSPECIFIED" - Insertion order automation
	// option is not specified or is unknown in this version.
	//   "INSERTION_ORDER_AUTOMATION_TYPE_BUDGET" - Automatic budget allocation.
	// Allow the system to automatically shift budget to owning line items to
	// optimize performance defined by kpi. No automation on bid settings.
	//   "INSERTION_ORDER_AUTOMATION_TYPE_NONE" - No automation of bid or budget on
	// insertion order level. Bid and budget must be manually configured at the
	// line item level.
	//   "INSERTION_ORDER_AUTOMATION_TYPE_BID_BUDGET" - Allow the system to
	// automatically adjust bids and shift budget to owning line items to optimize
	// performance defined by kpi.
	AutomationType string `json:"automationType,omitempty"`
	// BudgetSegments: Required. The list of budget segments. Use a budget segment
	// to specify a specific budget for a given period of time an insertion order
	// is running.
	BudgetSegments []*InsertionOrderBudgetSegment `json:"budgetSegments,omitempty"`
	// BudgetUnit: Required. Immutable. The budget unit specifies whether the
	// budget is currency based or impression based.
	//
	// Possible values:
	//   "BUDGET_UNIT_UNSPECIFIED" - Type value is not specified or is unknown in
	// this version.
	//   "BUDGET_UNIT_CURRENCY" - Budgeting in currency amounts.
	//   "BUDGET_UNIT_IMPRESSIONS" - Budgeting in impression amounts.
	BudgetUnit string `json:"budgetUnit,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AutomationType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AutomationType") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InsertionOrderBudget) MarshalJSON() ([]byte, error) {
	type NoMethod InsertionOrderBudget
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InsertionOrderBudgetSegment: Settings that control the budget of a single
// budget segment.
type InsertionOrderBudgetSegment struct {
	// BudgetAmountMicros: Required. The budget amount the insertion order will
	// spend for the given date_range. The amount is in micros. Must be greater
	// than 0. For example, 500000000 represents 500 standard units of the
	// currency.
	BudgetAmountMicros int64 `json:"budgetAmountMicros,omitempty,string"`
	// CampaignBudgetId: Optional. The budget_id of the campaign budget that this
	// insertion order budget segment is a part of.
	CampaignBudgetId int64 `json:"campaignBudgetId,omitempty,string"`
	// DateRange: Required. The start and end date settings of the budget segment.
	// They are resolved relative to the parent advertiser's time zone. * When
	// creating a new budget segment, both `start_date` and `end_date` must be in
	// the future. * An existing budget segment with a `start_date` in the past has
	// a mutable `end_date` but an immutable `start_date`. * `end_date` must be the
	// `start_date` or later, both before the year 2037.
	DateRange *DateRange `json:"dateRange,omitempty"`
	// Description: Optional. The budget segment description. It can be used to
	// enter Purchase Order information for each budget segment and have that
	// information printed on the invoices. Must be UTF-8 encoded.
	Description string `json:"description,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BudgetAmountMicros") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BudgetAmountMicros") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InsertionOrderBudgetSegment) MarshalJSON() ([]byte, error) {
	type NoMethod InsertionOrderBudgetSegment
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// IntegralAdScience: Details of Integral Ad Science settings.
type IntegralAdScience struct {
	// CustomSegmentId: The custom segment ID provided by Integral Ad Science. The
	// ID must be between `1000001` and `1999999` or `3000001` and `3999999`,
	// inclusive.
	CustomSegmentId googleapi.Int64s `json:"customSegmentId,omitempty"`
	// DisplayViewability: Display Viewability section (applicable to display line
	// items only).
	//
	// Possible values:
	//   "PERFORMANCE_VIEWABILITY_UNSPECIFIED" - This enum is only a placeholder
	// and it doesn't specify any display viewability options.
	//   "PERFORMANCE_VIEWABILITY_40" - Target 40% Viewability or Higher.
	//   "PERFORMANCE_VIEWABILITY_50" - Target 50% Viewability or Higher.
	//   "PERFORMANCE_VIEWABILITY_60" - Target 60% Viewability or Higher.
	//   "PERFORMANCE_VIEWABILITY_70" - Target 70% Viewability or Higher.
	DisplayViewability string `json:"displayViewability,omitempty"`
	// ExcludeUnrateable: Brand Safety - **Unrateable**.
	ExcludeUnrateable bool `json:"excludeUnrateable,omitempty"`
	// ExcludedAdFraudRisk: Ad Fraud settings.
	//
	// Possible values:
	//   "SUSPICIOUS_ACTIVITY_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any ad fraud prevention options.
	//   "SUSPICIOUS_ACTIVITY_HR" - Ad Fraud - Exclude High Risk.
	//   "SUSPICIOUS_ACTIVITY_HMR" - Ad Fraud - Exclude High and Moderate Risk.
	ExcludedAdFraudRisk string `json:"excludedAdFraudRisk,omitempty"`
	// ExcludedAdultRisk: Brand Safety - **Adult content**.
	//
	// Possible values:
	//   "ADULT_UNSPECIFIED" - This enum is only a placeholder and it doesn't
	// specify any adult options.
	//   "ADULT_HR" - Adult - Exclude High Risk.
	//   "ADULT_HMR" - Adult - Exclude High and Moderate Risk.
	ExcludedAdultRisk string `json:"excludedAdultRisk,omitempty"`
	// ExcludedAlcoholRisk: Brand Safety - **Alcohol**.
	//
	// Possible values:
	//   "ALCOHOL_UNSPECIFIED" - This enum is only a placeholder and it doesn't
	// specify any alcohol options.
	//   "ALCOHOL_HR" - Alcohol - Exclude High Risk.
	//   "ALCOHOL_HMR" - Alcohol - Exclude High and Moderate Risk.
	ExcludedAlcoholRisk string `json:"excludedAlcoholRisk,omitempty"`
	// ExcludedDrugsRisk: Brand Safety - **Drugs**.
	//
	// Possible values:
	//   "DRUGS_UNSPECIFIED" - This enum is only a placeholder and it doesn't
	// specify any drugs options.
	//   "DRUGS_HR" - Drugs - Exclude High Risk.
	//   "DRUGS_HMR" - Drugs - Exclude High and Moderate Risk.
	ExcludedDrugsRisk string `json:"excludedDrugsRisk,omitempty"`
	// ExcludedGamblingRisk: Brand Safety - **Gambling**.
	//
	// Possible values:
	//   "GAMBLING_UNSPECIFIED" - This enum is only a placeholder and it doesn't
	// specify any gambling options.
	//   "GAMBLING_HR" - Gambling - Exclude High Risk.
	//   "GAMBLING_HMR" - Gambling - Exclude High and Moderate Risk.
	ExcludedGamblingRisk string `json:"excludedGamblingRisk,omitempty"`
	// ExcludedHateSpeechRisk: Brand Safety - **Hate speech**.
	//
	// Possible values:
	//   "HATE_SPEECH_UNSPECIFIED" - This enum is only a placeholder and it doesn't
	// specify any hate speech options.
	//   "HATE_SPEECH_HR" - Hate Speech - Exclude High Risk.
	//   "HATE_SPEECH_HMR" - Hate Speech - Exclude High and Moderate Risk.
	ExcludedHateSpeechRisk string `json:"excludedHateSpeechRisk,omitempty"`
	// ExcludedIllegalDownloadsRisk: Brand Safety - **Illegal downloads**.
	//
	// Possible values:
	//   "ILLEGAL_DOWNLOADS_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any illegal downloads options.
	//   "ILLEGAL_DOWNLOADS_HR" - Illegal Downloads - Exclude High Risk.
	//   "ILLEGAL_DOWNLOADS_HMR" - Illegal Downloads - Exclude High and Moderate
	// Risk.
	ExcludedIllegalDownloadsRisk string `json:"excludedIllegalDownloadsRisk,omitempty"`
	// ExcludedOffensiveLanguageRisk: Brand Safety - **Offensive language**.
	//
	// Possible values:
	//   "OFFENSIVE_LANGUAGE_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any language options.
	//   "OFFENSIVE_LANGUAGE_HR" - Offensive Language - Exclude High Risk.
	//   "OFFENSIVE_LANGUAGE_HMR" - Offensive Language - Exclude High and Moderate
	// Risk.
	ExcludedOffensiveLanguageRisk string `json:"excludedOffensiveLanguageRisk,omitempty"`
	// ExcludedViolenceRisk: Brand Safety - **Violence**.
	//
	// Possible values:
	//   "VIOLENCE_UNSPECIFIED" - This enum is only a placeholder and it doesn't
	// specify any violence options.
	//   "VIOLENCE_HR" - Violence - Exclude High Risk.
	//   "VIOLENCE_HMR" - Violence - Exclude High and Moderate Risk.
	ExcludedViolenceRisk string `json:"excludedViolenceRisk,omitempty"`
	// QualitySyncCustomSegmentId: Optional. The quality sync custom segment ID
	// provided by Integral Ad Science. The ID must be between `3000000` and
	// `4999999`, inclusive.
	QualitySyncCustomSegmentId googleapi.Int64s `json:"qualitySyncCustomSegmentId,omitempty"`
	// TraqScoreOption: True advertising quality (applicable to Display line items
	// only).
	//
	// Possible values:
	//   "TRAQ_UNSPECIFIED" - This enum is only a placeholder and it doesn't
	// specify any true advertising quality scores.
	//   "TRAQ_250" - TRAQ score 250-1000.
	//   "TRAQ_500" - TRAQ score 500-1000.
	//   "TRAQ_600" - TRAQ score 600-1000.
	//   "TRAQ_700" - TRAQ score 700-1000.
	//   "TRAQ_750" - TRAQ score 750-1000.
	//   "TRAQ_875" - TRAQ score 875-1000.
	//   "TRAQ_1000" - TRAQ score 1000.
	TraqScoreOption string `json:"traqScoreOption,omitempty"`
	// VideoViewability: Video Viewability Section (applicable to video line items
	// only).
	//
	// Possible values:
	//   "VIDEO_VIEWABILITY_UNSPECIFIED" - This enum is only a placeholder and it
	// doesn't specify any video viewability options.
	//   "VIDEO_VIEWABILITY_40" - 40%+ in view (IAB video viewability standard).
	//   "VIDEO_VIEWABILITY_50" - 50%+ in view (IAB video viewability standard).
	//   "VIDEO_VIEWABILITY_60" - 60%+ in view (IAB video viewability standard).
	//   "VIDEO_VIEWABILITY_70" - 70%+ in view (IAB video viewability standard).
	VideoViewability string `json:"videoViewability,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CustomSegmentId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CustomSegmentId") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s IntegralAdScience) MarshalJSON() ([]byte, error) {
	type NoMethod IntegralAdScience
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// IntegrationDetails: Integration details of an entry.
type IntegrationDetails struct {
	// Details: Additional details of the entry in string format. Must be UTF-8
	// encoded with a length of no more than 1000 characters.
	Details string `json:"details,omitempty"`
	// IntegrationCode: An external identifier to be associated with the entry. The
	// integration code will show up together with the entry in many places in the
	// system, for example, reporting. Must be UTF-8 encoded with a length of no
	// more than 500 characters.
	IntegrationCode string `json:"integrationCode,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Details") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Details") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s IntegrationDetails) MarshalJSON() ([]byte, error) {
	type NoMethod IntegrationDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InventorySource: An inventory source.
type InventorySource struct {
	// Commitment: Whether the inventory source has a guaranteed or non-guaranteed
	// delivery.
	//
	// Possible values:
	//   "INVENTORY_SOURCE_COMMITMENT_UNSPECIFIED" - The commitment is not
	// specified or is unknown in this version.
	//   "INVENTORY_SOURCE_COMMITMENT_GUARANTEED" - The commitment is guaranteed
	// delivery.
	//   "INVENTORY_SOURCE_COMMITMENT_NON_GUARANTEED" - The commitment is
	// non-guaranteed delivery.
	Commitment string `json:"commitment,omitempty"`
	// CreativeConfigs: The creative requirements of the inventory source. Not
	// applicable for auction packages.
	CreativeConfigs []*CreativeConfig `json:"creativeConfigs,omitempty"`
	// DealId: The ID in the exchange space that uniquely identifies the inventory
	// source. Must be unique across buyers within each exchange but not
	// necessarily unique across exchanges.
	DealId string `json:"dealId,omitempty"`
	// DeliveryMethod: The delivery method of the inventory source. * For
	// non-guaranteed inventory sources, the only acceptable value is
	// `INVENTORY_SOURCE_DELIVERY_METHOD_PROGRAMMATIC`. * For guaranteed inventory
	// sources, acceptable values are `INVENTORY_SOURCE_DELIVERY_METHOD_TAG` and
	// `INVENTORY_SOURCE_DELIVERY_METHOD_PROGRAMMATIC`.
	//
	// Possible values:
	//   "INVENTORY_SOURCE_DELIVERY_METHOD_UNSPECIFIED" - The delivery method is
	// not specified or is unknown in this version.
	//   "INVENTORY_SOURCE_DELIVERY_METHOD_PROGRAMMATIC" - The delivery method is
	// programmatic.
	//   "INVENTORY_SOURCE_DELIVERY_METHOD_TAG" - The delivery method is tag.
	DeliveryMethod string `json:"deliveryMethod,omitempty"`
	// DisplayName: The display name of the inventory source. Must be UTF-8 encoded
	// with a maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// Exchange: The exchange to which the inventory source belongs.
	//
	// Possible values:
	//   "EXCHANGE_UNSPECIFIED" - Exchange is not specified or is unknown in this
	// version.
	//   "EXCHANGE_GOOGLE_AD_MANAGER" - Google Ad Manager.
	//   "EXCHANGE_APPNEXUS" - AppNexus.
	//   "EXCHANGE_BRIGHTROLL" - BrightRoll Exchange for Video from Yahoo!.
	//   "EXCHANGE_ADFORM" - Adform.
	//   "EXCHANGE_ADMETA" - Admeta.
	//   "EXCHANGE_ADMIXER" - Admixer.
	//   "EXCHANGE_ADSMOGO" - AdsMogo.
	//   "EXCHANGE_ADSWIZZ" - AdsWizz.
	//   "EXCHANGE_BIDSWITCH" - BidSwitch.
	//   "EXCHANGE_BRIGHTROLL_DISPLAY" - BrightRoll Exchange for Display from
	// Yahoo!.
	//   "EXCHANGE_CADREON" - Cadreon.
	//   "EXCHANGE_DAILYMOTION" - Dailymotion.
	//   "EXCHANGE_FIVE" - Five.
	//   "EXCHANGE_FLUCT" - Fluct.
	//   "EXCHANGE_FREEWHEEL" - FreeWheel SSP.
	//   "EXCHANGE_GENIEE" - Geniee.
	//   "EXCHANGE_GUMGUM" - GumGum.
	//   "EXCHANGE_IMOBILE" - i-mobile.
	//   "EXCHANGE_IBILLBOARD" - iBILLBOARD.
	//   "EXCHANGE_IMPROVE_DIGITAL" - Improve Digital.
	//   "EXCHANGE_INDEX" - Index Exchange.
	//   "EXCHANGE_KARGO" - Kargo.
	//   "EXCHANGE_MICROAD" - MicroAd.
	//   "EXCHANGE_MOPUB" - MoPub.
	//   "EXCHANGE_NEND" - Nend.
	//   "EXCHANGE_ONE_BY_AOL_DISPLAY" - ONE by AOL: Display Market Place.
	//   "EXCHANGE_ONE_BY_AOL_MOBILE" - ONE by AOL: Mobile.
	//   "EXCHANGE_ONE_BY_AOL_VIDEO" - ONE by AOL: Video.
	//   "EXCHANGE_OOYALA" - Ooyala.
	//   "EXCHANGE_OPENX" - OpenX.
	//   "EXCHANGE_PERMODO" - Permodo.
	//   "EXCHANGE_PLATFORMONE" - Platform One.
	//   "EXCHANGE_PLATFORMID" - PlatformId.
	//   "EXCHANGE_PUBMATIC" - PubMatic.
	//   "EXCHANGE_PULSEPOINT" - PulsePoint.
	//   "EXCHANGE_REVENUEMAX" - RevenueMax.
	//   "EXCHANGE_RUBICON" - Rubicon.
	//   "EXCHANGE_SMARTCLIP" - SmartClip.
	//   "EXCHANGE_SMARTRTB" - SmartRTB+.
	//   "EXCHANGE_SMARTSTREAMTV" - SmartstreamTv.
	//   "EXCHANGE_SOVRN" - Sovrn.
	//   "EXCHANGE_SPOTXCHANGE" - SpotXchange.
	//   "EXCHANGE_STROER" - Ströer SSP.
	//   "EXCHANGE_TEADSTV" - TeadsTv.
	//   "EXCHANGE_TELARIA" - Telaria.
	//   "EXCHANGE_TVN" - TVN.
	//   "EXCHANGE_UNITED" - United.
	//   "EXCHANGE_YIELDLAB" - Yieldlab.
	//   "EXCHANGE_YIELDMO" - Yieldmo.
	//   "EXCHANGE_UNRULYX" - UnrulyX.
	//   "EXCHANGE_OPEN8" - Open8.
	//   "EXCHANGE_TRITON" - Triton.
	//   "EXCHANGE_TRIPLELIFT" - TripleLift.
	//   "EXCHANGE_TABOOLA" - Taboola.
	//   "EXCHANGE_INMOBI" - InMobi.
	//   "EXCHANGE_SMAATO" - Smaato.
	//   "EXCHANGE_AJA" - Aja.
	//   "EXCHANGE_SUPERSHIP" - Supership.
	//   "EXCHANGE_NEXSTAR_DIGITAL" - Nexstar Digital.
	//   "EXCHANGE_WAZE" - Waze.
	//   "EXCHANGE_SOUNDCAST" - SoundCast.
	//   "EXCHANGE_SHARETHROUGH" - Sharethrough.
	//   "EXCHANGE_FYBER" - Fyber.
	//   "EXCHANGE_RED_FOR_PUBLISHERS" - Red For Publishers.
	//   "EXCHANGE_MEDIANET" - Media.net.
	//   "EXCHANGE_TAPJOY" - Tapjoy.
	//   "EXCHANGE_VISTAR" - Vistar.
	//   "EXCHANGE_DAX" - DAX.
	//   "EXCHANGE_JCD" - JCD.
	//   "EXCHANGE_PLACE_EXCHANGE" - Place Exchange.
	//   "EXCHANGE_APPLOVIN" - AppLovin.
	//   "EXCHANGE_CONNATIX" - Connatix.
	//   "EXCHANGE_RESET_DIGITAL" - Reset Digital.
	//   "EXCHANGE_HIVESTACK" - Hivestack.
	//   "EXCHANGE_DRAX" - Drax.
	//   "EXCHANGE_APPLOVIN_GBID" - AppLovin MAX.
	//   "EXCHANGE_FYBER_GBID" - DT Fairbid.
	//   "EXCHANGE_UNITY_GBID" - Unity LevelPlay.
	//   "EXCHANGE_CHARTBOOST_GBID" - Chartboost Mediation.
	//   "EXCHANGE_ADMOST_GBID" - AdMost.
	//   "EXCHANGE_TOPON_GBID" - TopOn.
	//   "EXCHANGE_NETFLIX" - Netflix.
	//   "EXCHANGE_CORE" - Core.
	//   "EXCHANGE_COMMERCE_GRID" - Commerce Grid.
	//   "EXCHANGE_SPOTIFY" - Spotify.
	//   "EXCHANGE_TUBI" - Tubi.
	Exchange string `json:"exchange,omitempty"`
	// GuaranteedOrderId: Immutable. The ID of the guaranteed order that this
	// inventory source belongs to. Only applicable when commitment is
	// `INVENTORY_SOURCE_COMMITMENT_GUARANTEED`.
	GuaranteedOrderId string `json:"guaranteedOrderId,omitempty"`
	// InventorySourceId: Output only. The unique ID of the inventory source.
	// Assigned by the system.
	InventorySourceId int64 `json:"inventorySourceId,omitempty,string"`
	// InventorySourceProductType: Output only. The product type of the inventory
	// source, denoting the way through which it sells inventory.
	//
	// Possible values:
	//   "INVENTORY_SOURCE_PRODUCT_TYPE_UNSPECIFIED" - The product type is not
	// specified or is unknown in this version. Modifying inventory sources of this
	// product type are not supported via API.
	//   "PREFERRED_DEAL" - The inventory source sells inventory through Preferred
	// Deal.
	//   "PRIVATE_AUCTION" - The inventory source sells inventory through Private
	// Auction.
	//   "PROGRAMMATIC_GUARANTEED" - The inventory source sells inventory through
	// Programmatic Guaranteed.
	//   "TAG_GUARANTEED" - The inventory source sells inventory through Tag
	// Guaranteed.
	//   "YOUTUBE_RESERVE" - The inventory source sells inventory through YouTube
	// Reserve.
	//   "INSTANT_RESERVE" - The inventory source sells inventory through Instant
	// Reserve. Modifying inventory sources of this product type are not supported
	// via API.
	//   "GUARANTEED_PACKAGE" - The inventory source sells inventory through
	// Guaranteed Package. Modifying inventory sources of this product type are not
	// supported via API.
	//   "PROGRAMMATIC_TV" - The inventory source sells inventory through
	// Programmtic TV. Modifying inventory sources of this product type are not
	// supported via API.
	//   "AUCTION_PACKAGE" - The inventory source sells inventory through Auction
	// Package. Modifying inventory sources of this product type are not supported
	// via API.
	InventorySourceProductType string `json:"inventorySourceProductType,omitempty"`
	// InventorySourceType: Denotes the type of the inventory source.
	//
	// Possible values:
	//   "INVENTORY_SOURCE_TYPE_UNSPECIFIED" - The inventory source type is not
	// specified or is unknown in this version.
	//   "INVENTORY_SOURCE_TYPE_PRIVATE" - Private inventory source.
	//   "INVENTORY_SOURCE_TYPE_AUCTION_PACKAGE" - Auction package.
	InventorySourceType string `json:"inventorySourceType,omitempty"`
	// Name: Output only. The resource name of the inventory source.
	Name string `json:"name,omitempty"`
	// PublisherName: The publisher/seller name of the inventory source.
	PublisherName string `json:"publisherName,omitempty"`
	// RateDetails: Required. The rate details of the inventory source.
	RateDetails *RateDetails `json:"rateDetails,omitempty"`
	// ReadAdvertiserIds: Output only. The IDs of advertisers with read-only access
	// to the inventory source.
	ReadAdvertiserIds googleapi.Int64s `json:"readAdvertiserIds,omitempty"`
	// ReadPartnerIds: Output only. The IDs of partners with read-only access to
	// the inventory source. All advertisers of partners in this field inherit
	// read-only access to the inventory source.
	ReadPartnerIds googleapi.Int64s `json:"readPartnerIds,omitempty"`
	// ReadWriteAccessors: The partner or advertisers that have read/write access
	// to the inventory source. Output only when commitment is
	// `INVENTORY_SOURCE_COMMITMENT_GUARANTEED`, in which case the read/write
	// accessors are inherited from the parent guaranteed order. Required when
	// commitment is `INVENTORY_SOURCE_COMMITMENT_NON_GUARANTEED`. If commitment is
	// `INVENTORY_SOURCE_COMMITMENT_NON_GUARANTEED` and a partner is set in this
	// field, all advertisers under this partner will automatically have read-only
	// access to the inventory source. These advertisers will not be included in
	// read_advertiser_ids.
	ReadWriteAccessors *InventorySourceAccessors `json:"readWriteAccessors,omitempty"`
	// Status: The status settings of the inventory source.
	Status *InventorySourceStatus `json:"status,omitempty"`
	// TimeRange: The time range when this inventory source starts and stops
	// serving.
	TimeRange *TimeRange `json:"timeRange,omitempty"`
	// UpdateTime: Output only. The timestamp when the inventory source was last
	// updated. Assigned by the system.
	UpdateTime string `json:"updateTime,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Commitment") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Commitment") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InventorySource) MarshalJSON() ([]byte, error) {
	type NoMethod InventorySource
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InventorySourceAccessors: The partner or advertisers with access to the
// inventory source.
type InventorySourceAccessors struct {
	// Advertisers: The advertisers with access to the inventory source. All
	// advertisers must belong to the same partner.
	Advertisers *InventorySourceAccessorsAdvertiserAccessors `json:"advertisers,omitempty"`
	// Partner: The partner with access to the inventory source.
	Partner *InventorySourceAccessorsPartnerAccessor `json:"partner,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Advertisers") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Advertisers") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InventorySourceAccessors) MarshalJSON() ([]byte, error) {
	type NoMethod InventorySourceAccessors
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InventorySourceAccessorsAdvertiserAccessors: The advertisers with access to
// the inventory source.
type InventorySourceAccessorsAdvertiserAccessors struct {
	// AdvertiserIds: The IDs of the advertisers.
	AdvertiserIds googleapi.Int64s `json:"advertiserIds,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserIds") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserIds") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InventorySourceAccessorsAdvertiserAccessors) MarshalJSON() ([]byte, error) {
	type NoMethod InventorySourceAccessorsAdvertiserAccessors
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InventorySourceAccessorsPartnerAccessor: The partner with access to the
// inventory source.
type InventorySourceAccessorsPartnerAccessor struct {
	// PartnerId: The ID of the partner.
	PartnerId int64 `json:"partnerId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "PartnerId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "PartnerId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InventorySourceAccessorsPartnerAccessor) MarshalJSON() ([]byte, error) {
	type NoMethod InventorySourceAccessorsPartnerAccessor
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InventorySourceAssignedTargetingOptionDetails: Targeting details for
// inventory source. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_INVENTORY_SOURCE`.
type InventorySourceAssignedTargetingOptionDetails struct {
	// InventorySourceId: Required. ID of the inventory source. Should refer to the
	// inventory_source_id field of an InventorySource resource.
	InventorySourceId int64 `json:"inventorySourceId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "InventorySourceId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "InventorySourceId") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InventorySourceAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod InventorySourceAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InventorySourceDisplayCreativeConfig: The configuration for display
// creatives.
type InventorySourceDisplayCreativeConfig struct {
	// CreativeSize: The size requirements for display creatives that can be
	// assigned to the inventory source.
	CreativeSize *Dimensions `json:"creativeSize,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreativeSize") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreativeSize") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InventorySourceDisplayCreativeConfig) MarshalJSON() ([]byte, error) {
	type NoMethod InventorySourceDisplayCreativeConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InventorySourceFilter: A filtering option for filtering on Inventory Source
// entities.
type InventorySourceFilter struct {
	// InventorySourceIds: Inventory Sources to download by ID. All IDs must belong
	// to the same Advertiser or Partner specified in CreateSdfDownloadTaskRequest.
	// Leave empty to download all Inventory Sources for the selected Advertiser or
	// Partner.
	InventorySourceIds googleapi.Int64s `json:"inventorySourceIds,omitempty"`
	// ForceSendFields is a list of field names (e.g. "InventorySourceIds") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "InventorySourceIds") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InventorySourceFilter) MarshalJSON() ([]byte, error) {
	type NoMethod InventorySourceFilter
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InventorySourceGroup: A collection of targetable inventory sources.
type InventorySourceGroup struct {
	// DisplayName: Required. The display name of the inventory source group. Must
	// be UTF-8 encoded with a maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// InventorySourceGroupId: Output only. The unique ID of the inventory source
	// group. Assigned by the system.
	InventorySourceGroupId int64 `json:"inventorySourceGroupId,omitempty,string"`
	// Name: Output only. The resource name of the inventory source group.
	Name string `json:"name,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InventorySourceGroup) MarshalJSON() ([]byte, error) {
	type NoMethod InventorySourceGroup
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InventorySourceGroupAssignedTargetingOptionDetails: Targeting details for
// inventory source group. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_INVENTORY_SOURCE_GROUP`.
type InventorySourceGroupAssignedTargetingOptionDetails struct {
	// InventorySourceGroupId: Required. ID of the inventory source group. Should
	// refer to the inventory_source_group_id field of an InventorySourceGroup
	// resource.
	InventorySourceGroupId int64 `json:"inventorySourceGroupId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "InventorySourceGroupId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "InventorySourceGroupId") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InventorySourceGroupAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod InventorySourceGroupAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InventorySourceStatus: The status related settings of the inventory source.
type InventorySourceStatus struct {
	// ConfigStatus: Output only. The configuration status of the inventory source.
	// Only applicable for guaranteed inventory sources. Acceptable values are
	// `INVENTORY_SOURCE_CONFIG_STATUS_PENDING` and
	// `INVENTORY_SOURCE_CONFIG_STATUS_COMPLETED`. An inventory source must be
	// configured (fill in the required fields, choose creatives, and select a
	// default campaign) before it can serve.
	//
	// Possible values:
	//   "INVENTORY_SOURCE_CONFIG_STATUS_UNSPECIFIED" - The approval status is not
	// specified or is unknown in this version.
	//   "INVENTORY_SOURCE_CONFIG_STATUS_PENDING" - The beginning state of a
	// guaranteed inventory source. The inventory source in this state needs to be
	// configured.
	//   "INVENTORY_SOURCE_CONFIG_STATUS_COMPLETED" - The state after the buyer
	// configures a guaranteed inventory source.
	ConfigStatus string `json:"configStatus,omitempty"`
	// EntityPauseReason: The user-provided reason for pausing this inventory
	// source. Must not exceed 100 characters. Only applicable when entity_status
	// is set to `ENTITY_STATUS_PAUSED`.
	EntityPauseReason string `json:"entityPauseReason,omitempty"`
	// EntityStatus: Whether or not the inventory source is servable. Acceptable
	// values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_ARCHIVED`, and
	// `ENTITY_STATUS_PAUSED`. Default value is `ENTITY_STATUS_ACTIVE`.
	//
	// Possible values:
	//   "ENTITY_STATUS_UNSPECIFIED" - Default value when status is not specified
	// or is unknown in this version.
	//   "ENTITY_STATUS_ACTIVE" - The entity is enabled to bid and spend budget.
	//   "ENTITY_STATUS_ARCHIVED" - The entity is archived. Bidding and budget
	// spending are disabled. An entity can be deleted after archived. Deleted
	// entities cannot be retrieved.
	//   "ENTITY_STATUS_DRAFT" - The entity is under draft. Bidding and budget
	// spending are disabled.
	//   "ENTITY_STATUS_PAUSED" - Bidding and budget spending are paused for the
	// entity.
	//   "ENTITY_STATUS_SCHEDULED_FOR_DELETION" - The entity is scheduled for
	// deletion.
	EntityStatus string `json:"entityStatus,omitempty"`
	// SellerPauseReason: Output only. The seller-provided reason for pausing this
	// inventory source. Only applicable for inventory sources synced directly from
	// the publishers and when seller_status is set to `ENTITY_STATUS_PAUSED`.
	SellerPauseReason string `json:"sellerPauseReason,omitempty"`
	// SellerStatus: Output only. The status set by the seller for the inventory
	// source. Only applicable for inventory sources synced directly from the
	// publishers. Acceptable values are `ENTITY_STATUS_ACTIVE` and
	// `ENTITY_STATUS_PAUSED`.
	//
	// Possible values:
	//   "ENTITY_STATUS_UNSPECIFIED" - Default value when status is not specified
	// or is unknown in this version.
	//   "ENTITY_STATUS_ACTIVE" - The entity is enabled to bid and spend budget.
	//   "ENTITY_STATUS_ARCHIVED" - The entity is archived. Bidding and budget
	// spending are disabled. An entity can be deleted after archived. Deleted
	// entities cannot be retrieved.
	//   "ENTITY_STATUS_DRAFT" - The entity is under draft. Bidding and budget
	// spending are disabled.
	//   "ENTITY_STATUS_PAUSED" - Bidding and budget spending are paused for the
	// entity.
	//   "ENTITY_STATUS_SCHEDULED_FOR_DELETION" - The entity is scheduled for
	// deletion.
	SellerStatus string `json:"sellerStatus,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ConfigStatus") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ConfigStatus") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InventorySourceStatus) MarshalJSON() ([]byte, error) {
	type NoMethod InventorySourceStatus
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InventorySourceVideoCreativeConfig: The configuration for video creatives.
type InventorySourceVideoCreativeConfig struct {
	// Duration: The duration requirements for the video creatives that can be
	// assigned to the inventory source.
	Duration string `json:"duration,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Duration") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Duration") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InventorySourceVideoCreativeConfig) MarshalJSON() ([]byte, error) {
	type NoMethod InventorySourceVideoCreativeConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Invoice: A single invoice.
type Invoice struct {
	// BudgetInvoiceGroupingId: The budget grouping ID for this invoice. This field
	// will only be set if the invoice level of the corresponding billing profile
	// was set to "Budget invoice grouping ID".
	BudgetInvoiceGroupingId string `json:"budgetInvoiceGroupingId,omitempty"`
	// BudgetSummaries: The list of summarized information for each budget
	// associated with this invoice. This field will only be set if the invoice
	// detail level of the corresponding billing profile was set to "Budget level
	// PO".
	BudgetSummaries []*BudgetSummary `json:"budgetSummaries,omitempty"`
	// CorrectedInvoiceId: The ID of the original invoice being adjusted by this
	// invoice, if applicable. May appear on the invoice PDF as `Reference invoice
	// number`. If replaced_invoice_ids is set, this field will be empty.
	CorrectedInvoiceId string `json:"correctedInvoiceId,omitempty"`
	// CurrencyCode: The currency used in the invoice in ISO 4217 format.
	CurrencyCode string `json:"currencyCode,omitempty"`
	// DisplayName: The display name of the invoice.
	DisplayName string `json:"displayName,omitempty"`
	// DueDate: The date when the invoice is due.
	DueDate *Date `json:"dueDate,omitempty"`
	// InvoiceId: The unique ID of the invoice.
	InvoiceId string `json:"invoiceId,omitempty"`
	// InvoiceType: The type of invoice document.
	//
	// Possible values:
	//   "INVOICE_TYPE_UNSPECIFIED" - Not specified or is unknown in this version.
	//   "INVOICE_TYPE_CREDIT" - The invoice has a negative amount.
	//   "INVOICE_TYPE_INVOICE" - The invoice has a positive amount.
	InvoiceType string `json:"invoiceType,omitempty"`
	// IssueDate: The date when the invoice was issued.
	IssueDate *Date `json:"issueDate,omitempty"`
	// Name: The resource name of the invoice.
	Name string `json:"name,omitempty"`
	// NonBudgetMicros: The total amount of costs or adjustments not tied to a
	// particular budget, in micros of the invoice's currency. For example, if
	// currency_code is `USD`, then 1000000 represents one US dollar.
	NonBudgetMicros int64 `json:"nonBudgetMicros,omitempty,string"`
	// PaymentsAccountId: The ID of the payments account the invoice belongs to.
	// Appears on the invoice PDF as `Billing Account Number`.
	PaymentsAccountId string `json:"paymentsAccountId,omitempty"`
	// PaymentsProfileId: The ID of the payments profile the invoice belongs to.
	// Appears on the invoice PDF as `Billing ID`.
	PaymentsProfileId string `json:"paymentsProfileId,omitempty"`
	// PdfUrl: The URL to download a PDF copy of the invoice. This URL is user
	// specific and requires a valid OAuth 2.0 access token to access. The access
	// token must be provided in an `Authorization: Bearer` HTTP header and be
	// authorized for one of the following scopes: *
	// `https://www.googleapis.com/auth/display-video-mediaplanning` *
	// `https://www.googleapis.com/auth/display-video` The URL will be valid for 7
	// days after retrieval of this invoice object or until this invoice is
	// retrieved again.
	PdfUrl string `json:"pdfUrl,omitempty"`
	// PurchaseOrderNumber: Purchase order number associated with the invoice.
	PurchaseOrderNumber string `json:"purchaseOrderNumber,omitempty"`
	// ReplacedInvoiceIds: The ID(s) of any originally issued invoice that is being
	// cancelled by this invoice, if applicable. Multiple invoices may be listed if
	// those invoices are being consolidated into a single invoice. May appear on
	// invoice PDF as `Replaced invoice numbers`. If corrected_invoice_id is set,
	// this field will be empty.
	ReplacedInvoiceIds []string `json:"replacedInvoiceIds,omitempty"`
	// ServiceDateRange: The service start and end dates which are covered by this
	// invoice.
	ServiceDateRange *DateRange `json:"serviceDateRange,omitempty"`
	// SubtotalAmountMicros: The pre-tax subtotal amount, in micros of the
	// invoice's currency. For example, if currency_code is `USD`, then 1000000
	// represents one US dollar.
	SubtotalAmountMicros int64 `json:"subtotalAmountMicros,omitempty,string"`
	// TotalAmountMicros: The invoice total amount, in micros of the invoice's
	// currency. For example, if currency_code is `USD`, then 1000000 represents
	// one US dollar.
	TotalAmountMicros int64 `json:"totalAmountMicros,omitempty,string"`
	// TotalTaxAmountMicros: The sum of all taxes in invoice, in micros of the
	// invoice's currency. For example, if currency_code is `USD`, then 1000000
	// represents one US dollar.
	TotalTaxAmountMicros int64 `json:"totalTaxAmountMicros,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "BudgetInvoiceGroupingId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BudgetInvoiceGroupingId") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Invoice) MarshalJSON() ([]byte, error) {
	type NoMethod Invoice
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// KeywordAssignedTargetingOptionDetails: Details for assigned keyword
// targeting option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is `TARGETING_TYPE_KEYWORD`.
type KeywordAssignedTargetingOptionDetails struct {
	// Keyword: Required. The keyword, for example `car insurance`. Positive
	// keyword cannot be offensive word. Must be UTF-8 encoded with a maximum size
	// of 255 bytes. Maximum number of characters is 80. Maximum number of words is
	// 10.
	Keyword string `json:"keyword,omitempty"`
	// Negative: Indicates if this option is being negatively targeted.
	Negative bool `json:"negative,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Keyword") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Keyword") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s KeywordAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod KeywordAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Kpi: Settings that control the key performance indicator, or KPI, of an
// insertion order.
type Kpi struct {
	// KpiAlgorithmId: Optional. Custom Bidding Algorithm ID associated with
	// KPI_CUSTOM_IMPRESSION_VALUE_OVER_COST. This field is ignored if the proper
	// KPI is not selected.
	KpiAlgorithmId int64 `json:"kpiAlgorithmId,omitempty,string"`
	// KpiAmountMicros: The goal amount, in micros of the advertiser's currency.
	// Applicable when kpi_type is one of: * `KPI_TYPE_CPM` * `KPI_TYPE_CPC` *
	// `KPI_TYPE_CPA` * `KPI_TYPE_CPIAVC` * `KPI_TYPE_VCPM` For example: 1500000
	// represents 1.5 standard units of the currency.
	KpiAmountMicros int64 `json:"kpiAmountMicros,omitempty,string"`
	// KpiPercentageMicros: The decimal representation of the goal percentage in
	// micros. Applicable when kpi_type is one of: * `KPI_TYPE_CTR` *
	// `KPI_TYPE_VIEWABILITY` * `KPI_TYPE_CLICK_CVR` * `KPI_TYPE_IMPRESSION_CVR` *
	// `KPI_TYPE_VTR` * `KPI_TYPE_AUDIO_COMPLETION_RATE` *
	// `KPI_TYPE_VIDEO_COMPLETION_RATE` For example: 70000 represents 7% (decimal
	// 0.07).
	KpiPercentageMicros int64 `json:"kpiPercentageMicros,omitempty,string"`
	// KpiString: A KPI string, which can be empty. Must be UTF-8 encoded with a
	// length of no more than 100 characters. Applicable when kpi_type is
	// `KPI_TYPE_OTHER`.
	KpiString string `json:"kpiString,omitempty"`
	// KpiType: Required. The type of KPI.
	//
	// Possible values:
	//   "KPI_TYPE_UNSPECIFIED" - KPI type is not specified or is unknown in this
	// version.
	//   "KPI_TYPE_CPM" - The KPI is CPM (cost per mille).
	//   "KPI_TYPE_CPC" - The KPI is CPC (cost per click).
	//   "KPI_TYPE_CPA" - The KPI is CPA (cost per action).
	//   "KPI_TYPE_CTR" - The KPI is CTR (click-through rate) percentage.
	//   "KPI_TYPE_VIEWABILITY" - The KPI is Viewability percentage.
	//   "KPI_TYPE_CPIAVC" - The KPI is CPIAVC (cost per impression audible and
	// visible at completion).
	//   "KPI_TYPE_CPE" - The KPI is CPE (cost per engagement).
	//   "KPI_TYPE_CPV" - The KPI is set in CPV (cost per view).
	//   "KPI_TYPE_CLICK_CVR" - The KPI is click conversion rate (conversions per
	// click) percentage.
	//   "KPI_TYPE_IMPRESSION_CVR" - The KPI is impression conversion rate
	// (conversions per impression) percentage.
	//   "KPI_TYPE_VCPM" - The KPI is VCPM (cost per thousand viewable
	// impressions).
	//   "KPI_TYPE_VTR" - The KPI is YouTube view rate (YouTube views per
	// impression) percentage.
	//   "KPI_TYPE_AUDIO_COMPLETION_RATE" - The KPI is audio completion rate
	// (complete audio listens per impression) percentage.
	//   "KPI_TYPE_VIDEO_COMPLETION_RATE" - The KPI is video completion rate
	// (complete video views per impression) percentage.
	//   "KPI_TYPE_CPCL" - The KPI is set in CPCL (cost per complete audio listen).
	//   "KPI_TYPE_CPCV" - The KPI is set in CPCV (cost per complete video view).
	//   "KPI_TYPE_TOS10" - The KPI is set in rate of time on screen 10+ seconds
	// (Percentage of measurable, non-skippable impressions that were on the screen
	// for at least 10 seconds).
	//   "KPI_TYPE_MAXIMIZE_PACING" - The KPI is set to maximize brand impact while
	// prioritizing spending the full budget.
	//   "KPI_TYPE_CUSTOM_IMPRESSION_VALUE_OVER_COST" - The KPI is set in custom
	// impression value divided by cost.
	//   "KPI_TYPE_OTHER" - The KPI is some other value.
	KpiType string `json:"kpiType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "KpiAlgorithmId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "KpiAlgorithmId") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Kpi) MarshalJSON() ([]byte, error) {
	type NoMethod Kpi
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LanguageAssignedTargetingOptionDetails: Details for assigned language
// targeting option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is `TARGETING_TYPE_LANGUAGE`.
type LanguageAssignedTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the language (e.g., "French").
	DisplayName string `json:"displayName,omitempty"`
	// Negative: Indicates if this option is being negatively targeted. All
	// assigned language targeting options on the same resource must have the same
	// value for this field.
	Negative bool `json:"negative,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id of a TargetingOption of
	// type `TARGETING_TYPE_LANGUAGE`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LanguageAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod LanguageAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LanguageTargetingOptionDetails: Represents a targetable language. This will
// be populated in the language_details field when targeting_type is
// `TARGETING_TYPE_LANGUAGE`.
type LanguageTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the language (e.g., "French").
	DisplayName string `json:"displayName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LanguageTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod LanguageTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LineItem: A single line item.
type LineItem struct {
	// AdvertiserId: Output only. The unique ID of the advertiser the line item
	// belongs to.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// BidStrategy: Required. The bidding strategy of the line item.
	BidStrategy *BiddingStrategy `json:"bidStrategy,omitempty"`
	// Budget: Required. The budget allocation setting of the line item.
	Budget *LineItemBudget `json:"budget,omitempty"`
	// CampaignId: Output only. The unique ID of the campaign that the line item
	// belongs to.
	CampaignId int64 `json:"campaignId,omitempty,string"`
	// ConversionCounting: The conversion tracking setting of the line item.
	ConversionCounting *ConversionCountingConfig `json:"conversionCounting,omitempty"`
	// CreativeIds: The IDs of the creatives associated with the line item.
	CreativeIds googleapi.Int64s `json:"creativeIds,omitempty"`
	// DisplayName: Required. The display name of the line item. Must be UTF-8
	// encoded with a maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// EntityStatus: Required. Controls whether or not the line item can spend its
	// budget and bid on inventory. * For CreateLineItem method, only
	// `ENTITY_STATUS_DRAFT` is allowed. To activate a line item, use
	// UpdateLineItem method and update the status to `ENTITY_STATUS_ACTIVE` after
	// creation. * A line item cannot be changed back to `ENTITY_STATUS_DRAFT`
	// status from any other status. * If the line item's parent insertion order is
	// not active, the line item can't spend its budget even if its own status is
	// `ENTITY_STATUS_ACTIVE`.
	//
	// Possible values:
	//   "ENTITY_STATUS_UNSPECIFIED" - Default value when status is not specified
	// or is unknown in this version.
	//   "ENTITY_STATUS_ACTIVE" - The entity is enabled to bid and spend budget.
	//   "ENTITY_STATUS_ARCHIVED" - The entity is archived. Bidding and budget
	// spending are disabled. An entity can be deleted after archived. Deleted
	// entities cannot be retrieved.
	//   "ENTITY_STATUS_DRAFT" - The entity is under draft. Bidding and budget
	// spending are disabled.
	//   "ENTITY_STATUS_PAUSED" - Bidding and budget spending are paused for the
	// entity.
	//   "ENTITY_STATUS_SCHEDULED_FOR_DELETION" - The entity is scheduled for
	// deletion.
	EntityStatus string `json:"entityStatus,omitempty"`
	// ExcludeNewExchanges: Whether to exclude new exchanges from automatically
	// being targeted by the line item. This field is false by default.
	ExcludeNewExchanges bool `json:"excludeNewExchanges,omitempty"`
	// Flight: Required. The start and end time of the line item's flight.
	Flight *LineItemFlight `json:"flight,omitempty"`
	// FrequencyCap: Required. The impression frequency cap settings of the line
	// item. The max_impressions field in this settings object must be used if
	// assigning a limited cap.
	FrequencyCap *FrequencyCap `json:"frequencyCap,omitempty"`
	// InsertionOrderId: Required. Immutable. The unique ID of the insertion order
	// that the line item belongs to.
	InsertionOrderId int64 `json:"insertionOrderId,omitempty,string"`
	// IntegrationDetails: Integration details of the line item.
	IntegrationDetails *IntegrationDetails `json:"integrationDetails,omitempty"`
	// LineItemId: Output only. The unique ID of the line item. Assigned by the
	// system.
	LineItemId int64 `json:"lineItemId,omitempty,string"`
	// LineItemType: Required. Immutable. The type of the line item.
	//
	// Possible values:
	//   "LINE_ITEM_TYPE_UNSPECIFIED" - Type value is not specified or is unknown
	// in this version. Line items of this type and their targeting cannot be
	// created or updated using the API.
	//   "LINE_ITEM_TYPE_DISPLAY_DEFAULT" - Image, HTML5, native, or rich media
	// ads.
	//   "LINE_ITEM_TYPE_DISPLAY_MOBILE_APP_INSTALL" - Display ads that drive
	// installs of an app.
	//   "LINE_ITEM_TYPE_VIDEO_DEFAULT" - Video ads sold on a CPM basis for a
	// variety of environments.
	//   "LINE_ITEM_TYPE_VIDEO_MOBILE_APP_INSTALL" - Video ads that drive installs
	// of an app.
	//   "LINE_ITEM_TYPE_DISPLAY_MOBILE_APP_INVENTORY" - Display ads served on
	// mobile app inventory. Line items of this type and their targeting cannot be
	// created or updated using the API.
	//   "LINE_ITEM_TYPE_VIDEO_MOBILE_APP_INVENTORY" - Video ads served on mobile
	// app inventory. Line items of this type and their targeting cannot be created
	// or updated using the API.
	//   "LINE_ITEM_TYPE_AUDIO_DEFAULT" - RTB Audio ads sold for a variety of
	// environments.
	//   "LINE_ITEM_TYPE_VIDEO_OVER_THE_TOP" - Over-the-top ads present in OTT
	// insertion orders. This type is only applicable to line items with an
	// insertion order of insertion_order_type `OVER_THE_TOP`.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_ACTION" - YouTube video ads that
	// promote conversions. Line items of this type and their targeting cannot be
	// created or updated using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_NON_SKIPPABLE" - YouTube video ads
	// (up to 15 seconds) that cannot be skipped. Line items of this type and their
	// targeting cannot be created or updated using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_VIDEO_SEQUENCE" - YouTube video ads
	// that show a story in a particular sequence using a mix of formats. Line
	// items of this type and their targeting cannot be created or updated using
	// the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_AUDIO" - YouTube audio ads. Line
	// items of this type and their targeting cannot be created or updated using
	// the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_REACH" - YouTube video ads that
	// optimize reaching more unique users at lower cost. May include bumper ads,
	// skippable in-stream ads, or a mix of types. Line items of this type and
	// their targeting cannot be created or updated using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_SIMPLE" - Default YouTube video ads.
	// Line items of this type and their targeting cannot be created or updated
	// using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_NON_SKIPPABLE_OVER_THE_TOP" -
	// Connected TV youTube video ads (up to 15 seconds) that cannot be skipped.
	// Line items of this type and their targeting cannot be created or updated
	// using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_REACH_OVER_THE_TOP" - Connected TV
	// youTube video ads that optimize reaching more unique users at lower cost.
	// May include bumper ads, skippable in-stream ads, or a mix of types. Line
	// items of this type and their targeting cannot be created or updated using
	// the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_SIMPLE_OVER_THE_TOP" - Connected TV
	// default YouTube video ads. Only include in-stream ad-format. Line items of
	// this type and their targeting cannot be created or updated using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_TARGET_FREQUENCY" - The goal of this
	// line item type is to show the YouTube ads target number of times to the same
	// person in a certain period of time. Line items of this type and their
	// targeting cannot be created or updated using the API.
	//   "LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_VIEW" - YouTube video ads that aim to
	// get more views with a variety of ad formats. Line items of this type and
	// their targeting cannot be created or updated using the API.
	//   "LINE_ITEM_TYPE_DISPLAY_OUT_OF_HOME" - Display ads served on
	// digital-out-of-home inventory. Line items of this type and their targeting
	// cannot be created or updated using the API.
	//   "LINE_ITEM_TYPE_VIDEO_OUT_OF_HOME" - Video ads served on
	// digital-out-of-home inventory. Line items of this type and their targeting
	// cannot be created or updated using the API.
	LineItemType string `json:"lineItemType,omitempty"`
	// MobileApp: The mobile app promoted by the line item. This is applicable only
	// when line_item_type is either `LINE_ITEM_TYPE_DISPLAY_MOBILE_APP_INSTALL` or
	// `LINE_ITEM_TYPE_VIDEO_MOBILE_APP_INSTALL`.
	MobileApp *MobileApp `json:"mobileApp,omitempty"`
	// Name: Output only. The resource name of the line item.
	Name string `json:"name,omitempty"`
	// Pacing: Required. The budget spending speed setting of the line item.
	Pacing *Pacing `json:"pacing,omitempty"`
	// PartnerCosts: The partner costs associated with the line item. If absent or
	// empty in CreateLineItem method, the newly created line item will inherit
	// partner costs from its parent insertion order.
	PartnerCosts []*PartnerCost `json:"partnerCosts,omitempty"`
	// PartnerRevenueModel: Required. The partner revenue model setting of the line
	// item.
	PartnerRevenueModel *PartnerRevenueModel `json:"partnerRevenueModel,omitempty"`
	// ReservationType: Output only. The reservation type of the line item.
	//
	// Possible values:
	//   "RESERVATION_TYPE_UNSPECIFIED" - Reservation type value is not specified
	// or is unknown in this version.
	//   "RESERVATION_TYPE_NOT_GUARANTEED" - Not created through a guaranteed
	// inventory source.
	//   "RESERVATION_TYPE_PROGRAMMATIC_GUARANTEED" - Created through a
	// programmatic guaranteed inventory source.
	//   "RESERVATION_TYPE_TAG_GUARANTEED" - Created through a tag guaranteed
	// inventory source.
	//   "RESERVATION_TYPE_PETRA_VIRAL" - Created through a Petra inventory source.
	// Only applicable to YouTube and Partners line items.
	//   "RESERVATION_TYPE_INSTANT_RESERVE" - Created with an instant quote. Only
	// applicable to YouTube and partners line items.
	ReservationType string `json:"reservationType,omitempty"`
	// TargetingExpansion: The optimized targeting
	// (//support.google.com/displayvideo/answer/12060859) settings of the line
	// item. This config is only applicable for display, video, or audio line items
	// that use automated bidding and positively target eligible audience lists.
	TargetingExpansion *TargetingExpansionConfig `json:"targetingExpansion,omitempty"`
	// UpdateTime: Output only. The timestamp when the line item was last updated.
	// Assigned by the system.
	UpdateTime string `json:"updateTime,omitempty"`
	// WarningMessages: Output only. The warning messages generated by the line
	// item. These warnings do not block saving the line item, but some may block
	// the line item from running.
	//
	// Possible values:
	//   "LINE_ITEM_WARNING_MESSAGE_UNSPECIFIED" - Not specified or is unknown.
	//   "INVALID_FLIGHT_DATES" - This line item has invalid flight dates. The line
	// item will not run.
	//   "EXPIRED" - This line item's end date is in the past.
	//   "PENDING_FLIGHT" - This line item will begin running in the future.
	//   "ALL_PARTNER_ENABLED_EXCHANGES_NEGATIVELY_TARGETED" - All partner enabled
	// exchanges are negatively targeted. The line item will not run.
	//   "INVALID_INVENTORY_SOURCE" - No active inventory sources are being
	// targeted. The line item will not run.
	//   "APP_INVENTORY_INVALID_SITE_TARGETING" - This line item's Apps & URLs
	// targeting doesn't include any mobile apps. This line item's type requires
	// you to include mobile apps in your channel, sitelist, or apps targeting. The
	// line item will not run.
	//   "APP_INVENTORY_INVALID_AUDIENCE_LISTS" - This line item isn't targeting
	// any mobile users. This line item's type requires you to target a user list
	// with mobile users. The line item will not run.
	//   "NO_VALID_CREATIVE" - This line item does not contain any valid creative.
	// The line item will not run.
	//   "PARENT_INSERTION_ORDER_PAUSED" - The insertion order of this line item is
	// paused. The line item will not run.
	//   "PARENT_INSERTION_ORDER_EXPIRED" - The insertion order of this line item
	// has its end date set in the past. The line item will not run.
	WarningMessages []string `json:"warningMessages,omitempty"`
	// YoutubeAndPartnersSettings: Output only. Settings specific to YouTube and
	// Partners line items.
	YoutubeAndPartnersSettings *YoutubeAndPartnersSettings `json:"youtubeAndPartnersSettings,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LineItem) MarshalJSON() ([]byte, error) {
	type NoMethod LineItem
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LineItemAssignedTargetingOption: Wrapper object associating an
// assigned_targeting_option resource and the line item it is assigned to.
type LineItemAssignedTargetingOption struct {
	// AssignedTargetingOption: The assigned targeting option resource.
	AssignedTargetingOption *AssignedTargetingOption `json:"assignedTargetingOption,omitempty"`
	// LineItemId: The ID of the line item the assigned targeting option is
	// assigned to.
	LineItemId int64 `json:"lineItemId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "AssignedTargetingOption") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedTargetingOption") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LineItemAssignedTargetingOption) MarshalJSON() ([]byte, error) {
	type NoMethod LineItemAssignedTargetingOption
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LineItemBudget: Settings that control how budget is allocated.
type LineItemBudget struct {
	// BudgetAllocationType: Required. The type of the budget allocation.
	// `LINE_ITEM_BUDGET_ALLOCATION_TYPE_AUTOMATIC` is only applicable when
	// automatic budget allocation is enabled for the parent insertion order.
	//
	// Possible values:
	//   "LINE_ITEM_BUDGET_ALLOCATION_TYPE_UNSPECIFIED" - Type value is not
	// specified or is unknown in this version.
	//   "LINE_ITEM_BUDGET_ALLOCATION_TYPE_AUTOMATIC" - Automatic budget allocation
	// is enabled for the line item.
	//   "LINE_ITEM_BUDGET_ALLOCATION_TYPE_FIXED" - A fixed max budget amount is
	// allocated for the line item.
	//   "LINE_ITEM_BUDGET_ALLOCATION_TYPE_UNLIMITED" - No budget limit is applied
	// to the line item.
	BudgetAllocationType string `json:"budgetAllocationType,omitempty"`
	// BudgetUnit: Output only. The budget unit specifies whether the budget is
	// currency based or impression based. This value is inherited from the parent
	// insertion order.
	//
	// Possible values:
	//   "BUDGET_UNIT_UNSPECIFIED" - Type value is not specified or is unknown in
	// this version.
	//   "BUDGET_UNIT_CURRENCY" - Budgeting in currency amounts.
	//   "BUDGET_UNIT_IMPRESSIONS" - Budgeting in impression amounts.
	BudgetUnit string `json:"budgetUnit,omitempty"`
	// MaxAmount: The maximum budget amount the line item will spend. Must be
	// greater than 0. When budget_allocation_type is: *
	// `LINE_ITEM_BUDGET_ALLOCATION_TYPE_AUTOMATIC`, this field is immutable and is
	// set by the system. * `LINE_ITEM_BUDGET_ALLOCATION_TYPE_FIXED`, if
	// budget_unit is: - `BUDGET_UNIT_CURRENCY`, this field represents maximum
	// budget amount to spend, in micros of the advertiser's currency. For example,
	// 1500000 represents 1.5 standard units of the currency. -
	// `BUDGET_UNIT_IMPRESSIONS`, this field represents the maximum number of
	// impressions to serve. * `LINE_ITEM_BUDGET_ALLOCATION_TYPE_UNLIMITED`, this
	// field is not applicable and will be ignored by the system.
	MaxAmount int64 `json:"maxAmount,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "BudgetAllocationType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BudgetAllocationType") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LineItemBudget) MarshalJSON() ([]byte, error) {
	type NoMethod LineItemBudget
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LineItemFlight: Settings that control the active duration of a line item.
type LineItemFlight struct {
	// DateRange: The flight start and end dates of the line item. They are
	// resolved relative to the parent advertiser's time zone. * Required when
	// flight_date_type is `LINE_ITEM_FLIGHT_DATE_TYPE_CUSTOM`. Output only
	// otherwise. * When creating a new flight, both `start_date` and `end_date`
	// must be in the future. * An existing flight with a `start_date` in the past
	// has a mutable `end_date` but an immutable `start_date`. * `end_date` must be
	// the `start_date` or later, both before the year 2037.
	DateRange *DateRange `json:"dateRange,omitempty"`
	// FlightDateType: Required. The type of the line item's flight dates.
	//
	// Possible values:
	//   "LINE_ITEM_FLIGHT_DATE_TYPE_UNSPECIFIED" - Type value is not specified or
	// is unknown in this version.
	//   "LINE_ITEM_FLIGHT_DATE_TYPE_INHERITED" - The line item's flight dates are
	// inherited from its parent insertion order.
	//   "LINE_ITEM_FLIGHT_DATE_TYPE_CUSTOM" - The line item uses its own custom
	// flight dates.
	FlightDateType string `json:"flightDateType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DateRange") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DateRange") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LineItemFlight) MarshalJSON() ([]byte, error) {
	type NoMethod LineItemFlight
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListAdGroupAdsResponse struct {
	// AdGroupAds: The list of ad group ads. This list will be absent if empty.
	AdGroupAds []*AdGroupAd `json:"adGroupAds,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListAdGroupAds` method to
	// retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdGroupAds") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdGroupAds") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListAdGroupAdsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListAdGroupAdsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListAdGroupAssignedTargetingOptionsResponse: Response message for
// ListAdGroupAssignedTargetingOptions.
type ListAdGroupAssignedTargetingOptionsResponse struct {
	// AssignedTargetingOptions: The list of assigned targeting options. This list
	// will be absent if empty.
	AssignedTargetingOptions []*AssignedTargetingOption `json:"assignedTargetingOptions,omitempty"`
	// NextPageToken: A token identifying the next page of results. This value
	// should be specified as the pageToken in a subsequent
	// ListAdGroupAssignedTargetingOptionsRequest to fetch the next page of
	// results. This token will be absent if there are no more
	// AssignedTargetingOption resources to return.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AssignedTargetingOptions")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedTargetingOptions") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListAdGroupAssignedTargetingOptionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListAdGroupAssignedTargetingOptionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListAdGroupsResponse struct {
	// AdGroups: The list of ad groups. This list will be absent if empty.
	AdGroups []*AdGroup `json:"adGroups,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListAdGroups` method to
	// retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,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 or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdGroups") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListAdGroupsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListAdGroupsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListAdvertiserAssignedTargetingOptionsResponse: Response message for
// ListAdvertiserAssignedTargetingOptions.
type ListAdvertiserAssignedTargetingOptionsResponse struct {
	// AssignedTargetingOptions: The list of assigned targeting options. This list
	// will be absent if empty.
	AssignedTargetingOptions []*AssignedTargetingOption `json:"assignedTargetingOptions,omitempty"`
	// NextPageToken: A token identifying the next page of results. This value
	// should be specified as the pageToken in a subsequent
	// ListAdvertiserAssignedTargetingOptionsRequest to fetch the next page of
	// results. This token will be absent if there are no more
	// assigned_targeting_options to return.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AssignedTargetingOptions")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedTargetingOptions") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListAdvertiserAssignedTargetingOptionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListAdvertiserAssignedTargetingOptionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListAdvertisersResponse struct {
	// Advertisers: The list of advertisers. This list will be absent if empty.
	Advertisers []*Advertiser `json:"advertisers,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListAdvertisers` method
	// to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Advertisers") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Advertisers") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListAdvertisersResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListAdvertisersResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListAssignedInventorySourcesResponse: Response message for
// AssignedInventorySourceService.ListAssignedInventorySources.
type ListAssignedInventorySourcesResponse struct {
	// AssignedInventorySources: The list of assigned inventory sources. This list
	// will be absent if empty.
	AssignedInventorySources []*AssignedInventorySource `json:"assignedInventorySources,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to
	// `ListAssignedInventorySources` method to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AssignedInventorySources")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedInventorySources") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListAssignedInventorySourcesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListAssignedInventorySourcesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListAssignedLocationsResponse: Response message for
// AssignedLocationService.ListAssignedLocations.
type ListAssignedLocationsResponse struct {
	// AssignedLocations: The list of assigned locations. This list will be absent
	// if empty.
	AssignedLocations []*AssignedLocation `json:"assignedLocations,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListAssignedLocations`
	// method to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AssignedLocations") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedLocations") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListAssignedLocationsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListAssignedLocationsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListCampaignsResponse struct {
	// Campaigns: The list of campaigns. This list will be absent if empty.
	Campaigns []*Campaign `json:"campaigns,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListCampaigns` method to
	// retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Campaigns") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Campaigns") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListCampaignsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListCampaignsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListChannelsResponse struct {
	// Channels: The list of channels. This list will be absent if empty.
	Channels []*Channel `json:"channels,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListChannels` method to
	// retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Channels") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Channels") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListChannelsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListChannelsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListCombinedAudiencesResponse struct {
	// CombinedAudiences: The list of combined audiences. This list will be absent
	// if empty.
	CombinedAudiences []*CombinedAudience `json:"combinedAudiences,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListCombinedAudiences`
	// method to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "CombinedAudiences") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CombinedAudiences") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListCombinedAudiencesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListCombinedAudiencesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListCreativesResponse struct {
	// Creatives: The list of creatives. This list will be absent if empty.
	Creatives []*Creative `json:"creatives,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListCreativesRequest`
	// method to retrieve the next page of results. If this field is null, it means
	// this is the last page.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Creatives") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Creatives") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListCreativesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListCreativesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListCustomBiddingAlgorithmRulesResponse struct {
	// CustomBiddingRules: The list of CustomBiddingAlgorithmRules resources. This
	// list will be absent if empty.
	CustomBiddingRules []*CustomBiddingAlgorithmRules `json:"customBiddingRules,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to
	// `ListCustomBiddingAlgorithmRulesRequest` method to retrieve the next page of
	// results. If this field is null, it means this is the last page.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "CustomBiddingRules") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CustomBiddingRules") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListCustomBiddingAlgorithmRulesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListCustomBiddingAlgorithmRulesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListCustomBiddingAlgorithmsResponse struct {
	// CustomBiddingAlgorithms: The list of custom bidding algorithms. This list
	// will be absent if empty.
	CustomBiddingAlgorithms []*CustomBiddingAlgorithm `json:"customBiddingAlgorithms,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to
	// `ListCustomBiddingAlgorithmsRequest` method to retrieve the next page of
	// results. If this field is null, it means this is the last page.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "CustomBiddingAlgorithms") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CustomBiddingAlgorithms") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListCustomBiddingAlgorithmsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListCustomBiddingAlgorithmsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListCustomBiddingScriptsResponse struct {
	// CustomBiddingScripts: The list of custom bidding scripts. This list will be
	// absent if empty.
	CustomBiddingScripts []*CustomBiddingScript `json:"customBiddingScripts,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to
	// `ListCustomBiddingScriptsRequest` method to retrieve the next page of
	// results. If this field is null, it means this is the last page.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "CustomBiddingScripts") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CustomBiddingScripts") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListCustomBiddingScriptsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListCustomBiddingScriptsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListCustomListsResponse struct {
	// CustomLists: The list of custom lists. This list will be absent if empty.
	CustomLists []*CustomList `json:"customLists,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListCustomLists` method
	// to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "CustomLists") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CustomLists") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListCustomListsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListCustomListsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListFirstPartyAndPartnerAudiencesResponse struct {
	// FirstPartyAndPartnerAudiences: The list of first party and partner
	// audiences. Audience size properties will not be included. This list will be
	// absent if empty.
	FirstPartyAndPartnerAudiences []*FirstPartyAndPartnerAudience `json:"firstPartyAndPartnerAudiences,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to
	// `ListFirstPartyAndPartnerAudiences` method to retrieve the next page of
	// results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g.
	// "FirstPartyAndPartnerAudiences") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. See https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields
	// for more details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "FirstPartyAndPartnerAudiences")
	// to include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListFirstPartyAndPartnerAudiencesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListFirstPartyAndPartnerAudiencesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListFloodlightActivitiesResponse struct {
	// FloodlightActivities: The list of Floodlight activities. This list will be
	// absent if empty.
	FloodlightActivities []*FloodlightActivity `json:"floodlightActivities,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListFloodlightActivities`
	// method to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "FloodlightActivities") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "FloodlightActivities") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListFloodlightActivitiesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListFloodlightActivitiesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListGoogleAudiencesResponse struct {
	// GoogleAudiences: The list of Google audiences. This list will be absent if
	// empty.
	GoogleAudiences []*GoogleAudience `json:"googleAudiences,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListGoogleAudiences`
	// method to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "GoogleAudiences") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "GoogleAudiences") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListGoogleAudiencesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListGoogleAudiencesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListGuaranteedOrdersResponse struct {
	// GuaranteedOrders: The list of guaranteed orders. This list will be absent if
	// empty.
	GuaranteedOrders []*GuaranteedOrder `json:"guaranteedOrders,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListGuaranteedOrders`
	// method to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "GuaranteedOrders") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "GuaranteedOrders") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListGuaranteedOrdersResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListGuaranteedOrdersResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListInsertionOrdersResponse struct {
	// InsertionOrders: The list of insertion orders. This list will be absent if
	// empty.
	InsertionOrders []*InsertionOrder `json:"insertionOrders,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListInsertionOrders`
	// method to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "InsertionOrders") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "InsertionOrders") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListInsertionOrdersResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListInsertionOrdersResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListInventorySourceGroupsResponse: Response message for
// InventorySourceGroupService.ListInventorySourceGroups.
type ListInventorySourceGroupsResponse struct {
	// InventorySourceGroups: The list of inventory source groups. This list will
	// be absent if empty.
	InventorySourceGroups []*InventorySourceGroup `json:"inventorySourceGroups,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to
	// `ListInventorySourceGroups` method to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "InventorySourceGroups") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "InventorySourceGroups") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListInventorySourceGroupsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListInventorySourceGroupsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListInventorySourcesResponse struct {
	// InventorySources: The list of inventory sources. This list will be absent if
	// empty.
	InventorySources []*InventorySource `json:"inventorySources,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListInventorySources`
	// method to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "InventorySources") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "InventorySources") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListInventorySourcesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListInventorySourcesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListInvoicesResponse struct {
	// Invoices: The list of invoices. This list will be absent if empty.
	Invoices []*Invoice `json:"invoices,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListInvoices` method to
	// retrieve the next page of results. This token will be absent if there are no
	// more invoices to return.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Invoices") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Invoices") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListInvoicesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListInvoicesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListLineItemAssignedTargetingOptionsResponse: Response message for
// ListLineItemAssignedTargetingOptions.
type ListLineItemAssignedTargetingOptionsResponse struct {
	// AssignedTargetingOptions: The list of assigned targeting options. This list
	// will be absent if empty.
	AssignedTargetingOptions []*AssignedTargetingOption `json:"assignedTargetingOptions,omitempty"`
	// NextPageToken: A token identifying the next page of results. This value
	// should be specified as the pageToken in a subsequent
	// ListLineItemAssignedTargetingOptionsRequest to fetch the next page of
	// results. This token will be absent if there are no more
	// assigned_targeting_options to return.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AssignedTargetingOptions")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedTargetingOptions") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListLineItemAssignedTargetingOptionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListLineItemAssignedTargetingOptionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListLineItemsResponse struct {
	// LineItems: The list of line items. This list will be absent if empty.
	LineItems []*LineItem `json:"lineItems,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListLineItems` method to
	// retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,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 or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "LineItems") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListLineItemsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListLineItemsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListLocationListsResponse struct {
	// LocationLists: The list of location lists. This list will be absent if
	// empty.
	LocationLists []*LocationList `json:"locationLists,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListLocationLists` method
	// to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "LocationLists") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "LocationLists") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListLocationListsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListLocationListsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListNegativeKeywordListsResponse: Response message for
// NegativeKeywordListService.ListNegativeKeywordLists.
type ListNegativeKeywordListsResponse struct {
	// NegativeKeywordLists: The list of negative keyword lists. This list will be
	// absent if empty.
	NegativeKeywordLists []*NegativeKeywordList `json:"negativeKeywordLists,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListNegativeKeywordLists`
	// method to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NegativeKeywordLists") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NegativeKeywordLists") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListNegativeKeywordListsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListNegativeKeywordListsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListNegativeKeywordsResponse: Response message for
// NegativeKeywordService.ListNegativeKeywords.
type ListNegativeKeywordsResponse struct {
	// NegativeKeywords: The list of negative keywords. This list will be absent if
	// empty.
	NegativeKeywords []*NegativeKeyword `json:"negativeKeywords,omitempty"`
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListNegativeKeywords`
	// method to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NegativeKeywords") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NegativeKeywords") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListNegativeKeywordsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListNegativeKeywordsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListPartnerAssignedTargetingOptionsResponse struct {
	// AssignedTargetingOptions: The list of assigned targeting options. This list
	// will be absent if empty.
	AssignedTargetingOptions []*AssignedTargetingOption `json:"assignedTargetingOptions,omitempty"`
	// NextPageToken: A token identifying the next page of results. This value
	// should be specified as the pageToken in a subsequent
	// ListPartnerAssignedTargetingOptionsRequest to fetch the next page of
	// results. This token will be absent if there are no more
	// assigned_targeting_options to return.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AssignedTargetingOptions")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedTargetingOptions") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListPartnerAssignedTargetingOptionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListPartnerAssignedTargetingOptionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListPartnersResponse struct {
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListPartners` method to
	// retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Partners: The list of partners. This list will be absent if empty.
	Partners []*Partner `json:"partners,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListPartnersResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListPartnersResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListSitesResponse: Response message for SiteService.ListSites.
type ListSitesResponse struct {
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListSites` method to
	// retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Sites: The list of sites. This list will be absent if empty.
	Sites []*Site `json:"sites,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListSitesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListSitesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListTargetingOptionsResponse: Response message for ListTargetingOptions.
type ListTargetingOptionsResponse struct {
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListTargetingOptions`
	// method to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// TargetingOptions: The list of targeting options. This list will be absent if
	// empty.
	TargetingOptions []*TargetingOption `json:"targetingOptions,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListTargetingOptionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListTargetingOptionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ListUsersResponse struct {
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `ListUsers` method to
	// retrieve the next page of results. This token will be absent if there are no
	// more results to return.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Users: The list of users. This list will be absent if empty.
	Users []*User `json:"users,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListUsersResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListUsersResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LocationList: A list of locations used for targeting.
type LocationList struct {
	// AdvertiserId: Required. Immutable. The unique ID of the advertiser the
	// location list belongs to.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// DisplayName: Required. The display name of the location list. Must be UTF-8
	// encoded with a maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// LocationListId: Output only. The unique ID of the location list. Assigned by
	// the system.
	LocationListId int64 `json:"locationListId,omitempty,string"`
	// LocationType: Required. Immutable. The type of location. All locations in
	// the list will share this type.
	//
	// Possible values:
	//   "TARGETING_LOCATION_TYPE_UNSPECIFIED" - Default value when type is not
	// specified or is unknown.
	//   "TARGETING_LOCATION_TYPE_PROXIMITY" - The type for proximity geo location.
	//   "TARGETING_LOCATION_TYPE_REGIONAL" - The type for regional geo location.
	LocationType string `json:"locationType,omitempty"`
	// Name: Output only. The resource name of the location list.
	Name string `json:"name,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LocationList) MarshalJSON() ([]byte, error) {
	type NoMethod LocationList
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LookbackWindow: Specifies how many days into the past to look when
// determining whether to record a conversion.
type LookbackWindow struct {
	// ClickDays: Lookback window, in days, from the last time a given user clicked
	// on one of your ads.
	ClickDays int64 `json:"clickDays,omitempty"`
	// ImpressionDays: Lookback window, in days, from the last time a given user
	// viewed one of your ads.
	ImpressionDays int64 `json:"impressionDays,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ClickDays") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ClickDays") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LookbackWindow) MarshalJSON() ([]byte, error) {
	type NoMethod LookbackWindow
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type LookupInvoiceCurrencyResponse struct {
	// CurrencyCode: Currency used by the advertiser in ISO 4217 format.
	CurrencyCode string `json:"currencyCode,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "CurrencyCode") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CurrencyCode") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LookupInvoiceCurrencyResponse) MarshalJSON() ([]byte, error) {
	type NoMethod LookupInvoiceCurrencyResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MastheadAd: Details for a Masthead Ad.
type MastheadAd struct {
	// AutoplayVideoDuration: The duration of time the video will autoplay.
	AutoplayVideoDuration string `json:"autoplayVideoDuration,omitempty"`
	// AutoplayVideoStartMillisecond: The amount of time in milliseconds after
	// which the video will start to play.
	AutoplayVideoStartMillisecond int64 `json:"autoplayVideoStartMillisecond,omitempty,string"`
	// CallToActionButtonLabel: The text on the call-to-action button.
	CallToActionButtonLabel string `json:"callToActionButtonLabel,omitempty"`
	// CallToActionFinalUrl: The destination URL for the call-to-action button.
	CallToActionFinalUrl string `json:"callToActionFinalUrl,omitempty"`
	// CallToActionTrackingUrl: The tracking URL for the call-to-action button.
	CallToActionTrackingUrl string `json:"callToActionTrackingUrl,omitempty"`
	// CompanionYoutubeVideos: The videos that appear next to the Masthead Ad on
	// desktop. Can be no more than two.
	CompanionYoutubeVideos []*YoutubeVideoDetails `json:"companionYoutubeVideos,omitempty"`
	// Description: The description of the ad.
	Description string `json:"description,omitempty"`
	// Headline: The headline of the ad.
	Headline string `json:"headline,omitempty"`
	// ShowChannelArt: Whether to show a background or banner that appears at the
	// top of a YouTube page.
	ShowChannelArt bool `json:"showChannelArt,omitempty"`
	// Video: The YouTube video used by the ad.
	Video *YoutubeVideoDetails `json:"video,omitempty"`
	// VideoAspectRatio: The aspect ratio of the autoplaying YouTube video on the
	// Masthead.
	//
	// Possible values:
	//   "VIDEO_ASPECT_RATIO_UNSPECIFIED" - Not specified or unknown.
	//   "VIDEO_ASPECT_RATIO_WIDESCREEN" - The video is stretched and the top and
	// bottom are cropped.
	//   "VIDEO_ASPECT_RATIO_FIXED_16_9" - The video uses a fixed 16:9 aspect
	// ratio.
	VideoAspectRatio string `json:"videoAspectRatio,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AutoplayVideoDuration") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AutoplayVideoDuration") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MastheadAd) MarshalJSON() ([]byte, error) {
	type NoMethod MastheadAd
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MaximizeSpendBidStrategy: A strategy that automatically adjusts the bid to
// optimize a specified performance goal while spending the full budget.
type MaximizeSpendBidStrategy struct {
	// CustomBiddingAlgorithmId: The ID of the Custom Bidding Algorithm used by
	// this strategy. Only applicable when performance_goal_type is set to
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`. Assigning a custom
	// bidding algorithm that uses floodlight activities not identified in
	// floodlightActivityConfigs will return an error.
	CustomBiddingAlgorithmId int64 `json:"customBiddingAlgorithmId,omitempty,string"`
	// MaxAverageCpmBidAmountMicros: The maximum average CPM that may be bid, in
	// micros of the advertiser's currency. Must be greater than or equal to a
	// billable unit of the given currency. For example, 1500000 represents 1.5
	// standard units of the currency.
	MaxAverageCpmBidAmountMicros int64 `json:"maxAverageCpmBidAmountMicros,omitempty,string"`
	// PerformanceGoalType: Required. The type of the performance goal that the
	// bidding strategy tries to minimize while spending the full budget.
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` is not supported for
	// this strategy.
	//
	// Possible values:
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_UNSPECIFIED" - Type value is not
	// specified or is unknown in this version.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA" - Cost per action.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC" - Cost per click.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM" - Viewable CPM.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO" - Custom bidding
	// algorithm.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA" - Completed inview and
	// audible views.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN" - Inview time over 10
	// secs views.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED" - Viewable impressions.
	PerformanceGoalType string `json:"performanceGoalType,omitempty"`
	// RaiseBidForDeals: Whether the strategy takes deal floor prices into account.
	RaiseBidForDeals bool `json:"raiseBidForDeals,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CustomBiddingAlgorithmId")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CustomBiddingAlgorithmId") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MaximizeSpendBidStrategy) MarshalJSON() ([]byte, error) {
	type NoMethod MaximizeSpendBidStrategy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MeasurementConfig: Measurement settings of a partner.
type MeasurementConfig struct {
	// Dv360ToCmCostReportingEnabled: Whether or not to report DV360 cost to CM360.
	Dv360ToCmCostReportingEnabled bool `json:"dv360ToCmCostReportingEnabled,omitempty"`
	// Dv360ToCmDataSharingEnabled: Whether or not to include DV360 data in CM360
	// data transfer reports.
	Dv360ToCmDataSharingEnabled bool `json:"dv360ToCmDataSharingEnabled,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "Dv360ToCmCostReportingEnabled") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. See https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields
	// for more details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Dv360ToCmCostReportingEnabled")
	// to include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MeasurementConfig) MarshalJSON() ([]byte, error) {
	type NoMethod MeasurementConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MobileApp: A mobile app promoted by a mobile app install line item.
type MobileApp struct {
	// AppId: Required. The ID of the app provided by the platform store. Android
	// apps are identified by the bundle ID used by Android's Play store, such as
	// `com.google.android.gm`. iOS apps are identified by a nine-digit app ID used
	// by Apple's App store, such as `422689480`.
	AppId string `json:"appId,omitempty"`
	// DisplayName: Output only. The app name.
	DisplayName string `json:"displayName,omitempty"`
	// Platform: Output only. The app platform.
	//
	// Possible values:
	//   "PLATFORM_UNSPECIFIED" - Platform is not specified.
	//   "IOS" - iOS platform.
	//   "ANDROID" - Android platform.
	Platform string `json:"platform,omitempty"`
	// Publisher: Output only. The app publisher.
	Publisher string `json:"publisher,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AppId") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AppId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MobileApp) MarshalJSON() ([]byte, error) {
	type NoMethod MobileApp
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MobileDeviceIdList: Wrapper message for a list of mobile device IDs defining
// Customer Match audience members.
type MobileDeviceIdList struct {
	// Consent: Input only. The consent setting for the users in mobile_device_ids.
	// Leaving this field unset indicates that consent is not specified. If
	// ad_user_data or ad_personalization fields are set to
	// `CONSENT_STATUS_DENIED`, the request will return an error.
	Consent *Consent `json:"consent,omitempty"`
	// MobileDeviceIds: A list of mobile device IDs defining Customer Match
	// audience members. The size of mobile_device_ids mustn't be greater than
	// 500,000.
	MobileDeviceIds []string `json:"mobileDeviceIds,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Consent") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Consent") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MobileDeviceIdList) MarshalJSON() ([]byte, error) {
	type NoMethod MobileDeviceIdList
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Money: Represents an amount of money with its currency type.
type Money struct {
	// CurrencyCode: The three-letter currency code defined in ISO 4217.
	CurrencyCode string `json:"currencyCode,omitempty"`
	// Nanos: Number of nano (10^-9) units of the amount. The value must be between
	// -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos`
	// must be positive or zero. If `units` is zero, `nanos` can be positive, zero,
	// or negative. If `units` is negative, `nanos` must be negative or zero. For
	// example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
	Nanos int64 `json:"nanos,omitempty"`
	// Units: The whole units of the amount. For example if `currencyCode` is
	// "USD", then 1 unit is one US dollar.
	Units int64 `json:"units,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "CurrencyCode") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CurrencyCode") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Money) MarshalJSON() ([]byte, error) {
	type NoMethod Money
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// NativeContentPositionAssignedTargetingOptionDetails: Details for native
// content position assigned targeting option. This will be populated in the
// native_content_position_details field when targeting_type is
// `TARGETING_TYPE_NATIVE_CONTENT_POSITION`. Explicitly targeting all options
// is not supported. Remove all native content position targeting options to
// achieve this effect.
type NativeContentPositionAssignedTargetingOptionDetails struct {
	// ContentPosition: Required. The content position.
	//
	// Possible values:
	//   "NATIVE_CONTENT_POSITION_UNSPECIFIED" - Native content position is not
	// specified in this version. This enum is a place holder for a default value
	// and does not represent a real native content position.
	//   "NATIVE_CONTENT_POSITION_UNKNOWN" - The native content position is
	// unknown.
	//   "NATIVE_CONTENT_POSITION_IN_ARTICLE" - Native content position is
	// in-article, i.e., ads appear between the paragraphs of pages.
	//   "NATIVE_CONTENT_POSITION_IN_FEED" - Native content position is in-feed,
	// i.e., ads appear in a scrollable stream of content. A feed is typically
	// editorial (e.g. a list of articles or news) or listings (e.g. a list of
	// products or services).
	//   "NATIVE_CONTENT_POSITION_PERIPHERAL" - Native content position is
	// peripheral, i.e., ads appear outside of core content on pages, such as the
	// right- or left-hand side of the page.
	//   "NATIVE_CONTENT_POSITION_RECOMMENDATION" - Native content position is
	// recommendation, i.e., ads appear in sections for recommended content.
	ContentPosition string `json:"contentPosition,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ContentPosition") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ContentPosition") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s NativeContentPositionAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod NativeContentPositionAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// NativeContentPositionTargetingOptionDetails: Represents a targetable native
// content position. This will be populated in the
// native_content_position_details field when targeting_type is
// `TARGETING_TYPE_NATIVE_CONTENT_POSITION`.
type NativeContentPositionTargetingOptionDetails struct {
	// ContentPosition: Output only. The content position.
	//
	// Possible values:
	//   "NATIVE_CONTENT_POSITION_UNSPECIFIED" - Native content position is not
	// specified in this version. This enum is a place holder for a default value
	// and does not represent a real native content position.
	//   "NATIVE_CONTENT_POSITION_UNKNOWN" - The native content position is
	// unknown.
	//   "NATIVE_CONTENT_POSITION_IN_ARTICLE" - Native content position is
	// in-article, i.e., ads appear between the paragraphs of pages.
	//   "NATIVE_CONTENT_POSITION_IN_FEED" - Native content position is in-feed,
	// i.e., ads appear in a scrollable stream of content. A feed is typically
	// editorial (e.g. a list of articles or news) or listings (e.g. a list of
	// products or services).
	//   "NATIVE_CONTENT_POSITION_PERIPHERAL" - Native content position is
	// peripheral, i.e., ads appear outside of core content on pages, such as the
	// right- or left-hand side of the page.
	//   "NATIVE_CONTENT_POSITION_RECOMMENDATION" - Native content position is
	// recommendation, i.e., ads appear in sections for recommended content.
	ContentPosition string `json:"contentPosition,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ContentPosition") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ContentPosition") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s NativeContentPositionTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod NativeContentPositionTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// NegativeKeyword: A negatively targeted keyword that belongs to a negative
// keyword list.
type NegativeKeyword struct {
	// KeywordValue: Required. Immutable. The negatively targeted keyword, for
	// example `car insurance`. Must be UTF-8 encoded with a maximum size of 255
	// bytes. Maximum number of characters is 80. Maximum number of words is 10.
	// Valid characters are restricted to ASCII characters only. The only
	// URL-escaping permitted is for representing whitespace between words. Leading
	// or trailing whitespace is ignored.
	KeywordValue string `json:"keywordValue,omitempty"`
	// Name: Output only. The resource name of the negative keyword.
	Name string `json:"name,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "KeywordValue") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "KeywordValue") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s NegativeKeyword) MarshalJSON() ([]byte, error) {
	type NoMethod NegativeKeyword
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// NegativeKeywordList: A list of negative keywords used for targeting.
type NegativeKeywordList struct {
	// AdvertiserId: Output only. The unique ID of the advertiser the negative
	// keyword list belongs to.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// DisplayName: Required. The display name of the negative keyword list. Must
	// be UTF-8 encoded with a maximum size of 255 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// Name: Output only. The resource name of the negative keyword list.
	Name string `json:"name,omitempty"`
	// NegativeKeywordListId: Output only. The unique ID of the negative keyword
	// list. Assigned by the system.
	NegativeKeywordListId int64 `json:"negativeKeywordListId,omitempty,string"`
	// TargetedLineItemCount: Output only. Number of line items that are directly
	// targeting this negative keyword list.
	TargetedLineItemCount int64 `json:"targetedLineItemCount,omitempty,string"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s NegativeKeywordList) MarshalJSON() ([]byte, error) {
	type NoMethod NegativeKeywordList
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// NegativeKeywordListAssignedTargetingOptionDetails: Targeting details for
// negative keyword list. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`.
type NegativeKeywordListAssignedTargetingOptionDetails struct {
	// NegativeKeywordListId: Required. ID of the negative keyword list. Should
	// refer to the negative_keyword_list_id field of a NegativeKeywordList
	// resource.
	NegativeKeywordListId int64 `json:"negativeKeywordListId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "NegativeKeywordListId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NegativeKeywordListId") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s NegativeKeywordListAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod NegativeKeywordListAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// NonSkippableAd: Details for a non-skippable ad.
type NonSkippableAd struct {
	// CommonInStreamAttribute: Common ad attributes.
	CommonInStreamAttribute *CommonInStreamAttribute `json:"commonInStreamAttribute,omitempty"`
	// CustomParameters: The custom parameters to pass custom values to tracking
	// URL template.
	CustomParameters map[string]string `json:"customParameters,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CommonInStreamAttribute") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CommonInStreamAttribute") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s NonSkippableAd) MarshalJSON() ([]byte, error) {
	type NoMethod NonSkippableAd
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ObaIcon: OBA Icon for a Creative
type ObaIcon struct {
	// ClickTrackingUrl: Required. The click tracking URL of the OBA icon. Only
	// URLs of the following domains are allowed: * `https://info.evidon.com` *
	// `https://l.betrad.com`
	ClickTrackingUrl string `json:"clickTrackingUrl,omitempty"`
	// Dimensions: Optional. The dimensions of the OBA icon.
	Dimensions *Dimensions `json:"dimensions,omitempty"`
	// LandingPageUrl: Required. The landing page URL of the OBA icon. Only URLs of
	// the following domains are allowed: * `https://info.evidon.com` *
	// `https://l.betrad.com`
	LandingPageUrl string `json:"landingPageUrl,omitempty"`
	// Position: Optional. The position of the OBA icon on the creative.
	//
	// Possible values:
	//   "OBA_ICON_POSITION_UNSPECIFIED" - The OBA icon position is not specified.
	//   "OBA_ICON_POSITION_UPPER_RIGHT" - At the upper right side of the creative.
	//   "OBA_ICON_POSITION_UPPER_LEFT" - At the upper left side of the creative.
	//   "OBA_ICON_POSITION_LOWER_RIGHT" - At the lower right side of the creative.
	//   "OBA_ICON_POSITION_LOWER_LEFT" - At the lower left side of the creative.
	Position string `json:"position,omitempty"`
	// Program: Optional. The program of the OBA icon. For example:
	// “AdChoices”.
	Program string `json:"program,omitempty"`
	// ResourceMimeType: Optional. The MIME type of the OBA icon resource.
	ResourceMimeType string `json:"resourceMimeType,omitempty"`
	// ResourceUrl: Optional. The URL of the OBA icon resource.
	ResourceUrl string `json:"resourceUrl,omitempty"`
	// ViewTrackingUrl: Required. The view tracking URL of the OBA icon. Only URLs
	// of the following domains are allowed: * `https://info.evidon.com` *
	// `https://l.betrad.com`
	ViewTrackingUrl string `json:"viewTrackingUrl,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ClickTrackingUrl") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ClickTrackingUrl") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ObaIcon) MarshalJSON() ([]byte, error) {
	type NoMethod ObaIcon
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// OmidAssignedTargetingOptionDetails: Represents a targetable Open Measurement
// enabled inventory type. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`.
type OmidAssignedTargetingOptionDetails struct {
	// Omid: Required. The type of Open Measurement enabled inventory.
	//
	// Possible values:
	//   "OMID_UNSPECIFIED" - Default value when omid targeting is not specified in
	// this version.
	//   "OMID_FOR_MOBILE_DISPLAY_ADS" - Open Measurement enabled mobile display
	// inventory.
	Omid string `json:"omid,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Omid") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Omid") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s OmidAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod OmidAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// OmidTargetingOptionDetails: Represents a targetable Open Measurement enabled
// inventory type. This will be populated in the omid_details field when
// targeting_type is `TARGETING_TYPE_OMID`.
type OmidTargetingOptionDetails struct {
	// Omid: Output only. The type of Open Measurement enabled inventory.
	//
	// Possible values:
	//   "OMID_UNSPECIFIED" - Default value when omid targeting is not specified in
	// this version.
	//   "OMID_FOR_MOBILE_DISPLAY_ADS" - Open Measurement enabled mobile display
	// inventory.
	Omid string `json:"omid,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Omid") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Omid") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s OmidTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod OmidTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// OnScreenPositionAssignedTargetingOptionDetails: On screen position targeting
// option details. This will be populated in the on_screen_position_details
// field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
type OnScreenPositionAssignedTargetingOptionDetails struct {
	// AdType: Output only. The ad type to target. Only applicable to insertion
	// order targeting and new line items supporting the specified ad type will
	// inherit this targeting option by default. Possible values are: *
	// `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when
	// line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the
	// setting will be inherited by new line item when line_item_type is
	// `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
	//
	// Possible values:
	//   "AD_TYPE_UNSPECIFIED" - Ad type is not specified or is unknown in this
	// version.
	//   "AD_TYPE_DISPLAY" - Display creatives, e.g. image and HTML5.
	//   "AD_TYPE_VIDEO" - Video creatives, e.g. video ads that play during
	// streaming content in video players.
	//   "AD_TYPE_AUDIO" - Audio creatives, e.g. audio ads that play during audio
	// content.
	AdType string `json:"adType,omitempty"`
	// OnScreenPosition: Output only. The on screen position.
	//
	// Possible values:
	//   "ON_SCREEN_POSITION_UNSPECIFIED" - On screen position is not specified in
	// this version. This enum is a place holder for a default value and does not
	// represent a real on screen position.
	//   "ON_SCREEN_POSITION_UNKNOWN" - The ad position is unknown on the screen.
	//   "ON_SCREEN_POSITION_ABOVE_THE_FOLD" - The ad is located above the fold.
	//   "ON_SCREEN_POSITION_BELOW_THE_FOLD" - The ad is located below the fold.
	OnScreenPosition string `json:"onScreenPosition,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id field when
	// targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdType") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s OnScreenPositionAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod OnScreenPositionAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// OnScreenPositionTargetingOptionDetails: Represents a targetable on screen
// position, which could be used by display and video ads. This will be
// populated in the on_screen_position_details field when targeting_type is
// `TARGETING_TYPE_ON_SCREEN_POSITION`.
type OnScreenPositionTargetingOptionDetails struct {
	// OnScreenPosition: Output only. The on screen position.
	//
	// Possible values:
	//   "ON_SCREEN_POSITION_UNSPECIFIED" - On screen position is not specified in
	// this version. This enum is a place holder for a default value and does not
	// represent a real on screen position.
	//   "ON_SCREEN_POSITION_UNKNOWN" - The ad position is unknown on the screen.
	//   "ON_SCREEN_POSITION_ABOVE_THE_FOLD" - The ad is located above the fold.
	//   "ON_SCREEN_POSITION_BELOW_THE_FOLD" - The ad is located below the fold.
	OnScreenPosition string `json:"onScreenPosition,omitempty"`
	// ForceSendFields is a list of field names (e.g. "OnScreenPosition") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "OnScreenPosition") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s OnScreenPositionTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod OnScreenPositionTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// OperatingSystemAssignedTargetingOptionDetails: Assigned operating system
// targeting option details. This will be populated in the
// operating_system_details field when targeting_type is
// `TARGETING_TYPE_OPERATING_SYSTEM`.
type OperatingSystemAssignedTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the operating system.
	DisplayName string `json:"displayName,omitempty"`
	// Negative: Indicates if this option is being negatively targeted.
	Negative bool `json:"negative,omitempty"`
	// TargetingOptionId: Required. The targeting option ID populated in
	// targeting_option_id field when targeting_type is
	// `TARGETING_TYPE_OPERATING_SYSTEM`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s OperatingSystemAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod OperatingSystemAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// OperatingSystemTargetingOptionDetails: Represents a targetable operating
// system. This will be populated in the operating_system_details field of a
// TargetingOption when targeting_type is `TARGETING_TYPE_OPERATING_SYSTEM`.
type OperatingSystemTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the operating system.
	DisplayName string `json:"displayName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s OperatingSystemTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod OperatingSystemTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Operation: This resource represents a long-running operation that is the
// result of a network API call.
type Operation struct {
	// Done: If the value is `false`, it means the operation is still in progress.
	// If `true`, the operation is completed, and either `error` or `response` is
	// available.
	Done bool `json:"done,omitempty"`
	// Error: The error result of the operation in case of failure or cancellation.
	Error *Status `json:"error,omitempty"`
	// Metadata: Service-specific metadata associated with the operation. It
	// typically contains progress information and common metadata such as create
	// time. Some services might not provide such metadata. Any method that returns
	// a long-running operation should document the metadata type, if any.
	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
	// Name: The server-assigned name, which is only unique within the same service
	// that originally returns it. If you use the default HTTP mapping, the `name`
	// should be a resource name ending with `operations/{unique_id}`.
	Name string `json:"name,omitempty"`
	// Response: The normal, successful response of the operation. If the original
	// method returns no data on success, such as `Delete`, the response is
	// `google.protobuf.Empty`. If the original method is standard
	// `Get`/`Create`/`Update`, the response should be the resource. For other
	// methods, the response should have the type `XxxResponse`, where `Xxx` is the
	// original method name. For example, if the original method name is
	// `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
	Response googleapi.RawMessage `json:"response,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Done") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Done") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Operation) MarshalJSON() ([]byte, error) {
	type NoMethod Operation
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Pacing: Settings that control the rate at which a budget is spent.
type Pacing struct {
	// DailyMaxImpressions: Maximum number of impressions to serve every day.
	// Applicable when the budget is impression based. Must be greater than 0.
	DailyMaxImpressions int64 `json:"dailyMaxImpressions,omitempty,string"`
	// DailyMaxMicros: Maximum currency amount to spend every day in micros of
	// advertiser's currency. Applicable when the budget is currency based. Must be
	// greater than 0. For example, for 1.5 standard unit of the currency, set this
	// field to 1500000. The value assigned will be rounded to whole billable units
	// for the relevant currency by the following rules: any positive value less
	// than a single billable unit will be rounded up to one billable unit and any
	// value larger than a single billable unit will be rounded down to the nearest
	// billable value. For example, if the currency's billable unit is 0.01, and
	// this field is set to 10257770, it will round down to 10250000, a value of
	// 10.25. If set to 505, it will round up to 10000, a value of 0.01.
	DailyMaxMicros int64 `json:"dailyMaxMicros,omitempty,string"`
	// PacingPeriod: Required. The time period in which the pacing budget will be
	// spent. When automatic budget allocation is enabled at the insertion order
	// via automationType, this field is output only and defaults to
	// `PACING_PERIOD_FLIGHT`.
	//
	// Possible values:
	//   "PACING_PERIOD_UNSPECIFIED" - Period value is not specified or is unknown
	// in this version.
	//   "PACING_PERIOD_DAILY" - The pacing setting will be applied on daily basis.
	//   "PACING_PERIOD_FLIGHT" - The pacing setting will be applied to the whole
	// flight duration.
	PacingPeriod string `json:"pacingPeriod,omitempty"`
	// PacingType: Required. The type of pacing that defines how the budget amount
	// will be spent across the pacing_period. `PACING_TYPE_ASAP` is not compatible
	// with pacing_period `PACING_PERIOD_FLIGHT` for insertion orders.
	//
	// Possible values:
	//   "PACING_TYPE_UNSPECIFIED" - Pacing mode value is not specified or is
	// unknown in this version.
	//   "PACING_TYPE_AHEAD" - Only applicable to `PACING_PERIOD_FLIGHT` pacing
	// period. Ahead pacing attempts to spend faster than evenly, to make sure the
	// entire budget is spent by the end of the flight.
	//   "PACING_TYPE_ASAP" - Spend all of pacing budget amount as quick as
	// possible.
	//   "PACING_TYPE_EVEN" - Spend a consistent budget amount every period of
	// time.
	PacingType string `json:"pacingType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DailyMaxImpressions") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DailyMaxImpressions") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Pacing) MarshalJSON() ([]byte, error) {
	type NoMethod Pacing
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ParentEntityFilter: A filtering option that filters on selected file types
// belonging to a chosen set of filter entities.
type ParentEntityFilter struct {
	// FileType: Required. File types that will be returned.
	//
	// Possible values:
	//   "FILE_TYPE_UNSPECIFIED" - Default value when type is unspecified or is
	// unknown in this version.
	//   "FILE_TYPE_CAMPAIGN" - Campaign.
	//   "FILE_TYPE_MEDIA_PRODUCT" - Media Product.
	//   "FILE_TYPE_INSERTION_ORDER" - Insertion Order.
	//   "FILE_TYPE_LINE_ITEM" - Line Item.
	//   "FILE_TYPE_AD_GROUP" - YouTube Ad Group.
	//   "FILE_TYPE_AD" - YouTube Ad.
	//   "FILE_TYPE_LINE_ITEM_QA" - Line Item - QA format.
	//   "FILE_TYPE_AD_GROUP_QA" - YouTube Ad Group - QA format.
	FileType []string `json:"fileType,omitempty"`
	// FilterIds: The IDs of the specified filter type. This is used to filter
	// entities to fetch. If filter type is not `FILTER_TYPE_NONE`, at least one ID
	// must be specified.
	FilterIds googleapi.Int64s `json:"filterIds,omitempty"`
	// FilterType: Required. Filter type used to filter fetched entities.
	//
	// Possible values:
	//   "FILTER_TYPE_UNSPECIFIED" - Default value when type is unspecified or is
	// unknown in this version.
	//   "FILTER_TYPE_NONE" - If selected, no filter will be applied to the
	// download. Can only be used if an Advertiser is specified in
	// CreateSdfDownloadTaskRequest.
	//   "FILTER_TYPE_ADVERTISER_ID" - Advertiser ID. If selected, all filter IDs
	// must be Advertiser IDs that belong to the Partner specified in
	// CreateSdfDownloadTaskRequest.
	//   "FILTER_TYPE_CAMPAIGN_ID" - Campaign ID. If selected, all filter IDs must
	// be Campaign IDs that belong to the Advertiser or Partner specified in
	// CreateSdfDownloadTaskRequest.
	//   "FILTER_TYPE_MEDIA_PRODUCT_ID" - Media Product ID. If selected, all filter
	// IDs must be Media Product IDs that belong to the Advertiser or Partner
	// specified in CreateSdfDownloadTaskRequest. Can only be used for downloading
	// `FILE_TYPE_MEDIA_PRODUCT`.
	//   "FILTER_TYPE_INSERTION_ORDER_ID" - Insertion Order ID. If selected, all
	// filter IDs must be Insertion Order IDs that belong to the Advertiser or
	// Partner specified in CreateSdfDownloadTaskRequest. Can only be used for
	// downloading `FILE_TYPE_INSERTION_ORDER`, `FILE_TYPE_LINE_ITEM`,
	// `FILE_TYPE_LINE_ITEM_QA`, `FILE_TYPE_AD_GROUP`, `FILE_TYPE_AD_GROUP_QA`, and
	// `FILE_TYPE_AD`.
	//   "FILTER_TYPE_LINE_ITEM_ID" - Line Item ID. If selected, all filter IDs
	// must be Line Item IDs that belong to the Advertiser or Partner specified in
	// CreateSdfDownloadTaskRequest. Can only be used for downloading
	// `FILE_TYPE_LINE_ITEM`, `FILE_TYPE_LINE_ITEM_QA`,`FILE_TYPE_AD_GROUP`,
	// `FILE_TYPE_AD_GROUP_QA`, and `FILE_TYPE_AD`.
	FilterType string `json:"filterType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "FileType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "FileType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ParentEntityFilter) MarshalJSON() ([]byte, error) {
	type NoMethod ParentEntityFilter
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ParentalStatusAssignedTargetingOptionDetails: Details for assigned parental
// status targeting option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_PARENTAL_STATUS`.
type ParentalStatusAssignedTargetingOptionDetails struct {
	// ParentalStatus: Required. The parental status of the audience.
	//
	// Possible values:
	//   "PARENTAL_STATUS_UNSPECIFIED" - Default value when parental status is not
	// specified in this version. This enum is a place holder for default value and
	// does not represent a real parental status option.
	//   "PARENTAL_STATUS_PARENT" - The audience is a parent.
	//   "PARENTAL_STATUS_NOT_A_PARENT" - The audience is not a parent.
	//   "PARENTAL_STATUS_UNKNOWN" - The parental status of the audience is
	// unknown.
	ParentalStatus string `json:"parentalStatus,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ParentalStatus") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ParentalStatus") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ParentalStatusAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ParentalStatusAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ParentalStatusTargetingOptionDetails: Represents a targetable parental
// status. This will be populated in the parental_status_details field of a
// TargetingOption when targeting_type is `TARGETING_TYPE_PARENTAL_STATUS`.
type ParentalStatusTargetingOptionDetails struct {
	// ParentalStatus: Output only. The parental status of an audience.
	//
	// Possible values:
	//   "PARENTAL_STATUS_UNSPECIFIED" - Default value when parental status is not
	// specified in this version. This enum is a place holder for default value and
	// does not represent a real parental status option.
	//   "PARENTAL_STATUS_PARENT" - The audience is a parent.
	//   "PARENTAL_STATUS_NOT_A_PARENT" - The audience is not a parent.
	//   "PARENTAL_STATUS_UNKNOWN" - The parental status of the audience is
	// unknown.
	ParentalStatus string `json:"parentalStatus,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ParentalStatus") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ParentalStatus") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ParentalStatusTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ParentalStatusTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Partner: A single partner in Display & Video 360 (DV360).
type Partner struct {
	// AdServerConfig: Ad server related settings of the partner.
	AdServerConfig *PartnerAdServerConfig `json:"adServerConfig,omitempty"`
	// BillingConfig: Billing related settings of the partner.
	BillingConfig *PartnerBillingConfig `json:"billingConfig,omitempty"`
	// DataAccessConfig: Settings that control how partner data may be accessed.
	DataAccessConfig *PartnerDataAccessConfig `json:"dataAccessConfig,omitempty"`
	// DisplayName: The display name of the partner. Must be UTF-8 encoded with a
	// maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// EntityStatus: Output only. The status of the partner.
	//
	// Possible values:
	//   "ENTITY_STATUS_UNSPECIFIED" - Default value when status is not specified
	// or is unknown in this version.
	//   "ENTITY_STATUS_ACTIVE" - The entity is enabled to bid and spend budget.
	//   "ENTITY_STATUS_ARCHIVED" - The entity is archived. Bidding and budget
	// spending are disabled. An entity can be deleted after archived. Deleted
	// entities cannot be retrieved.
	//   "ENTITY_STATUS_DRAFT" - The entity is under draft. Bidding and budget
	// spending are disabled.
	//   "ENTITY_STATUS_PAUSED" - Bidding and budget spending are paused for the
	// entity.
	//   "ENTITY_STATUS_SCHEDULED_FOR_DELETION" - The entity is scheduled for
	// deletion.
	EntityStatus string `json:"entityStatus,omitempty"`
	// ExchangeConfig: Settings that control which exchanges are enabled for the
	// partner.
	ExchangeConfig *ExchangeConfig `json:"exchangeConfig,omitempty"`
	// GeneralConfig: General settings of the partner.
	GeneralConfig *PartnerGeneralConfig `json:"generalConfig,omitempty"`
	// Name: Output only. The resource name of the partner.
	Name string `json:"name,omitempty"`
	// PartnerId: Output only. The unique ID of the partner. Assigned by the
	// system.
	PartnerId int64 `json:"partnerId,omitempty,string"`
	// UpdateTime: Output only. The timestamp when the partner was last updated.
	// Assigned by the system.
	UpdateTime string `json:"updateTime,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AdServerConfig") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdServerConfig") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Partner) MarshalJSON() ([]byte, error) {
	type NoMethod Partner
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PartnerAdServerConfig: Ad server related settings of a partner.
type PartnerAdServerConfig struct {
	// MeasurementConfig: Measurement settings of a partner.
	MeasurementConfig *MeasurementConfig `json:"measurementConfig,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MeasurementConfig") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "MeasurementConfig") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PartnerAdServerConfig) MarshalJSON() ([]byte, error) {
	type NoMethod PartnerAdServerConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PartnerBillingConfig: Billing related settings of a partner.
type PartnerBillingConfig struct {
	// BillingProfileId: The ID of a partner default billing profile.
	BillingProfileId int64 `json:"billingProfileId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "BillingProfileId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BillingProfileId") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PartnerBillingConfig) MarshalJSON() ([]byte, error) {
	type NoMethod PartnerBillingConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PartnerCost: Settings that control a partner cost. A partner cost is any
// type of expense involved in running a campaign, other than the costs of
// purchasing impressions (which is called the media cost) and using
// third-party audience segment data (data fee). Some examples of partner costs
// include the fees for using DV360, a third-party ad server, or a third-party
// ad serving verification service.
type PartnerCost struct {
	// CostType: Required. The type of the partner cost.
	//
	// Possible values:
	//   "PARTNER_COST_TYPE_UNSPECIFIED" - Type value is not specified or is
	// unknown in this version.
	//   "PARTNER_COST_TYPE_ADLOOX" - The cost is charged for using Scope3
	// (previously known as Adloox). Billed by the partner.
	//   "PARTNER_COST_TYPE_ADLOOX_PREBID" - The cost is charged for using Scope3
	// (previously known as Adloox) Pre-Bid. Billed through DV360.
	//   "PARTNER_COST_TYPE_ADSAFE" - The cost is charged for using AdSafe. Billed
	// by the partner.
	//   "PARTNER_COST_TYPE_ADXPOSE" - The cost is charged for using AdExpose.
	// Billed by the partner.
	//   "PARTNER_COST_TYPE_AGGREGATE_KNOWLEDGE" - The cost is charged for using
	// Aggregate Knowledge. Billed by the partner.
	//   "PARTNER_COST_TYPE_AGENCY_TRADING_DESK" - The cost is charged for using an
	// Agency Trading Desk. Billed by the partner.
	//   "PARTNER_COST_TYPE_DV360_FEE" - The cost is charged for using DV360.
	// Billed through DV360.
	//   "PARTNER_COST_TYPE_COMSCORE_VCE" - The cost is charged for using comScore
	// vCE. Billed through DV360.
	//   "PARTNER_COST_TYPE_DATA_MANAGEMENT_PLATFORM" - The cost is charged for
	// using a Data Management Platform. Billed by the partner.
	//   "PARTNER_COST_TYPE_DEFAULT" - The default cost type. Billed by the
	// partner.
	//   "PARTNER_COST_TYPE_DOUBLE_VERIFY" - The cost is charged for using
	// DoubleVerify. Billed by the partner.
	//   "PARTNER_COST_TYPE_DOUBLE_VERIFY_PREBID" - The cost is charged for using
	// DoubleVerify Pre-Bid. Billed through DV360.
	//   "PARTNER_COST_TYPE_EVIDON" - The cost is charged for using Evidon. Billed
	// by the partner.
	//   "PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE_VIDEO" - The cost is charged for
	// using Integral Ad Science Video. Billed by the partner.
	//   "PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE_PREBID" - The cost is charged for
	// using Integral Ad Science Pre-Bid. Billed through DV360.
	//   "PARTNER_COST_TYPE_MEDIA_COST_DATA" - The cost is charged for using media
	// cost data. Billed by the partner.
	//   "PARTNER_COST_TYPE_MOAT_VIDEO" - The cost is charged for using MOAT Video.
	// Billed by the partner.
	//   "PARTNER_COST_TYPE_NIELSEN_DAR" - The cost is charged for using Nielsen
	// Digital Ad Ratings. Billed through DV360.
	//   "PARTNER_COST_TYPE_SHOP_LOCAL" - The cost is charged for using ShopLocal.
	// Billed by the partner.
	//   "PARTNER_COST_TYPE_TERACENT" - The cost is charged for using Teracent.
	// Billed by the partner.
	//   "PARTNER_COST_TYPE_THIRD_PARTY_AD_SERVER" - The cost is charged for using
	// a third-party ad server. Billed by the partner.
	//   "PARTNER_COST_TYPE_TRUST_METRICS" - The cost is charged for using
	// TrustMetrics. Billed by the partner.
	//   "PARTNER_COST_TYPE_VIZU" - The cost is charged for using Vizu. Billed by
	// the partner.
	//   "PARTNER_COST_TYPE_CUSTOM_FEE_1" - The cost is charged as custom fee 1.
	// Billed by the partner.
	//   "PARTNER_COST_TYPE_CUSTOM_FEE_2" - The cost is charged as custom fee 2.
	// Billed by the partner.
	//   "PARTNER_COST_TYPE_CUSTOM_FEE_3" - The cost is charged as custom fee 3.
	// Billed by the partner.
	//   "PARTNER_COST_TYPE_CUSTOM_FEE_4" - The cost is charged as custom fee 4.
	// Billed by the partner.
	//   "PARTNER_COST_TYPE_CUSTOM_FEE_5" - The cost is charged as custom fee 5.
	// Billed by the partner.
	//   "PARTNER_COST_TYPE_SCIBIDS_FEE" - The cost is charged for using Scibids.
	// Billed through DV360. This type is currently only available to certain
	// customers. Other customers attempting to use this type will receive an
	// error.
	CostType string `json:"costType,omitempty"`
	// FeeAmount: The CPM fee amount in micros of advertiser's currency. Applicable
	// when the fee_type is `PARTNER_FEE_TYPE_CPM_FEE`. Must be greater than or
	// equal to 0. For example, for 1.5 standard unit of the advertiser's currency,
	// set this field to 1500000.
	FeeAmount int64 `json:"feeAmount,omitempty,string"`
	// FeePercentageMillis: The media fee percentage in millis (1/1000 of a
	// percent). Applicable when the fee_type is `PARTNER_FEE_TYPE_MEDIA_FEE`. Must
	// be greater than or equal to 0. For example: 100 represents 0.1%.
	FeePercentageMillis int64 `json:"feePercentageMillis,omitempty,string"`
	// FeeType: Required. The fee type for this partner cost.
	//
	// Possible values:
	//   "PARTNER_COST_FEE_TYPE_UNSPECIFIED" - Value is not specified or is unknown
	// in this version.
	//   "PARTNER_COST_FEE_TYPE_CPM_FEE" - The partner cost is a fixed CPM fee. Not
	// applicable when the partner cost cost_type is one of: *
	// `PARTNER_COST_TYPE_MEDIA_COST_DATA` * `PARTNER_COST_TYPE_DV360_FEE`.
	//   "PARTNER_COST_FEE_TYPE_MEDIA_FEE" - The partner cost is a percentage
	// surcharge based on the media cost. Not applicable when the partner cost_type
	// is one of: * `PARTNER_COST_TYPE_SHOP_LOCAL` *
	// `PARTNER_COST_TYPE_TRUST_METRICS` *
	// `PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE_VIDEO` *
	// `PARTNER_COST_TYPE_MOAT_VIDEO`.
	FeeType string `json:"feeType,omitempty"`
	// InvoiceType: The invoice type for this partner cost. * Required when
	// cost_type is one of: - `PARTNER_COST_TYPE_ADLOOX` -
	// `PARTNER_COST_TYPE_DOUBLE_VERIFY` - `PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE`.
	// * Output only for other types.
	//
	// Possible values:
	//   "PARTNER_COST_INVOICE_TYPE_UNSPECIFIED" - Type value is not specified or
	// is unknown in this version.
	//   "PARTNER_COST_INVOICE_TYPE_DV360" - Partner cost is billed through DV360.
	//   "PARTNER_COST_INVOICE_TYPE_PARTNER" - Partner cost is billed by the
	// partner.
	InvoiceType string `json:"invoiceType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CostType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CostType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PartnerCost) MarshalJSON() ([]byte, error) {
	type NoMethod PartnerCost
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PartnerDataAccessConfig: Settings that control how partner related data may
// be accessed.
type PartnerDataAccessConfig struct {
	// SdfConfig: Structured Data Files (SDF) settings for the partner. The SDF
	// configuration for the partner.
	SdfConfig *SdfConfig `json:"sdfConfig,omitempty"`
	// ForceSendFields is a list of field names (e.g. "SdfConfig") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "SdfConfig") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PartnerDataAccessConfig) MarshalJSON() ([]byte, error) {
	type NoMethod PartnerDataAccessConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PartnerGeneralConfig: General settings of a partner.
type PartnerGeneralConfig struct {
	// CurrencyCode: Immutable. Partner's currency in ISO 4217 format.
	CurrencyCode string `json:"currencyCode,omitempty"`
	// TimeZone: Immutable. The standard TZ database name of the partner's time
	// zone. For example, `America/New_York`. See more at:
	// https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
	TimeZone string `json:"timeZone,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CurrencyCode") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CurrencyCode") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PartnerGeneralConfig) MarshalJSON() ([]byte, error) {
	type NoMethod PartnerGeneralConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PartnerRevenueModel: Settings that control how partner revenue is
// calculated.
type PartnerRevenueModel struct {
	// MarkupAmount: Required. The markup amount of the partner revenue model. Must
	// be greater than or equal to 0. * When the markup_type is set to be
	// `PARTNER_REVENUE_MODEL_MARKUP_TYPE_CPM`, this field represents the CPM
	// markup in micros of advertiser's currency. For example, 1500000 represents
	// 1.5 standard units of the currency. * When the markup_type is set to be
	// `PARTNER_REVENUE_MODEL_MARKUP_TYPE_MEDIA_COST_MARKUP`, this field represents
	// the media cost percent markup in millis. For example, 100 represents 0.1%
	// (decimal 0.001). * When the markup_type is set to be
	// `PARTNER_REVENUE_MODEL_MARKUP_TYPE_TOTAL_MEDIA_COST_MARKUP`, this field
	// represents the total media cost percent markup in millis. For example, 100
	// represents 0.1% (decimal 0.001).
	MarkupAmount int64 `json:"markupAmount,omitempty,string"`
	// MarkupType: Required. The markup type of the partner revenue model.
	//
	// Possible values:
	//   "PARTNER_REVENUE_MODEL_MARKUP_TYPE_UNSPECIFIED" - Type value is not
	// specified or is unknown in this version.
	//   "PARTNER_REVENUE_MODEL_MARKUP_TYPE_CPM" - Calculate the partner revenue
	// based on a fixed CPM.
	//   "PARTNER_REVENUE_MODEL_MARKUP_TYPE_MEDIA_COST_MARKUP" - Calculate the
	// partner revenue based on a percentage surcharge of its media cost.
	//   "PARTNER_REVENUE_MODEL_MARKUP_TYPE_TOTAL_MEDIA_COST_MARKUP" - Calculate
	// the partner revenue based on a percentage surcharge of its total media cost,
	// which includes all partner costs and data costs.
	MarkupType string `json:"markupType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MarkupAmount") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "MarkupAmount") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PartnerRevenueModel) MarshalJSON() ([]byte, error) {
	type NoMethod PartnerRevenueModel
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PerformanceGoal: Settings that control the performance goal of a campaign.
type PerformanceGoal struct {
	// PerformanceGoalAmountMicros: The goal amount, in micros of the advertiser's
	// currency. Applicable when performance_goal_type is one of: *
	// `PERFORMANCE_GOAL_TYPE_CPM` * `PERFORMANCE_GOAL_TYPE_CPC` *
	// `PERFORMANCE_GOAL_TYPE_CPA` * `PERFORMANCE_GOAL_TYPE_CPIAVC` *
	// `PERFORMANCE_GOAL_TYPE_VCPM` For example 1500000 represents 1.5 standard
	// units of the currency.
	PerformanceGoalAmountMicros int64 `json:"performanceGoalAmountMicros,omitempty,string"`
	// PerformanceGoalPercentageMicros: The decimal representation of the goal
	// percentage in micros. Applicable when performance_goal_type is one of: *
	// `PERFORMANCE_GOAL_TYPE_CTR` * `PERFORMANCE_GOAL_TYPE_VIEWABILITY` *
	// `PERFORMANCE_GOAL_TYPE_CLICK_CVR` * `PERFORMANCE_GOAL_TYPE_IMPRESSION_CVR` *
	// `PERFORMANCE_GOAL_TYPE_VTR` * `PERFORMANCE_GOAL_TYPE_AUDIO_COMPLETION_RATE`
	// * `PERFORMANCE_GOAL_TYPE_VIDEO_COMPLETION_RATE` For example, 70000
	// represents 7% (decimal 0.07).
	PerformanceGoalPercentageMicros int64 `json:"performanceGoalPercentageMicros,omitempty,string"`
	// PerformanceGoalString: A key performance indicator (KPI) string, which can
	// be empty. Must be UTF-8 encoded with a length of no more than 100
	// characters. Applicable when performance_goal_type is set to
	// `PERFORMANCE_GOAL_TYPE_OTHER`.
	PerformanceGoalString string `json:"performanceGoalString,omitempty"`
	// PerformanceGoalType: Required. The type of the performance goal.
	//
	// Possible values:
	//   "PERFORMANCE_GOAL_TYPE_UNSPECIFIED" - Performance goal type is not
	// specified or is unknown in this version.
	//   "PERFORMANCE_GOAL_TYPE_CPM" - The performance goal is set in CPM (cost per
	// mille).
	//   "PERFORMANCE_GOAL_TYPE_CPC" - The performance goal is set in CPC (cost per
	// click).
	//   "PERFORMANCE_GOAL_TYPE_CPA" - The performance goal is set in CPA (cost per
	// action).
	//   "PERFORMANCE_GOAL_TYPE_CTR" - The performance goal is set in CTR
	// (click-through rate) percentage.
	//   "PERFORMANCE_GOAL_TYPE_VIEWABILITY" - The performance goal is set in
	// Viewability percentage.
	//   "PERFORMANCE_GOAL_TYPE_CPIAVC" - The performance goal is set as CPIAVC
	// (cost per impression audible and visible at completion).
	//   "PERFORMANCE_GOAL_TYPE_CPE" - The performance goal is set in CPE (cost per
	// engagement).
	//   "PERFORMANCE_GOAL_TYPE_CPV" - The performance goal is set in CPV (cost per
	// view).
	//   "PERFORMANCE_GOAL_TYPE_CLICK_CVR" - The performance goal is set in click
	// conversion rate (conversions per click) percentage.
	//   "PERFORMANCE_GOAL_TYPE_IMPRESSION_CVR" - The performance goal is set in
	// impression conversion rate (conversions per impression) percentage.
	//   "PERFORMANCE_GOAL_TYPE_VCPM" - The performance goal is set in VCPM (cost
	// per thousand viewable impressions).
	//   "PERFORMANCE_GOAL_TYPE_VTR" - The performance goal is set in YouTube view
	// rate (YouTube views per impression) percentage.
	//   "PERFORMANCE_GOAL_TYPE_AUDIO_COMPLETION_RATE" - The performance goal is
	// set in audio completion rate (complete audio listens per impression)
	// percentage.
	//   "PERFORMANCE_GOAL_TYPE_VIDEO_COMPLETION_RATE" - The performance goal is
	// set in video completion rate (complete video views per impression)
	// percentage.
	//   "PERFORMANCE_GOAL_TYPE_OTHER" - The performance goal is set to Other.
	PerformanceGoalType string `json:"performanceGoalType,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "PerformanceGoalAmountMicros") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. See https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields
	// for more details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "PerformanceGoalAmountMicros") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PerformanceGoal) MarshalJSON() ([]byte, error) {
	type NoMethod PerformanceGoal
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PerformanceGoalBidStrategy: A strategy that automatically adjusts the bid to
// meet or beat a specified performance goal.
type PerformanceGoalBidStrategy struct {
	// CustomBiddingAlgorithmId: The ID of the Custom Bidding Algorithm used by
	// this strategy. Only applicable when performance_goal_type is set to
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`. Assigning a custom
	// bidding algorithm that uses floodlight activities not identified in
	// floodlightActivityConfigs will return an error.
	CustomBiddingAlgorithmId int64 `json:"customBiddingAlgorithmId,omitempty,string"`
	// MaxAverageCpmBidAmountMicros: The maximum average CPM that may be bid, in
	// micros of the advertiser's currency. Must be greater than or equal to a
	// billable unit of the given currency. Not applicable when
	// performance_goal_type is set to
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`. For example, 1500000
	// represents 1.5 standard units of the currency.
	MaxAverageCpmBidAmountMicros int64 `json:"maxAverageCpmBidAmountMicros,omitempty,string"`
	// PerformanceGoalAmountMicros: Required. The performance goal the bidding
	// strategy will attempt to meet or beat, in micros of the advertiser's
	// currency or in micro of the ROAS (Return On Advertising Spend) value which
	// is also based on advertiser's currency. Must be greater than or equal to a
	// billable unit of the given currency and smaller or equal to upper bounds.
	// Each performance_goal_type has its upper bound: * when performance_goal_type
	// is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA`, upper bound is 10000.00
	// USD. * when performance_goal_type is
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC`, upper bound is 1000.00 USD. *
	// when performance_goal_type is
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, upper bound is
	// 1000.00 USD. * when performance_goal_type is
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`, upper bound is 1000.00
	// and lower bound is 0.01. Example: If set to
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, the bid price will be
	// based on the probability that each available impression will be viewable.
	// For example, if viewable CPM target is $2 and an impression is 40% likely to
	// be viewable, the bid price will be $0.80 CPM (40% of $2). For example,
	// 1500000 represents 1.5 standard units of the currency or ROAS value.
	PerformanceGoalAmountMicros int64 `json:"performanceGoalAmountMicros,omitempty,string"`
	// PerformanceGoalType: Required. The type of the performance goal that the
	// bidding strategy will try to meet or beat. For line item level usage, the
	// value must be one of: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` *
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` *
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` *
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
	//
	// Possible values:
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_UNSPECIFIED" - Type value is not
	// specified or is unknown in this version.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA" - Cost per action.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC" - Cost per click.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM" - Viewable CPM.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO" - Custom bidding
	// algorithm.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA" - Completed inview and
	// audible views.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN" - Inview time over 10
	// secs views.
	//   "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED" - Viewable impressions.
	PerformanceGoalType string `json:"performanceGoalType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CustomBiddingAlgorithmId")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CustomBiddingAlgorithmId") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PerformanceGoalBidStrategy) MarshalJSON() ([]byte, error) {
	type NoMethod PerformanceGoalBidStrategy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PoiAssignedTargetingOptionDetails: Details for assigned POI targeting
// option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`.
type PoiAssignedTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of a POI, e.g. "Times Square",
	// "Space Needle", followed by its full address if available.
	DisplayName string `json:"displayName,omitempty"`
	// Latitude: Output only. Latitude of the POI rounding to 6th decimal place.
	Latitude float64 `json:"latitude,omitempty"`
	// Longitude: Output only. Longitude of the POI rounding to 6th decimal place.
	Longitude float64 `json:"longitude,omitempty"`
	// ProximityRadiusAmount: Required. The radius of the area around the POI that
	// will be targeted. The units of the radius are specified by
	// proximity_radius_unit. Must be 1 to 800 if unit is
	// `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
	ProximityRadiusAmount float64 `json:"proximityRadiusAmount,omitempty"`
	// ProximityRadiusUnit: Required. The unit of distance by which the targeting
	// radius is measured.
	//
	// Possible values:
	//   "DISTANCE_UNIT_UNSPECIFIED" - Type value is not specified or is unknown in
	// this version.
	//   "DISTANCE_UNIT_MILES" - Miles.
	//   "DISTANCE_UNIT_KILOMETERS" - Kilometers.
	ProximityRadiusUnit string `json:"proximityRadiusUnit,omitempty"`
	// TargetingOptionId: Required. The targeting_option_id of a TargetingOption of
	// type `TARGETING_TYPE_POI`. Accepted POI targeting option IDs can be
	// retrieved using `targetingTypes.targetingOptions.search`. If targeting a
	// specific latitude/longitude coordinate removed from an address or POI name,
	// you can generate the necessary targeting option ID by rounding the desired
	// coordinate values to the 6th decimal place, removing the decimals, and
	// concatenating the string values separated by a semicolon. For example, you
	// can target the latitude/longitude pair of 40.7414691, -74.003387 using the
	// targeting option ID "40741469;-74003387". **Upon** **creation, this field
	// value will be updated to append a semicolon and** **alphanumerical hash
	// value if only latitude/longitude coordinates are** **provided.**
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PoiAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod PoiAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *PoiAssignedTargetingOptionDetails) UnmarshalJSON(data []byte) error {
	type NoMethod PoiAssignedTargetingOptionDetails
	var s1 struct {
		Latitude              gensupport.JSONFloat64 `json:"latitude"`
		Longitude             gensupport.JSONFloat64 `json:"longitude"`
		ProximityRadiusAmount gensupport.JSONFloat64 `json:"proximityRadiusAmount"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Latitude = float64(s1.Latitude)
	s.Longitude = float64(s1.Longitude)
	s.ProximityRadiusAmount = float64(s1.ProximityRadiusAmount)
	return nil
}

// PoiSearchTerms: Search terms for POI targeting options.
type PoiSearchTerms struct {
	// PoiQuery: The search query for the desired POI name, street address, or
	// coordinate of the desired POI. The query can be a prefix, e.g. "Times
	// squar", "40.7505045,-73.99562", "315 W 44th St", etc.
	PoiQuery string `json:"poiQuery,omitempty"`
	// ForceSendFields is a list of field names (e.g. "PoiQuery") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "PoiQuery") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PoiSearchTerms) MarshalJSON() ([]byte, error) {
	type NoMethod PoiSearchTerms
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PoiTargetingOptionDetails: Represents a targetable point of interest(POI).
// This will be populated in the poi_details field when targeting_type is
// `TARGETING_TYPE_POI`.
type PoiTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of a POI(e.g. "Times Square",
	// "Space Needle"), followed by its full address if available.
	DisplayName string `json:"displayName,omitempty"`
	// Latitude: Output only. Latitude of the POI rounding to 6th decimal place.
	Latitude float64 `json:"latitude,omitempty"`
	// Longitude: Output only. Longitude of the POI rounding to 6th decimal place.
	Longitude float64 `json:"longitude,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PoiTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod PoiTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *PoiTargetingOptionDetails) UnmarshalJSON(data []byte) error {
	type NoMethod PoiTargetingOptionDetails
	var s1 struct {
		Latitude  gensupport.JSONFloat64 `json:"latitude"`
		Longitude gensupport.JSONFloat64 `json:"longitude"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Latitude = float64(s1.Latitude)
	s.Longitude = float64(s1.Longitude)
	return nil
}

// PrismaConfig: Settings specific to the Mediaocean Prisma tool.
type PrismaConfig struct {
	// PrismaCpeCode: Required. Relevant client, product, and estimate codes from
	// the Mediaocean Prisma tool.
	PrismaCpeCode *PrismaCpeCode `json:"prismaCpeCode,omitempty"`
	// PrismaType: Required. The Prisma type.
	//
	// Possible values:
	//   "PRISMA_TYPE_UNSPECIFIED" - Type is not specified or unknown in this
	// version.
	//   "PRISMA_TYPE_DISPLAY" - Display type.
	//   "PRISMA_TYPE_SEARCH" - Search type.
	//   "PRISMA_TYPE_VIDEO" - Video type.
	//   "PRISMA_TYPE_AUDIO" - Audio type.
	//   "PRISMA_TYPE_SOCIAL" - Social type.
	//   "PRISMA_TYPE_FEE" - Fee type.
	PrismaType string `json:"prismaType,omitempty"`
	// Supplier: Required. The entity allocated this budget (DSP, site, etc.).
	Supplier string `json:"supplier,omitempty"`
	// ForceSendFields is a list of field names (e.g. "PrismaCpeCode") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "PrismaCpeCode") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PrismaConfig) MarshalJSON() ([]byte, error) {
	type NoMethod PrismaConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PrismaCpeCode: Google Payments Center supports searching and filtering on
// the component fields of this code.
type PrismaCpeCode struct {
	// PrismaClientCode: The Prisma client code.
	PrismaClientCode string `json:"prismaClientCode,omitempty"`
	// PrismaEstimateCode: The Prisma estimate code.
	PrismaEstimateCode string `json:"prismaEstimateCode,omitempty"`
	// PrismaProductCode: The Prisma product code.
	PrismaProductCode string `json:"prismaProductCode,omitempty"`
	// ForceSendFields is a list of field names (e.g. "PrismaClientCode") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "PrismaClientCode") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PrismaCpeCode) MarshalJSON() ([]byte, error) {
	type NoMethod PrismaCpeCode
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ProductFeedData: The details of product feed.
type ProductFeedData struct {
	// IsFeedDisabled: Whether the product feed has opted-out of showing products.
	IsFeedDisabled bool `json:"isFeedDisabled,omitempty"`
	// ProductMatchDimensions: A list of dimensions used to match products.
	ProductMatchDimensions []*ProductMatchDimension `json:"productMatchDimensions,omitempty"`
	// ProductMatchType: How products are selected by the product feed.
	//
	// Possible values:
	//   "PRODUCT_MATCH_TYPE_UNSPECIFIED" - Not specified or unknown.
	//   "PRODUCT_MATCH_TYPE_ALL_PRODUCTS" - All the products are matched.
	//   "PRODUCT_MATCH_TYPE_SPECIFIC_PRODUCTS" - Specific products are selected.
	//   "PRODUCT_MATCH_TYPE_CUSTOM_LABEL" - Match products by their custom labels.
	ProductMatchType string `json:"productMatchType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "IsFeedDisabled") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "IsFeedDisabled") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ProductFeedData) MarshalJSON() ([]byte, error) {
	type NoMethod ProductFeedData
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ProductMatchDimension: A dimension used to match products.
type ProductMatchDimension struct {
	// CustomLabel: The custom label to match all the products with the label.
	CustomLabel *CustomLabel `json:"customLabel,omitempty"`
	// ProductOfferId: The ID of the product offer to match with a product with the
	// same offer ID.
	ProductOfferId string `json:"productOfferId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CustomLabel") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CustomLabel") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ProductMatchDimension) MarshalJSON() ([]byte, error) {
	type NoMethod ProductMatchDimension
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ProximityLocationListAssignedTargetingOptionDetails: Targeting details for
// proximity location list. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
type ProximityLocationListAssignedTargetingOptionDetails struct {
	// ProximityLocationListId: Required. ID of the proximity location list. Should
	// refer to the location_list_id field of a LocationList resource whose type is
	// `TARGETING_LOCATION_TYPE_PROXIMITY`.
	ProximityLocationListId int64 `json:"proximityLocationListId,omitempty,string"`
	// ProximityRadius: Required. Radius expressed in the distance units set in
	// proximity_radius_unit. This represents the size of the area around a chosen
	// location that will be targeted. Radius should be between 1 and 500 miles or
	// 800 kilometers.
	ProximityRadius float64 `json:"proximityRadius,omitempty"`
	// ProximityRadiusUnit: Required. Radius distance units.
	//
	// Possible values:
	//   "PROXIMITY_RADIUS_UNIT_UNSPECIFIED" - Default value when distance units is
	// not specified in this version. This enum is a place holder for default value
	// and does not represent a real distance unit.
	//   "PROXIMITY_RADIUS_UNIT_MILES" - Radius distance unit in miles.
	//   "PROXIMITY_RADIUS_UNIT_KILOMETERS" - Radius distance unit in kilometeres
	ProximityRadiusUnit string `json:"proximityRadiusUnit,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ProximityLocationListId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ProximityLocationListId") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ProximityLocationListAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ProximityLocationListAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *ProximityLocationListAssignedTargetingOptionDetails) UnmarshalJSON(data []byte) error {
	type NoMethod ProximityLocationListAssignedTargetingOptionDetails
	var s1 struct {
		ProximityRadius gensupport.JSONFloat64 `json:"proximityRadius"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ProximityRadius = float64(s1.ProximityRadius)
	return nil
}

// RateDetails: The rate related settings of the inventory source.
type RateDetails struct {
	// InventorySourceRateType: The rate type. Acceptable values are
	// `INVENTORY_SOURCE_RATE_TYPE_CPM_FIXED`,
	// `INVENTORY_SOURCE_RATE_TYPE_CPM_FLOOR`, and
	// `INVENTORY_SOURCE_RATE_TYPE_CPD`.
	//
	// Possible values:
	//   "INVENTORY_SOURCE_RATE_TYPE_UNSPECIFIED" - The rate type is not specified
	// or is unknown in this version.
	//   "INVENTORY_SOURCE_RATE_TYPE_CPM_FIXED" - The rate type is CPM (Fixed).
	//   "INVENTORY_SOURCE_RATE_TYPE_CPM_FLOOR" - The rate type is CPM (Floor).
	//   "INVENTORY_SOURCE_RATE_TYPE_CPD" - The rate type is Cost per Day.
	//   "INVENTORY_SOURCE_RATE_TYPE_FLAT" - The rate type is Flat.
	InventorySourceRateType string `json:"inventorySourceRateType,omitempty"`
	// MinimumSpend: Output only. The amount that the buyer has committed to
	// spending on the inventory source up front. Only applicable for guaranteed
	// inventory sources.
	MinimumSpend *Money `json:"minimumSpend,omitempty"`
	// Rate: The rate for the inventory source.
	Rate *Money `json:"rate,omitempty"`
	// UnitsPurchased: Required for guaranteed inventory sources. The number of
	// impressions guaranteed by the seller.
	UnitsPurchased int64 `json:"unitsPurchased,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "InventorySourceRateType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "InventorySourceRateType") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s RateDetails) MarshalJSON() ([]byte, error) {
	type NoMethod RateDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// RegionalLocationListAssignedTargetingOptionDetails: Targeting details for
// regional location list. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_REGIONAL_LOCATION_LIST`.
type RegionalLocationListAssignedTargetingOptionDetails struct {
	// Negative: Indicates if this option is being negatively targeted.
	Negative bool `json:"negative,omitempty"`
	// RegionalLocationListId: Required. ID of the regional location list. Should
	// refer to the location_list_id field of a LocationList resource whose type is
	// `TARGETING_LOCATION_TYPE_REGIONAL`.
	RegionalLocationListId int64 `json:"regionalLocationListId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "Negative") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Negative") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s RegionalLocationListAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod RegionalLocationListAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// RemarketingConfig: Settings that control the whether remarketing is enabled
// for the given identified advertiser.
type RemarketingConfig struct {
	// AdvertiserId: Output only. The ID of the advertiser.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// RemarketingEnabled: Output only. Whether the Floodlight activity remarketing
	// user list is available to the identified advertiser.
	RemarketingEnabled bool `json:"remarketingEnabled,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s RemarketingConfig) MarshalJSON() ([]byte, error) {
	type NoMethod RemarketingConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ReplaceNegativeKeywordsRequest: Request message for
// NegativeKeywordService.ReplaceNegativeKeywords.
type ReplaceNegativeKeywordsRequest struct {
	// NewNegativeKeywords: The negative keywords that will replace the existing
	// keywords in the negative keyword list, specified as a list of
	// NegativeKeywords.
	NewNegativeKeywords []*NegativeKeyword `json:"newNegativeKeywords,omitempty"`
	// ForceSendFields is a list of field names (e.g. "NewNegativeKeywords") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NewNegativeKeywords") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ReplaceNegativeKeywordsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod ReplaceNegativeKeywordsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ReplaceNegativeKeywordsResponse: Response message for
// NegativeKeywordService.ReplaceNegativeKeywords.
type ReplaceNegativeKeywordsResponse struct {
	// NegativeKeywords: The full list of negative keywords now present in the
	// negative keyword list.
	NegativeKeywords []*NegativeKeyword `json:"negativeKeywords,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NegativeKeywords") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NegativeKeywords") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ReplaceNegativeKeywordsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ReplaceNegativeKeywordsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ReplaceSitesRequest: Request message for SiteService.ReplaceSites.
type ReplaceSitesRequest struct {
	// AdvertiserId: The ID of the advertiser that owns the parent channel.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// NewSites: The sites that will replace the existing sites assigned to the
	// channel, specified as a list of Sites.
	NewSites []*Site `json:"newSites,omitempty"`
	// PartnerId: The ID of the partner that owns the parent channel.
	PartnerId int64 `json:"partnerId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ReplaceSitesRequest) MarshalJSON() ([]byte, error) {
	type NoMethod ReplaceSitesRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ReplaceSitesResponse: Response message for SiteService.ReplaceSites.
type ReplaceSitesResponse struct {
	// Sites: The list of sites in the channel after replacing.
	Sites []*Site `json:"sites,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Sites") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Sites") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ReplaceSitesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ReplaceSitesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ReviewStatusInfo: Review statuses for the creative.
type ReviewStatusInfo struct {
	// ApprovalStatus: Represents the basic approval needed for a creative to begin
	// serving. Summary of creative_and_landing_page_review_status and
	// content_and_policy_review_status.
	//
	// Possible values:
	//   "APPROVAL_STATUS_UNSPECIFIED" - Type value is not specified or is unknown
	// in this version.
	//   "APPROVAL_STATUS_PENDING_NOT_SERVABLE" - The creative is still under
	// review and not servable.
	//   "APPROVAL_STATUS_PENDING_SERVABLE" - The creative has passed creative &
	// landing page review and is servable, but is awaiting additional content &
	// policy review.
	//   "APPROVAL_STATUS_APPROVED_SERVABLE" - Both creative & landing page review
	// and content & policy review are approved. The creative is servable.
	//   "APPROVAL_STATUS_REJECTED_NOT_SERVABLE" - There is an issue with the
	// creative that must be fixed before it can serve.
	ApprovalStatus string `json:"approvalStatus,omitempty"`
	// ContentAndPolicyReviewStatus: Content and policy review status for the
	// creative.
	//
	// Possible values:
	//   "REVIEW_STATUS_UNSPECIFIED" - Type value is not specified or is unknown in
	// this version.
	//   "REVIEW_STATUS_APPROVED" - The creative is approved.
	//   "REVIEW_STATUS_REJECTED" - The creative is rejected.
	//   "REVIEW_STATUS_PENDING" - The creative is pending review.
	ContentAndPolicyReviewStatus string `json:"contentAndPolicyReviewStatus,omitempty"`
	// CreativeAndLandingPageReviewStatus: Creative and landing page review status
	// for the creative.
	//
	// Possible values:
	//   "REVIEW_STATUS_UNSPECIFIED" - Type value is not specified or is unknown in
	// this version.
	//   "REVIEW_STATUS_APPROVED" - The creative is approved.
	//   "REVIEW_STATUS_REJECTED" - The creative is rejected.
	//   "REVIEW_STATUS_PENDING" - The creative is pending review.
	CreativeAndLandingPageReviewStatus string `json:"creativeAndLandingPageReviewStatus,omitempty"`
	// ExchangeReviewStatuses: Exchange review statuses for the creative.
	ExchangeReviewStatuses []*ExchangeReviewStatus `json:"exchangeReviewStatuses,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ApprovalStatus") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ApprovalStatus") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ReviewStatusInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ReviewStatusInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ScriptError: An error message for a custom bidding script.
type ScriptError struct {
	// Column: The column number in the script where the error was thrown.
	Column int64 `json:"column,omitempty,string"`
	// ErrorCode: The type of error.
	//
	// Possible values:
	//   "ERROR_CODE_UNSPECIFIED" - The script error is not specified or is unknown
	// in this version.
	//   "SYNTAX_ERROR" - The script has a syntax error.
	//   "DEPRECATED_SYNTAX" - The script uses deprecated syntax.
	//   "INTERNAL_ERROR" - Internal errors were thrown while processing the
	// script.
	ErrorCode string `json:"errorCode,omitempty"`
	// ErrorMessage: The detailed error message.
	ErrorMessage string `json:"errorMessage,omitempty"`
	// Line: The line number in the script where the error was thrown.
	Line int64 `json:"line,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "Column") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Column") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ScriptError) MarshalJSON() ([]byte, error) {
	type NoMethod ScriptError
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SdfConfig: Structured Data File (SDF) related settings.
type SdfConfig struct {
	// AdminEmail: An administrator email address to which the SDF processing
	// status reports will be sent.
	AdminEmail string `json:"adminEmail,omitempty"`
	// Version: Required. The version of SDF being used.
	//
	// Possible values:
	//   "SDF_VERSION_UNSPECIFIED" - SDF version value is not specified or is
	// unknown in this version.
	//   "SDF_VERSION_3_1" - SDF version 3.1
	//   "SDF_VERSION_4" - SDF version 4
	//   "SDF_VERSION_4_1" - SDF version 4.1
	//   "SDF_VERSION_4_2" - SDF version 4.2
	//   "SDF_VERSION_5" - SDF version 5.
	//   "SDF_VERSION_5_1" - SDF version 5.1
	//   "SDF_VERSION_5_2" - SDF version 5.2
	//   "SDF_VERSION_5_3" - SDF version 5.3
	//   "SDF_VERSION_5_4" - SDF version 5.4
	//   "SDF_VERSION_5_5" - SDF version 5.5
	//   "SDF_VERSION_6" - SDF version 6
	//   "SDF_VERSION_7" - SDF version 7. Read the [v7 migration
	// guide](/display-video/api/structured-data-file/v7-migration-guide) before
	// migrating to this version.
	//   "SDF_VERSION_7_1" - SDF version 7.1. Read the [v7 migration
	// guide](/display-video/api/structured-data-file/v7-migration-guide) before
	// migrating to this version.
	//   "SDF_VERSION_8" - SDF version 8. Read the [v8 migration
	// guide](/display-video/api/structured-data-file/v8-migration-guide) before
	// migrating to this version.
	//   "SDF_VERSION_8_1" - SDF version 8.1.
	Version string `json:"version,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdminEmail") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdminEmail") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SdfConfig) MarshalJSON() ([]byte, error) {
	type NoMethod SdfConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SdfDownloadTask: Type for the response returned by
// SdfDownloadTaskService.CreateSdfDownloadTask.
type SdfDownloadTask struct {
	// ResourceName: A resource name to be used in media.download to Download the
	// prepared files. Resource names have the format
	// `download/sdfdownloadtasks/media/{media_id}`. `media_id` will be made
	// available by the long running operation service once the task status is
	// done.
	ResourceName string `json:"resourceName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ResourceName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ResourceName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SdfDownloadTask) MarshalJSON() ([]byte, error) {
	type NoMethod SdfDownloadTask
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SdfDownloadTaskMetadata: Type for the metadata returned by
// SdfDownloadTaskService.CreateSdfDownloadTask.
type SdfDownloadTaskMetadata struct {
	// CreateTime: The time when the operation was created.
	CreateTime string `json:"createTime,omitempty"`
	// EndTime: The time when execution was completed.
	EndTime string `json:"endTime,omitempty"`
	// Version: The SDF version used to execute this download task.
	//
	// Possible values:
	//   "SDF_VERSION_UNSPECIFIED" - SDF version value is not specified or is
	// unknown in this version.
	//   "SDF_VERSION_3_1" - SDF version 3.1
	//   "SDF_VERSION_4" - SDF version 4
	//   "SDF_VERSION_4_1" - SDF version 4.1
	//   "SDF_VERSION_4_2" - SDF version 4.2
	//   "SDF_VERSION_5" - SDF version 5.
	//   "SDF_VERSION_5_1" - SDF version 5.1
	//   "SDF_VERSION_5_2" - SDF version 5.2
	//   "SDF_VERSION_5_3" - SDF version 5.3
	//   "SDF_VERSION_5_4" - SDF version 5.4
	//   "SDF_VERSION_5_5" - SDF version 5.5
	//   "SDF_VERSION_6" - SDF version 6
	//   "SDF_VERSION_7" - SDF version 7. Read the [v7 migration
	// guide](/display-video/api/structured-data-file/v7-migration-guide) before
	// migrating to this version.
	//   "SDF_VERSION_7_1" - SDF version 7.1. Read the [v7 migration
	// guide](/display-video/api/structured-data-file/v7-migration-guide) before
	// migrating to this version.
	//   "SDF_VERSION_8" - SDF version 8. Read the [v8 migration
	// guide](/display-video/api/structured-data-file/v8-migration-guide) before
	// migrating to this version.
	//   "SDF_VERSION_8_1" - SDF version 8.1.
	Version string `json:"version,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreateTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreateTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SdfDownloadTaskMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod SdfDownloadTaskMetadata
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SearchTargetingOptionsRequest: Request message for SearchTargetingOptions.
type SearchTargetingOptionsRequest struct {
	// AdvertiserId: Required. The Advertiser this request is being made in the
	// context of.
	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
	// BusinessChainSearchTerms: Search terms for Business Chain targeting options.
	// Can only be used when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
	BusinessChainSearchTerms *BusinessChainSearchTerms `json:"businessChainSearchTerms,omitempty"`
	// GeoRegionSearchTerms: Search terms for geo region targeting options. Can
	// only be used when targeting_type is `TARGETING_TYPE_GEO_REGION`.
	GeoRegionSearchTerms *GeoRegionSearchTerms `json:"geoRegionSearchTerms,omitempty"`
	// PageSize: Requested page size. Must be between `1` and `200`. If unspecified
	// will default to `100`. Returns error code `INVALID_ARGUMENT` if an invalid
	// value is specified.
	PageSize int64 `json:"pageSize,omitempty"`
	// PageToken: A token identifying a page of results the server should return.
	// Typically, this is the value of next_page_token returned from the previous
	// call to `SearchTargetingOptions` method. If not specified, the first page of
	// results will be returned.
	PageToken string `json:"pageToken,omitempty"`
	// PoiSearchTerms: Search terms for POI targeting options. Can only be used
	// when targeting_type is `TARGETING_TYPE_POI`.
	PoiSearchTerms *PoiSearchTerms `json:"poiSearchTerms,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdvertiserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdvertiserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SearchTargetingOptionsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod SearchTargetingOptionsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SearchTargetingOptionsResponse: Response message for SearchTargetingOptions.
type SearchTargetingOptionsResponse struct {
	// NextPageToken: A token to retrieve the next page of results. Pass this value
	// in the page_token field in the subsequent call to `SearchTargetingOptions`
	// method to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// TargetingOptions: The list of targeting options that match the search
	// criteria. This list will be absent if empty.
	TargetingOptions []*TargetingOption `json:"targetingOptions,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SearchTargetingOptionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod SearchTargetingOptionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SensitiveCategoryAssignedTargetingOptionDetails: Targeting details for
// sensitive category. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`.
type SensitiveCategoryAssignedTargetingOptionDetails struct {
	// ExcludedSensitiveCategory: Required. An enum for the DV360 Sensitive
	// category content classified to be EXCLUDED.
	//
	// Possible values:
	//   "SENSITIVE_CATEGORY_UNSPECIFIED" - This enum is only a placeholder and
	// doesn't specify a DV360 sensitive category.
	//   "SENSITIVE_CATEGORY_ADULT" - Adult or pornographic text, image, or video
	// content.
	//   "SENSITIVE_CATEGORY_DEROGATORY" - Content that may be construed as biased
	// against individuals, groups, or organizations based on criteria such as
	// race, religion, disability, sex, age, veteran status, sexual orientation,
	// gender identity, or political affiliation. May also indicate discussion of
	// such content, for instance, in an academic or journalistic context.
	//   "SENSITIVE_CATEGORY_DOWNLOADS_SHARING" - Content related to audio, video,
	// or software downloads.
	//   "SENSITIVE_CATEGORY_WEAPONS" - Contains content related to personal
	// weapons, including knives, guns, small firearms, and ammunition. Selecting
	// either "weapons" or "sensitive social issues" will result in selecting both.
	//   "SENSITIVE_CATEGORY_GAMBLING" - Contains content related to betting or
	// wagering in a real-world or online setting.
	//   "SENSITIVE_CATEGORY_VIOLENCE" - Content which may be considered
	// graphically violent, gory, gruesome, or shocking, such as street fighting
	// videos, accident photos, descriptions of torture, etc.
	//   "SENSITIVE_CATEGORY_SUGGESTIVE" - Adult content, as well as suggestive
	// content that's not explicitly pornographic. This category includes all pages
	// categorized as adult.
	//   "SENSITIVE_CATEGORY_PROFANITY" - Prominent use of words considered
	// indecent, such as curse words and sexual slang. Pages with only very
	// occasional usage, such as news sites that might include such words in a
	// quotation, are not included.
	//   "SENSITIVE_CATEGORY_ALCOHOL" - Contains content related to alcoholic
	// beverages, alcohol brands, recipes, etc.
	//   "SENSITIVE_CATEGORY_DRUGS" - Contains content related to the recreational
	// use of legal or illegal drugs, as well as to drug paraphernalia or
	// cultivation.
	//   "SENSITIVE_CATEGORY_TOBACCO" - Contains content related to tobacco and
	// tobacco accessories, including lighters, humidors, ashtrays, etc.
	//   "SENSITIVE_CATEGORY_POLITICS" - Political news and media, including
	// discussions of social, governmental, and public policy.
	//   "SENSITIVE_CATEGORY_RELIGION" - Content related to religious thought or
	// beliefs.
	//   "SENSITIVE_CATEGORY_TRAGEDY" - Content related to death, disasters,
	// accidents, war, etc.
	//   "SENSITIVE_CATEGORY_TRANSPORTATION_ACCIDENTS" - Content related to motor
	// vehicle, aviation or other transportation accidents.
	//   "SENSITIVE_CATEGORY_SENSITIVE_SOCIAL_ISSUES" - Issues that evoke strong,
	// opposing views and spark debate. These include issues that are controversial
	// in most countries and markets (such as abortion), as well as those that are
	// controversial in specific countries and markets (such as immigration reform
	// in the United States).
	//   "SENSITIVE_CATEGORY_SHOCKING" - Content which may be considered shocking
	// or disturbing, such as violent news stories, stunts, or toilet humor.
	//   "SENSITIVE_CATEGORY_EMBEDDED_VIDEO" - YouTube videos embedded on websites
	// outside of YouTube.com.
	//   "SENSITIVE_CATEGORY_LIVE_STREAMING_VIDEO" - Video of live events streamed
	// over the internet.
	ExcludedSensitiveCategory string `json:"excludedSensitiveCategory,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ExcludedSensitiveCategory")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ExcludedSensitiveCategory") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SensitiveCategoryAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod SensitiveCategoryAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SensitiveCategoryTargetingOptionDetails: Represents a targetable sensitive
// category. This will be populated in the sensitive_category_details field of
// the TargetingOption when targeting_type is
// `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`.
type SensitiveCategoryTargetingOptionDetails struct {
	// SensitiveCategory: Output only. An enum for the DV360 Sensitive category
	// content classifier.
	//
	// Possible values:
	//   "SENSITIVE_CATEGORY_UNSPECIFIED" - This enum is only a placeholder and
	// doesn't specify a DV360 sensitive category.
	//   "SENSITIVE_CATEGORY_ADULT" - Adult or pornographic text, image, or video
	// content.
	//   "SENSITIVE_CATEGORY_DEROGATORY" - Content that may be construed as biased
	// against individuals, groups, or organizations based on criteria such as
	// race, religion, disability, sex, age, veteran status, sexual orientation,
	// gender identity, or political affiliation. May also indicate discussion of
	// such content, for instance, in an academic or journalistic context.
	//   "SENSITIVE_CATEGORY_DOWNLOADS_SHARING" - Content related to audio, video,
	// or software downloads.
	//   "SENSITIVE_CATEGORY_WEAPONS" - Contains content related to personal
	// weapons, including knives, guns, small firearms, and ammunition. Selecting
	// either "weapons" or "sensitive social issues" will result in selecting both.
	//   "SENSITIVE_CATEGORY_GAMBLING" - Contains content related to betting or
	// wagering in a real-world or online setting.
	//   "SENSITIVE_CATEGORY_VIOLENCE" - Content which may be considered
	// graphically violent, gory, gruesome, or shocking, such as street fighting
	// videos, accident photos, descriptions of torture, etc.
	//   "SENSITIVE_CATEGORY_SUGGESTIVE" - Adult content, as well as suggestive
	// content that's not explicitly pornographic. This category includes all pages
	// categorized as adult.
	//   "SENSITIVE_CATEGORY_PROFANITY" - Prominent use of words considered
	// indecent, such as curse words and sexual slang. Pages with only very
	// occasional usage, such as news sites that might include such words in a
	// quotation, are not included.
	//   "SENSITIVE_CATEGORY_ALCOHOL" - Contains content related to alcoholic
	// beverages, alcohol brands, recipes, etc.
	//   "SENSITIVE_CATEGORY_DRUGS" - Contains content related to the recreational
	// use of legal or illegal drugs, as well as to drug paraphernalia or
	// cultivation.
	//   "SENSITIVE_CATEGORY_TOBACCO" - Contains content related to tobacco and
	// tobacco accessories, including lighters, humidors, ashtrays, etc.
	//   "SENSITIVE_CATEGORY_POLITICS" - Political news and media, including
	// discussions of social, governmental, and public policy.
	//   "SENSITIVE_CATEGORY_RELIGION" - Content related to religious thought or
	// beliefs.
	//   "SENSITIVE_CATEGORY_TRAGEDY" - Content related to death, disasters,
	// accidents, war, etc.
	//   "SENSITIVE_CATEGORY_TRANSPORTATION_ACCIDENTS" - Content related to motor
	// vehicle, aviation or other transportation accidents.
	//   "SENSITIVE_CATEGORY_SENSITIVE_SOCIAL_ISSUES" - Issues that evoke strong,
	// opposing views and spark debate. These include issues that are controversial
	// in most countries and markets (such as abortion), as well as those that are
	// controversial in specific countries and markets (such as immigration reform
	// in the United States).
	//   "SENSITIVE_CATEGORY_SHOCKING" - Content which may be considered shocking
	// or disturbing, such as violent news stories, stunts, or toilet humor.
	//   "SENSITIVE_CATEGORY_EMBEDDED_VIDEO" - YouTube videos embedded on websites
	// outside of YouTube.com.
	//   "SENSITIVE_CATEGORY_LIVE_STREAMING_VIDEO" - Video of live events streamed
	// over the internet.
	SensitiveCategory string `json:"sensitiveCategory,omitempty"`
	// ForceSendFields is a list of field names (e.g. "SensitiveCategory") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "SensitiveCategory") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SensitiveCategoryTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod SensitiveCategoryTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SessionPositionAssignedTargetingOptionDetails: Details for session position
// assigned targeting option. This will be populated in the
// session_position_details field when targeting_type is
// `TARGETING_TYPE_SESSION_POSITION`.
type SessionPositionAssignedTargetingOptionDetails struct {
	// SessionPosition: The position where the ad will show in a session.
	//
	// Possible values:
	//   "SESSION_POSITION_UNSPECIFIED" - This is a placeholder, does not indicate
	// any positions.
	//   "SESSION_POSITION_FIRST_IMPRESSION" - The first impression of the session.
	SessionPosition string `json:"sessionPosition,omitempty"`
	// ForceSendFields is a list of field names (e.g. "SessionPosition") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "SessionPosition") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SessionPositionAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod SessionPositionAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Site: A single site. Sites are apps or websites belonging to a channel.
type Site struct {
	// Name: Output only. The resource name of the site.
	Name string `json:"name,omitempty"`
	// UrlOrAppId: Required. The app ID or URL of the site. Must be UTF-8 encoded
	// with a maximum length of 240 bytes.
	UrlOrAppId string `json:"urlOrAppId,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Name") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Name") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Site) MarshalJSON() ([]byte, error) {
	type NoMethod Site
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Status: The `Status` type defines a logical error model that is suitable for
// different programming environments, including REST APIs and RPC APIs. It is
// used by gRPC (https://github.com/grpc). Each `Status` message contains three
// pieces of data: error code, error message, and error details. You can find
// out more about this error model and how to work with it in the API Design
// Guide (https://cloud.google.com/apis/design/errors).
type Status struct {
	// Code: The status code, which should be an enum value of google.rpc.Code.
	Code int64 `json:"code,omitempty"`
	// Details: A list of messages that carry the error details. There is a common
	// set of message types for APIs to use.
	Details []googleapi.RawMessage `json:"details,omitempty"`
	// Message: A developer-facing error message, which should be in English. Any
	// user-facing error message should be localized and sent in the
	// google.rpc.Status.details field, or localized by the client.
	Message string `json:"message,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Code") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Code") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Status) MarshalJSON() ([]byte, error) {
	type NoMethod Status
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SubExchangeAssignedTargetingOptionDetails: Details for assigned sub-exchange
// targeting option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_SUB_EXCHANGE`.
type SubExchangeAssignedTargetingOptionDetails struct {
	// TargetingOptionId: Required. The targeting_option_id of a TargetingOption of
	// type `TARGETING_TYPE_SUB_EXCHANGE`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "TargetingOptionId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "TargetingOptionId") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SubExchangeAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod SubExchangeAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SubExchangeTargetingOptionDetails: Represents a targetable sub-exchange.
// This will be populated in the sub_exchange_details field of a
// TargetingOption when targeting_type is `TARGETING_TYPE_SUB_EXCHANGE`.
type SubExchangeTargetingOptionDetails struct {
	// DisplayName: Output only. The display name of the sub-exchange.
	DisplayName string `json:"displayName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SubExchangeTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod SubExchangeTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TargetFrequency: Setting that controls the average number of times the ads
// will show to the same person over a certain period of time.
type TargetFrequency struct {
	// TargetCount: The target number of times, on average, the ads will be shown
	// to the same person in the timespan dictated by time_unit and
	// time_unit_count.
	TargetCount int64 `json:"targetCount,omitempty,string"`
	// TimeUnit: The unit of time in which the target frequency will be applied.
	// The following time unit is applicable: * `TIME_UNIT_WEEKS`
	//
	// Possible values:
	//   "TIME_UNIT_UNSPECIFIED" - Time unit value is not specified or is unknown
	// in this version.
	//   "TIME_UNIT_LIFETIME" - The frequency cap will be applied to the whole life
	// time of the line item.
	//   "TIME_UNIT_MONTHS" - The frequency cap will be applied to a number of
	// months.
	//   "TIME_UNIT_WEEKS" - The frequency cap will be applied to a number of
	// weeks.
	//   "TIME_UNIT_DAYS" - The frequency cap will be applied to a number of days.
	//   "TIME_UNIT_HOURS" - The frequency cap will be applied to a number of
	// hours.
	//   "TIME_UNIT_MINUTES" - The frequency cap will be applied to a number of
	// minutes.
	TimeUnit string `json:"timeUnit,omitempty"`
	// TimeUnitCount: The number of time_unit the target frequency will last. The
	// following restrictions apply based on the value of time_unit: *
	// `TIME_UNIT_WEEKS` - must be 1
	TimeUnitCount int64 `json:"timeUnitCount,omitempty"`
	// ForceSendFields is a list of field names (e.g. "TargetCount") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "TargetCount") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TargetFrequency) MarshalJSON() ([]byte, error) {
	type NoMethod TargetFrequency
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TargetingExpansionConfig: Settings that control the optimized targeting
// (//support.google.com/displayvideo/answer/12060859) settings of the line
// item.
type TargetingExpansionConfig struct {
	// AudienceExpansionLevel: Output only. Magnitude of expansion for eligible
	// first-party user lists under this ad group. This field only applies to
	// YouTube and Partners line item and ad group resources.
	//
	// Possible values:
	//   "UNKNOWN" - Audience expansion level is not specified or is unknown in
	// this version.
	//   "NO_REACH" - Audience expansion off.
	//   "LEAST_REACH" - Conservative audience expansion.
	//   "MID_REACH" - Moderate audience expansion.
	//   "MOST_REACH" - Aggressive audience expansion.
	AudienceExpansionLevel string `json:"audienceExpansionLevel,omitempty"`
	// AudienceExpansionSeedListExcluded: Output only. Whether to exclude seed list
	// for audience expansion. This field only applies to YouTube and Partners line
	// item and ad group resources.
	AudienceExpansionSeedListExcluded bool `json:"audienceExpansionSeedListExcluded,omitempty"`
	// EnableOptimizedTargeting: Required. Whether to enable Optimized Targeting
	// for the line item. Optimized targeting is not compatible with all bid
	// strategies. Attempting to set this field to `true` for a line item using the
	// BiddingStrategy field fixed_bid or one of the following combinations of
	// BiddingStrategy fields and BiddingStrategyPerformanceGoalType will result in
	// an error: maximize_auto_spend_bid: *
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA` *
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN` *
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED`
	// performance_goal_auto_bid: *
	// `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`
	EnableOptimizedTargeting bool `json:"enableOptimizedTargeting,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AudienceExpansionLevel") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AudienceExpansionLevel") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TargetingExpansionConfig) MarshalJSON() ([]byte, error) {
	type NoMethod TargetingExpansionConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TargetingOption: Represents a single targeting option, which is a targetable
// concept in DV360.
type TargetingOption struct {
	// AgeRangeDetails: Age range details.
	AgeRangeDetails *AgeRangeTargetingOptionDetails `json:"ageRangeDetails,omitempty"`
	// AppCategoryDetails: App category details.
	AppCategoryDetails *AppCategoryTargetingOptionDetails `json:"appCategoryDetails,omitempty"`
	// AudioContentTypeDetails: Audio content type details.
	AudioContentTypeDetails *AudioContentTypeTargetingOptionDetails `json:"audioContentTypeDetails,omitempty"`
	// AuthorizedSellerStatusDetails: Authorized seller status resource details.
	AuthorizedSellerStatusDetails *AuthorizedSellerStatusTargetingOptionDetails `json:"authorizedSellerStatusDetails,omitempty"`
	// BrowserDetails: Browser details.
	BrowserDetails *BrowserTargetingOptionDetails `json:"browserDetails,omitempty"`
	// BusinessChainDetails: Business chain resource details.
	BusinessChainDetails *BusinessChainTargetingOptionDetails `json:"businessChainDetails,omitempty"`
	// CarrierAndIspDetails: Carrier and ISP details.
	CarrierAndIspDetails *CarrierAndIspTargetingOptionDetails `json:"carrierAndIspDetails,omitempty"`
	// CategoryDetails: Category resource details.
	CategoryDetails *CategoryTargetingOptionDetails `json:"categoryDetails,omitempty"`
	// ContentDurationDetails: Content duration resource details.
	ContentDurationDetails *ContentDurationTargetingOptionDetails `json:"contentDurationDetails,omitempty"`
	// ContentGenreDetails: Content genre resource details.
	ContentGenreDetails *ContentGenreTargetingOptionDetails `json:"contentGenreDetails,omitempty"`
	// ContentInstreamPositionDetails: Content instream position details.
	ContentInstreamPositionDetails *ContentInstreamPositionTargetingOptionDetails `json:"contentInstreamPositionDetails,omitempty"`
	// ContentOutstreamPositionDetails: Content outstream position details.
	ContentOutstreamPositionDetails *ContentOutstreamPositionTargetingOptionDetails `json:"contentOutstreamPositionDetails,omitempty"`
	// ContentStreamTypeDetails: Content stream type resource details.
	ContentStreamTypeDetails *ContentStreamTypeTargetingOptionDetails `json:"contentStreamTypeDetails,omitempty"`
	// ContentThemeDetails: Content theme details.
	ContentThemeDetails *ContentThemeTargetingOptionDetails `json:"contentThemeDetails,omitempty"`
	// DeviceMakeModelDetails: Device make and model resource details.
	DeviceMakeModelDetails *DeviceMakeModelTargetingOptionDetails `json:"deviceMakeModelDetails,omitempty"`
	// DeviceTypeDetails: Device type details.
	DeviceTypeDetails *DeviceTypeTargetingOptionDetails `json:"deviceTypeDetails,omitempty"`
	// DigitalContentLabelDetails: Digital content label details.
	DigitalContentLabelDetails *DigitalContentLabelTargetingOptionDetails `json:"digitalContentLabelDetails,omitempty"`
	// EnvironmentDetails: Environment details.
	EnvironmentDetails *EnvironmentTargetingOptionDetails `json:"environmentDetails,omitempty"`
	// ExchangeDetails: Exchange details.
	ExchangeDetails *ExchangeTargetingOptionDetails `json:"exchangeDetails,omitempty"`
	// GenderDetails: Gender details.
	GenderDetails *GenderTargetingOptionDetails `json:"genderDetails,omitempty"`
	// GeoRegionDetails: Geographic region resource details.
	GeoRegionDetails *GeoRegionTargetingOptionDetails `json:"geoRegionDetails,omitempty"`
	// HouseholdIncomeDetails: Household income details.
	HouseholdIncomeDetails *HouseholdIncomeTargetingOptionDetails `json:"householdIncomeDetails,omitempty"`
	// LanguageDetails: Language resource details.
	LanguageDetails *LanguageTargetingOptionDetails `json:"languageDetails,omitempty"`
	// Name: Output only. The resource name for this targeting option.
	Name string `json:"name,omitempty"`
	// NativeContentPositionDetails: Native content position details.
	NativeContentPositionDetails *NativeContentPositionTargetingOptionDetails `json:"nativeContentPositionDetails,omitempty"`
	// OmidDetails: Open Measurement enabled inventory details.
	OmidDetails *OmidTargetingOptionDetails `json:"omidDetails,omitempty"`
	// OnScreenPositionDetails: On screen position details.
	OnScreenPositionDetails *OnScreenPositionTargetingOptionDetails `json:"onScreenPositionDetails,omitempty"`
	// OperatingSystemDetails: Operating system resources details.
	OperatingSystemDetails *OperatingSystemTargetingOptionDetails `json:"operatingSystemDetails,omitempty"`
	// ParentalStatusDetails: Parental status details.
	ParentalStatusDetails *ParentalStatusTargetingOptionDetails `json:"parentalStatusDetails,omitempty"`
	// PoiDetails: POI resource details.
	PoiDetails *PoiTargetingOptionDetails `json:"poiDetails,omitempty"`
	// SensitiveCategoryDetails: Sensitive Category details.
	SensitiveCategoryDetails *SensitiveCategoryTargetingOptionDetails `json:"sensitiveCategoryDetails,omitempty"`
	// SubExchangeDetails: Sub-exchange details.
	SubExchangeDetails *SubExchangeTargetingOptionDetails `json:"subExchangeDetails,omitempty"`
	// TargetingOptionId: Output only. A unique identifier for this targeting
	// option. The tuple {`targeting_type`, `targeting_option_id`} will be unique.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// TargetingType: Output only. The type of this targeting option.
	//
	// Possible values:
	//   "TARGETING_TYPE_UNSPECIFIED" - Default value when type is not specified or
	// is unknown in this version.
	//   "TARGETING_TYPE_CHANNEL" - Target a channel (a custom group of related
	// websites or apps).
	//   "TARGETING_TYPE_APP_CATEGORY" - Target an app category (for example,
	// education or puzzle games).
	//   "TARGETING_TYPE_APP" - Target a specific app (for example, Angry Birds).
	//   "TARGETING_TYPE_URL" - Target a specific url (for example, quora.com).
	//   "TARGETING_TYPE_DAY_AND_TIME" - Target ads during a chosen time period on
	// a specific day.
	//   "TARGETING_TYPE_AGE_RANGE" - Target ads to a specific age range (for
	// example, 18-24).
	//   "TARGETING_TYPE_REGIONAL_LOCATION_LIST" - Target ads to the specified
	// regions on a regional location list.
	//   "TARGETING_TYPE_PROXIMITY_LOCATION_LIST" - Target ads to the specified
	// points of interest on a proximity location list.
	//   "TARGETING_TYPE_GENDER" - Target ads to a specific gender (for example,
	// female or male).
	//   "TARGETING_TYPE_VIDEO_PLAYER_SIZE" - Target a specific video player size
	// for video ads.
	//   "TARGETING_TYPE_USER_REWARDED_CONTENT" - Target user rewarded content for
	// video ads.
	//   "TARGETING_TYPE_PARENTAL_STATUS" - Target ads to a specific parental
	// status (for example, parent or not a parent).
	//   "TARGETING_TYPE_CONTENT_INSTREAM_POSITION" - Target video or audio ads in
	// a specific content instream position (for example, pre-roll, mid-roll, or
	// post-roll).
	//   "TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION" - Target ads in a specific
	// content outstream position.
	//   "TARGETING_TYPE_DEVICE_TYPE" - Target ads to a specific device type (for
	// example, tablet or connected TV).
	//   "TARGETING_TYPE_AUDIENCE_GROUP" - Target ads to an audience or groups of
	// audiences. Singleton field, at most one can exist on a single Lineitem at a
	// time.
	//   "TARGETING_TYPE_BROWSER" - Target ads to specific web browsers (for
	// example, Chrome).
	//   "TARGETING_TYPE_HOUSEHOLD_INCOME" - Target ads to a specific household
	// income range (for example, top 10%).
	//   "TARGETING_TYPE_ON_SCREEN_POSITION" - Target ads in a specific on screen
	// position.
	//   "TARGETING_TYPE_THIRD_PARTY_VERIFIER" - Filter web sites through third
	// party verification (for example, IAS or DoubleVerify).
	//   "TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION" - Filter web sites by
	// specific digital content label ratings (for example, DL-MA: suitable only
	// for mature audiences).
	//   "TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION" - Filter website content by
	// sensitive categories (for example, adult).
	//   "TARGETING_TYPE_ENVIRONMENT" - Target ads to a specific environment (for
	// example, web or app).
	//   "TARGETING_TYPE_CARRIER_AND_ISP" - Target ads to a specific network
	// carrier or internet service provider (ISP) (for example, Comcast or Orange).
	//   "TARGETING_TYPE_OPERATING_SYSTEM" - Target ads to a specific operating
	// system (for example, macOS).
	//   "TARGETING_TYPE_DEVICE_MAKE_MODEL" - Target ads to a specific device make
	// or model (for example, Roku or Samsung).
	//   "TARGETING_TYPE_KEYWORD" - Target ads to a specific keyword (for example,
	// dog or retriever).
	//   "TARGETING_TYPE_NEGATIVE_KEYWORD_LIST" - Target ads to a specific negative
	// keyword list.
	//   "TARGETING_TYPE_VIEWABILITY" - Target ads to a specific viewability (for
	// example, 80% viewable).
	//   "TARGETING_TYPE_CATEGORY" - Target ads to a specific content category (for
	// example, arts & entertainment).
	//   "TARGETING_TYPE_INVENTORY_SOURCE" - Purchase impressions from specific
	// deals and auction packages.
	//   "TARGETING_TYPE_LANGUAGE" - Target ads to a specific language (for
	// example, English or Japanese).
	//   "TARGETING_TYPE_AUTHORIZED_SELLER_STATUS" - Target ads to ads.txt
	// authorized sellers. If no targeting option of this type is assigned, the
	// resource uses the "Authorized Direct Sellers and Resellers" option by
	// default.
	//   "TARGETING_TYPE_GEO_REGION" - Target ads to a specific regional location
	// (for example, a city or state).
	//   "TARGETING_TYPE_INVENTORY_SOURCE_GROUP" - Purchase impressions from a
	// group of deals and auction packages.
	//   "TARGETING_TYPE_EXCHANGE" - Purchase impressions from specific exchanges.
	//   "TARGETING_TYPE_SUB_EXCHANGE" - Purchase impressions from specific
	// sub-exchanges.
	//   "TARGETING_TYPE_POI" - Target ads around a specific point of interest,
	// such as a notable building, a street address, or latitude/longitude
	// coordinates.
	//   "TARGETING_TYPE_BUSINESS_CHAIN" - Target ads around locations of a
	// business chain within a specific geo region.
	//   "TARGETING_TYPE_CONTENT_DURATION" - Target ads to a specific video content
	// duration.
	//   "TARGETING_TYPE_CONTENT_STREAM_TYPE" - Target ads to a specific video
	// content stream type.
	//   "TARGETING_TYPE_NATIVE_CONTENT_POSITION" - Target ads to a specific native
	// content position.
	//   "TARGETING_TYPE_OMID" - Target ads in an Open Measurement enabled
	// inventory.
	//   "TARGETING_TYPE_AUDIO_CONTENT_TYPE" - Target ads to a specific audio
	// content type.
	//   "TARGETING_TYPE_CONTENT_GENRE" - Target ads to a specific content genre.
	//   "TARGETING_TYPE_YOUTUBE_VIDEO" - Target ads to a specific YouTube video.
	// Targeting of this type cannot be created or updated using the API. Although
	// this targeting is inherited by child resources, **inherited targeting of
	// this type will not be retrieveable**.
	//   "TARGETING_TYPE_YOUTUBE_CHANNEL" - Target ads to a specific YouTube
	// channel. Targeting of this type cannot be created or updated using the API.
	// Although this targeting is inherited by child resources, **inherited
	// targeting of this type will not be retrieveable**.
	//   "TARGETING_TYPE_SESSION_POSITION" - Target ads to a serve it in a certain
	// position of a session. Only supported for Ad Group resources under YouTube
	// Programmatic Reservation line items. Targeting of this type cannot be
	// created or updated using the API.
	//   "TARGETING_TYPE_CONTENT_THEME_EXCLUSION" - Filter website content by
	// content themes (for example, religion). Only supported for Advertiser
	// resources. Targeting of this type cannot be created or updated using the
	// API. This targeting is only inherited by child YouTube and Demand Gen line
	// item resources.
	TargetingType string `json:"targetingType,omitempty"`
	// UserRewardedContentDetails: User rewarded content details.
	UserRewardedContentDetails *UserRewardedContentTargetingOptionDetails `json:"userRewardedContentDetails,omitempty"`
	// VideoPlayerSizeDetails: Video player size details.
	VideoPlayerSizeDetails *VideoPlayerSizeTargetingOptionDetails `json:"videoPlayerSizeDetails,omitempty"`
	// ViewabilityDetails: Viewability resource details.
	ViewabilityDetails *ViewabilityTargetingOptionDetails `json:"viewabilityDetails,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AgeRangeDetails") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AgeRangeDetails") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TargetingOption) MarshalJSON() ([]byte, error) {
	type NoMethod TargetingOption
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ThirdPartyMeasurementConfigs: Settings that control what third-party vendors
// are measuring specific line item metrics.
type ThirdPartyMeasurementConfigs struct {
	// BrandLiftVendorConfigs: Optional. The third-party vendors measuring brand
	// lift. The following third-party vendors are applicable: *
	// `THIRD_PARTY_VENDOR_DYNATA` * `THIRD_PARTY_VENDOR_KANTAR`
	BrandLiftVendorConfigs []*ThirdPartyVendorConfig `json:"brandLiftVendorConfigs,omitempty"`
	// BrandSafetyVendorConfigs: Optional. The third-party vendors measuring brand
	// safety. The following third-party vendors are applicable: *
	// `THIRD_PARTY_VENDOR_ZERF` * `THIRD_PARTY_VENDOR_DOUBLE_VERIFY` *
	// `THIRD_PARTY_VENDOR_INTEGRAL_AD_SCIENCE`
	BrandSafetyVendorConfigs []*ThirdPartyVendorConfig `json:"brandSafetyVendorConfigs,omitempty"`
	// ReachVendorConfigs: Optional. The third-party vendors measuring reach. The
	// following third-party vendors are applicable: * `THIRD_PARTY_VENDOR_NIELSEN`
	// * `THIRD_PARTY_VENDOR_COMSCORE` * `THIRD_PARTY_VENDOR_KANTAR`
	ReachVendorConfigs []*ThirdPartyVendorConfig `json:"reachVendorConfigs,omitempty"`
	// ViewabilityVendorConfigs: Optional. The third-party vendors measuring
	// viewability. The following third-party vendors are applicable: *
	// `THIRD_PARTY_VENDOR_MOAT` * `THIRD_PARTY_VENDOR_DOUBLE_VERIFY` *
	// `THIRD_PARTY_VENDOR_INTEGRAL_AD_SCIENCE` * `THIRD_PARTY_VENDOR_COMSCORE` *
	// `THIRD_PARTY_VENDOR_TELEMETRY` * `THIRD_PARTY_VENDOR_MEETRICS`
	ViewabilityVendorConfigs []*ThirdPartyVendorConfig `json:"viewabilityVendorConfigs,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BrandLiftVendorConfigs") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BrandLiftVendorConfigs") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ThirdPartyMeasurementConfigs) MarshalJSON() ([]byte, error) {
	type NoMethod ThirdPartyMeasurementConfigs
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ThirdPartyOnlyConfig: Settings for advertisers that use third-party ad
// servers only.
type ThirdPartyOnlyConfig struct {
	// PixelOrderIdReportingEnabled: Whether or not order ID reporting for pixels
	// is enabled. This value cannot be changed once set to `true`.
	PixelOrderIdReportingEnabled bool `json:"pixelOrderIdReportingEnabled,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "PixelOrderIdReportingEnabled") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. See https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields
	// for more details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "PixelOrderIdReportingEnabled") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ThirdPartyOnlyConfig) MarshalJSON() ([]byte, error) {
	type NoMethod ThirdPartyOnlyConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ThirdPartyUrl: Tracking URLs from third parties to track interactions with
// an audio or a video creative.
type ThirdPartyUrl struct {
	// Type: Optional. The type of interaction needs to be tracked by the tracking
	// URL
	//
	// Possible values:
	//   "THIRD_PARTY_URL_TYPE_UNSPECIFIED" - The type of third-party URL is
	// unspecified or is unknown in this version.
	//   "THIRD_PARTY_URL_TYPE_IMPRESSION" - Used to count impressions of the
	// creative after the audio or video buffering is complete.
	//   "THIRD_PARTY_URL_TYPE_CLICK_TRACKING" - Used to track user clicks on the
	// audio or video.
	//   "THIRD_PARTY_URL_TYPE_AUDIO_VIDEO_START" - Used to track the number of
	// times a user starts the audio or video.
	//   "THIRD_PARTY_URL_TYPE_AUDIO_VIDEO_FIRST_QUARTILE" - Used to track the
	// number of times the audio or video plays to 25% of its length.
	//   "THIRD_PARTY_URL_TYPE_AUDIO_VIDEO_MIDPOINT" - Used to track the number of
	// times the audio or video plays to 50% of its length.
	//   "THIRD_PARTY_URL_TYPE_AUDIO_VIDEO_THIRD_QUARTILE" - Used to track the
	// number of times the audio or video plays to 75% of its length.
	//   "THIRD_PARTY_URL_TYPE_AUDIO_VIDEO_COMPLETE" - Used to track the number of
	// times the audio or video plays to the end.
	//   "THIRD_PARTY_URL_TYPE_AUDIO_VIDEO_MUTE" - Used to track the number of
	// times a user mutes the audio or video.
	//   "THIRD_PARTY_URL_TYPE_AUDIO_VIDEO_PAUSE" - Used to track the number of
	// times a user pauses the audio or video.
	//   "THIRD_PARTY_URL_TYPE_AUDIO_VIDEO_REWIND" - Used to track the number of
	// times a user replays the audio or video.
	//   "THIRD_PARTY_URL_TYPE_AUDIO_VIDEO_FULLSCREEN" - Used to track the number
	// of times a user expands the player to full-screen size.
	//   "THIRD_PARTY_URL_TYPE_AUDIO_VIDEO_STOP" - Used to track the number of
	// times a user stops the audio or video.
	//   "THIRD_PARTY_URL_TYPE_AUDIO_VIDEO_CUSTOM" - Used to track the number of
	// times a user performs a custom click, such as clicking on a video hot spot.
	//   "THIRD_PARTY_URL_TYPE_AUDIO_VIDEO_SKIP" - Used to track the number of
	// times the audio or video was skipped.
	//   "THIRD_PARTY_URL_TYPE_AUDIO_VIDEO_PROGRESS" - Used to track the number of
	// times the audio or video plays to an offset determined by the
	// progress_offset.
	Type string `json:"type,omitempty"`
	// Url: Optional. Tracking URL used to track the interaction. Provide a URL
	// with optional path or query string, beginning with `https:`. For example,
	// `https://www.example.com/path`
	Url string `json:"url,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Type") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Type") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ThirdPartyUrl) MarshalJSON() ([]byte, error) {
	type NoMethod ThirdPartyUrl
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ThirdPartyVendorConfig: Settings that control how third-party measurement
// vendors are configured.
type ThirdPartyVendorConfig struct {
	// PlacementId: The ID used by the platform of the third-party vendor to
	// identify the line item.
	PlacementId string `json:"placementId,omitempty"`
	// Vendor: The third-party measurement vendor.
	//
	// Possible values:
	//   "THIRD_PARTY_VENDOR_UNSPECIFIED" - Unknown third-party vendor.
	//   "THIRD_PARTY_VENDOR_MOAT" - Moat.
	//   "THIRD_PARTY_VENDOR_DOUBLE_VERIFY" - DoubleVerify.
	//   "THIRD_PARTY_VENDOR_INTEGRAL_AD_SCIENCE" - Integral Ad Science.
	//   "THIRD_PARTY_VENDOR_COMSCORE" - Comscore.
	//   "THIRD_PARTY_VENDOR_TELEMETRY" - Telemetry.
	//   "THIRD_PARTY_VENDOR_MEETRICS" - Meetrics.
	//   "THIRD_PARTY_VENDOR_ZEFR" - ZEFR.
	//   "THIRD_PARTY_VENDOR_NIELSEN" - Nielsen.
	//   "THIRD_PARTY_VENDOR_KANTAR" - Kantar.
	//   "THIRD_PARTY_VENDOR_DYNATA" - Dynata.
	Vendor string `json:"vendor,omitempty"`
	// ForceSendFields is a list of field names (e.g. "PlacementId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "PlacementId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ThirdPartyVendorConfig) MarshalJSON() ([]byte, error) {
	type NoMethod ThirdPartyVendorConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ThirdPartyVerifierAssignedTargetingOptionDetails: Assigned third party
// verifier targeting option details. This will be populated in the details
// field of an AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_THIRD_PARTY_VERIFIER`.
type ThirdPartyVerifierAssignedTargetingOptionDetails struct {
	// Adloox: Third party brand verifier -- Scope3 (previously known as Adloox).
	Adloox *Adloox `json:"adloox,omitempty"`
	// DoubleVerify: Third party brand verifier -- DoubleVerify.
	DoubleVerify *DoubleVerify `json:"doubleVerify,omitempty"`
	// IntegralAdScience: Third party brand verifier -- Integral Ad Science.
	IntegralAdScience *IntegralAdScience `json:"integralAdScience,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Adloox") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Adloox") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ThirdPartyVerifierAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ThirdPartyVerifierAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TimeRange: A time range.
type TimeRange struct {
	// EndTime: Required. The upper bound of a time range, inclusive.
	EndTime string `json:"endTime,omitempty"`
	// StartTime: Required. The lower bound of a time range, inclusive.
	StartTime string `json:"startTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EndTime") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "EndTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TimeRange) MarshalJSON() ([]byte, error) {
	type NoMethod TimeRange
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TimerEvent: Timer event of the creative.
type TimerEvent struct {
	// Name: Required. The name of the timer event.
	Name string `json:"name,omitempty"`
	// ReportingName: Required. The name used to identify this timer event in
	// reports.
	ReportingName string `json:"reportingName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Name") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Name") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TimerEvent) MarshalJSON() ([]byte, error) {
	type NoMethod TimerEvent
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TrackingFloodlightActivityConfig: Settings that control the behavior of a
// single Floodlight activity config.
type TrackingFloodlightActivityConfig struct {
	// FloodlightActivityId: Required. The ID of the Floodlight activity.
	FloodlightActivityId int64 `json:"floodlightActivityId,omitempty,string"`
	// PostClickLookbackWindowDays: Required. The number of days after an ad has
	// been clicked in which a conversion may be counted. Must be between 0 and 90
	// inclusive.
	PostClickLookbackWindowDays int64 `json:"postClickLookbackWindowDays,omitempty"`
	// PostViewLookbackWindowDays: Required. The number of days after an ad has
	// been viewed in which a conversion may be counted. Must be between 0 and 90
	// inclusive.
	PostViewLookbackWindowDays int64 `json:"postViewLookbackWindowDays,omitempty"`
	// ForceSendFields is a list of field names (e.g. "FloodlightActivityId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "FloodlightActivityId") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TrackingFloodlightActivityConfig) MarshalJSON() ([]byte, error) {
	type NoMethod TrackingFloodlightActivityConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Transcode: Represents information about the transcoded audio or video file.
type Transcode struct {
	// AudioBitRateKbps: Optional. The bit rate for the audio stream of the
	// transcoded video, or the bit rate for the transcoded audio, in kilobits per
	// second.
	AudioBitRateKbps int64 `json:"audioBitRateKbps,omitempty,string"`
	// AudioSampleRateHz: Optional. The sample rate for the audio stream of the
	// transcoded video, or the sample rate for the transcoded audio, in hertz.
	AudioSampleRateHz int64 `json:"audioSampleRateHz,omitempty,string"`
	// BitRateKbps: Optional. The transcoding bit rate of the transcoded video, in
	// kilobits per second.
	BitRateKbps int64 `json:"bitRateKbps,omitempty,string"`
	// Dimensions: Optional. The dimensions of the transcoded video.
	Dimensions *Dimensions `json:"dimensions,omitempty"`
	// FileSizeBytes: Optional. The size of the transcoded file, in bytes.
	FileSizeBytes int64 `json:"fileSizeBytes,omitempty,string"`
	// FrameRate: Optional. The frame rate of the transcoded video, in frames per
	// second.
	FrameRate float64 `json:"frameRate,omitempty"`
	// MimeType: Optional. The MIME type of the transcoded file.
	MimeType string `json:"mimeType,omitempty"`
	// Name: Optional. The name of the transcoded file.
	Name string `json:"name,omitempty"`
	// Transcoded: Optional. Indicates if the transcoding was successful.
	Transcoded bool `json:"transcoded,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AudioBitRateKbps") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AudioBitRateKbps") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Transcode) MarshalJSON() ([]byte, error) {
	type NoMethod Transcode
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *Transcode) UnmarshalJSON(data []byte) error {
	type NoMethod Transcode
	var s1 struct {
		FrameRate gensupport.JSONFloat64 `json:"frameRate"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.FrameRate = float64(s1.FrameRate)
	return nil
}

// UniversalAdId: A creative identifier provided by a registry that is unique
// across all platforms. This is part of the VAST 4.0 standard.
type UniversalAdId struct {
	// Id: Optional. The unique creative identifier.
	Id string `json:"id,omitempty"`
	// Registry: Optional. The registry provides unique creative identifiers.
	//
	// Possible values:
	//   "UNIVERSAL_AD_REGISTRY_UNSPECIFIED" - The Universal Ad registry is
	// unspecified or is unknown in this version.
	//   "UNIVERSAL_AD_REGISTRY_OTHER" - Use a custom provider to provide the
	// Universal Ad ID.
	//   "UNIVERSAL_AD_REGISTRY_AD_ID" - Use Ad-ID to provide the Universal Ad ID.
	//   "UNIVERSAL_AD_REGISTRY_CLEARCAST" - Use clearcast.co.uk to provide the
	// Universal Ad ID.
	//   "UNIVERSAL_AD_REGISTRY_DV360" - Use Display & Video 360 to provide the
	// Universal Ad ID.
	//   "UNIVERSAL_AD_REGISTRY_CM" - Use Campaign Manager 360 to provide the
	// Universal Ad ID.
	Registry string `json:"registry,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Id") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Id") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s UniversalAdId) MarshalJSON() ([]byte, error) {
	type NoMethod UniversalAdId
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// UrlAssignedTargetingOptionDetails: Details for assigned URL targeting
// option. This will be populated in the details field of an
// AssignedTargetingOption when targeting_type is `TARGETING_TYPE_URL`.
type UrlAssignedTargetingOptionDetails struct {
	// Negative: Indicates if this option is being negatively targeted.
	Negative bool `json:"negative,omitempty"`
	// Url: Required. The URL, for example `example.com`. DV360 supports two levels
	// of subdirectory targeting, for example
	// `www.example.com/one-subdirectory-level/second-level`, and five levels of
	// subdomain targeting, for example `five.four.three.two.one.example.com`.
	Url string `json:"url,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Negative") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Negative") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s UrlAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod UrlAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// User: A single user in Display & Video 360.
type User struct {
	// AssignedUserRoles: The assigned user roles. Required in CreateUser. Output
	// only in UpdateUser. Can only be updated through BulkEditAssignedUserRoles.
	AssignedUserRoles []*AssignedUserRole `json:"assignedUserRoles,omitempty"`
	// DisplayName: Required. The display name of the user. Must be UTF-8 encoded
	// with a maximum size of 240 bytes.
	DisplayName string `json:"displayName,omitempty"`
	// Email: Required. Immutable. The email address used to identify the user.
	Email string `json:"email,omitempty"`
	// LastLoginTime: Output only. The timestamp when the user last logged in DV360
	// UI.
	LastLoginTime string `json:"lastLoginTime,omitempty"`
	// Name: Output only. The resource name of the user.
	Name string `json:"name,omitempty"`
	// UserId: Output only. The unique ID of the user. Assigned by the system.
	UserId int64 `json:"userId,omitempty,string"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AssignedUserRoles") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AssignedUserRoles") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s User) MarshalJSON() ([]byte, error) {
	type NoMethod User
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// UserRewardedContentAssignedTargetingOptionDetails: User rewarded content
// targeting option details. This will be populated in the
// user_rewarded_content_details field when targeting_type is
// `TARGETING_TYPE_USER_REWARDED_CONTENT`.
type UserRewardedContentAssignedTargetingOptionDetails struct {
	// TargetingOptionId: Required. The targeting_option_id field when
	// targeting_type is `TARGETING_TYPE_USER_REWARDED_CONTENT`.
	TargetingOptionId string `json:"targetingOptionId,omitempty"`
	// UserRewardedContent: Output only. User rewarded content status for video
	// ads.
	//
	// Possible values:
	//   "USER_REWARDED_CONTENT_UNSPECIFIED" - User rewarded content is not
	// specified or is unknown in this version.
	//   "USER_REWARDED_CONTENT_USER_REWARDED" - Represents ads where the user will
	// see a reward after viewing.
	//   "USER_REWARDED_CONTENT_NOT_USER_REWARDED" - Represents all other ads
	// besides user-rewarded.
	UserRewardedContent string `json:"userRewardedContent,omitempty"`
	// ForceSendFields is a list of field names (e.g. "TargetingOptionId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "TargetingOptionId") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s UserRewardedContentAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod UserRewardedContentAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// UserRewardedContentTargetingOptionDetails: Represents a targetable user
// rewarded content status for video ads only. This will be populated in the
// user_rewarded_content_details field when targeting_type is
// `TARGETING_TYPE_USER_REWARDED_CONTENT`.
type UserRewardedContentTargetingOptionDetails struct {
	// UserRewardedContent: Output only. User rewarded content status for video
	// ads.
	//
	// Possible values:
	//   "USER_REWARDED_CONTENT_UNSPECIFIED" - User rewarded content is not
	// specified or is unknown in this version.
	//   "USER_REWARDED_CONTENT_USER_REWARDED" - Represents ads where the user will
	// see a reward after viewing.
	//   "USER_REWARDED_CONTENT_NOT_USER_REWARDED" - Represents all other ads
	// besides user-rewarded.
	UserRewardedContent string `json:"userRewardedContent,omitempty"`
	// ForceSendFields is a list of field names (e.g. "UserRewardedContent") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "UserRewardedContent") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s UserRewardedContentTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod UserRewardedContentTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// VideoAdSequenceSettings: Settings related to VideoAdSequence.
type VideoAdSequenceSettings struct {
	// MinimumDuration: The minimum time interval before the same user sees this
	// sequence again.
	//
	// Possible values:
	//   "VIDEO_AD_SEQUENCE_MINIMUM_DURATION_UNSPECIFIED" - Unspecified or unknown.
	//   "VIDEO_AD_SEQUENCE_MINIMUM_DURATION_WEEK" - 7 days.
	//   "VIDEO_AD_SEQUENCE_MINIMUM_DURATION_MONTH" - 30 days.
	MinimumDuration string `json:"minimumDuration,omitempty"`
	// Steps: The steps of which the sequence consists.
	Steps []*VideoAdSequenceStep `json:"steps,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MinimumDuration") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "MinimumDuration") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s VideoAdSequenceSettings) MarshalJSON() ([]byte, error) {
	type NoMethod VideoAdSequenceSettings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// VideoAdSequenceStep: The detail of a single step in a VideoAdSequence.
type VideoAdSequenceStep struct {
	// AdGroupId: The ID of the corresponding ad group of the step.
	AdGroupId int64 `json:"adGroupId,omitempty,string"`
	// InteractionType: The interaction on the previous step that will lead the
	// viewer to this step. The first step does not have interaction_type.
	//
	// Possible values:
	//   "INTERACTION_TYPE_UNSPECIFIED" - Unspecified or unknown
	//   "INTERACTION_TYPE_PAID_VIEW" - A paid view.
	//   "INTERACTION_TYPE_SKIP" - Skipped by the viewer.
	//   "INTERACTION_TYPE_IMPRESSION" - A (viewed) ad impression.
	//   "INTERACTION_TYPE_ENGAGED_IMPRESSION" - An ad impression that was not
	// immediately skipped by the viewer, but didn't reach the billable event
	// either.
	InteractionType string `json:"interactionType,omitempty"`
	// PreviousStepId: The ID of the previous step. The first step does not have
	// previous step.
	PreviousStepId int64 `json:"previousStepId,omitempty,string"`
	// StepId: The ID of the step.
	StepId int64 `json:"stepId,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "AdGroupId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdGroupId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s VideoAdSequenceStep) MarshalJSON() ([]byte, error) {
	type NoMethod VideoAdSequenceStep
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// VideoDiscoveryAd: Details for a video discovery ad.
type VideoDiscoveryAd struct {
	// Description1: First text line for the ad.
	Description1 string `json:"description1,omitempty"`
	// Description2: Second text line for the ad.
	Description2 string `json:"description2,omitempty"`
	// Headline: The headline of ad.
	Headline string `json:"headline,omitempty"`
	// Thumbnail: Thumbnail image used in the ad.
	//
	// Possible values:
	//   "THUMBNAIL_UNSPECIFIED" - Unknown or unspecified.
	//   "THUMBNAIL_DEFAULT" - The default thumbnail, can be auto-generated or
	// user-uploaded.
	//   "THUMBNAIL_1" - Thumbnail 1, generated from the video.
	//   "THUMBNAIL_2" - Thumbnail 2, generated from the video.
	//   "THUMBNAIL_3" - Thumbnail 3, generated from the video.
	Thumbnail string `json:"thumbnail,omitempty"`
	// Video: The YouTube video the ad promotes.
	Video *YoutubeVideoDetails `json:"video,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Description1") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Description1") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s VideoDiscoveryAd) MarshalJSON() ([]byte, error) {
	type NoMethod VideoDiscoveryAd
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// VideoPerformanceAd: Details for a video performance ad.
type VideoPerformanceAd struct {
	// ActionButtonLabels: The list of text assets shown on the call-to-action
	// button.
	ActionButtonLabels []string `json:"actionButtonLabels,omitempty"`
	// CompanionBanners: The list of companion banners used by this ad.
	CompanionBanners []*ImageAsset `json:"companionBanners,omitempty"`
	// CustomParameters: The custom parameters to pass custom values to tracking
	// URL template.
	CustomParameters map[string]string `json:"customParameters,omitempty"`
	// Descriptions: The list of descriptions shown on the call-to-action banner.
	Descriptions []string `json:"descriptions,omitempty"`
	// DisplayUrlBreadcrumb1: The first piece after the domain in the display URL.
	DisplayUrlBreadcrumb1 string `json:"displayUrlBreadcrumb1,omitempty"`
	// DisplayUrlBreadcrumb2: The second piece after the domain in the display URL.
	DisplayUrlBreadcrumb2 string `json:"displayUrlBreadcrumb2,omitempty"`
	// Domain: The domain of the display URL.
	Domain string `json:"domain,omitempty"`
	// FinalUrl: The URL address of the webpage that people reach after they click
	// the ad.
	FinalUrl string `json:"finalUrl,omitempty"`
	// Headlines: The list of headlines shown on the call-to-action banner.
	Headlines []string `json:"headlines,omitempty"`
	// LongHeadlines: The list of lone headlines shown on the call-to-action
	// banner.
	LongHeadlines []string `json:"longHeadlines,omitempty"`
	// TrackingUrl: The URL address loaded in the background for tracking purposes.
	TrackingUrl string `json:"trackingUrl,omitempty"`
	// Videos: The list of YouTube video assets used by this ad.
	Videos []*YoutubeVideoDetails `json:"videos,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActionButtonLabels") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActionButtonLabels") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s VideoPerformanceAd) MarshalJSON() ([]byte, error) {
	type NoMethod VideoPerformanceAd
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// VideoPlayerSizeAssignedTargetingOptionDetails: Video player size targeting
// option details. This will be populated in the video_player_size_details
// field when targeting_type is `TARGETING_TYPE_VIDEO_PLAYER_SIZE`. Explicitly
// targeting all options is not supported. Remove all video player size
// targeting options to achieve this effect.
type VideoPlayerSizeAssignedTargetingOptionDetails struct {
	// VideoPlayerSize: Required. The video player size.
	//
	// Possible values:
	//   "VIDEO_PLAYER_SIZE_UNSPECIFIED" - Video player size is not specified in
	// this version. This enum is a place holder for a default value and does not
	// represent a real video player size.
	//   "VIDEO_PLAYER_SIZE_SMALL" - The dimensions of the video player are less
	// than 400×300 (desktop), or up to 20% of screen covered (mobile).
	//   "VIDEO_PLAYER_SIZE_LARGE" - The dimensions of the video player are between
	// 400x300 and 1280x720 pixels (desktop), or 20% to 90% of the screen covered
	// (mobile).
	//   "VIDEO_PLAYER_SIZE_HD" - The dimensions of the video player are 1280×720
	// or greater (desktop), or over 90% of the screen covered (mobile).
	//   "VIDEO_PLAYER_SIZE_UNKNOWN" - The dimensions of the video player are
	// unknown.
	VideoPlayerSize string `json:"videoPlayerSize,omitempty"`
	// ForceSendFields is a list of field names (e.g. "VideoPlayerSize") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "VideoPlayerSize") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s VideoPlayerSizeAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod VideoPlayerSizeAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// VideoPlayerSizeTargetingOptionDetails: Represents a targetable video player
// size. This will be populated in the video_player_size_details field when
// targeting_type is `TARGETING_TYPE_VIDEO_PLAYER_SIZE`.
type VideoPlayerSizeTargetingOptionDetails struct {
	// VideoPlayerSize: Output only. The video player size.
	//
	// Possible values:
	//   "VIDEO_PLAYER_SIZE_UNSPECIFIED" - Video player size is not specified in
	// this version. This enum is a place holder for a default value and does not
	// represent a real video player size.
	//   "VIDEO_PLAYER_SIZE_SMALL" - The dimensions of the video player are less
	// than 400×300 (desktop), or up to 20% of screen covered (mobile).
	//   "VIDEO_PLAYER_SIZE_LARGE" - The dimensions of the video player are between
	// 400x300 and 1280x720 pixels (desktop), or 20% to 90% of the screen covered
	// (mobile).
	//   "VIDEO_PLAYER_SIZE_HD" - The dimensions of the video player are 1280×720
	// or greater (desktop), or over 90% of the screen covered (mobile).
	//   "VIDEO_PLAYER_SIZE_UNKNOWN" - The dimensions of the video player are
	// unknown.
	VideoPlayerSize string `json:"videoPlayerSize,omitempty"`
	// ForceSendFields is a list of field names (e.g. "VideoPlayerSize") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "VideoPlayerSize") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s VideoPlayerSizeTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod VideoPlayerSizeTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ViewabilityAssignedTargetingOptionDetails: Assigned viewability targeting
// option details. This will be populated in the viewability_details field of
// an AssignedTargetingOption when targeting_type is
// `TARGETING_TYPE_VIEWABILITY`.
type ViewabilityAssignedTargetingOptionDetails struct {
	// Viewability: Required. The predicted viewability percentage.
	//
	// Possible values:
	//   "VIEWABILITY_UNSPECIFIED" - Default value when viewability is not
	// specified in this version. This enum is a placeholder for default value and
	// does not represent a real viewability option.
	//   "VIEWABILITY_10_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 10% likely to be viewable.
	//   "VIEWABILITY_20_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 20% likely to be viewable.
	//   "VIEWABILITY_30_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 30% likely to be viewable.
	//   "VIEWABILITY_40_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 40% likely to be viewable.
	//   "VIEWABILITY_50_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 50% likely to be viewable.
	//   "VIEWABILITY_60_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 60% likely to be viewable.
	//   "VIEWABILITY_70_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 70% likely to be viewable.
	//   "VIEWABILITY_80_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 80% likely to be viewable.
	//   "VIEWABILITY_90_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 90% likely to be viewable.
	Viewability string `json:"viewability,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Viewability") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Viewability") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ViewabilityAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ViewabilityAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ViewabilityTargetingOptionDetails: Represents a targetable viewability. This
// will be populated in the viewability_details field of a TargetingOption when
// targeting_type is `TARGETING_TYPE_VIEWABILITY`.
type ViewabilityTargetingOptionDetails struct {
	// Viewability: Output only. The predicted viewability percentage.
	//
	// Possible values:
	//   "VIEWABILITY_UNSPECIFIED" - Default value when viewability is not
	// specified in this version. This enum is a placeholder for default value and
	// does not represent a real viewability option.
	//   "VIEWABILITY_10_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 10% likely to be viewable.
	//   "VIEWABILITY_20_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 20% likely to be viewable.
	//   "VIEWABILITY_30_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 30% likely to be viewable.
	//   "VIEWABILITY_40_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 40% likely to be viewable.
	//   "VIEWABILITY_50_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 50% likely to be viewable.
	//   "VIEWABILITY_60_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 60% likely to be viewable.
	//   "VIEWABILITY_70_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 70% likely to be viewable.
	//   "VIEWABILITY_80_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 80% likely to be viewable.
	//   "VIEWABILITY_90_PERCENT_OR_MORE" - Bid only on impressions that are at
	// least 90% likely to be viewable.
	Viewability string `json:"viewability,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Viewability") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Viewability") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ViewabilityTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ViewabilityTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// YoutubeAndPartnersBiddingStrategy: Settings that control the bid strategy
// for YouTube and Partners resources.
type YoutubeAndPartnersBiddingStrategy struct {
	// AdGroupEffectiveTargetCpaSource: Output only. Source of the effective target
	// CPA value for ad group.
	//
	// Possible values:
	//   "BIDDING_SOURCE_UNSPECIFIED" - Bidding source is not specified or unknown.
	//   "BIDDING_SOURCE_LINE_ITEM" - Bidding value is inherited from the line
	// item.
	//   "BIDDING_SOURCE_AD_GROUP" - Bidding value is defined in the ad group.
	AdGroupEffectiveTargetCpaSource string `json:"adGroupEffectiveTargetCpaSource,omitempty"`
	// AdGroupEffectiveTargetCpaValue: Output only. The effective target CPA for ad
	// group, in micros of advertiser's currency.
	AdGroupEffectiveTargetCpaValue int64 `json:"adGroupEffectiveTargetCpaValue,omitempty,string"`
	// Type: The type of the bidding strategy.
	//
	// Possible values:
	//   "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_UNSPECIFIED" - Type is not
	// specified or unknown.
	//   "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MANUAL_CPV" - A bidding
	// strategy that pays a configurable amount per video view.
	//   "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MANUAL_CPM" - A bidding
	// strategy that pays a configurable amount per impression.
	//   "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_CPA" - A bidding
	// strategy that automatically optimizes conversions per dollar.
	//   "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_CPM" - A bidding
	// strategy that pays a configurable amount per impression.
	//   "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_RESERVE_CPM" - A bidding
	// strategy for YouTube Instant Reserve line items that pays a fixed amount per
	// impression.
	//   "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MAXIMIZE_LIFT" - An automated
	// bidding strategy that sets bids to achieve maximum lift.
	//   "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MAXIMIZE_CONVERSIONS" - A
	// bidding strategy that automatically maximizes number of conversions given a
	// daily budget.
	//   "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_CPV" - A bidding
	// strategy that automatically optimizes cost per video view.
	//   "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_ROAS" - A bidding
	// strategy that automatically maximizes revenue while averaging a specific
	// target Return On Ad Spend (ROAS).
	//   "YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MAXIMIZE_CONVERSION_VALUE" - A
	// bidding strategy that automatically sets bids to maximize revenue while
	// spending your budget.
	Type string `json:"type,omitempty"`
	// Value: The value used by the bidding strategy. When the bidding strategy is
	// assigned at the line item level, this field is only applicable for the
	// following strategy types: *
	// `YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_CPA` *
	// `YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_ROAS` When the bidding
	// strategy is assigned at the ad group level, this field is only applicable
	// for the following strategy types: *
	// `YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MANUAL_CPM` *
	// `YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_MANUAL_CPV` *
	// `YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_CPA` *
	// `YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_CPM` *
	// `YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_RESERVE_CPM` *
	// `YOUTUBE_AND_PARTNERS_BIDDING_STRATEGY_TYPE_TARGET_ROAS` If not using an
	// applicable strategy, the value of this field will be 0.
	Value int64 `json:"value,omitempty,string"`
	// ForceSendFields is a list of field names (e.g.
	// "AdGroupEffectiveTargetCpaSource") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdGroupEffectiveTargetCpaSource")
	// to include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s YoutubeAndPartnersBiddingStrategy) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeAndPartnersBiddingStrategy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// YoutubeAndPartnersInventorySourceConfig: Settings that control what YouTube
// related inventories the YouTube and Partners line item will target.
type YoutubeAndPartnersInventorySourceConfig struct {
	// IncludeGoogleTv: Optional. Whether to target inventory in video apps
	// available with Google TV.
	IncludeGoogleTv bool `json:"includeGoogleTv,omitempty"`
	// IncludeYoutube: Optional. Whether to target inventory on YouTube. This
	// includes both search, channels and videos.
	IncludeYoutube bool `json:"includeYoutube,omitempty"`
	// IncludeYoutubeVideoPartners: Whether to target inventory on a collection of
	// partner sites and apps that follow the same brand safety standards as
	// YouTube.
	IncludeYoutubeVideoPartners bool `json:"includeYoutubeVideoPartners,omitempty"`
	// ForceSendFields is a list of field names (e.g. "IncludeGoogleTv") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "IncludeGoogleTv") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s YoutubeAndPartnersInventorySourceConfig) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeAndPartnersInventorySourceConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// YoutubeAndPartnersSettings: Settings for YouTube and Partners line items.
type YoutubeAndPartnersSettings struct {
	// ContentCategory: The kind of content on which the YouTube and Partners ads
	// will be shown.
	//
	// Possible values:
	//   "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_UNSPECIFIED" - Content category is
	// not specified or is unknown in this version.
	//   "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_STANDARD" - A category consisting
	// of a wide range of content appropriate for most brands. The content is based
	// off of YouTube's [advertiser-friendly content
	// guidelines](https://support.google.com/youtube/answer/6162278).
	//   "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_EXPANDED" - A category including
	// all content across YouTube and video partners that meets standards for
	// monetization.
	//   "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_LIMITED" - A category consisting of
	// a reduced range of content that meets heightened requirements, especially
	// regarding inappropriate language and sexual suggestiveness.
	ContentCategory string `json:"contentCategory,omitempty"`
	// EffectiveContentCategory: Output only. The content category which takes
	// effect when serving the line item. When content category is set in both line
	// item and advertiser, the stricter one will take effect when serving the line
	// item.
	//
	// Possible values:
	//   "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_UNSPECIFIED" - Content category is
	// not specified or is unknown in this version.
	//   "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_STANDARD" - A category consisting
	// of a wide range of content appropriate for most brands. The content is based
	// off of YouTube's [advertiser-friendly content
	// guidelines](https://support.google.com/youtube/answer/6162278).
	//   "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_EXPANDED" - A category including
	// all content across YouTube and video partners that meets standards for
	// monetization.
	//   "YOUTUBE_AND_PARTNERS_CONTENT_CATEGORY_LIMITED" - A category consisting of
	// a reduced range of content that meets heightened requirements, especially
	// regarding inappropriate language and sexual suggestiveness.
	EffectiveContentCategory string `json:"effectiveContentCategory,omitempty"`
	// InventorySourceSettings: Settings that control what YouTube and Partners
	// inventories the line item will target.
	InventorySourceSettings *YoutubeAndPartnersInventorySourceConfig `json:"inventorySourceSettings,omitempty"`
	// LeadFormId: Optional. The ID of the form to generate leads.
	LeadFormId int64 `json:"leadFormId,omitempty,string"`
	// LinkedMerchantId: Optional. The ID of the merchant which is linked to the
	// line item for product feed.
	LinkedMerchantId int64 `json:"linkedMerchantId,omitempty,string"`
	// RelatedVideoIds: Optional. The IDs of the videos appear below the primary
	// video ad when the ad is playing in the YouTube app on mobile devices.
	RelatedVideoIds []string `json:"relatedVideoIds,omitempty"`
	// TargetFrequency: Optional. The average number of times you want ads from
	// this line item to show to the same person over a certain period of time.
	TargetFrequency *TargetFrequency `json:"targetFrequency,omitempty"`
	// ThirdPartyMeasurementConfigs: Optional. The third-party measurement configs
	// of the line item.
	ThirdPartyMeasurementConfigs *ThirdPartyMeasurementConfigs `json:"thirdPartyMeasurementConfigs,omitempty"`
	// VideoAdSequenceSettings: Optional. The settings related to VideoAdSequence.
	VideoAdSequenceSettings *VideoAdSequenceSettings `json:"videoAdSequenceSettings,omitempty"`
	// ViewFrequencyCap: The view frequency cap settings of the line item. The
	// max_views field in this settings object must be used if assigning a limited
	// cap.
	ViewFrequencyCap *FrequencyCap `json:"viewFrequencyCap,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ContentCategory") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ContentCategory") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s YoutubeAndPartnersSettings) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeAndPartnersSettings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// YoutubeChannelAssignedTargetingOptionDetails: Details for YouTube channel
// assigned targeting option. This will be populated in the
// youtube_channel_details field when targeting_type is
// `TARGETING_TYPE_YOUTUBE_CHANNEL`.
type YoutubeChannelAssignedTargetingOptionDetails struct {
	// ChannelId: The YouTube uploader channel id or the channel code of a YouTube
	// channel.
	ChannelId string `json:"channelId,omitempty"`
	// Negative: Indicates if this option is being negatively targeted.
	Negative bool `json:"negative,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ChannelId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ChannelId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s YoutubeChannelAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeChannelAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// YoutubeVideoAssignedTargetingOptionDetails: Details for YouTube video
// assigned targeting option. This will be populated in the
// youtube_video_details field when targeting_type is
// `TARGETING_TYPE_YOUTUBE_VIDEO`.
type YoutubeVideoAssignedTargetingOptionDetails struct {
	// Negative: Indicates if this option is being negatively targeted.
	Negative bool `json:"negative,omitempty"`
	// VideoId: YouTube video id as it appears on the YouTube watch page.
	VideoId string `json:"videoId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Negative") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Negative") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s YoutubeVideoAssignedTargetingOptionDetails) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeVideoAssignedTargetingOptionDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// YoutubeVideoDetails: Details of a YouTube video.
type YoutubeVideoDetails struct {
	// Id: The YouTube video ID which can be searched on YouTube webpage.
	Id string `json:"id,omitempty"`
	// UnavailableReason: The reason why the video data is not available.
	//
	// Possible values:
	//   "VIDEO_UNAVAILABLE_REASON_UNSPECIFIED" - Unknown or unspecified.
	//   "VIDEO_UNAVAILABLE_REASON_PRIVATE" - The video is private.
	//   "VIDEO_UNAVAILABLE_REASON_DELETED" - The video is deleted.
	UnavailableReason string `json:"unavailableReason,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Id") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Id") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s YoutubeVideoDetails) MarshalJSON() ([]byte, error) {
	type NoMethod YoutubeVideoDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

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

// Audit: Audits an advertiser. Returns the counts of used entities per
// resource type under the advertiser provided. Used entities count towards
// their respective resource limit. See
// https://support.google.com/displayvideo/answer/6071450.
//
// - advertiserId: The ID of the advertiser to audit.
func (r *AdvertisersService) Audit(advertiserId int64) *AdvertisersAuditCall {
	c := &AdvertisersAuditCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// ReadMask sets the optional parameter "readMask": The specific fields to
// return. If no mask is specified, all fields in the response proto will be
// filled. Valid values are: * usedLineItemsCount * usedInsertionOrdersCount *
// usedCampaignsCount * channelsCount * negativelyTargetedChannelsCount *
// negativeKeywordListsCount * adGroupCriteriaCount * campaignCriteriaCount
func (c *AdvertisersAuditCall) ReadMask(readMask string) *AdvertisersAuditCall {
	c.urlParams_.Set("readMask", readMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersAuditCall) Fields(s ...googleapi.Field) *AdvertisersAuditCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersAuditCall) IfNoneMatch(entityTag string) *AdvertisersAuditCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersAuditCall) Context(ctx context.Context) *AdvertisersAuditCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersAuditCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersAuditCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}:audit")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.audit", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.audit" call.
// Any non-2xx status code is an error. Response headers are in either
// *AuditAdvertiserResponse.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 *AdvertisersAuditCall) Do(opts ...googleapi.CallOption) (*AuditAdvertiserResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &AuditAdvertiserResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.audit", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersCreateCall struct {
	s          *Service
	advertiser *Advertiser
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Create: Creates a new advertiser. Returns the newly created advertiser if
// successful. **This method regularly experiences high latency.** We recommend
// increasing your default timeout
// (/display-video/api/guides/best-practices/timeouts#client_library_timeout)
// to avoid errors.
func (r *AdvertisersService) Create(advertiser *Advertiser) *AdvertisersCreateCall {
	c := &AdvertisersCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiser = advertiser
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersCreateCall) Fields(s ...googleapi.Field) *AdvertisersCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersCreateCall) Context(ctx context.Context) *AdvertisersCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.advertiser)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Advertiser.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 *AdvertisersCreateCall) Do(opts ...googleapi.CallOption) (*Advertiser, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Advertiser{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Delete: Deletes an advertiser. Deleting an advertiser will delete all of its
// child resources, for example, campaigns, insertion orders and line items. A
// deleted advertiser cannot be recovered.
//
// - advertiserId: The ID of the advertiser we need to delete.
func (r *AdvertisersService) Delete(advertiserId int64) *AdvertisersDeleteCall {
	c := &AdvertisersDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersDeleteCall) Fields(s ...googleapi.Field) *AdvertisersDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersDeleteCall) Context(ctx context.Context) *AdvertisersDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *AdvertisersDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersEditAssignedTargetingOptionsCall struct {
	s                                                 *Service
	advertiserId                                      int64
	bulkeditadvertiserassignedtargetingoptionsrequest *BulkEditAdvertiserAssignedTargetingOptionsRequest
	urlParams_                                        gensupport.URLParams
	ctx_                                              context.Context
	header_                                           http.Header
}

// EditAssignedTargetingOptions: Edits targeting options under a single
// advertiser. The operation will delete the assigned targeting options
// provided in
// BulkEditAdvertiserAssignedTargetingOptionsRequest.delete_requests and then
// create the assigned targeting options provided in
// BulkEditAdvertiserAssignedTargetingOptionsRequest.create_requests .
//
// - advertiserId: The ID of the advertiser.
func (r *AdvertisersService) EditAssignedTargetingOptions(advertiserId int64, bulkeditadvertiserassignedtargetingoptionsrequest *BulkEditAdvertiserAssignedTargetingOptionsRequest) *AdvertisersEditAssignedTargetingOptionsCall {
	c := &AdvertisersEditAssignedTargetingOptionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.bulkeditadvertiserassignedtargetingoptionsrequest = bulkeditadvertiserassignedtargetingoptionsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersEditAssignedTargetingOptionsCall) Fields(s ...googleapi.Field) *AdvertisersEditAssignedTargetingOptionsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersEditAssignedTargetingOptionsCall) Context(ctx context.Context) *AdvertisersEditAssignedTargetingOptionsCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersEditAssignedTargetingOptionsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersEditAssignedTargetingOptionsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.bulkeditadvertiserassignedtargetingoptionsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}:editAssignedTargetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.editAssignedTargetingOptions", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.editAssignedTargetingOptions" call.
// Any non-2xx status code is an error. Response headers are in either
// *BulkEditAdvertiserAssignedTargetingOptionsResponse.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 *AdvertisersEditAssignedTargetingOptionsCall) Do(opts ...googleapi.CallOption) (*BulkEditAdvertiserAssignedTargetingOptionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &BulkEditAdvertiserAssignedTargetingOptionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.editAssignedTargetingOptions", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets an advertiser.
//
// - advertiserId: The ID of the advertiser to fetch.
func (r *AdvertisersService) Get(advertiserId int64) *AdvertisersGetCall {
	c := &AdvertisersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersGetCall) Fields(s ...googleapi.Field) *AdvertisersGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersGetCall) IfNoneMatch(entityTag string) *AdvertisersGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersGetCall) Context(ctx context.Context) *AdvertisersGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Advertiser.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 *AdvertisersGetCall) Do(opts ...googleapi.CallOption) (*Advertiser, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Advertiser{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists advertisers that are accessible to the current user. The order
// is defined by the order_by parameter. A single partner_id is required.
// Cross-partner listing is not supported.
func (r *AdvertisersService) List() *AdvertisersListCall {
	c := &AdvertisersListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by advertiser
// fields. Supported syntax: * Filter expressions are made up of one or more
// restrictions. * Restrictions can be combined by `AND` or `OR` logical
// operators. * A restriction has the form of `{field} {operator} {value}`. *
// The `updateTime` field must use the `GREATER THAN OR EQUAL TO (>=)` or `LESS
// THAN OR EQUAL TO (<=)` operators. * All other fields must use the `EQUALS
// (=)` operator. Supported fields: * `advertiserId` * `displayName` *
// `entityStatus` * `updateTime` (input in ISO 8601 format, or
// `YYYY-MM-DDTHH:MM:SSZ`) Examples: * All active advertisers under a partner:
// `entityStatus="ENTITY_STATUS_ACTIVE" * All advertisers with an update time
// less than or equal to 2020-11-04T18:54:47Z (format of ISO 8601):
// `updateTime<="2020-11-04T18:54:47Z" * All advertisers with an update time
// greater than or equal to 2020-11-04T18:54:47Z (format of ISO 8601):
// `updateTime>="2020-11-04T18:54:47Z" The length of this field should be no
// more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersListCall) Filter(filter string) *AdvertisersListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `advertiserId` (default) * `displayName` *
// `entityStatus` * `updateTime` The default sorting order is ascending. To
// specify descending order for a field, a suffix "desc" should be added to the
// field name. For example, `displayName desc`.
func (c *AdvertisersListCall) OrderBy(orderBy string) *AdvertisersListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`.
func (c *AdvertisersListCall) PageSize(pageSize int64) *AdvertisersListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListAdvertisers` method.
// If not specified, the first page of results will be returned.
func (c *AdvertisersListCall) PageToken(pageToken string) *AdvertisersListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": Required. The ID of the
// partner that the fetched advertisers should all belong to. The system only
// supports listing advertisers for one partner at a time.
func (c *AdvertisersListCall) PartnerId(partnerId int64) *AdvertisersListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersListCall) Fields(s ...googleapi.Field) *AdvertisersListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersListCall) IfNoneMatch(entityTag string) *AdvertisersListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersListCall) Context(ctx context.Context) *AdvertisersListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListAdvertisersResponse.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 *AdvertisersListCall) Do(opts ...googleapi.CallOption) (*ListAdvertisersResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListAdvertisersResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersListCall) Pages(ctx context.Context, f func(*ListAdvertisersResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

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

// ListAssignedTargetingOptions: Lists assigned targeting options of an
// advertiser across targeting types.
//
// - advertiserId: The ID of the advertiser the line item belongs to.
func (r *AdvertisersService) ListAssignedTargetingOptions(advertiserId int64) *AdvertisersListAssignedTargetingOptionsCall {
	c := &AdvertisersListAssignedTargetingOptionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by assigned
// targeting option fields. Supported syntax: * Filter expressions are made up
// of one or more restrictions. * Restrictions can be combined by the `OR`
// logical operator. * A restriction has the form of `{field} {operator}
// {value}`. * All fields must use the `EQUALS (=) operator`. Supported fields:
// * `targetingType` Examples: * targetingType with value
// TARGETING_TYPE_CHANNEL `targetingType="TARGETING_TYPE_CHANNEL" The length
// of this field should be no more than 500 characters. Reference our filter
// `LIST` requests (/display-video/api/guides/how-tos/filters) guide for more
// information.
func (c *AdvertisersListAssignedTargetingOptionsCall) Filter(filter string) *AdvertisersListAssignedTargetingOptionsCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `targetingType` (default) The default sorting
// order is ascending. To specify descending order for a field, a suffix "desc"
// should be added to the field name. Example: `targetingType desc`.
func (c *AdvertisersListAssignedTargetingOptionsCall) OrderBy(orderBy string) *AdvertisersListAssignedTargetingOptionsCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. The
// size must be an integer between `1` and `5000`. If unspecified, the default
// is '5000'. Returns error code `INVALID_ARGUMENT` if an invalid value is
// specified.
func (c *AdvertisersListAssignedTargetingOptionsCall) PageSize(pageSize int64) *AdvertisersListAssignedTargetingOptionsCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token that lets the
// client fetch the next page of results. Typically, this is the value of
// next_page_token returned from the previous call to
// `BulkListAdvertiserAssignedTargetingOptions` method. If not specified, the
// first page of results will be returned.
func (c *AdvertisersListAssignedTargetingOptionsCall) PageToken(pageToken string) *AdvertisersListAssignedTargetingOptionsCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersListAssignedTargetingOptionsCall) Fields(s ...googleapi.Field) *AdvertisersListAssignedTargetingOptionsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersListAssignedTargetingOptionsCall) IfNoneMatch(entityTag string) *AdvertisersListAssignedTargetingOptionsCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersListAssignedTargetingOptionsCall) Context(ctx context.Context) *AdvertisersListAssignedTargetingOptionsCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersListAssignedTargetingOptionsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersListAssignedTargetingOptionsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}:listAssignedTargetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.listAssignedTargetingOptions", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.listAssignedTargetingOptions" call.
// Any non-2xx status code is an error. Response headers are in either
// *BulkListAdvertiserAssignedTargetingOptionsResponse.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 *AdvertisersListAssignedTargetingOptionsCall) Do(opts ...googleapi.CallOption) (*BulkListAdvertiserAssignedTargetingOptionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &BulkListAdvertiserAssignedTargetingOptionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.listAssignedTargetingOptions", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersListAssignedTargetingOptionsCall) Pages(ctx context.Context, f func(*BulkListAdvertiserAssignedTargetingOptionsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersPatchCall struct {
	s            *Service
	advertiserId int64
	advertiser   *Advertiser
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Patch: Updates an existing advertiser. Returns the updated advertiser if
// successful.
//
//   - advertiserId: Output only. The unique ID of the advertiser. Assigned by
//     the system.
func (r *AdvertisersService) Patch(advertiserId int64, advertiser *Advertiser) *AdvertisersPatchCall {
	c := &AdvertisersPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.advertiser = advertiser
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *AdvertisersPatchCall) UpdateMask(updateMask string) *AdvertisersPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersPatchCall) Fields(s ...googleapi.Field) *AdvertisersPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersPatchCall) Context(ctx context.Context) *AdvertisersPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.advertiser)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *Advertiser.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 *AdvertisersPatchCall) Do(opts ...googleapi.CallOption) (*Advertiser, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Advertiser{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets an ad group ad.
//
// - adGroupAdId: The ID of the ad group ad to fetch.
// - advertiserId: The ID of the advertiser this ad group ad belongs to.
func (r *AdvertisersAdGroupAdsService) Get(advertiserId int64, adGroupAdId int64) *AdvertisersAdGroupAdsGetCall {
	c := &AdvertisersAdGroupAdsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.adGroupAdId = adGroupAdId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersAdGroupAdsGetCall) Fields(s ...googleapi.Field) *AdvertisersAdGroupAdsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersAdGroupAdsGetCall) IfNoneMatch(entityTag string) *AdvertisersAdGroupAdsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersAdGroupAdsGetCall) Context(ctx context.Context) *AdvertisersAdGroupAdsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersAdGroupAdsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersAdGroupAdsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/adGroupAds/{+adGroupAdId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"adGroupAdId":  strconv.FormatInt(c.adGroupAdId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroupAds.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.adGroupAds.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *AdGroupAd.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 *AdvertisersAdGroupAdsGetCall) Do(opts ...googleapi.CallOption) (*AdGroupAd, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &AdGroupAd{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroupAds.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists ad group ads.
//
// - advertiserId: The ID of the advertiser the ad groups belongs to.
func (r *AdvertisersAdGroupAdsService) List(advertiserId int64) *AdvertisersAdGroupAdsListCall {
	c := &AdvertisersAdGroupAdsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by custom ad
// group ad fields. Supported syntax: * Filter expressions are made up of one
// or more restrictions. * Restrictions can be combined by `AND` and `OR`. A
// sequence of restrictions implicitly uses `AND`. * A restriction has the form
// of `{field} {operator} {value}`. * All fields must use the `EQUALS (=)`
// operator. Supported fields: * `adGroupId` * `displayName` * `entityStatus` *
// `adGroupAdId` Examples: * All ad group ads under an ad group:
// `adGroupId="1234" * All ad group ads under an ad group with an entityStatus
// of `ENTITY_STATUS_ACTIVE` or `ENTITY_STATUS_PAUSED`:
// `(entityStatus="ENTITY_STATUS_ACTIVE" OR
// entityStatus="ENTITY_STATUS_PAUSED") AND adGroupId="12345" The length of
// this field should be no more than 500 characters. Reference our filter
// `LIST` requests (/display-video/api/guides/how-tos/filters) guide for more
// information.
func (c *AdvertisersAdGroupAdsListCall) Filter(filter string) *AdvertisersAdGroupAdsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `displayName` (default) * `entityStatus` The
// default sorting order is ascending. To specify descending order for a field,
// a suffix "desc" should be added to the field name. Example: `displayName
// desc`.
func (c *AdvertisersAdGroupAdsListCall) OrderBy(orderBy string) *AdvertisersAdGroupAdsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `100`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersAdGroupAdsListCall) PageSize(pageSize int64) *AdvertisersAdGroupAdsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListAdGroupAds` method.
// If not specified, the first page of results will be returned.
func (c *AdvertisersAdGroupAdsListCall) PageToken(pageToken string) *AdvertisersAdGroupAdsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersAdGroupAdsListCall) Fields(s ...googleapi.Field) *AdvertisersAdGroupAdsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersAdGroupAdsListCall) IfNoneMatch(entityTag string) *AdvertisersAdGroupAdsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersAdGroupAdsListCall) Context(ctx context.Context) *AdvertisersAdGroupAdsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersAdGroupAdsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersAdGroupAdsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/adGroupAds")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroupAds.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.adGroupAds.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListAdGroupAdsResponse.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 *AdvertisersAdGroupAdsListCall) Do(opts ...googleapi.CallOption) (*ListAdGroupAdsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListAdGroupAdsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroupAds.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersAdGroupAdsListCall) Pages(ctx context.Context, f func(*ListAdGroupAdsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

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

// BulkListAssignedTargetingOptions: Lists assigned targeting options for
// multiple ad groups across targeting types. Inherited assigned targeting
// options are not included.
//
// - advertiserId: The ID of the advertiser the line items belongs to.
func (r *AdvertisersAdGroupsService) BulkListAssignedTargetingOptions(advertiserId int64) *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall {
	c := &AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// AdGroupIds sets the optional parameter "adGroupIds": Required. The IDs of
// the ad groups to list assigned targeting options for.
func (c *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall) AdGroupIds(adGroupIds ...int64) *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall {
	var adGroupIds_ []string
	for _, v := range adGroupIds {
		adGroupIds_ = append(adGroupIds_, fmt.Sprint(v))
	}
	c.urlParams_.SetMulti("adGroupIds", adGroupIds_)
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by assigned
// targeting option fields. Supported syntax: * Filter expressions are made up
// of one or more restrictions. * Restrictions can be combined by the logical
// operator `OR`. * A restriction has the form of `{field} {operator} {value}`.
// * All fields must use the `EQUALS (=)` operator. Supported fields: *
// `targetingType` Examples: * `AssignedTargetingOption` resources of targeting
// type `TARGETING_TYPE_YOUTUBE_VIDEO` or `TARGETING_TYPE_YOUTUBE_CHANNEL`:
// `targetingType="TARGETING_TYPE_YOUTUBE_VIDEO" OR
// targetingType="TARGETING_TYPE_YOUTUBE_CHANNEL" The length of this field
// should be no more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall) Filter(filter string) *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `adGroupId` (default) *
// `assignedTargetingOption.targetingType` The default sorting order is
// ascending. To specify descending order for a field, a suffix "desc" should
// be added to the field name. Example: `targetingType desc`.
func (c *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall) OrderBy(orderBy string) *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. The
// size must be an integer between `1` and `5000`. If unspecified, the default
// is `5000`. Returns error code `INVALID_ARGUMENT` if an invalid value is
// specified.
func (c *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall) PageSize(pageSize int64) *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token that lets the
// client fetch the next page of results. Typically, this is the value of
// next_page_token returned from the previous call to the
// `BulkListAdGroupAssignedTargetingOptions` method. If not specified, the
// first page of results will be returned.
func (c *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall) PageToken(pageToken string) *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall) Fields(s ...googleapi.Field) *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall) IfNoneMatch(entityTag string) *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall) Context(ctx context.Context) *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/adGroups:bulkListAssignedTargetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroups.bulkListAssignedTargetingOptions", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.adGroups.bulkListAssignedTargetingOptions" call.
// Any non-2xx status code is an error. Response headers are in either
// *BulkListAdGroupAssignedTargetingOptionsResponse.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 *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall) Do(opts ...googleapi.CallOption) (*BulkListAdGroupAssignedTargetingOptionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &BulkListAdGroupAssignedTargetingOptionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroups.bulkListAssignedTargetingOptions", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersAdGroupsBulkListAssignedTargetingOptionsCall) Pages(ctx context.Context, f func(*BulkListAdGroupAssignedTargetingOptionsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

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

// Get: Gets an ad group.
//
// - adGroupId: The ID of the ad group to fetch.
// - advertiserId: The ID of the advertiser this ad group belongs to.
func (r *AdvertisersAdGroupsService) Get(advertiserId int64, adGroupId int64) *AdvertisersAdGroupsGetCall {
	c := &AdvertisersAdGroupsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.adGroupId = adGroupId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersAdGroupsGetCall) Fields(s ...googleapi.Field) *AdvertisersAdGroupsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersAdGroupsGetCall) IfNoneMatch(entityTag string) *AdvertisersAdGroupsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersAdGroupsGetCall) Context(ctx context.Context) *AdvertisersAdGroupsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersAdGroupsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersAdGroupsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/adGroups/{+adGroupId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"adGroupId":    strconv.FormatInt(c.adGroupId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroups.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.adGroups.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *AdGroup.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 *AdvertisersAdGroupsGetCall) Do(opts ...googleapi.CallOption) (*AdGroup, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &AdGroup{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroups.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists ad groups.
//
// - advertiserId: The ID of the advertiser the ad groups belongs to.
func (r *AdvertisersAdGroupsService) List(advertiserId int64) *AdvertisersAdGroupsListCall {
	c := &AdvertisersAdGroupsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by custom ad
// group fields. Supported syntax: * Filter expressions are made up of one or
// more restrictions. * Restrictions can be combined by `AND` and `OR`. A
// sequence of restrictions implicitly uses `AND`. * A restriction has the form
// of `{field} {operator} {value}`. * All fields must use the `EQUALS (=)`
// operator. Supported properties: * `adGroupId` * `displayName` *
// `entityStatus` * `lineItemId` * `adGroupFormat` Examples: * All ad groups
// under an line item: `lineItemId="1234" * All `ENTITY_STATUS_ACTIVE` or
// `ENTITY_STATUS_PAUSED` `AD_GROUP_FORMAT_IN_STREAM` ad groups under an
// advertiser: `(entityStatus="ENTITY_STATUS_ACTIVE" OR
// entityStatus="ENTITY_STATUS_PAUSED") AND
// adGroupFormat="AD_GROUP_FORMAT_IN_STREAM" The length of this field should
// be no more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersAdGroupsListCall) Filter(filter string) *AdvertisersAdGroupsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `displayName` (default) * `entityStatus` The
// default sorting order is ascending. To specify descending order for a field,
// a suffix "desc" should be added to the field name. Example: `displayName
// desc`.
func (c *AdvertisersAdGroupsListCall) OrderBy(orderBy string) *AdvertisersAdGroupsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersAdGroupsListCall) PageSize(pageSize int64) *AdvertisersAdGroupsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListAdGroups` method. If
// not specified, the first page of results will be returned.
func (c *AdvertisersAdGroupsListCall) PageToken(pageToken string) *AdvertisersAdGroupsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersAdGroupsListCall) Fields(s ...googleapi.Field) *AdvertisersAdGroupsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersAdGroupsListCall) IfNoneMatch(entityTag string) *AdvertisersAdGroupsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersAdGroupsListCall) Context(ctx context.Context) *AdvertisersAdGroupsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersAdGroupsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersAdGroupsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/adGroups")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroups.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.adGroups.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListAdGroupsResponse.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 *AdvertisersAdGroupsListCall) Do(opts ...googleapi.CallOption) (*ListAdGroupsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListAdGroupsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroups.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersAdGroupsListCall) Pages(ctx context.Context, f func(*ListAdGroupsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsGetCall struct {
	s                         *Service
	advertiserId              int64
	adGroupId                 int64
	targetingType             string
	assignedTargetingOptionId string
	urlParams_                gensupport.URLParams
	ifNoneMatch_              string
	ctx_                      context.Context
	header_                   http.Header
}

// Get: Gets a single targeting option assigned to an ad group. Inherited
// assigned targeting options are not included.
//
//   - adGroupId: The ID of the ad group the assigned targeting option belongs
//     to.
//   - advertiserId: The ID of the advertiser the ad group belongs to.
//   - assignedTargetingOptionId: An identifier unique to the targeting type in
//     this line item that identifies the assigned targeting option being
//     requested.
//   - targetingType: Identifies the type of this assigned targeting option.
//     Supported targeting types include: * `TARGETING_TYPE_AGE_RANGE` *
//     `TARGETING_TYPE_APP` * `TARGETING_TYPE_APP_CATEGORY` *
//     `TARGETING_TYPE_AUDIENCE_GROUP` * `TARGETING_TYPE_CATEGORY` *
//     `TARGETING_TYPE_GENDER` * `TARGETING_TYPE_HOUSEHOLD_INCOME` *
//     `TARGETING_TYPE_KEYWORD` * `TARGETING_TYPE_PARENTAL_STATUS` *
//     `TARGETING_TYPE_SESSION_POSITION` * `TARGETING_TYPE_URL` *
//     `TARGETING_TYPE_YOUTUBE_CHANNEL` * `TARGETING_TYPE_YOUTUBE_VIDEO`.
func (r *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsService) Get(advertiserId int64, adGroupId int64, targetingType string, assignedTargetingOptionId string) *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsGetCall {
	c := &AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.adGroupId = adGroupId
	c.targetingType = targetingType
	c.assignedTargetingOptionId = assignedTargetingOptionId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsGetCall) Fields(s ...googleapi.Field) *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsGetCall) IfNoneMatch(entityTag string) *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsGetCall) Context(ctx context.Context) *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/adGroups/{+adGroupId}/targetingTypes/{+targetingType}/assignedTargetingOptions/{+assignedTargetingOptionId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":              strconv.FormatInt(c.advertiserId, 10),
		"adGroupId":                 strconv.FormatInt(c.adGroupId, 10),
		"targetingType":             c.targetingType,
		"assignedTargetingOptionId": c.assignedTargetingOptionId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroups.targetingTypes.assignedTargetingOptions.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.adGroups.targetingTypes.assignedTargetingOptions.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *AssignedTargetingOption.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 *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsGetCall) Do(opts ...googleapi.CallOption) (*AssignedTargetingOption, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &AssignedTargetingOption{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroups.targetingTypes.assignedTargetingOptions.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall struct {
	s             *Service
	advertiserId  int64
	adGroupId     int64
	targetingType string
	urlParams_    gensupport.URLParams
	ifNoneMatch_  string
	ctx_          context.Context
	header_       http.Header
}

// List: Lists the targeting options assigned to an ad group. Inherited
// assigned targeting options are not included.
//
//   - adGroupId: The ID of the ad group to list assigned targeting options for.
//   - advertiserId: The ID of the advertiser the ad group belongs to.
//   - targetingType: Identifies the type of assigned targeting options to list.
//     Supported targeting types include: * `TARGETING_TYPE_AGE_RANGE` *
//     `TARGETING_TYPE_APP` * `TARGETING_TYPE_APP_CATEGORY` *
//     `TARGETING_TYPE_AUDIENCE_GROUP` * `TARGETING_TYPE_CATEGORY` *
//     `TARGETING_TYPE_GENDER` * `TARGETING_TYPE_HOUSEHOLD_INCOME` *
//     `TARGETING_TYPE_KEYWORD` * `TARGETING_TYPE_PARENTAL_STATUS` *
//     `TARGETING_TYPE_SESSION_POSITION` * `TARGETING_TYPE_URL` *
//     `TARGETING_TYPE_YOUTUBE_CHANNEL` * `TARGETING_TYPE_YOUTUBE_VIDEO`.
func (r *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsService) List(advertiserId int64, adGroupId int64, targetingType string) *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall {
	c := &AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.adGroupId = adGroupId
	c.targetingType = targetingType
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by assigned
// targeting option fields. Supported syntax: * Filter expressions are made up
// of one or more restrictions. * Restrictions can be combined by the logical
// operator `OR`. * A restriction has the form of `{field} {operator} {value}`.
// * All fields must use the `EQUALS (=)` operator. Supported fields: *
// `assignedTargetingOptionId` Examples: * `AssignedTargetingOption` resources
// with ID 1 or 2: `assignedTargetingOptionId="1" OR
// assignedTargetingOptionId="2" The length of this field should be no more
// than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall) Filter(filter string) *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `assignedTargetingOptionId` (default) The
// default sorting order is ascending. To specify descending order for a field,
// a suffix "desc" should be added to the field name. Example:
// `assignedTargetingOptionId desc`.
func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall) OrderBy(orderBy string) *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `5000`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall) PageSize(pageSize int64) *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to
// `ListAdGroupAssignedTargetingOptions` method. If not specified, the first
// page of results will be returned.
func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall) PageToken(pageToken string) *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall) Fields(s ...googleapi.Field) *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall) IfNoneMatch(entityTag string) *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall) Context(ctx context.Context) *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/adGroups/{+adGroupId}/targetingTypes/{+targetingType}/assignedTargetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":  strconv.FormatInt(c.advertiserId, 10),
		"adGroupId":     strconv.FormatInt(c.adGroupId, 10),
		"targetingType": c.targetingType,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroups.targetingTypes.assignedTargetingOptions.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.adGroups.targetingTypes.assignedTargetingOptions.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListAdGroupAssignedTargetingOptionsResponse.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 *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall) Do(opts ...googleapi.CallOption) (*ListAdGroupAssignedTargetingOptionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListAdGroupAssignedTargetingOptionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.adGroups.targetingTypes.assignedTargetingOptions.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersAdGroupsTargetingTypesAssignedTargetingOptionsListCall) Pages(ctx context.Context, f func(*ListAdGroupAssignedTargetingOptionsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersAssetsUploadCall struct {
	s                  *Service
	advertiserId       int64
	createassetrequest *CreateAssetRequest
	urlParams_         gensupport.URLParams
	mediaInfo_         *gensupport.MediaInfo
	ctx_               context.Context
	header_            http.Header
}

// Upload: Uploads an asset. Returns the ID of the newly uploaded asset if
// successful. The asset file size should be no more than 10 MB for images, 200
// MB for ZIP files, and 1 GB for videos. Must be used within the multipart
// media upload process (/display-video/api/guides/how-tos/upload#multipart).
// Examples using provided client libraries can be found in our Creating
// Creatives guide
// (/display-video/api/guides/creating-creatives/overview#upload_an_asset).
//
// - advertiserId: The ID of the advertiser this asset belongs to.
func (r *AdvertisersAssetsService) Upload(advertiserId int64, createassetrequest *CreateAssetRequest) *AdvertisersAssetsUploadCall {
	c := &AdvertisersAssetsUploadCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.createassetrequest = createassetrequest
	return c
}

// Media specifies the media to upload in one or more chunks. The chunk size
// may be controlled by supplying a MediaOption generated by
// googleapi.ChunkSize. The chunk size defaults to
// googleapi.DefaultUploadChunkSize.The Content-Type header used in the upload
// request will be determined by sniffing the contents of r, unless a
// MediaOption generated by googleapi.ContentType is supplied.
// At most one of Media and ResumableMedia may be set.
func (c *AdvertisersAssetsUploadCall) Media(r io.Reader, options ...googleapi.MediaOption) *AdvertisersAssetsUploadCall {
	c.mediaInfo_ = gensupport.NewInfoFromMedia(r, options)
	return c
}

// ResumableMedia specifies the media to upload in chunks and can be canceled
// with ctx.
//
// Deprecated: use Media instead.
//
// At most one of Media and ResumableMedia may be set. mediaType identifies the
// MIME media type of the upload, such as "image/png". If mediaType is "", it
// will be auto-detected. The provided ctx will supersede any context
// previously provided to the Context method.
func (c *AdvertisersAssetsUploadCall) ResumableMedia(ctx context.Context, r io.ReaderAt, size int64, mediaType string) *AdvertisersAssetsUploadCall {
	c.ctx_ = ctx
	c.mediaInfo_ = gensupport.NewInfoFromResumableMedia(r, size, mediaType)
	return c
}

// ProgressUpdater provides a callback function that will be called after every
// chunk. It should be a low-latency function in order to not slow down the
// upload operation. This should only be called when using ResumableMedia (as
// opposed to Media).
func (c *AdvertisersAssetsUploadCall) ProgressUpdater(pu googleapi.ProgressUpdater) *AdvertisersAssetsUploadCall {
	c.mediaInfo_.SetProgressUpdater(pu)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersAssetsUploadCall) Fields(s ...googleapi.Field) *AdvertisersAssetsUploadCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
// This context will supersede any context previously provided to the
// ResumableMedia method.
func (c *AdvertisersAssetsUploadCall) Context(ctx context.Context) *AdvertisersAssetsUploadCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersAssetsUploadCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersAssetsUploadCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.createassetrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/assets")
	if c.mediaInfo_ != nil {
		urls = googleapi.ResolveRelative(c.s.BasePath, "/upload/v4/advertisers/{+advertiserId}/assets")
		c.urlParams_.Set("uploadType", c.mediaInfo_.UploadType())
	}
	newBody, getBody, cleanup := c.mediaInfo_.UploadRequest(reqHeaders, body)
	defer cleanup()
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, newBody)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	req.GetBody = getBody
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.assets.upload", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.assets.upload" call.
// Any non-2xx status code is an error. Response headers are in either
// *CreateAssetResponse.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 *AdvertisersAssetsUploadCall) Do(opts ...googleapi.CallOption) (*CreateAssetResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	rx := c.mediaInfo_.ResumableUpload(res.Header.Get("Location"))
	if rx != nil {
		rx.Client = c.s.client
		rx.UserAgent = c.s.userAgent()
		ctx := c.ctx_
		if ctx == nil {
			ctx = context.TODO()
		}
		res, err = rx.Upload(ctx)
		if err != nil {
			return nil, err
		}
		defer res.Body.Close()
		if err := googleapi.CheckResponse(res); err != nil {
			return nil, gensupport.WrapError(err)
		}
	}
	ret := &CreateAssetResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.assets.upload", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersCampaignsCreateCall struct {
	s            *Service
	advertiserId int64
	campaign     *Campaign
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Create: Creates a new campaign. Returns the newly created campaign if
// successful.
//
//   - advertiserId: Output only. The unique ID of the advertiser the campaign
//     belongs to.
func (r *AdvertisersCampaignsService) Create(advertiserId int64, campaign *Campaign) *AdvertisersCampaignsCreateCall {
	c := &AdvertisersCampaignsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.campaign = campaign
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersCampaignsCreateCall) Fields(s ...googleapi.Field) *AdvertisersCampaignsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersCampaignsCreateCall) Context(ctx context.Context) *AdvertisersCampaignsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersCampaignsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersCampaignsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.campaign)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/campaigns")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.campaigns.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.campaigns.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Campaign.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 *AdvertisersCampaignsCreateCall) Do(opts ...googleapi.CallOption) (*Campaign, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Campaign{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.campaigns.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersCampaignsDeleteCall struct {
	s            *Service
	advertiserId int64
	campaignId   int64
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Delete: Permanently deletes a campaign. A deleted campaign cannot be
// recovered. The campaign should be archived first, i.e. set entity_status to
// `ENTITY_STATUS_ARCHIVED`, to be able to delete it. **This method regularly
// experiences high latency.** We recommend increasing your default timeout
// (/display-video/api/guides/best-practices/timeouts#client_library_timeout)
// to avoid errors.
//
// - advertiserId: The ID of the advertiser this campaign belongs to.
// - campaignId: The ID of the campaign we need to delete.
func (r *AdvertisersCampaignsService) Delete(advertiserId int64, campaignId int64) *AdvertisersCampaignsDeleteCall {
	c := &AdvertisersCampaignsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.campaignId = campaignId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersCampaignsDeleteCall) Fields(s ...googleapi.Field) *AdvertisersCampaignsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersCampaignsDeleteCall) Context(ctx context.Context) *AdvertisersCampaignsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersCampaignsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersCampaignsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/campaigns/{+campaignId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"campaignId":   strconv.FormatInt(c.campaignId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.campaigns.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.campaigns.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *AdvertisersCampaignsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.campaigns.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a campaign.
//
// - advertiserId: The ID of the advertiser this campaign belongs to.
// - campaignId: The ID of the campaign to fetch.
func (r *AdvertisersCampaignsService) Get(advertiserId int64, campaignId int64) *AdvertisersCampaignsGetCall {
	c := &AdvertisersCampaignsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.campaignId = campaignId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersCampaignsGetCall) Fields(s ...googleapi.Field) *AdvertisersCampaignsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersCampaignsGetCall) IfNoneMatch(entityTag string) *AdvertisersCampaignsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersCampaignsGetCall) Context(ctx context.Context) *AdvertisersCampaignsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersCampaignsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersCampaignsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/campaigns/{+campaignId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"campaignId":   strconv.FormatInt(c.campaignId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.campaigns.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.campaigns.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Campaign.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 *AdvertisersCampaignsGetCall) Do(opts ...googleapi.CallOption) (*Campaign, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Campaign{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.campaigns.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists campaigns in an advertiser. The order is defined by the order_by
// parameter. If a filter by entity_status is not specified, campaigns with
// `ENTITY_STATUS_ARCHIVED` will not be included in the results.
//
// - advertiserId: The ID of the advertiser to list campaigns for.
func (r *AdvertisersCampaignsService) List(advertiserId int64) *AdvertisersCampaignsListCall {
	c := &AdvertisersCampaignsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by campaign
// fields. Supported syntax: * Filter expressions are made up of one or more
// restrictions. * Restrictions can be combined by `AND` or `OR` logical
// operators. A sequence of restrictions implicitly uses `AND`. * A restriction
// has the form of `{field} {operator} {value}`. * The `updateTime` field must
// use the `GREATER THAN OR EQUAL TO (>=)` or `LESS THAN OR EQUAL TO (<=)`
// operators. * All other fields must use the `EQUALS (=)` operator. Supported
// fields: * `campaignId` * `displayName` * `entityStatus` * `updateTime`
// (input in ISO 8601 format, or `YYYY-MM-DDTHH:MM:SSZ`) Examples: * All
// `ENTITY_STATUS_ACTIVE` or `ENTITY_STATUS_PAUSED` campaigns under an
// advertiser: `(entityStatus="ENTITY_STATUS_ACTIVE" OR
// entityStatus="ENTITY_STATUS_PAUSED")` * All campaigns with an update time
// less than or equal to 2020-11-04T18:54:47Z (format of ISO 8601):
// `updateTime<="2020-11-04T18:54:47Z" * All campaigns with an update time
// greater than or equal to 2020-11-04T18:54:47Z (format of ISO 8601):
// `updateTime>="2020-11-04T18:54:47Z" The length of this field should be no
// more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersCampaignsListCall) Filter(filter string) *AdvertisersCampaignsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `displayName` (default) * `entityStatus` *
// `updateTime` The default sorting order is ascending. To specify descending
// order for a field, a suffix "desc" should be added to the field name.
// Example: `displayName desc`.
func (c *AdvertisersCampaignsListCall) OrderBy(orderBy string) *AdvertisersCampaignsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`.
func (c *AdvertisersCampaignsListCall) PageSize(pageSize int64) *AdvertisersCampaignsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListCampaigns` method.
// If not specified, the first page of results will be returned.
func (c *AdvertisersCampaignsListCall) PageToken(pageToken string) *AdvertisersCampaignsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersCampaignsListCall) Fields(s ...googleapi.Field) *AdvertisersCampaignsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersCampaignsListCall) IfNoneMatch(entityTag string) *AdvertisersCampaignsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersCampaignsListCall) Context(ctx context.Context) *AdvertisersCampaignsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersCampaignsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersCampaignsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/campaigns")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.campaigns.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.campaigns.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListCampaignsResponse.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 *AdvertisersCampaignsListCall) Do(opts ...googleapi.CallOption) (*ListCampaignsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListCampaignsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.campaigns.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersCampaignsListCall) Pages(ctx context.Context, f func(*ListCampaignsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersCampaignsPatchCall struct {
	s            *Service
	advertiserId int64
	campaignId   int64
	campaign     *Campaign
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Patch: Updates an existing campaign. Returns the updated campaign if
// successful.
//
//   - advertiserId: Output only. The unique ID of the advertiser the campaign
//     belongs to.
//   - campaignId: Output only. The unique ID of the campaign. Assigned by the
//     system.
func (r *AdvertisersCampaignsService) Patch(advertiserId int64, campaignId int64, campaign *Campaign) *AdvertisersCampaignsPatchCall {
	c := &AdvertisersCampaignsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.campaignId = campaignId
	c.campaign = campaign
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *AdvertisersCampaignsPatchCall) UpdateMask(updateMask string) *AdvertisersCampaignsPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersCampaignsPatchCall) Fields(s ...googleapi.Field) *AdvertisersCampaignsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersCampaignsPatchCall) Context(ctx context.Context) *AdvertisersCampaignsPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersCampaignsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersCampaignsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.campaign)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/campaigns/{+campaignId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"campaignId":   strconv.FormatInt(c.campaignId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.campaigns.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.campaigns.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *Campaign.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 *AdvertisersCampaignsPatchCall) Do(opts ...googleapi.CallOption) (*Campaign, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Campaign{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.campaigns.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersChannelsCreateCall struct {
	s            *Service
	advertiserId int64
	channel      *Channel
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Create: Creates a new channel. Returns the newly created channel if
// successful.
//
// - advertiserId: The ID of the advertiser that owns the created channel.
func (r *AdvertisersChannelsService) Create(advertiserId int64, channel *Channel) *AdvertisersChannelsCreateCall {
	c := &AdvertisersChannelsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.channel = channel
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the created channel.
func (c *AdvertisersChannelsCreateCall) PartnerId(partnerId int64) *AdvertisersChannelsCreateCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersChannelsCreateCall) Fields(s ...googleapi.Field) *AdvertisersChannelsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersChannelsCreateCall) Context(ctx context.Context) *AdvertisersChannelsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersChannelsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersChannelsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.channel)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/channels")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.channels.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Channel.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 *AdvertisersChannelsCreateCall) Do(opts ...googleapi.CallOption) (*Channel, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Channel{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a channel for a partner or advertiser.
//
// - advertiserId: The ID of the advertiser that owns the fetched channel.
// - channelId: The ID of the channel to fetch.
func (r *AdvertisersChannelsService) Get(advertiserId int64, channelId int64) *AdvertisersChannelsGetCall {
	c := &AdvertisersChannelsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.channelId = channelId
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the fetched channel.
func (c *AdvertisersChannelsGetCall) PartnerId(partnerId int64) *AdvertisersChannelsGetCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersChannelsGetCall) Fields(s ...googleapi.Field) *AdvertisersChannelsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersChannelsGetCall) IfNoneMatch(entityTag string) *AdvertisersChannelsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersChannelsGetCall) Context(ctx context.Context) *AdvertisersChannelsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersChannelsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersChannelsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/channels/{+channelId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"channelId":    strconv.FormatInt(c.channelId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.channels.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Channel.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 *AdvertisersChannelsGetCall) Do(opts ...googleapi.CallOption) (*Channel, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Channel{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists channels for a partner or advertiser.
//
// - advertiserId: The ID of the advertiser that owns the channels.
func (r *AdvertisersChannelsService) List(advertiserId int64) *AdvertisersChannelsListCall {
	c := &AdvertisersChannelsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by channel
// fields. Supported syntax: * Filter expressions for channel can only contain
// at most one restriction. * A restriction has the form of `{field} {operator}
// {value}`. * All fields must use the `HAS (:)` operator. Supported fields: *
// `displayName` Examples: * All channels for which the display name contains
// "google": `displayName : "google". The length of this field should be no
// more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersChannelsListCall) Filter(filter string) *AdvertisersChannelsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `displayName` (default) * `channelId` The
// default sorting order is ascending. To specify descending order for a field,
// a suffix " desc" should be added to the field name. Example: `displayName
// desc`.
func (c *AdvertisersChannelsListCall) OrderBy(orderBy string) *AdvertisersChannelsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersChannelsListCall) PageSize(pageSize int64) *AdvertisersChannelsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListChannels` method. If
// not specified, the first page of results will be returned.
func (c *AdvertisersChannelsListCall) PageToken(pageToken string) *AdvertisersChannelsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the channels.
func (c *AdvertisersChannelsListCall) PartnerId(partnerId int64) *AdvertisersChannelsListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersChannelsListCall) Fields(s ...googleapi.Field) *AdvertisersChannelsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersChannelsListCall) IfNoneMatch(entityTag string) *AdvertisersChannelsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersChannelsListCall) Context(ctx context.Context) *AdvertisersChannelsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersChannelsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersChannelsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/channels")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.channels.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListChannelsResponse.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 *AdvertisersChannelsListCall) Do(opts ...googleapi.CallOption) (*ListChannelsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListChannelsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersChannelsListCall) Pages(ctx context.Context, f func(*ListChannelsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersChannelsPatchCall struct {
	s            *Service
	advertiserId int64
	channelId    int64
	channel      *Channel
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Patch: Updates a channel. Returns the updated channel if successful.
//
//   - advertiserId: The ID of the advertiser that owns the created channel.
//   - channelId: Output only. The unique ID of the channel. Assigned by the
//     system.
func (r *AdvertisersChannelsService) Patch(advertiserId int64, channelId int64, channel *Channel) *AdvertisersChannelsPatchCall {
	c := &AdvertisersChannelsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.channelId = channelId
	c.channel = channel
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the created channel.
func (c *AdvertisersChannelsPatchCall) PartnerId(partnerId int64) *AdvertisersChannelsPatchCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *AdvertisersChannelsPatchCall) UpdateMask(updateMask string) *AdvertisersChannelsPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersChannelsPatchCall) Fields(s ...googleapi.Field) *AdvertisersChannelsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersChannelsPatchCall) Context(ctx context.Context) *AdvertisersChannelsPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersChannelsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersChannelsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.channel)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/channels/{channelId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"channelId":    strconv.FormatInt(c.channelId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.channels.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *Channel.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 *AdvertisersChannelsPatchCall) Do(opts ...googleapi.CallOption) (*Channel, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Channel{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersChannelsSitesBulkEditCall struct {
	s                    *Service
	advertiserId         int64
	channelId            int64
	bulkeditsitesrequest *BulkEditSitesRequest
	urlParams_           gensupport.URLParams
	ctx_                 context.Context
	header_              http.Header
}

// BulkEdit: Bulk edits sites under a single channel. The operation will delete
// the sites provided in BulkEditSitesRequest.deleted_sites and then create the
// sites provided in BulkEditSitesRequest.created_sites.
//
// - advertiserId: The ID of the advertiser that owns the parent channel.
// - channelId: The ID of the parent channel to which the sites belong.
func (r *AdvertisersChannelsSitesService) BulkEdit(advertiserId int64, channelId int64, bulkeditsitesrequest *BulkEditSitesRequest) *AdvertisersChannelsSitesBulkEditCall {
	c := &AdvertisersChannelsSitesBulkEditCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.channelId = channelId
	c.bulkeditsitesrequest = bulkeditsitesrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersChannelsSitesBulkEditCall) Fields(s ...googleapi.Field) *AdvertisersChannelsSitesBulkEditCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersChannelsSitesBulkEditCall) Context(ctx context.Context) *AdvertisersChannelsSitesBulkEditCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersChannelsSitesBulkEditCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersChannelsSitesBulkEditCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.bulkeditsitesrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{advertiserId}/channels/{+channelId}/sites:bulkEdit")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"channelId":    strconv.FormatInt(c.channelId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.sites.bulkEdit", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.channels.sites.bulkEdit" call.
// Any non-2xx status code is an error. Response headers are in either
// *BulkEditSitesResponse.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 *AdvertisersChannelsSitesBulkEditCall) Do(opts ...googleapi.CallOption) (*BulkEditSitesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &BulkEditSitesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.sites.bulkEdit", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersChannelsSitesCreateCall struct {
	s            *Service
	advertiserId int64
	channelId    int64
	site         *Site
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Create: Creates a site in a channel.
//
// - advertiserId: The ID of the advertiser that owns the parent channel.
// - channelId: The ID of the parent channel in which the site will be created.
func (r *AdvertisersChannelsSitesService) Create(advertiserId int64, channelId int64, site *Site) *AdvertisersChannelsSitesCreateCall {
	c := &AdvertisersChannelsSitesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.channelId = channelId
	c.site = site
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the parent channel.
func (c *AdvertisersChannelsSitesCreateCall) PartnerId(partnerId int64) *AdvertisersChannelsSitesCreateCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersChannelsSitesCreateCall) Fields(s ...googleapi.Field) *AdvertisersChannelsSitesCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersChannelsSitesCreateCall) Context(ctx context.Context) *AdvertisersChannelsSitesCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersChannelsSitesCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersChannelsSitesCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.site)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{advertiserId}/channels/{+channelId}/sites")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"channelId":    strconv.FormatInt(c.channelId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.sites.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.channels.sites.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Site.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 *AdvertisersChannelsSitesCreateCall) Do(opts ...googleapi.CallOption) (*Site, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Site{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.sites.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersChannelsSitesDeleteCall struct {
	s            *Service
	advertiserId int64
	channelId    int64
	urlOrAppId   string
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Delete: Deletes a site from a channel.
//
// - advertiserId: The ID of the advertiser that owns the parent channel.
// - channelId: The ID of the parent channel to which the site belongs.
// - urlOrAppId: The URL or app ID of the site to delete.
func (r *AdvertisersChannelsSitesService) Delete(advertiserId int64, channelId int64, urlOrAppId string) *AdvertisersChannelsSitesDeleteCall {
	c := &AdvertisersChannelsSitesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.channelId = channelId
	c.urlOrAppId = urlOrAppId
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the parent channel.
func (c *AdvertisersChannelsSitesDeleteCall) PartnerId(partnerId int64) *AdvertisersChannelsSitesDeleteCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersChannelsSitesDeleteCall) Fields(s ...googleapi.Field) *AdvertisersChannelsSitesDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersChannelsSitesDeleteCall) Context(ctx context.Context) *AdvertisersChannelsSitesDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersChannelsSitesDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersChannelsSitesDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{advertiserId}/channels/{+channelId}/sites/{+urlOrAppId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"channelId":    strconv.FormatInt(c.channelId, 10),
		"urlOrAppId":   c.urlOrAppId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.sites.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.channels.sites.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *AdvertisersChannelsSitesDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.sites.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists sites in a channel.
//
//   - advertiserId: The ID of the advertiser that owns the parent channel.
//   - channelId: The ID of the parent channel to which the requested sites
//     belong.
func (r *AdvertisersChannelsSitesService) List(advertiserId int64, channelId int64) *AdvertisersChannelsSitesListCall {
	c := &AdvertisersChannelsSitesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.channelId = channelId
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by site
// fields. Supported syntax: * Filter expressions for site retrieval can only
// contain at most one restriction. * A restriction has the form of `{field}
// {operator} {value}`. * All fields must use the `HAS (:)` operator. Supported
// fields: * `urlOrAppId` Examples: * All sites for which the URL or app ID
// contains "google": `urlOrAppId : "google" The length of this field should
// be no more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersChannelsSitesListCall) Filter(filter string) *AdvertisersChannelsSitesListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `urlOrAppId` (default) The default sorting
// order is ascending. To specify descending order for a field, a suffix "
// desc" should be added to the field name. Example: `urlOrAppId desc`.
func (c *AdvertisersChannelsSitesListCall) OrderBy(orderBy string) *AdvertisersChannelsSitesListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `10000`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersChannelsSitesListCall) PageSize(pageSize int64) *AdvertisersChannelsSitesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListSites` method. If
// not specified, the first page of results will be returned.
func (c *AdvertisersChannelsSitesListCall) PageToken(pageToken string) *AdvertisersChannelsSitesListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the parent channel.
func (c *AdvertisersChannelsSitesListCall) PartnerId(partnerId int64) *AdvertisersChannelsSitesListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersChannelsSitesListCall) Fields(s ...googleapi.Field) *AdvertisersChannelsSitesListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersChannelsSitesListCall) IfNoneMatch(entityTag string) *AdvertisersChannelsSitesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersChannelsSitesListCall) Context(ctx context.Context) *AdvertisersChannelsSitesListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersChannelsSitesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersChannelsSitesListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/channels/{+channelId}/sites")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"channelId":    strconv.FormatInt(c.channelId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.sites.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.channels.sites.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListSitesResponse.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 *AdvertisersChannelsSitesListCall) Do(opts ...googleapi.CallOption) (*ListSitesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListSitesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.sites.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersChannelsSitesListCall) Pages(ctx context.Context, f func(*ListSitesResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersChannelsSitesReplaceCall struct {
	s                   *Service
	advertiserId        int64
	channelId           int64
	replacesitesrequest *ReplaceSitesRequest
	urlParams_          gensupport.URLParams
	ctx_                context.Context
	header_             http.Header
}

// Replace: Replaces all of the sites under a single channel. The operation
// will replace the sites under a channel with the sites provided in
// ReplaceSitesRequest.new_sites. **This method regularly experiences high
// latency.** We recommend increasing your default timeout
// (/display-video/api/guides/best-practices/timeouts#client_library_timeout)
// to avoid errors.
//
// - advertiserId: The ID of the advertiser that owns the parent channel.
// - channelId: The ID of the parent channel whose sites will be replaced.
func (r *AdvertisersChannelsSitesService) Replace(advertiserId int64, channelId int64, replacesitesrequest *ReplaceSitesRequest) *AdvertisersChannelsSitesReplaceCall {
	c := &AdvertisersChannelsSitesReplaceCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.channelId = channelId
	c.replacesitesrequest = replacesitesrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersChannelsSitesReplaceCall) Fields(s ...googleapi.Field) *AdvertisersChannelsSitesReplaceCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersChannelsSitesReplaceCall) Context(ctx context.Context) *AdvertisersChannelsSitesReplaceCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersChannelsSitesReplaceCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersChannelsSitesReplaceCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.replacesitesrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{advertiserId}/channels/{+channelId}/sites:replace")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"channelId":    strconv.FormatInt(c.channelId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.sites.replace", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.channels.sites.replace" call.
// Any non-2xx status code is an error. Response headers are in either
// *ReplaceSitesResponse.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 *AdvertisersChannelsSitesReplaceCall) Do(opts ...googleapi.CallOption) (*ReplaceSitesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ReplaceSitesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.channels.sites.replace", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersCreativesCreateCall struct {
	s            *Service
	advertiserId int64
	creative     *Creative
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Create: Creates a new creative. Returns the newly created creative if
// successful. A "Standard" user role
// (//support.google.com/displayvideo/answer/2723011) or greater for the parent
// advertiser or partner is required to make this request.
//
//   - advertiserId: Output only. The unique ID of the advertiser the creative
//     belongs to.
func (r *AdvertisersCreativesService) Create(advertiserId int64, creative *Creative) *AdvertisersCreativesCreateCall {
	c := &AdvertisersCreativesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.creative = creative
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersCreativesCreateCall) Fields(s ...googleapi.Field) *AdvertisersCreativesCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersCreativesCreateCall) Context(ctx context.Context) *AdvertisersCreativesCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersCreativesCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersCreativesCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.creative)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/creatives")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.creatives.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.creatives.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Creative.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 *AdvertisersCreativesCreateCall) Do(opts ...googleapi.CallOption) (*Creative, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Creative{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.creatives.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersCreativesDeleteCall struct {
	s            *Service
	advertiserId int64
	creativeId   int64
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Delete: Deletes a creative. Returns error code `NOT_FOUND` if the creative
// does not exist. The creative should be archived first, i.e. set
// entity_status to `ENTITY_STATUS_ARCHIVED`, before it can be deleted. A
// "Standard" user role (//support.google.com/displayvideo/answer/2723011) or
// greater for the parent advertiser or partner is required to make this
// request.
//
// - advertiserId: The ID of the advertiser this creative belongs to.
// - creativeId: The ID of the creative to be deleted.
func (r *AdvertisersCreativesService) Delete(advertiserId int64, creativeId int64) *AdvertisersCreativesDeleteCall {
	c := &AdvertisersCreativesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.creativeId = creativeId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersCreativesDeleteCall) Fields(s ...googleapi.Field) *AdvertisersCreativesDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersCreativesDeleteCall) Context(ctx context.Context) *AdvertisersCreativesDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersCreativesDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersCreativesDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/creatives/{+creativeId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"creativeId":   strconv.FormatInt(c.creativeId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.creatives.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.creatives.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *AdvertisersCreativesDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.creatives.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a creative.
//
// - advertiserId: The ID of the advertiser this creative belongs to.
// - creativeId: The ID of the creative to fetch.
func (r *AdvertisersCreativesService) Get(advertiserId int64, creativeId int64) *AdvertisersCreativesGetCall {
	c := &AdvertisersCreativesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.creativeId = creativeId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersCreativesGetCall) Fields(s ...googleapi.Field) *AdvertisersCreativesGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersCreativesGetCall) IfNoneMatch(entityTag string) *AdvertisersCreativesGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersCreativesGetCall) Context(ctx context.Context) *AdvertisersCreativesGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersCreativesGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersCreativesGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/creatives/{+creativeId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"creativeId":   strconv.FormatInt(c.creativeId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.creatives.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.creatives.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Creative.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 *AdvertisersCreativesGetCall) Do(opts ...googleapi.CallOption) (*Creative, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Creative{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.creatives.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists creatives in an advertiser. The order is defined by the order_by
// parameter. If a filter by entity_status is not specified, creatives with
// `ENTITY_STATUS_ARCHIVED` will not be included in the results.
//
// - advertiserId: The ID of the advertiser to list creatives for.
func (r *AdvertisersCreativesService) List(advertiserId int64) *AdvertisersCreativesListCall {
	c := &AdvertisersCreativesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by creative
// fields. Supported syntax: * Filter expressions are made up of one or more
// restrictions. * Restrictions can be combined by `AND` or `OR` logical
// operators. A sequence of restrictions implicitly uses `AND`. * A restriction
// has the form of `{field} {operator} {value}`. * The `lineItemIds` field must
// use the `HAS (:)` operator. * The `updateTime` field must use the `GREATER
// THAN OR EQUAL TO (>=)` or `LESS THAN OR EQUAL TO (<=)` operators. * All
// other fields must use the `EQUALS (=)` operator. * For `entityStatus`,
// `minDuration`, `maxDuration`, `updateTime`, and `dynamic` fields, there may
// be at most one restriction. Supported Fields: * `approvalStatus` *
// `creativeId` * `creativeType` * `dimensions` (input in the form of
// `{width}x{height}`) * `dynamic` * `entityStatus` * `exchangeReviewStatus`
// (input in the form of `{exchange}-{reviewStatus}`) * `lineItemIds` *
// `maxDuration` (input in the form of `{duration}s`. Only seconds are
// supported) * `minDuration` (input in the form of `{duration}s`. Only seconds
// are supported) * `updateTime` (input in ISO 8601 format, or
// `YYYY-MM-DDTHH:MM:SSZ`) Notes: * For `updateTime`, a creative resource's
// field value reflects the last time that a creative has been updated, which
// includes updates made by the system (e.g. creative review updates).
// Examples: * All native creatives: `creativeType="CREATIVE_TYPE_NATIVE" *
// All active creatives with 300x400 or 50x100 dimensions:
// `entityStatus="ENTITY_STATUS_ACTIVE" AND (dimensions="300x400" OR
// dimensions="50x100")` * All dynamic creatives that are approved by AdX or
// AppNexus, with a minimum duration of 5 seconds and 200ms: `dynamic="true"
// AND minDuration="5.2s" AND
// (exchangeReviewStatus="EXCHANGE_GOOGLE_AD_MANAGER-REVIEW_STATUS_APPROVED" OR
// exchangeReviewStatus="EXCHANGE_APPNEXUS-REVIEW_STATUS_APPROVED")` * All
// video creatives that are associated with line item ID 1 or 2:
// `creativeType="CREATIVE_TYPE_VIDEO" AND (lineItemIds:1 OR lineItemIds:2)` *
// Find creatives by multiple creative IDs: `creativeId=1 OR creativeId=2` *
// All creatives with an update time greater than or equal to
// 2020-11-04T18:54:47Z (format of ISO 8601):
// `updateTime>="2020-11-04T18:54:47Z" The length of this field should be no
// more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersCreativesListCall) Filter(filter string) *AdvertisersCreativesListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `creativeId` (default) * `createTime` *
// `mediaDuration` * `dimensions` (sorts by width first, then by height) The
// default sorting order is ascending. To specify descending order for a field,
// a suffix "desc" should be added to the field name. Example: `createTime
// desc`.
func (c *AdvertisersCreativesListCall) OrderBy(orderBy string) *AdvertisersCreativesListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersCreativesListCall) PageSize(pageSize int64) *AdvertisersCreativesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListCreatives` method.
// If not specified, the first page of results will be returned.
func (c *AdvertisersCreativesListCall) PageToken(pageToken string) *AdvertisersCreativesListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersCreativesListCall) Fields(s ...googleapi.Field) *AdvertisersCreativesListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersCreativesListCall) IfNoneMatch(entityTag string) *AdvertisersCreativesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersCreativesListCall) Context(ctx context.Context) *AdvertisersCreativesListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersCreativesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersCreativesListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/creatives")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.creatives.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.creatives.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListCreativesResponse.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 *AdvertisersCreativesListCall) Do(opts ...googleapi.CallOption) (*ListCreativesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListCreativesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.creatives.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersCreativesListCall) Pages(ctx context.Context, f func(*ListCreativesResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersCreativesPatchCall struct {
	s            *Service
	advertiserId int64
	creativeId   int64
	creative     *Creative
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Patch: Updates an existing creative. Returns the updated creative if
// successful. A "Standard" user role
// (//support.google.com/displayvideo/answer/2723011) or greater for the parent
// advertiser or partner is required to make this request.
//
//   - advertiserId: Output only. The unique ID of the advertiser the creative
//     belongs to.
//   - creativeId: Output only. The unique ID of the creative. Assigned by the
//     system.
func (r *AdvertisersCreativesService) Patch(advertiserId int64, creativeId int64, creative *Creative) *AdvertisersCreativesPatchCall {
	c := &AdvertisersCreativesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.creativeId = creativeId
	c.creative = creative
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *AdvertisersCreativesPatchCall) UpdateMask(updateMask string) *AdvertisersCreativesPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersCreativesPatchCall) Fields(s ...googleapi.Field) *AdvertisersCreativesPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersCreativesPatchCall) Context(ctx context.Context) *AdvertisersCreativesPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersCreativesPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersCreativesPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.creative)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/creatives/{+creativeId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"creativeId":   strconv.FormatInt(c.creativeId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.creatives.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.creatives.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *Creative.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 *AdvertisersCreativesPatchCall) Do(opts ...googleapi.CallOption) (*Creative, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Creative{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.creatives.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersInsertionOrdersCreateCall struct {
	s              *Service
	advertiserId   int64
	insertionorder *InsertionOrder
	urlParams_     gensupport.URLParams
	ctx_           context.Context
	header_        http.Header
}

// Create: Creates a new insertion order. Returns the newly created insertion
// order if successful.
//
//   - advertiserId: Output only. The unique ID of the advertiser the insertion
//     order belongs to.
func (r *AdvertisersInsertionOrdersService) Create(advertiserId int64, insertionorder *InsertionOrder) *AdvertisersInsertionOrdersCreateCall {
	c := &AdvertisersInsertionOrdersCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.insertionorder = insertionorder
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersInsertionOrdersCreateCall) Fields(s ...googleapi.Field) *AdvertisersInsertionOrdersCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersInsertionOrdersCreateCall) Context(ctx context.Context) *AdvertisersInsertionOrdersCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersInsertionOrdersCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersInsertionOrdersCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.insertionorder)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/insertionOrders")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.insertionOrders.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.insertionOrders.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *InsertionOrder.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 *AdvertisersInsertionOrdersCreateCall) Do(opts ...googleapi.CallOption) (*InsertionOrder, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &InsertionOrder{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.insertionOrders.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersInsertionOrdersDeleteCall struct {
	s                *Service
	advertiserId     int64
	insertionOrderId int64
	urlParams_       gensupport.URLParams
	ctx_             context.Context
	header_          http.Header
}

// Delete: Deletes an insertion order. Returns error code `NOT_FOUND` if the
// insertion order does not exist. The insertion order should be archived
// first, i.e. set entity_status to `ENTITY_STATUS_ARCHIVED`, to be able to
// delete it.
//
// - advertiserId: The ID of the advertiser this insertion order belongs to.
// - insertionOrderId: The ID of the insertion order to delete.
func (r *AdvertisersInsertionOrdersService) Delete(advertiserId int64, insertionOrderId int64) *AdvertisersInsertionOrdersDeleteCall {
	c := &AdvertisersInsertionOrdersDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.insertionOrderId = insertionOrderId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersInsertionOrdersDeleteCall) Fields(s ...googleapi.Field) *AdvertisersInsertionOrdersDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersInsertionOrdersDeleteCall) Context(ctx context.Context) *AdvertisersInsertionOrdersDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersInsertionOrdersDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersInsertionOrdersDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/insertionOrders/{+insertionOrderId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":     strconv.FormatInt(c.advertiserId, 10),
		"insertionOrderId": strconv.FormatInt(c.insertionOrderId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.insertionOrders.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.insertionOrders.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *AdvertisersInsertionOrdersDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.insertionOrders.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets an insertion order. Returns error code `NOT_FOUND` if the
// insertion order does not exist.
//
// - advertiserId: The ID of the advertiser this insertion order belongs to.
// - insertionOrderId: The ID of the insertion order to fetch.
func (r *AdvertisersInsertionOrdersService) Get(advertiserId int64, insertionOrderId int64) *AdvertisersInsertionOrdersGetCall {
	c := &AdvertisersInsertionOrdersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.insertionOrderId = insertionOrderId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersInsertionOrdersGetCall) Fields(s ...googleapi.Field) *AdvertisersInsertionOrdersGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersInsertionOrdersGetCall) IfNoneMatch(entityTag string) *AdvertisersInsertionOrdersGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersInsertionOrdersGetCall) Context(ctx context.Context) *AdvertisersInsertionOrdersGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersInsertionOrdersGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersInsertionOrdersGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/insertionOrders/{+insertionOrderId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":     strconv.FormatInt(c.advertiserId, 10),
		"insertionOrderId": strconv.FormatInt(c.insertionOrderId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.insertionOrders.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.insertionOrders.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *InsertionOrder.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 *AdvertisersInsertionOrdersGetCall) Do(opts ...googleapi.CallOption) (*InsertionOrder, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &InsertionOrder{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.insertionOrders.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists insertion orders in an advertiser. The order is defined by the
// order_by parameter. If a filter by entity_status is not specified, insertion
// orders with `ENTITY_STATUS_ARCHIVED` will not be included in the results.
//
// - advertiserId: The ID of the advertiser to list insertion orders for.
func (r *AdvertisersInsertionOrdersService) List(advertiserId int64) *AdvertisersInsertionOrdersListCall {
	c := &AdvertisersInsertionOrdersListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by insertion
// order fields. Supported syntax: * Filter expressions are made up of one or
// more restrictions. * Restrictions can be combined by `AND` or `OR` logical
// operators. A sequence of restrictions implicitly uses `AND`. * A restriction
// has the form of `{field} {operator} {value}`. * The `updateTime` field must
// use the `GREATER THAN OR EQUAL TO (>=)` or `LESS THAN OR EQUAL TO (<=)`
// operators. * All other fields must use the `EQUALS (=)` operator. Supported
// fields: * `campaignId` * `displayName` * `entityStatus` * `updateTime`
// (input in ISO 8601 format, or `YYYY-MM-DDTHH:MM:SSZ`) Examples: * All
// insertion orders under a campaign: `campaignId="1234" * All
// `ENTITY_STATUS_ACTIVE` or `ENTITY_STATUS_PAUSED` insertion orders under an
// advertiser: `(entityStatus="ENTITY_STATUS_ACTIVE" OR
// entityStatus="ENTITY_STATUS_PAUSED")` * All insertion orders with an update
// time less than or equal to 2020-11-04T18:54:47Z (format of ISO 8601):
// `updateTime<="2020-11-04T18:54:47Z" * All insertion orders with an update
// time greater than or equal to 2020-11-04T18:54:47Z (format of ISO 8601):
// `updateTime>="2020-11-04T18:54:47Z" The length of this field should be no
// more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersInsertionOrdersListCall) Filter(filter string) *AdvertisersInsertionOrdersListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * "displayName" (default) * "entityStatus" *
// "updateTime" The default sorting order is ascending. To specify descending
// order for a field, a suffix "desc" should be added to the field name.
// Example: `displayName desc`.
func (c *AdvertisersInsertionOrdersListCall) OrderBy(orderBy string) *AdvertisersInsertionOrdersListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `100`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersInsertionOrdersListCall) PageSize(pageSize int64) *AdvertisersInsertionOrdersListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListInsertionOrders`
// method. If not specified, the first page of results will be returned.
func (c *AdvertisersInsertionOrdersListCall) PageToken(pageToken string) *AdvertisersInsertionOrdersListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersInsertionOrdersListCall) Fields(s ...googleapi.Field) *AdvertisersInsertionOrdersListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersInsertionOrdersListCall) IfNoneMatch(entityTag string) *AdvertisersInsertionOrdersListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersInsertionOrdersListCall) Context(ctx context.Context) *AdvertisersInsertionOrdersListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersInsertionOrdersListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersInsertionOrdersListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/insertionOrders")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.insertionOrders.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.insertionOrders.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListInsertionOrdersResponse.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 *AdvertisersInsertionOrdersListCall) Do(opts ...googleapi.CallOption) (*ListInsertionOrdersResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListInsertionOrdersResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.insertionOrders.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersInsertionOrdersListCall) Pages(ctx context.Context, f func(*ListInsertionOrdersResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersInsertionOrdersPatchCall struct {
	s                *Service
	advertiserId     int64
	insertionOrderId int64
	insertionorder   *InsertionOrder
	urlParams_       gensupport.URLParams
	ctx_             context.Context
	header_          http.Header
}

// Patch: Updates an existing insertion order. Returns the updated insertion
// order if successful.
//
//   - advertiserId: Output only. The unique ID of the advertiser the insertion
//     order belongs to.
//   - insertionOrderId: Output only. The unique ID of the insertion order.
//     Assigned by the system.
func (r *AdvertisersInsertionOrdersService) Patch(advertiserId int64, insertionOrderId int64, insertionorder *InsertionOrder) *AdvertisersInsertionOrdersPatchCall {
	c := &AdvertisersInsertionOrdersPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.insertionOrderId = insertionOrderId
	c.insertionorder = insertionorder
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *AdvertisersInsertionOrdersPatchCall) UpdateMask(updateMask string) *AdvertisersInsertionOrdersPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersInsertionOrdersPatchCall) Fields(s ...googleapi.Field) *AdvertisersInsertionOrdersPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersInsertionOrdersPatchCall) Context(ctx context.Context) *AdvertisersInsertionOrdersPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersInsertionOrdersPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersInsertionOrdersPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.insertionorder)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/insertionOrders/{+insertionOrderId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":     strconv.FormatInt(c.advertiserId, 10),
		"insertionOrderId": strconv.FormatInt(c.insertionOrderId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.insertionOrders.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.insertionOrders.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *InsertionOrder.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 *AdvertisersInsertionOrdersPatchCall) Do(opts ...googleapi.CallOption) (*InsertionOrder, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &InsertionOrder{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.insertionOrders.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists invoices posted for an advertiser in a given month. Invoices
// generated by billing profiles with a "Partner" invoice level are not
// retrievable through this method.
//
// - advertiserId: The ID of the advertiser to list invoices for.
func (r *AdvertisersInvoicesService) List(advertiserId int64) *AdvertisersInvoicesListCall {
	c := &AdvertisersInvoicesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// IssueMonth sets the optional parameter "issueMonth": The month to list the
// invoices for. If not set, the request will retrieve invoices for the
// previous month. Must be in the format YYYYMM.
func (c *AdvertisersInvoicesListCall) IssueMonth(issueMonth string) *AdvertisersInvoicesListCall {
	c.urlParams_.Set("issueMonth", issueMonth)
	return c
}

// LoiSapinInvoiceType sets the optional parameter "loiSapinInvoiceType":
// Select type of invoice to retrieve for Loi Sapin advertisers. Only
// applicable to Loi Sapin advertisers. Will be ignored otherwise.
//
// Possible values:
//
//	"LOI_SAPIN_INVOICE_TYPE_UNSPECIFIED" - Value is not specified.
//	"LOI_SAPIN_INVOICE_TYPE_MEDIA" - Invoices with Media cost.
//	"LOI_SAPIN_INVOICE_TYPE_PLATFORM" - Invoices with Platform fee.
func (c *AdvertisersInvoicesListCall) LoiSapinInvoiceType(loiSapinInvoiceType string) *AdvertisersInvoicesListCall {
	c.urlParams_.Set("loiSapinInvoiceType", loiSapinInvoiceType)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersInvoicesListCall) PageSize(pageSize int64) *AdvertisersInvoicesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListInvoices` method. If
// not specified, the first page of results will be returned.
func (c *AdvertisersInvoicesListCall) PageToken(pageToken string) *AdvertisersInvoicesListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersInvoicesListCall) Fields(s ...googleapi.Field) *AdvertisersInvoicesListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersInvoicesListCall) IfNoneMatch(entityTag string) *AdvertisersInvoicesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersInvoicesListCall) Context(ctx context.Context) *AdvertisersInvoicesListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersInvoicesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersInvoicesListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/invoices")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.invoices.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.invoices.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListInvoicesResponse.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 *AdvertisersInvoicesListCall) Do(opts ...googleapi.CallOption) (*ListInvoicesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListInvoicesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.invoices.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersInvoicesListCall) Pages(ctx context.Context, f func(*ListInvoicesResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

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

// LookupInvoiceCurrency: Retrieves the invoice currency used by an advertiser
// in a given month.
//
// - advertiserId: The ID of the advertiser to lookup currency for.
func (r *AdvertisersInvoicesService) LookupInvoiceCurrency(advertiserId int64) *AdvertisersInvoicesLookupInvoiceCurrencyCall {
	c := &AdvertisersInvoicesLookupInvoiceCurrencyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// InvoiceMonth sets the optional parameter "invoiceMonth": Month for which the
// currency is needed. If not set, the request will return existing currency
// settings for the advertiser. Must be in the format YYYYMM.
func (c *AdvertisersInvoicesLookupInvoiceCurrencyCall) InvoiceMonth(invoiceMonth string) *AdvertisersInvoicesLookupInvoiceCurrencyCall {
	c.urlParams_.Set("invoiceMonth", invoiceMonth)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersInvoicesLookupInvoiceCurrencyCall) Fields(s ...googleapi.Field) *AdvertisersInvoicesLookupInvoiceCurrencyCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersInvoicesLookupInvoiceCurrencyCall) IfNoneMatch(entityTag string) *AdvertisersInvoicesLookupInvoiceCurrencyCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersInvoicesLookupInvoiceCurrencyCall) Context(ctx context.Context) *AdvertisersInvoicesLookupInvoiceCurrencyCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersInvoicesLookupInvoiceCurrencyCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersInvoicesLookupInvoiceCurrencyCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/invoices:lookupInvoiceCurrency")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.invoices.lookupInvoiceCurrency", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.invoices.lookupInvoiceCurrency" call.
// Any non-2xx status code is an error. Response headers are in either
// *LookupInvoiceCurrencyResponse.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 *AdvertisersInvoicesLookupInvoiceCurrencyCall) Do(opts ...googleapi.CallOption) (*LookupInvoiceCurrencyResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &LookupInvoiceCurrencyResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.invoices.lookupInvoiceCurrency", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersLineItemsBulkEditAssignedTargetingOptionsCall struct {
	s                                       *Service
	advertiserId                            int64
	bulkeditassignedtargetingoptionsrequest *BulkEditAssignedTargetingOptionsRequest
	urlParams_                              gensupport.URLParams
	ctx_                                    context.Context
	header_                                 http.Header
}

// BulkEditAssignedTargetingOptions: Bulk edits targeting options under
// multiple line items. The operation will delete the assigned targeting
// options provided in BulkEditAssignedTargetingOptionsRequest.delete_requests
// and then create the assigned targeting options provided in
// BulkEditAssignedTargetingOptionsRequest.create_requests. Requests to this
// endpoint cannot be made concurrently with the following requests updating
// the same line item: * lineItems.bulkUpdate * lineItems.patch *
// assignedTargetingOptions.create * assignedTargetingOptions.delete YouTube &
// Partners line items cannot be created or updated using the API.
//
// - advertiserId: The ID of the advertiser the line items belong to.
func (r *AdvertisersLineItemsService) BulkEditAssignedTargetingOptions(advertiserId int64, bulkeditassignedtargetingoptionsrequest *BulkEditAssignedTargetingOptionsRequest) *AdvertisersLineItemsBulkEditAssignedTargetingOptionsCall {
	c := &AdvertisersLineItemsBulkEditAssignedTargetingOptionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.bulkeditassignedtargetingoptionsrequest = bulkeditassignedtargetingoptionsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsBulkEditAssignedTargetingOptionsCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsBulkEditAssignedTargetingOptionsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsBulkEditAssignedTargetingOptionsCall) Context(ctx context.Context) *AdvertisersLineItemsBulkEditAssignedTargetingOptionsCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsBulkEditAssignedTargetingOptionsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsBulkEditAssignedTargetingOptionsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.bulkeditassignedtargetingoptionsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems:bulkEditAssignedTargetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.bulkEditAssignedTargetingOptions", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.bulkEditAssignedTargetingOptions" call.
// Any non-2xx status code is an error. Response headers are in either
// *BulkEditAssignedTargetingOptionsResponse.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 *AdvertisersLineItemsBulkEditAssignedTargetingOptionsCall) Do(opts ...googleapi.CallOption) (*BulkEditAssignedTargetingOptionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &BulkEditAssignedTargetingOptionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.bulkEditAssignedTargetingOptions", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// BulkListAssignedTargetingOptions: Lists assigned targeting options for
// multiple line items across targeting types.
//
// - advertiserId: The ID of the advertiser the line items belongs to.
func (r *AdvertisersLineItemsService) BulkListAssignedTargetingOptions(advertiserId int64) *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall {
	c := &AdvertisersLineItemsBulkListAssignedTargetingOptionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by assigned
// targeting option fields. Supported syntax: * Filter expressions are made up
// of one or more restrictions. * Restrictions can be combined by the logical
// operator `OR` on the same field. * A restriction has the form of `{field}
// {operator} {value}`. * All fields must use the `EQUALS (=)` operator.
// Supported fields: * `targetingType` * `inheritance` Examples: *
// `AssignedTargetingOption` resources of targeting type
// `TARGETING_TYPE_PROXIMITY_LOCATION_LIST` or `TARGETING_TYPE_CHANNEL`:
// `targetingType="TARGETING_TYPE_PROXIMITY_LOCATION_LIST" OR
// targetingType="TARGETING_TYPE_CHANNEL" * `AssignedTargetingOption`
// resources with inheritance status of `NOT_INHERITED` or
// `INHERITED_FROM_PARTNER`: `inheritance="NOT_INHERITED" OR
// inheritance="INHERITED_FROM_PARTNER" The length of this field should be no
// more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall) Filter(filter string) *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// LineItemIds sets the optional parameter "lineItemIds": Required. The IDs of
// the line items to list assigned targeting options for.
func (c *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall) LineItemIds(lineItemIds ...int64) *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall {
	var lineItemIds_ []string
	for _, v := range lineItemIds {
		lineItemIds_ = append(lineItemIds_, fmt.Sprint(v))
	}
	c.urlParams_.SetMulti("lineItemIds", lineItemIds_)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `lineItemId` (default) *
// `assignedTargetingOption.targetingType` The default sorting order is
// ascending. To specify descending order for a field, a suffix "desc" should
// be added to the field name. Example: `targetingType desc`.
func (c *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall) OrderBy(orderBy string) *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. The
// size must be an integer between `1` and `5000`. If unspecified, the default
// is `5000`. Returns error code `INVALID_ARGUMENT` if an invalid value is
// specified.
func (c *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall) PageSize(pageSize int64) *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token that lets the
// client fetch the next page of results. Typically, this is the value of
// next_page_token returned from the previous call to the
// `BulkListAssignedTargetingOptions` method. If not specified, the first page
// of results will be returned.
func (c *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall) PageToken(pageToken string) *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall) IfNoneMatch(entityTag string) *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall) Context(ctx context.Context) *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems:bulkListAssignedTargetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.bulkListAssignedTargetingOptions", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.bulkListAssignedTargetingOptions" call.
// Any non-2xx status code is an error. Response headers are in either
// *BulkListAssignedTargetingOptionsResponse.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 *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall) Do(opts ...googleapi.CallOption) (*BulkListAssignedTargetingOptionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &BulkListAssignedTargetingOptionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.bulkListAssignedTargetingOptions", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersLineItemsBulkListAssignedTargetingOptionsCall) Pages(ctx context.Context, f func(*BulkListAssignedTargetingOptionsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersLineItemsBulkUpdateCall struct {
	s                          *Service
	advertiserId               int64
	bulkupdatelineitemsrequest *BulkUpdateLineItemsRequest
	urlParams_                 gensupport.URLParams
	ctx_                       context.Context
	header_                    http.Header
}

// BulkUpdate: Updates multiple line items. Requests to this endpoint cannot be
// made concurrently with the following requests updating the same line item: *
// BulkEditAssignedTargetingOptions * UpdateLineItem *
// assignedTargetingOptions.create * assignedTargetingOptions.delete YouTube &
// Partners line items cannot be created or updated using the API.
//
// - advertiserId: The ID of the advertiser this line item belongs to.
func (r *AdvertisersLineItemsService) BulkUpdate(advertiserId int64, bulkupdatelineitemsrequest *BulkUpdateLineItemsRequest) *AdvertisersLineItemsBulkUpdateCall {
	c := &AdvertisersLineItemsBulkUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.bulkupdatelineitemsrequest = bulkupdatelineitemsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsBulkUpdateCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsBulkUpdateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsBulkUpdateCall) Context(ctx context.Context) *AdvertisersLineItemsBulkUpdateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsBulkUpdateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsBulkUpdateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.bulkupdatelineitemsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems:bulkUpdate")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.bulkUpdate", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.bulkUpdate" call.
// Any non-2xx status code is an error. Response headers are in either
// *BulkUpdateLineItemsResponse.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 *AdvertisersLineItemsBulkUpdateCall) Do(opts ...googleapi.CallOption) (*BulkUpdateLineItemsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &BulkUpdateLineItemsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.bulkUpdate", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersLineItemsCreateCall struct {
	s            *Service
	advertiserId int64
	lineitem     *LineItem
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Create: Creates a new line item. Returns the newly created line item if
// successful. YouTube & Partners line items cannot be created or updated using
// the API.
//
//   - advertiserId: Output only. The unique ID of the advertiser the line item
//     belongs to.
func (r *AdvertisersLineItemsService) Create(advertiserId int64, lineitem *LineItem) *AdvertisersLineItemsCreateCall {
	c := &AdvertisersLineItemsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.lineitem = lineitem
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsCreateCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsCreateCall) Context(ctx context.Context) *AdvertisersLineItemsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.lineitem)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *LineItem.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 *AdvertisersLineItemsCreateCall) Do(opts ...googleapi.CallOption) (*LineItem, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &LineItem{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersLineItemsDeleteCall struct {
	s            *Service
	advertiserId int64
	lineItemId   int64
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Delete: Deletes a line item. Returns error code `NOT_FOUND` if the line item
// does not exist. The line item should be archived first, i.e. set
// entity_status to `ENTITY_STATUS_ARCHIVED`, to be able to delete it. YouTube
// & Partners line items cannot be created or updated using the API.
//
// - advertiserId: The ID of the advertiser this line item belongs to.
// - lineItemId: The ID of the line item to delete.
func (r *AdvertisersLineItemsService) Delete(advertiserId int64, lineItemId int64) *AdvertisersLineItemsDeleteCall {
	c := &AdvertisersLineItemsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.lineItemId = lineItemId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsDeleteCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsDeleteCall) Context(ctx context.Context) *AdvertisersLineItemsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems/{+lineItemId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"lineItemId":   strconv.FormatInt(c.lineItemId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *AdvertisersLineItemsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersLineItemsDuplicateCall struct {
	s                        *Service
	advertiserId             int64
	lineItemId               int64
	duplicatelineitemrequest *DuplicateLineItemRequest
	urlParams_               gensupport.URLParams
	ctx_                     context.Context
	header_                  http.Header
}

// Duplicate: Duplicates a line item. Returns the ID of the created line item
// if successful. YouTube & Partners line items cannot be created or updated
// using the API. **This method regularly experiences high latency.** We
// recommend increasing your default timeout
// (/display-video/api/guides/best-practices/timeouts#client_library_timeout)
// to avoid errors.
//
// - advertiserId: The ID of the advertiser this line item belongs to.
// - lineItemId: The ID of the line item to duplicate.
func (r *AdvertisersLineItemsService) Duplicate(advertiserId int64, lineItemId int64, duplicatelineitemrequest *DuplicateLineItemRequest) *AdvertisersLineItemsDuplicateCall {
	c := &AdvertisersLineItemsDuplicateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.lineItemId = lineItemId
	c.duplicatelineitemrequest = duplicatelineitemrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsDuplicateCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsDuplicateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsDuplicateCall) Context(ctx context.Context) *AdvertisersLineItemsDuplicateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsDuplicateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsDuplicateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.duplicatelineitemrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems/{+lineItemId}:duplicate")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"lineItemId":   strconv.FormatInt(c.lineItemId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.duplicate", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.duplicate" call.
// Any non-2xx status code is an error. Response headers are in either
// *DuplicateLineItemResponse.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 *AdvertisersLineItemsDuplicateCall) Do(opts ...googleapi.CallOption) (*DuplicateLineItemResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &DuplicateLineItemResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.duplicate", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersLineItemsGenerateDefaultCall struct {
	s                              *Service
	advertiserId                   int64
	generatedefaultlineitemrequest *GenerateDefaultLineItemRequest
	urlParams_                     gensupport.URLParams
	ctx_                           context.Context
	header_                        http.Header
}

// GenerateDefault: Creates a new line item with settings (including targeting)
// inherited from the insertion order and an `ENTITY_STATUS_DRAFT`
// entity_status. Returns the newly created line item if successful. There are
// default values based on the three fields: * The insertion order's
// insertion_order_type * The insertion order's automation_type * The given
// line_item_type YouTube & Partners line items cannot be created or updated
// using the API.
//
// - advertiserId: The ID of the advertiser this line item belongs to.
func (r *AdvertisersLineItemsService) GenerateDefault(advertiserId int64, generatedefaultlineitemrequest *GenerateDefaultLineItemRequest) *AdvertisersLineItemsGenerateDefaultCall {
	c := &AdvertisersLineItemsGenerateDefaultCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.generatedefaultlineitemrequest = generatedefaultlineitemrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsGenerateDefaultCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsGenerateDefaultCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsGenerateDefaultCall) Context(ctx context.Context) *AdvertisersLineItemsGenerateDefaultCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsGenerateDefaultCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsGenerateDefaultCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.generatedefaultlineitemrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems:generateDefault")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.generateDefault", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.generateDefault" call.
// Any non-2xx status code is an error. Response headers are in either
// *LineItem.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 *AdvertisersLineItemsGenerateDefaultCall) Do(opts ...googleapi.CallOption) (*LineItem, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &LineItem{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.generateDefault", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a line item.
//
// - advertiserId: The ID of the advertiser this line item belongs to.
// - lineItemId: The ID of the line item to fetch.
func (r *AdvertisersLineItemsService) Get(advertiserId int64, lineItemId int64) *AdvertisersLineItemsGetCall {
	c := &AdvertisersLineItemsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.lineItemId = lineItemId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsGetCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersLineItemsGetCall) IfNoneMatch(entityTag string) *AdvertisersLineItemsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsGetCall) Context(ctx context.Context) *AdvertisersLineItemsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems/{+lineItemId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"lineItemId":   strconv.FormatInt(c.lineItemId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *LineItem.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 *AdvertisersLineItemsGetCall) Do(opts ...googleapi.CallOption) (*LineItem, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &LineItem{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists line items in an advertiser. The order is defined by the
// order_by parameter. If a filter by entity_status is not specified, line
// items with `ENTITY_STATUS_ARCHIVED` will not be included in the results.
//
// - advertiserId: The ID of the advertiser to list line items for.
func (r *AdvertisersLineItemsService) List(advertiserId int64) *AdvertisersLineItemsListCall {
	c := &AdvertisersLineItemsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by line item
// fields. Supported syntax: * Filter expressions are made up of one or more
// restrictions. * Restrictions can be combined by `AND` or `OR` logical
// operators. A sequence of restrictions implicitly uses `AND`. * A restriction
// has the form of `{field} {operator} {value}`. * The `updateTime` field must
// use the `GREATER THAN OR EQUAL TO (>=)` or `LESS THAN OR EQUAL TO (<=)`
// operators. * All other fields must use the `EQUALS (=)` operator. Supported
// fields: * `campaignId` * `displayName` * `entityStatus` * `insertionOrderId`
// * `lineItemId` * `lineItemType` * `updateTime` (input in ISO 8601 format, or
// `YYYY-MM-DDTHH:MM:SSZ`) Examples: * All line items under an insertion order:
// `insertionOrderId="1234" * All `ENTITY_STATUS_ACTIVE` or
// `ENTITY_STATUS_PAUSED` and `LINE_ITEM_TYPE_DISPLAY_DEFAULT` line items under
// an advertiser: `(entityStatus="ENTITY_STATUS_ACTIVE" OR
// entityStatus="ENTITY_STATUS_PAUSED") AND
// lineItemType="LINE_ITEM_TYPE_DISPLAY_DEFAULT" * All line items with an
// update time less than or equal to 2020-11-04T18:54:47Z (format of ISO 8601):
// `updateTime<="2020-11-04T18:54:47Z" * All line items with an update time
// greater than or equal to 2020-11-04T18:54:47Z (format of ISO 8601):
// `updateTime>="2020-11-04T18:54:47Z" The length of this field should be no
// more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersLineItemsListCall) Filter(filter string) *AdvertisersLineItemsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `displayName` (default) * `entityStatus` *
// `updateTime` The default sorting order is ascending. To specify descending
// order for a field, a suffix "desc" should be added to the field name.
// Example: `displayName desc`.
func (c *AdvertisersLineItemsListCall) OrderBy(orderBy string) *AdvertisersLineItemsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersLineItemsListCall) PageSize(pageSize int64) *AdvertisersLineItemsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListLineItems` method.
// If not specified, the first page of results will be returned.
func (c *AdvertisersLineItemsListCall) PageToken(pageToken string) *AdvertisersLineItemsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsListCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersLineItemsListCall) IfNoneMatch(entityTag string) *AdvertisersLineItemsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsListCall) Context(ctx context.Context) *AdvertisersLineItemsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListLineItemsResponse.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 *AdvertisersLineItemsListCall) Do(opts ...googleapi.CallOption) (*ListLineItemsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListLineItemsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersLineItemsListCall) Pages(ctx context.Context, f func(*ListLineItemsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersLineItemsPatchCall struct {
	s            *Service
	advertiserId int64
	lineItemId   int64
	lineitem     *LineItem
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Patch: Updates an existing line item. Returns the updated line item if
// successful. Requests to this endpoint cannot be made concurrently with the
// following requests updating the same line item: *
// BulkEditAssignedTargetingOptions * BulkUpdateLineItems *
// assignedTargetingOptions.create * assignedTargetingOptions.delete YouTube &
// Partners line items cannot be created or updated using the API. **This
// method regularly experiences high latency.** We recommend increasing your
// default timeout
// (/display-video/api/guides/best-practices/timeouts#client_library_timeout)
// to avoid errors.
//
//   - advertiserId: Output only. The unique ID of the advertiser the line item
//     belongs to.
//   - lineItemId: Output only. The unique ID of the line item. Assigned by the
//     system.
func (r *AdvertisersLineItemsService) Patch(advertiserId int64, lineItemId int64, lineitem *LineItem) *AdvertisersLineItemsPatchCall {
	c := &AdvertisersLineItemsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.lineItemId = lineItemId
	c.lineitem = lineitem
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *AdvertisersLineItemsPatchCall) UpdateMask(updateMask string) *AdvertisersLineItemsPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsPatchCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsPatchCall) Context(ctx context.Context) *AdvertisersLineItemsPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.lineitem)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems/{+lineItemId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
		"lineItemId":   strconv.FormatInt(c.lineItemId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *LineItem.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 *AdvertisersLineItemsPatchCall) Do(opts ...googleapi.CallOption) (*LineItem, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &LineItem{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsCreateCall struct {
	s                       *Service
	advertiserId            int64
	lineItemId              int64
	targetingType           string
	assignedtargetingoption *AssignedTargetingOption
	urlParams_              gensupport.URLParams
	ctx_                    context.Context
	header_                 http.Header
}

// Create: Assigns a targeting option to a line item. Returns the assigned
// targeting option if successful. Requests to this endpoint cannot be made
// concurrently with the following requests updating the same line item: *
// lineItems.bulkEditAssignedTargetingOptions * lineItems.bulkUpdate *
// lineItems.patch * DeleteLineItemAssignedTargetingOption YouTube & Partners
// line items cannot be created or updated using the API.
//
//   - advertiserId: The ID of the advertiser the line item belongs to.
//   - lineItemId: The ID of the line item the assigned targeting option will
//     belong to.
//   - targetingType: Identifies the type of this assigned targeting option.
//     Supported targeting types include: * `TARGETING_TYPE_AGE_RANGE` *
//     `TARGETING_TYPE_APP` * `TARGETING_TYPE_APP_CATEGORY` *
//     `TARGETING_TYPE_AUDIENCE_GROUP` * `TARGETING_TYPE_AUDIO_CONTENT_TYPE` *
//     `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS` * `TARGETING_TYPE_BROWSER` *
//     `TARGETING_TYPE_BUSINESS_CHAIN` * `TARGETING_TYPE_CARRIER_AND_ISP` *
//     `TARGETING_TYPE_CATEGORY` * `TARGETING_TYPE_CHANNEL` *
//     `TARGETING_TYPE_CONTENT_DURATION` * `TARGETING_TYPE_CONTENT_GENRE` *
//     `TARGETING_TYPE_CONTENT_INSTREAM_POSITION` *
//     `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION` *
//     `TARGETING_TYPE_CONTENT_STREAM_TYPE` * `TARGETING_TYPE_DAY_AND_TIME` *
//     `TARGETING_TYPE_DEVICE_MAKE_MODEL` * `TARGETING_TYPE_DEVICE_TYPE` *
//     `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` *
//     `TARGETING_TYPE_ENVIRONMENT` * `TARGETING_TYPE_EXCHANGE` *
//     `TARGETING_TYPE_GENDER` * `TARGETING_TYPE_GEO_REGION` *
//     `TARGETING_TYPE_HOUSEHOLD_INCOME` * `TARGETING_TYPE_INVENTORY_SOURCE` *
//     `TARGETING_TYPE_INVENTORY_SOURCE_GROUP` * `TARGETING_TYPE_KEYWORD` *
//     `TARGETING_TYPE_LANGUAGE` * `TARGETING_TYPE_NATIVE_CONTENT_POSITION` *
//     `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST` * `TARGETING_TYPE_OMID` *
//     `TARGETING_TYPE_ON_SCREEN_POSITION` * `TARGETING_TYPE_OPERATING_SYSTEM` *
//     `TARGETING_TYPE_PARENTAL_STATUS` * `TARGETING_TYPE_POI` *
//     `TARGETING_TYPE_PROXIMITY_LOCATION_LIST` *
//     `TARGETING_TYPE_REGIONAL_LOCATION_LIST` *
//     `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` *
//     `TARGETING_TYPE_SUB_EXCHANGE` * `TARGETING_TYPE_THIRD_PARTY_VERIFIER` *
//     `TARGETING_TYPE_URL` * `TARGETING_TYPE_USER_REWARDED_CONTENT` *
//     `TARGETING_TYPE_VIDEO_PLAYER_SIZE` * `TARGETING_TYPE_VIEWABILITY`.
func (r *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsService) Create(advertiserId int64, lineItemId int64, targetingType string, assignedtargetingoption *AssignedTargetingOption) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsCreateCall {
	c := &AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.lineItemId = lineItemId
	c.targetingType = targetingType
	c.assignedtargetingoption = assignedtargetingoption
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsCreateCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsCreateCall) Context(ctx context.Context) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.assignedtargetingoption)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems/{+lineItemId}/targetingTypes/{+targetingType}/assignedTargetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":  strconv.FormatInt(c.advertiserId, 10),
		"lineItemId":    strconv.FormatInt(c.lineItemId, 10),
		"targetingType": c.targetingType,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.targetingTypes.assignedTargetingOptions.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.targetingTypes.assignedTargetingOptions.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *AssignedTargetingOption.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 *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsCreateCall) Do(opts ...googleapi.CallOption) (*AssignedTargetingOption, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &AssignedTargetingOption{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.targetingTypes.assignedTargetingOptions.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsDeleteCall struct {
	s                         *Service
	advertiserId              int64
	lineItemId                int64
	targetingType             string
	assignedTargetingOptionId string
	urlParams_                gensupport.URLParams
	ctx_                      context.Context
	header_                   http.Header
}

// Delete: Deletes an assigned targeting option from a line item. Requests to
// this endpoint cannot be made concurrently with the following requests
// updating the same line item: * lineItems.bulkEditAssignedTargetingOptions *
// lineItems.bulkUpdate * lineItems.patch *
// CreateLineItemAssignedTargetingOption YouTube & Partners line items cannot
// be created or updated using the API.
//
//   - advertiserId: The ID of the advertiser the line item belongs to.
//   - assignedTargetingOptionId: The ID of the assigned targeting option to
//     delete.
//   - lineItemId: The ID of the line item the assigned targeting option belongs
//     to.
//   - targetingType: Identifies the type of this assigned targeting option.
//     Supported targeting types include: * `TARGETING_TYPE_AGE_RANGE` *
//     `TARGETING_TYPE_APP` * `TARGETING_TYPE_APP_CATEGORY` *
//     `TARGETING_TYPE_AUDIENCE_GROUP` * `TARGETING_TYPE_AUDIO_CONTENT_TYPE` *
//     `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS` * `TARGETING_TYPE_BROWSER` *
//     `TARGETING_TYPE_BUSINESS_CHAIN` * `TARGETING_TYPE_CARRIER_AND_ISP` *
//     `TARGETING_TYPE_CATEGORY` * `TARGETING_TYPE_CHANNEL` *
//     `TARGETING_TYPE_CONTENT_DURATION` * `TARGETING_TYPE_CONTENT_GENRE` *
//     `TARGETING_TYPE_CONTENT_INSTREAM_POSITION` *
//     `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION` *
//     `TARGETING_TYPE_CONTENT_STREAM_TYPE` * `TARGETING_TYPE_DAY_AND_TIME` *
//     `TARGETING_TYPE_DEVICE_MAKE_MODEL` * `TARGETING_TYPE_DEVICE_TYPE` *
//     `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` *
//     `TARGETING_TYPE_ENVIRONMENT` * `TARGETING_TYPE_EXCHANGE` *
//     `TARGETING_TYPE_GENDER` * `TARGETING_TYPE_GEO_REGION` *
//     `TARGETING_TYPE_HOUSEHOLD_INCOME` * `TARGETING_TYPE_INVENTORY_SOURCE` *
//     `TARGETING_TYPE_INVENTORY_SOURCE_GROUP` * `TARGETING_TYPE_KEYWORD` *
//     `TARGETING_TYPE_LANGUAGE` * `TARGETING_TYPE_NATIVE_CONTENT_POSITION` *
//     `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST` * `TARGETING_TYPE_OMID` *
//     `TARGETING_TYPE_ON_SCREEN_POSITION` * `TARGETING_TYPE_OPERATING_SYSTEM` *
//     `TARGETING_TYPE_PARENTAL_STATUS` * `TARGETING_TYPE_POI` *
//     `TARGETING_TYPE_PROXIMITY_LOCATION_LIST` *
//     `TARGETING_TYPE_REGIONAL_LOCATION_LIST` *
//     `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` *
//     `TARGETING_TYPE_SUB_EXCHANGE` * `TARGETING_TYPE_THIRD_PARTY_VERIFIER` *
//     `TARGETING_TYPE_URL` * `TARGETING_TYPE_USER_REWARDED_CONTENT` *
//     `TARGETING_TYPE_VIDEO_PLAYER_SIZE` * `TARGETING_TYPE_VIEWABILITY`.
func (r *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsService) Delete(advertiserId int64, lineItemId int64, targetingType string, assignedTargetingOptionId string) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsDeleteCall {
	c := &AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.lineItemId = lineItemId
	c.targetingType = targetingType
	c.assignedTargetingOptionId = assignedTargetingOptionId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsDeleteCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsDeleteCall) Context(ctx context.Context) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems/{+lineItemId}/targetingTypes/{+targetingType}/assignedTargetingOptions/{+assignedTargetingOptionId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":              strconv.FormatInt(c.advertiserId, 10),
		"lineItemId":                strconv.FormatInt(c.lineItemId, 10),
		"targetingType":             c.targetingType,
		"assignedTargetingOptionId": c.assignedTargetingOptionId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsGetCall struct {
	s                         *Service
	advertiserId              int64
	lineItemId                int64
	targetingType             string
	assignedTargetingOptionId string
	urlParams_                gensupport.URLParams
	ifNoneMatch_              string
	ctx_                      context.Context
	header_                   http.Header
}

// Get: Gets a single targeting option assigned to a line item.
//
//   - advertiserId: The ID of the advertiser the line item belongs to.
//   - assignedTargetingOptionId: An identifier unique to the targeting type in
//     this line item that identifies the assigned targeting option being
//     requested.
//   - lineItemId: The ID of the line item the assigned targeting option belongs
//     to.
//   - targetingType: Identifies the type of this assigned targeting option.
//     Supported targeting types include: * `TARGETING_TYPE_AGE_RANGE` *
//     `TARGETING_TYPE_APP` * `TARGETING_TYPE_APP_CATEGORY` *
//     `TARGETING_TYPE_AUDIENCE_GROUP` * `TARGETING_TYPE_AUDIO_CONTENT_TYPE` *
//     `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS` * `TARGETING_TYPE_BROWSER` *
//     `TARGETING_TYPE_BUSINESS_CHAIN` * `TARGETING_TYPE_CARRIER_AND_ISP` *
//     `TARGETING_TYPE_CATEGORY` * `TARGETING_TYPE_CHANNEL` *
//     `TARGETING_TYPE_CONTENT_DURATION` * `TARGETING_TYPE_CONTENT_GENRE` *
//     `TARGETING_TYPE_CONTENT_INSTREAM_POSITION` *
//     `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION` *
//     `TARGETING_TYPE_CONTENT_STREAM_TYPE` * `TARGETING_TYPE_DAY_AND_TIME` *
//     `TARGETING_TYPE_DEVICE_MAKE_MODEL` * `TARGETING_TYPE_DEVICE_TYPE` *
//     `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` *
//     `TARGETING_TYPE_ENVIRONMENT` * `TARGETING_TYPE_EXCHANGE` *
//     `TARGETING_TYPE_GENDER` * `TARGETING_TYPE_GEO_REGION` *
//     `TARGETING_TYPE_HOUSEHOLD_INCOME` * `TARGETING_TYPE_INVENTORY_SOURCE` *
//     `TARGETING_TYPE_INVENTORY_SOURCE_GROUP` * `TARGETING_TYPE_KEYWORD` *
//     `TARGETING_TYPE_LANGUAGE` * `TARGETING_TYPE_NATIVE_CONTENT_POSITION` *
//     `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST` * `TARGETING_TYPE_OMID` *
//     `TARGETING_TYPE_ON_SCREEN_POSITION` * `TARGETING_TYPE_OPERATING_SYSTEM` *
//     `TARGETING_TYPE_PARENTAL_STATUS` * `TARGETING_TYPE_POI` *
//     `TARGETING_TYPE_PROXIMITY_LOCATION_LIST` *
//     `TARGETING_TYPE_REGIONAL_LOCATION_LIST` *
//     `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` *
//     `TARGETING_TYPE_SUB_EXCHANGE` * `TARGETING_TYPE_THIRD_PARTY_VERIFIER` *
//     `TARGETING_TYPE_URL` * `TARGETING_TYPE_USER_REWARDED_CONTENT` *
//     `TARGETING_TYPE_VIDEO_PLAYER_SIZE` * `TARGETING_TYPE_VIEWABILITY` *
//     `TARGETING_TYPE_YOUTUBE_CHANNEL` (only for
//     `LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_VIDEO_SEQUENCE` line items) *
//     `TARGETING_TYPE_YOUTUBE_VIDEO` (only for
//     `LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_VIDEO_SEQUENCE` line items).
func (r *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsService) Get(advertiserId int64, lineItemId int64, targetingType string, assignedTargetingOptionId string) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsGetCall {
	c := &AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.lineItemId = lineItemId
	c.targetingType = targetingType
	c.assignedTargetingOptionId = assignedTargetingOptionId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsGetCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsGetCall) IfNoneMatch(entityTag string) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsGetCall) Context(ctx context.Context) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems/{+lineItemId}/targetingTypes/{+targetingType}/assignedTargetingOptions/{+assignedTargetingOptionId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":              strconv.FormatInt(c.advertiserId, 10),
		"lineItemId":                strconv.FormatInt(c.lineItemId, 10),
		"targetingType":             c.targetingType,
		"assignedTargetingOptionId": c.assignedTargetingOptionId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.targetingTypes.assignedTargetingOptions.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.targetingTypes.assignedTargetingOptions.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *AssignedTargetingOption.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 *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsGetCall) Do(opts ...googleapi.CallOption) (*AssignedTargetingOption, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &AssignedTargetingOption{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.targetingTypes.assignedTargetingOptions.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall struct {
	s             *Service
	advertiserId  int64
	lineItemId    int64
	targetingType string
	urlParams_    gensupport.URLParams
	ifNoneMatch_  string
	ctx_          context.Context
	header_       http.Header
}

// List: Lists the targeting options assigned to a line item.
//
//   - advertiserId: The ID of the advertiser the line item belongs to.
//   - lineItemId: The ID of the line item to list assigned targeting options
//     for.
//   - targetingType: Identifies the type of assigned targeting options to list.
//     Supported targeting types include: * `TARGETING_TYPE_AGE_RANGE` *
//     `TARGETING_TYPE_APP` * `TARGETING_TYPE_APP_CATEGORY` *
//     `TARGETING_TYPE_AUDIENCE_GROUP` * `TARGETING_TYPE_AUDIO_CONTENT_TYPE` *
//     `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS` * `TARGETING_TYPE_BROWSER` *
//     `TARGETING_TYPE_BUSINESS_CHAIN` * `TARGETING_TYPE_CARRIER_AND_ISP` *
//     `TARGETING_TYPE_CATEGORY` * `TARGETING_TYPE_CHANNEL` *
//     `TARGETING_TYPE_CONTENT_DURATION` * `TARGETING_TYPE_CONTENT_GENRE` *
//     `TARGETING_TYPE_CONTENT_INSTREAM_POSITION` *
//     `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION` *
//     `TARGETING_TYPE_CONTENT_STREAM_TYPE` * `TARGETING_TYPE_DAY_AND_TIME` *
//     `TARGETING_TYPE_DEVICE_MAKE_MODEL` * `TARGETING_TYPE_DEVICE_TYPE` *
//     `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` *
//     `TARGETING_TYPE_ENVIRONMENT` * `TARGETING_TYPE_EXCHANGE` *
//     `TARGETING_TYPE_GENDER` * `TARGETING_TYPE_GEO_REGION` *
//     `TARGETING_TYPE_HOUSEHOLD_INCOME` * `TARGETING_TYPE_INVENTORY_SOURCE` *
//     `TARGETING_TYPE_INVENTORY_SOURCE_GROUP` * `TARGETING_TYPE_KEYWORD` *
//     `TARGETING_TYPE_LANGUAGE` * `TARGETING_TYPE_NATIVE_CONTENT_POSITION` *
//     `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST` * `TARGETING_TYPE_OMID` *
//     `TARGETING_TYPE_ON_SCREEN_POSITION` * `TARGETING_TYPE_OPERATING_SYSTEM` *
//     `TARGETING_TYPE_PARENTAL_STATUS` * `TARGETING_TYPE_POI` *
//     `TARGETING_TYPE_PROXIMITY_LOCATION_LIST` *
//     `TARGETING_TYPE_REGIONAL_LOCATION_LIST` *
//     `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` *
//     `TARGETING_TYPE_SUB_EXCHANGE` * `TARGETING_TYPE_THIRD_PARTY_VERIFIER` *
//     `TARGETING_TYPE_URL` * `TARGETING_TYPE_USER_REWARDED_CONTENT` *
//     `TARGETING_TYPE_VIDEO_PLAYER_SIZE` * `TARGETING_TYPE_VIEWABILITY` *
//     `TARGETING_TYPE_YOUTUBE_CHANNEL` (only for
//     `LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_VIDEO_SEQUENCE` line items) *
//     `TARGETING_TYPE_YOUTUBE_VIDEO` (only for
//     `LINE_ITEM_TYPE_YOUTUBE_AND_PARTNERS_VIDEO_SEQUENCE` line items).
func (r *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsService) List(advertiserId int64, lineItemId int64, targetingType string) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall {
	c := &AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.lineItemId = lineItemId
	c.targetingType = targetingType
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by assigned
// targeting option fields. Supported syntax: * Filter expressions are made up
// of one or more restrictions. * Restrictions can be combined by the logical
// operator `OR`. * A restriction has the form of `{field} {operator} {value}`.
// * All fields must use the `EQUALS (=)` operator. Supported fields: *
// `assignedTargetingOptionId` * `inheritance` Examples: *
// `AssignedTargetingOption` resources with ID 1 or 2:
// `assignedTargetingOptionId="1" OR assignedTargetingOptionId="2" *
// `AssignedTargetingOption` resources with inheritance status of
// `NOT_INHERITED` or `INHERITED_FROM_PARTNER`: `inheritance="NOT_INHERITED" OR
// inheritance="INHERITED_FROM_PARTNER" The length of this field should be no
// more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall) Filter(filter string) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `assignedTargetingOptionId` (default) The
// default sorting order is ascending. To specify descending order for a field,
// a suffix "desc" should be added to the field name. Example:
// `assignedTargetingOptionId desc`.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall) OrderBy(orderBy string) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `5000`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall) PageSize(pageSize int64) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to
// `ListLineItemAssignedTargetingOptions` method. If not specified, the first
// page of results will be returned.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall) PageToken(pageToken string) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall) Fields(s ...googleapi.Field) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall) IfNoneMatch(entityTag string) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall) Context(ctx context.Context) *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/lineItems/{+lineItemId}/targetingTypes/{+targetingType}/assignedTargetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":  strconv.FormatInt(c.advertiserId, 10),
		"lineItemId":    strconv.FormatInt(c.lineItemId, 10),
		"targetingType": c.targetingType,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.targetingTypes.assignedTargetingOptions.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.lineItems.targetingTypes.assignedTargetingOptions.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListLineItemAssignedTargetingOptionsResponse.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 *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall) Do(opts ...googleapi.CallOption) (*ListLineItemAssignedTargetingOptionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListLineItemAssignedTargetingOptionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.lineItems.targetingTypes.assignedTargetingOptions.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersLineItemsTargetingTypesAssignedTargetingOptionsListCall) Pages(ctx context.Context, f func(*ListLineItemAssignedTargetingOptionsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersLocationListsCreateCall struct {
	s            *Service
	advertiserId int64
	locationlist *LocationList
	urlParams_   gensupport.URLParams
	ctx_         context.Context
	header_      http.Header
}

// Create: Creates a new location list. Returns the newly created location list
// if successful.
//
//   - advertiserId: The ID of the DV360 advertiser to which the location list
//     belongs.
func (r *AdvertisersLocationListsService) Create(advertiserId int64, locationlist *LocationList) *AdvertisersLocationListsCreateCall {
	c := &AdvertisersLocationListsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.locationlist = locationlist
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLocationListsCreateCall) Fields(s ...googleapi.Field) *AdvertisersLocationListsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLocationListsCreateCall) Context(ctx context.Context) *AdvertisersLocationListsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLocationListsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLocationListsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.locationlist)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/locationLists")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.locationLists.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *LocationList.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 *AdvertisersLocationListsCreateCall) Do(opts ...googleapi.CallOption) (*LocationList, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &LocationList{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a location list.
//
//   - advertiserId: The ID of the DV360 advertiser to which the fetched location
//     list belongs.
//   - locationListId: The ID of the location list to fetch.
func (r *AdvertisersLocationListsService) Get(advertiserId int64, locationListId int64) *AdvertisersLocationListsGetCall {
	c := &AdvertisersLocationListsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.locationListId = locationListId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLocationListsGetCall) Fields(s ...googleapi.Field) *AdvertisersLocationListsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersLocationListsGetCall) IfNoneMatch(entityTag string) *AdvertisersLocationListsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLocationListsGetCall) Context(ctx context.Context) *AdvertisersLocationListsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLocationListsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLocationListsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/locationLists/{+locationListId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":   strconv.FormatInt(c.advertiserId, 10),
		"locationListId": strconv.FormatInt(c.locationListId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.locationLists.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *LocationList.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 *AdvertisersLocationListsGetCall) Do(opts ...googleapi.CallOption) (*LocationList, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &LocationList{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists location lists based on a given advertiser id.
//
//   - advertiserId: The ID of the DV360 advertiser to which the fetched location
//     lists belong.
func (r *AdvertisersLocationListsService) List(advertiserId int64) *AdvertisersLocationListsListCall {
	c := &AdvertisersLocationListsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by location
// list fields. Supported syntax: * Filter expressions are made up of one or
// more restrictions. * Restrictions can be combined by `AND` or `OR` logical
// operators. A sequence of restrictions implicitly uses `AND`. * A restriction
// has the form of `{field} {operator} {value}`. * All fields must use the
// `EQUALS (=)` operator. Supported fields: * `locationType` Examples: * All
// regional location list: `locationType="TARGETING_LOCATION_TYPE_REGIONAL" *
// All proximity location list:
// `locationType="TARGETING_LOCATION_TYPE_PROXIMITY" The length of this field
// should be no more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersLocationListsListCall) Filter(filter string) *AdvertisersLocationListsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `locationListId` (default) * `displayName`
// The default sorting order is ascending. To specify descending order for a
// field, a suffix "desc" should be added to the field name. Example:
// `displayName desc`.
func (c *AdvertisersLocationListsListCall) OrderBy(orderBy string) *AdvertisersLocationListsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. Defaults to `100` if not set. Returns error code
// `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersLocationListsListCall) PageSize(pageSize int64) *AdvertisersLocationListsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListLocationLists`
// method. If not specified, the first page of results will be returned.
func (c *AdvertisersLocationListsListCall) PageToken(pageToken string) *AdvertisersLocationListsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLocationListsListCall) Fields(s ...googleapi.Field) *AdvertisersLocationListsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersLocationListsListCall) IfNoneMatch(entityTag string) *AdvertisersLocationListsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLocationListsListCall) Context(ctx context.Context) *AdvertisersLocationListsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLocationListsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLocationListsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/locationLists")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.locationLists.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListLocationListsResponse.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 *AdvertisersLocationListsListCall) Do(opts ...googleapi.CallOption) (*ListLocationListsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListLocationListsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersLocationListsListCall) Pages(ctx context.Context, f func(*ListLocationListsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersLocationListsPatchCall struct {
	s              *Service
	advertiserId   int64
	locationListId int64
	locationlist   *LocationList
	urlParams_     gensupport.URLParams
	ctx_           context.Context
	header_        http.Header
}

// Patch: Updates a location list. Returns the updated location list if
// successful.
//
//   - advertiserId: The ID of the DV360 advertiser to which the location lists
//     belongs.
//   - locationListId: Output only. The unique ID of the location list. Assigned
//     by the system.
func (r *AdvertisersLocationListsService) Patch(advertiserId int64, locationListId int64, locationlist *LocationList) *AdvertisersLocationListsPatchCall {
	c := &AdvertisersLocationListsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.locationListId = locationListId
	c.locationlist = locationlist
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *AdvertisersLocationListsPatchCall) UpdateMask(updateMask string) *AdvertisersLocationListsPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLocationListsPatchCall) Fields(s ...googleapi.Field) *AdvertisersLocationListsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLocationListsPatchCall) Context(ctx context.Context) *AdvertisersLocationListsPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLocationListsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLocationListsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.locationlist)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/locationLists/{locationListId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":   strconv.FormatInt(c.advertiserId, 10),
		"locationListId": strconv.FormatInt(c.locationListId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.locationLists.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *LocationList.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 *AdvertisersLocationListsPatchCall) Do(opts ...googleapi.CallOption) (*LocationList, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &LocationList{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersLocationListsAssignedLocationsBulkEditCall struct {
	s                                *Service
	advertiserId                     int64
	locationListId                   int64
	bulkeditassignedlocationsrequest *BulkEditAssignedLocationsRequest
	urlParams_                       gensupport.URLParams
	ctx_                             context.Context
	header_                          http.Header
}

// BulkEdit: Bulk edits multiple assignments between locations and a single
// location list. The operation will delete the assigned locations provided in
// deletedAssignedLocations and then create the assigned locations provided in
// createdAssignedLocations.
//
//   - advertiserId: The ID of the DV360 advertiser to which the location list
//     belongs.
//   - locationListId: The ID of the location list to which these assignments are
//     assigned.
func (r *AdvertisersLocationListsAssignedLocationsService) BulkEdit(advertiserId int64, locationListId int64, bulkeditassignedlocationsrequest *BulkEditAssignedLocationsRequest) *AdvertisersLocationListsAssignedLocationsBulkEditCall {
	c := &AdvertisersLocationListsAssignedLocationsBulkEditCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.locationListId = locationListId
	c.bulkeditassignedlocationsrequest = bulkeditassignedlocationsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLocationListsAssignedLocationsBulkEditCall) Fields(s ...googleapi.Field) *AdvertisersLocationListsAssignedLocationsBulkEditCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLocationListsAssignedLocationsBulkEditCall) Context(ctx context.Context) *AdvertisersLocationListsAssignedLocationsBulkEditCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLocationListsAssignedLocationsBulkEditCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLocationListsAssignedLocationsBulkEditCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.bulkeditassignedlocationsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{advertiserId}/locationLists/{+locationListId}/assignedLocations:bulkEdit")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":   strconv.FormatInt(c.advertiserId, 10),
		"locationListId": strconv.FormatInt(c.locationListId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.assignedLocations.bulkEdit", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.locationLists.assignedLocations.bulkEdit" call.
// Any non-2xx status code is an error. Response headers are in either
// *BulkEditAssignedLocationsResponse.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 *AdvertisersLocationListsAssignedLocationsBulkEditCall) Do(opts ...googleapi.CallOption) (*BulkEditAssignedLocationsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &BulkEditAssignedLocationsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.assignedLocations.bulkEdit", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersLocationListsAssignedLocationsCreateCall struct {
	s                *Service
	advertiserId     int64
	locationListId   int64
	assignedlocation *AssignedLocation
	urlParams_       gensupport.URLParams
	ctx_             context.Context
	header_          http.Header
}

// Create: Creates an assignment between a location and a location list.
//
//   - advertiserId: The ID of the DV360 advertiser to which the location list
//     belongs.
//   - locationListId: The ID of the location list for which the assignment will
//     be created.
func (r *AdvertisersLocationListsAssignedLocationsService) Create(advertiserId int64, locationListId int64, assignedlocation *AssignedLocation) *AdvertisersLocationListsAssignedLocationsCreateCall {
	c := &AdvertisersLocationListsAssignedLocationsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.locationListId = locationListId
	c.assignedlocation = assignedlocation
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLocationListsAssignedLocationsCreateCall) Fields(s ...googleapi.Field) *AdvertisersLocationListsAssignedLocationsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLocationListsAssignedLocationsCreateCall) Context(ctx context.Context) *AdvertisersLocationListsAssignedLocationsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLocationListsAssignedLocationsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLocationListsAssignedLocationsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.assignedlocation)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{advertiserId}/locationLists/{locationListId}/assignedLocations")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":   strconv.FormatInt(c.advertiserId, 10),
		"locationListId": strconv.FormatInt(c.locationListId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.assignedLocations.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.locationLists.assignedLocations.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *AssignedLocation.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 *AdvertisersLocationListsAssignedLocationsCreateCall) Do(opts ...googleapi.CallOption) (*AssignedLocation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &AssignedLocation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.assignedLocations.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersLocationListsAssignedLocationsDeleteCall struct {
	s                  *Service
	advertiserId       int64
	locationListId     int64
	assignedLocationId int64
	urlParams_         gensupport.URLParams
	ctx_               context.Context
	header_            http.Header
}

// Delete: Deletes the assignment between a location and a location list.
//
//   - advertiserId: The ID of the DV360 advertiser to which the location list
//     belongs.
//   - assignedLocationId: The ID of the assigned location to delete.
//   - locationListId: The ID of the location list to which this assignment is
//     assigned.
func (r *AdvertisersLocationListsAssignedLocationsService) Delete(advertiserId int64, locationListId int64, assignedLocationId int64) *AdvertisersLocationListsAssignedLocationsDeleteCall {
	c := &AdvertisersLocationListsAssignedLocationsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.locationListId = locationListId
	c.assignedLocationId = assignedLocationId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLocationListsAssignedLocationsDeleteCall) Fields(s ...googleapi.Field) *AdvertisersLocationListsAssignedLocationsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLocationListsAssignedLocationsDeleteCall) Context(ctx context.Context) *AdvertisersLocationListsAssignedLocationsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLocationListsAssignedLocationsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLocationListsAssignedLocationsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{advertiserId}/locationLists/{locationListId}/assignedLocations/{+assignedLocationId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":       strconv.FormatInt(c.advertiserId, 10),
		"locationListId":     strconv.FormatInt(c.locationListId, 10),
		"assignedLocationId": strconv.FormatInt(c.assignedLocationId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.assignedLocations.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.locationLists.assignedLocations.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *AdvertisersLocationListsAssignedLocationsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.assignedLocations.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists locations assigned to a location list.
//
//   - advertiserId: The ID of the DV360 advertiser to which the location list
//     belongs.
//   - locationListId: The ID of the location list to which these assignments are
//     assigned.
func (r *AdvertisersLocationListsAssignedLocationsService) List(advertiserId int64, locationListId int64) *AdvertisersLocationListsAssignedLocationsListCall {
	c := &AdvertisersLocationListsAssignedLocationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.locationListId = locationListId
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by location
// list assignment fields. Supported syntax: * Filter expressions are made up
// of one or more restrictions. * Restrictions can be combined by the `OR`
// logical operator. * A restriction has the form of `{field} {operator}
// {value}`. * All fields must use the `EQUALS (=)` operator. Supported fields:
// * `assignedLocationId` The length of this field should be no more than 500
// characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersLocationListsAssignedLocationsListCall) Filter(filter string) *AdvertisersLocationListsAssignedLocationsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `assignedLocationId` (default) The default
// sorting order is ascending. To specify descending order for a field, a
// suffix " desc" should be added to the field name. Example:
// `assignedLocationId desc`.
func (c *AdvertisersLocationListsAssignedLocationsListCall) OrderBy(orderBy string) *AdvertisersLocationListsAssignedLocationsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersLocationListsAssignedLocationsListCall) PageSize(pageSize int64) *AdvertisersLocationListsAssignedLocationsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListAssignedLocations`
// method. If not specified, the first page of results will be returned.
func (c *AdvertisersLocationListsAssignedLocationsListCall) PageToken(pageToken string) *AdvertisersLocationListsAssignedLocationsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersLocationListsAssignedLocationsListCall) Fields(s ...googleapi.Field) *AdvertisersLocationListsAssignedLocationsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersLocationListsAssignedLocationsListCall) IfNoneMatch(entityTag string) *AdvertisersLocationListsAssignedLocationsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersLocationListsAssignedLocationsListCall) Context(ctx context.Context) *AdvertisersLocationListsAssignedLocationsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersLocationListsAssignedLocationsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersLocationListsAssignedLocationsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{advertiserId}/locationLists/{locationListId}/assignedLocations")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":   strconv.FormatInt(c.advertiserId, 10),
		"locationListId": strconv.FormatInt(c.locationListId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.assignedLocations.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.locationLists.assignedLocations.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListAssignedLocationsResponse.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 *AdvertisersLocationListsAssignedLocationsListCall) Do(opts ...googleapi.CallOption) (*ListAssignedLocationsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListAssignedLocationsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.locationLists.assignedLocations.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersLocationListsAssignedLocationsListCall) Pages(ctx context.Context, f func(*ListAssignedLocationsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersNegativeKeywordListsCreateCall struct {
	s                   *Service
	advertiserId        int64
	negativekeywordlist *NegativeKeywordList
	urlParams_          gensupport.URLParams
	ctx_                context.Context
	header_             http.Header
}

// Create: Creates a new negative keyword list. Returns the newly created
// negative keyword list if successful.
//
//   - advertiserId: The ID of the DV360 advertiser to which the negative keyword
//     list will belong.
func (r *AdvertisersNegativeKeywordListsService) Create(advertiserId int64, negativekeywordlist *NegativeKeywordList) *AdvertisersNegativeKeywordListsCreateCall {
	c := &AdvertisersNegativeKeywordListsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.negativekeywordlist = negativekeywordlist
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersNegativeKeywordListsCreateCall) Fields(s ...googleapi.Field) *AdvertisersNegativeKeywordListsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersNegativeKeywordListsCreateCall) Context(ctx context.Context) *AdvertisersNegativeKeywordListsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersNegativeKeywordListsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersNegativeKeywordListsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.negativekeywordlist)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/negativeKeywordLists")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.negativeKeywordLists.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *NegativeKeywordList.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 *AdvertisersNegativeKeywordListsCreateCall) Do(opts ...googleapi.CallOption) (*NegativeKeywordList, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &NegativeKeywordList{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersNegativeKeywordListsDeleteCall struct {
	s                     *Service
	advertiserId          int64
	negativeKeywordListId int64
	urlParams_            gensupport.URLParams
	ctx_                  context.Context
	header_               http.Header
}

// Delete: Deletes a negative keyword list given an advertiser ID and a
// negative keyword list ID.
//
//   - advertiserId: The ID of the DV360 advertiser to which the negative keyword
//     list belongs.
//   - negativeKeywordListId: The ID of the negative keyword list to delete.
func (r *AdvertisersNegativeKeywordListsService) Delete(advertiserId int64, negativeKeywordListId int64) *AdvertisersNegativeKeywordListsDeleteCall {
	c := &AdvertisersNegativeKeywordListsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.negativeKeywordListId = negativeKeywordListId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersNegativeKeywordListsDeleteCall) Fields(s ...googleapi.Field) *AdvertisersNegativeKeywordListsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersNegativeKeywordListsDeleteCall) Context(ctx context.Context) *AdvertisersNegativeKeywordListsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersNegativeKeywordListsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersNegativeKeywordListsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/negativeKeywordLists/{+negativeKeywordListId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":          strconv.FormatInt(c.advertiserId, 10),
		"negativeKeywordListId": strconv.FormatInt(c.negativeKeywordListId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.negativeKeywordLists.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *AdvertisersNegativeKeywordListsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a negative keyword list given an advertiser ID and a negative
// keyword list ID.
//
//   - advertiserId: The ID of the DV360 advertiser to which the fetched negative
//     keyword list belongs.
//   - negativeKeywordListId: The ID of the negative keyword list to fetch.
func (r *AdvertisersNegativeKeywordListsService) Get(advertiserId int64, negativeKeywordListId int64) *AdvertisersNegativeKeywordListsGetCall {
	c := &AdvertisersNegativeKeywordListsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.negativeKeywordListId = negativeKeywordListId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersNegativeKeywordListsGetCall) Fields(s ...googleapi.Field) *AdvertisersNegativeKeywordListsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersNegativeKeywordListsGetCall) IfNoneMatch(entityTag string) *AdvertisersNegativeKeywordListsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersNegativeKeywordListsGetCall) Context(ctx context.Context) *AdvertisersNegativeKeywordListsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersNegativeKeywordListsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersNegativeKeywordListsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/negativeKeywordLists/{+negativeKeywordListId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":          strconv.FormatInt(c.advertiserId, 10),
		"negativeKeywordListId": strconv.FormatInt(c.negativeKeywordListId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.negativeKeywordLists.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *NegativeKeywordList.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 *AdvertisersNegativeKeywordListsGetCall) Do(opts ...googleapi.CallOption) (*NegativeKeywordList, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &NegativeKeywordList{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists negative keyword lists based on a given advertiser id.
//
//   - advertiserId: The ID of the DV360 advertiser to which the fetched negative
//     keyword lists belong.
func (r *AdvertisersNegativeKeywordListsService) List(advertiserId int64) *AdvertisersNegativeKeywordListsListCall {
	c := &AdvertisersNegativeKeywordListsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. Defaults to `100` if not set. Returns error code
// `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersNegativeKeywordListsListCall) PageSize(pageSize int64) *AdvertisersNegativeKeywordListsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to
// `ListNegativeKeywordLists` method. If not specified, the first page of
// results will be returned.
func (c *AdvertisersNegativeKeywordListsListCall) PageToken(pageToken string) *AdvertisersNegativeKeywordListsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersNegativeKeywordListsListCall) Fields(s ...googleapi.Field) *AdvertisersNegativeKeywordListsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersNegativeKeywordListsListCall) IfNoneMatch(entityTag string) *AdvertisersNegativeKeywordListsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersNegativeKeywordListsListCall) Context(ctx context.Context) *AdvertisersNegativeKeywordListsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersNegativeKeywordListsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersNegativeKeywordListsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/negativeKeywordLists")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.negativeKeywordLists.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListNegativeKeywordListsResponse.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 *AdvertisersNegativeKeywordListsListCall) Do(opts ...googleapi.CallOption) (*ListNegativeKeywordListsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListNegativeKeywordListsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersNegativeKeywordListsListCall) Pages(ctx context.Context, f func(*ListNegativeKeywordListsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersNegativeKeywordListsPatchCall struct {
	s                     *Service
	advertiserId          int64
	negativeKeywordListId int64
	negativekeywordlist   *NegativeKeywordList
	urlParams_            gensupport.URLParams
	ctx_                  context.Context
	header_               http.Header
}

// Patch: Updates a negative keyword list. Returns the updated negative keyword
// list if successful.
//
//   - advertiserId: The ID of the DV360 advertiser to which the negative keyword
//     list belongs.
//   - negativeKeywordListId: Output only. The unique ID of the negative keyword
//     list. Assigned by the system.
func (r *AdvertisersNegativeKeywordListsService) Patch(advertiserId int64, negativeKeywordListId int64, negativekeywordlist *NegativeKeywordList) *AdvertisersNegativeKeywordListsPatchCall {
	c := &AdvertisersNegativeKeywordListsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.negativeKeywordListId = negativeKeywordListId
	c.negativekeywordlist = negativekeywordlist
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *AdvertisersNegativeKeywordListsPatchCall) UpdateMask(updateMask string) *AdvertisersNegativeKeywordListsPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersNegativeKeywordListsPatchCall) Fields(s ...googleapi.Field) *AdvertisersNegativeKeywordListsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersNegativeKeywordListsPatchCall) Context(ctx context.Context) *AdvertisersNegativeKeywordListsPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersNegativeKeywordListsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersNegativeKeywordListsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.negativekeywordlist)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/negativeKeywordLists/{negativeKeywordListId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":          strconv.FormatInt(c.advertiserId, 10),
		"negativeKeywordListId": strconv.FormatInt(c.negativeKeywordListId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.negativeKeywordLists.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *NegativeKeywordList.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 *AdvertisersNegativeKeywordListsPatchCall) Do(opts ...googleapi.CallOption) (*NegativeKeywordList, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &NegativeKeywordList{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersNegativeKeywordListsNegativeKeywordsBulkEditCall struct {
	s                               *Service
	advertiserId                    int64
	negativeKeywordListId           int64
	bulkeditnegativekeywordsrequest *BulkEditNegativeKeywordsRequest
	urlParams_                      gensupport.URLParams
	ctx_                            context.Context
	header_                         http.Header
}

// BulkEdit: Bulk edits negative keywords in a single negative keyword list.
// The operation will delete the negative keywords provided in
// BulkEditNegativeKeywordsRequest.deleted_negative_keywords and then create
// the negative keywords provided in
// BulkEditNegativeKeywordsRequest.created_negative_keywords. This operation is
// guaranteed to be atomic and will never result in a partial success or
// partial failure.
//
//   - advertiserId: The ID of the DV360 advertiser to which the parent negative
//     keyword list belongs.
//   - negativeKeywordListId: The ID of the parent negative keyword list to which
//     the negative keywords belong.
func (r *AdvertisersNegativeKeywordListsNegativeKeywordsService) BulkEdit(advertiserId int64, negativeKeywordListId int64, bulkeditnegativekeywordsrequest *BulkEditNegativeKeywordsRequest) *AdvertisersNegativeKeywordListsNegativeKeywordsBulkEditCall {
	c := &AdvertisersNegativeKeywordListsNegativeKeywordsBulkEditCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.negativeKeywordListId = negativeKeywordListId
	c.bulkeditnegativekeywordsrequest = bulkeditnegativekeywordsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsBulkEditCall) Fields(s ...googleapi.Field) *AdvertisersNegativeKeywordListsNegativeKeywordsBulkEditCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsBulkEditCall) Context(ctx context.Context) *AdvertisersNegativeKeywordListsNegativeKeywordsBulkEditCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsBulkEditCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersNegativeKeywordListsNegativeKeywordsBulkEditCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.bulkeditnegativekeywordsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{advertiserId}/negativeKeywordLists/{+negativeKeywordListId}/negativeKeywords:bulkEdit")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":          strconv.FormatInt(c.advertiserId, 10),
		"negativeKeywordListId": strconv.FormatInt(c.negativeKeywordListId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.bulkEdit", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.bulkEdit" call.
// Any non-2xx status code is an error. Response headers are in either
// *BulkEditNegativeKeywordsResponse.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 *AdvertisersNegativeKeywordListsNegativeKeywordsBulkEditCall) Do(opts ...googleapi.CallOption) (*BulkEditNegativeKeywordsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &BulkEditNegativeKeywordsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.bulkEdit", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersNegativeKeywordListsNegativeKeywordsCreateCall struct {
	s                     *Service
	advertiserId          int64
	negativeKeywordListId int64
	negativekeyword       *NegativeKeyword
	urlParams_            gensupport.URLParams
	ctx_                  context.Context
	header_               http.Header
}

// Create: Creates a negative keyword in a negative keyword list.
//
//   - advertiserId: The ID of the DV360 advertiser to which the parent negative
//     keyword list belongs.
//   - negativeKeywordListId: The ID of the parent negative keyword list in which
//     the negative keyword will be created.
func (r *AdvertisersNegativeKeywordListsNegativeKeywordsService) Create(advertiserId int64, negativeKeywordListId int64, negativekeyword *NegativeKeyword) *AdvertisersNegativeKeywordListsNegativeKeywordsCreateCall {
	c := &AdvertisersNegativeKeywordListsNegativeKeywordsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.negativeKeywordListId = negativeKeywordListId
	c.negativekeyword = negativekeyword
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsCreateCall) Fields(s ...googleapi.Field) *AdvertisersNegativeKeywordListsNegativeKeywordsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsCreateCall) Context(ctx context.Context) *AdvertisersNegativeKeywordListsNegativeKeywordsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersNegativeKeywordListsNegativeKeywordsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.negativekeyword)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{advertiserId}/negativeKeywordLists/{+negativeKeywordListId}/negativeKeywords")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":          strconv.FormatInt(c.advertiserId, 10),
		"negativeKeywordListId": strconv.FormatInt(c.negativeKeywordListId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *NegativeKeyword.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 *AdvertisersNegativeKeywordListsNegativeKeywordsCreateCall) Do(opts ...googleapi.CallOption) (*NegativeKeyword, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &NegativeKeyword{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersNegativeKeywordListsNegativeKeywordsDeleteCall struct {
	s                     *Service
	advertiserId          int64
	negativeKeywordListId int64
	keywordValue          string
	urlParams_            gensupport.URLParams
	ctx_                  context.Context
	header_               http.Header
}

// Delete: Deletes a negative keyword from a negative keyword list.
//
//   - advertiserId: The ID of the DV360 advertiser to which the parent negative
//     keyword list belongs.
//   - keywordValue: The keyword value of the negative keyword to delete.
//   - negativeKeywordListId: The ID of the parent negative keyword list to which
//     the negative keyword belongs.
func (r *AdvertisersNegativeKeywordListsNegativeKeywordsService) Delete(advertiserId int64, negativeKeywordListId int64, keywordValue string) *AdvertisersNegativeKeywordListsNegativeKeywordsDeleteCall {
	c := &AdvertisersNegativeKeywordListsNegativeKeywordsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.negativeKeywordListId = negativeKeywordListId
	c.keywordValue = keywordValue
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsDeleteCall) Fields(s ...googleapi.Field) *AdvertisersNegativeKeywordListsNegativeKeywordsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsDeleteCall) Context(ctx context.Context) *AdvertisersNegativeKeywordListsNegativeKeywordsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersNegativeKeywordListsNegativeKeywordsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{advertiserId}/negativeKeywordLists/{+negativeKeywordListId}/negativeKeywords/{+keywordValue}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":          strconv.FormatInt(c.advertiserId, 10),
		"negativeKeywordListId": strconv.FormatInt(c.negativeKeywordListId, 10),
		"keywordValue":          c.keywordValue,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *AdvertisersNegativeKeywordListsNegativeKeywordsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists negative keywords in a negative keyword list.
//
//   - advertiserId: The ID of the DV360 advertiser to which the parent negative
//     keyword list belongs.
//   - negativeKeywordListId: The ID of the parent negative keyword list to which
//     the requested negative keywords belong.
func (r *AdvertisersNegativeKeywordListsNegativeKeywordsService) List(advertiserId int64, negativeKeywordListId int64) *AdvertisersNegativeKeywordListsNegativeKeywordsListCall {
	c := &AdvertisersNegativeKeywordListsNegativeKeywordsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.negativeKeywordListId = negativeKeywordListId
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by negative
// keyword fields. Supported syntax: * Filter expressions for negative keywords
// can only contain at most one restriction. * A restriction has the form of
// `{field} {operator} {value}`. * All fields must use the `HAS (:)` operator.
// Supported fields: * `keywordValue` Examples: * All negative keywords for
// which the keyword value contains "google": `keywordValue : "google" The
// length of this field should be no more than 500 characters. Reference our
// filter `LIST` requests (/display-video/api/guides/how-tos/filters) guide for
// more information.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsListCall) Filter(filter string) *AdvertisersNegativeKeywordListsNegativeKeywordsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `keywordValue` (default) The default sorting
// order is ascending. To specify descending order for a field, a suffix "
// desc" should be added to the field name. Example: `keywordValue desc`.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsListCall) OrderBy(orderBy string) *AdvertisersNegativeKeywordListsNegativeKeywordsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `1000`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsListCall) PageSize(pageSize int64) *AdvertisersNegativeKeywordListsNegativeKeywordsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListNegativeKeywords`
// method. If not specified, the first page of results will be returned.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsListCall) PageToken(pageToken string) *AdvertisersNegativeKeywordListsNegativeKeywordsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsListCall) Fields(s ...googleapi.Field) *AdvertisersNegativeKeywordListsNegativeKeywordsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsListCall) IfNoneMatch(entityTag string) *AdvertisersNegativeKeywordListsNegativeKeywordsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsListCall) Context(ctx context.Context) *AdvertisersNegativeKeywordListsNegativeKeywordsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersNegativeKeywordListsNegativeKeywordsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/negativeKeywordLists/{+negativeKeywordListId}/negativeKeywords")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":          strconv.FormatInt(c.advertiserId, 10),
		"negativeKeywordListId": strconv.FormatInt(c.negativeKeywordListId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListNegativeKeywordsResponse.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 *AdvertisersNegativeKeywordListsNegativeKeywordsListCall) Do(opts ...googleapi.CallOption) (*ListNegativeKeywordsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListNegativeKeywordsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsListCall) Pages(ctx context.Context, f func(*ListNegativeKeywordsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type AdvertisersNegativeKeywordListsNegativeKeywordsReplaceCall struct {
	s                              *Service
	advertiserId                   int64
	negativeKeywordListId          int64
	replacenegativekeywordsrequest *ReplaceNegativeKeywordsRequest
	urlParams_                     gensupport.URLParams
	ctx_                           context.Context
	header_                        http.Header
}

// Replace: Replaces all negative keywords in a single negative keyword list.
// The operation will replace the keywords in a negative keyword list with
// keywords provided in ReplaceNegativeKeywordsRequest.new_negative_keywords.
//
//   - advertiserId: The ID of the DV360 advertiser to which the parent negative
//     keyword list belongs.
//   - negativeKeywordListId: The ID of the parent negative keyword list to which
//     the negative keywords belong.
func (r *AdvertisersNegativeKeywordListsNegativeKeywordsService) Replace(advertiserId int64, negativeKeywordListId int64, replacenegativekeywordsrequest *ReplaceNegativeKeywordsRequest) *AdvertisersNegativeKeywordListsNegativeKeywordsReplaceCall {
	c := &AdvertisersNegativeKeywordListsNegativeKeywordsReplaceCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.negativeKeywordListId = negativeKeywordListId
	c.replacenegativekeywordsrequest = replacenegativekeywordsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsReplaceCall) Fields(s ...googleapi.Field) *AdvertisersNegativeKeywordListsNegativeKeywordsReplaceCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsReplaceCall) Context(ctx context.Context) *AdvertisersNegativeKeywordListsNegativeKeywordsReplaceCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersNegativeKeywordListsNegativeKeywordsReplaceCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersNegativeKeywordListsNegativeKeywordsReplaceCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.replacenegativekeywordsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{advertiserId}/negativeKeywordLists/{+negativeKeywordListId}/negativeKeywords:replace")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":          strconv.FormatInt(c.advertiserId, 10),
		"negativeKeywordListId": strconv.FormatInt(c.negativeKeywordListId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.replace", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.replace" call.
// Any non-2xx status code is an error. Response headers are in either
// *ReplaceNegativeKeywordsResponse.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 *AdvertisersNegativeKeywordListsNegativeKeywordsReplaceCall) Do(opts ...googleapi.CallOption) (*ReplaceNegativeKeywordsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ReplaceNegativeKeywordsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.negativeKeywordLists.negativeKeywords.replace", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersTargetingTypesAssignedTargetingOptionsCreateCall struct {
	s                       *Service
	advertiserId            int64
	targetingType           string
	assignedtargetingoption *AssignedTargetingOption
	urlParams_              gensupport.URLParams
	ctx_                    context.Context
	header_                 http.Header
}

// Create: Assigns a targeting option to an advertiser. Returns the assigned
// targeting option if successful.
//
//   - advertiserId: The ID of the advertiser.
//   - targetingType: Identifies the type of this assigned targeting option.
//     Supported targeting types: * `TARGETING_TYPE_CHANNEL` *
//     `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` *
//     `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` * `TARGETING_TYPE_KEYWORD`.
func (r *AdvertisersTargetingTypesAssignedTargetingOptionsService) Create(advertiserId int64, targetingType string, assignedtargetingoption *AssignedTargetingOption) *AdvertisersTargetingTypesAssignedTargetingOptionsCreateCall {
	c := &AdvertisersTargetingTypesAssignedTargetingOptionsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.targetingType = targetingType
	c.assignedtargetingoption = assignedtargetingoption
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsCreateCall) Fields(s ...googleapi.Field) *AdvertisersTargetingTypesAssignedTargetingOptionsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsCreateCall) Context(ctx context.Context) *AdvertisersTargetingTypesAssignedTargetingOptionsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersTargetingTypesAssignedTargetingOptionsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.assignedtargetingoption)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/targetingTypes/{+targetingType}/assignedTargetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":  strconv.FormatInt(c.advertiserId, 10),
		"targetingType": c.targetingType,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.targetingTypes.assignedTargetingOptions.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.targetingTypes.assignedTargetingOptions.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *AssignedTargetingOption.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 *AdvertisersTargetingTypesAssignedTargetingOptionsCreateCall) Do(opts ...googleapi.CallOption) (*AssignedTargetingOption, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &AssignedTargetingOption{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.targetingTypes.assignedTargetingOptions.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersTargetingTypesAssignedTargetingOptionsDeleteCall struct {
	s                         *Service
	advertiserId              int64
	targetingType             string
	assignedTargetingOptionId string
	urlParams_                gensupport.URLParams
	ctx_                      context.Context
	header_                   http.Header
}

// Delete: Deletes an assigned targeting option from an advertiser.
//
//   - advertiserId: The ID of the advertiser.
//   - assignedTargetingOptionId: The ID of the assigned targeting option to
//     delete.
//   - targetingType: Identifies the type of this assigned targeting option.
//     Supported targeting types: * `TARGETING_TYPE_CHANNEL` *
//     `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` *
//     `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` * `TARGETING_TYPE_KEYWORD`.
func (r *AdvertisersTargetingTypesAssignedTargetingOptionsService) Delete(advertiserId int64, targetingType string, assignedTargetingOptionId string) *AdvertisersTargetingTypesAssignedTargetingOptionsDeleteCall {
	c := &AdvertisersTargetingTypesAssignedTargetingOptionsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.targetingType = targetingType
	c.assignedTargetingOptionId = assignedTargetingOptionId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsDeleteCall) Fields(s ...googleapi.Field) *AdvertisersTargetingTypesAssignedTargetingOptionsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsDeleteCall) Context(ctx context.Context) *AdvertisersTargetingTypesAssignedTargetingOptionsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersTargetingTypesAssignedTargetingOptionsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/targetingTypes/{+targetingType}/assignedTargetingOptions/{+assignedTargetingOptionId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":              strconv.FormatInt(c.advertiserId, 10),
		"targetingType":             c.targetingType,
		"assignedTargetingOptionId": c.assignedTargetingOptionId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.targetingTypes.assignedTargetingOptions.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.targetingTypes.assignedTargetingOptions.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *AdvertisersTargetingTypesAssignedTargetingOptionsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.targetingTypes.assignedTargetingOptions.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type AdvertisersTargetingTypesAssignedTargetingOptionsGetCall struct {
	s                         *Service
	advertiserId              int64
	targetingType             string
	assignedTargetingOptionId string
	urlParams_                gensupport.URLParams
	ifNoneMatch_              string
	ctx_                      context.Context
	header_                   http.Header
}

// Get: Gets a single targeting option assigned to an advertiser.
//
//   - advertiserId: The ID of the advertiser.
//   - assignedTargetingOptionId: An identifier unique to the targeting type in
//     this advertiser that identifies the assigned targeting option being
//     requested.
//   - targetingType: Identifies the type of this assigned targeting option.
//     Supported targeting types: * `TARGETING_TYPE_CHANNEL` *
//     `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` *
//     `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` *
//     `TARGETING_TYPE_YOUTUBE_VIDEO` * `TARGETING_TYPE_YOUTUBE_CHANNEL` *
//     `TARGETING_TYPE_KEYWORD` * `TARGETING_TYPE_CONTENT_THEME_EXCLUSION`.
func (r *AdvertisersTargetingTypesAssignedTargetingOptionsService) Get(advertiserId int64, targetingType string, assignedTargetingOptionId string) *AdvertisersTargetingTypesAssignedTargetingOptionsGetCall {
	c := &AdvertisersTargetingTypesAssignedTargetingOptionsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.targetingType = targetingType
	c.assignedTargetingOptionId = assignedTargetingOptionId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsGetCall) Fields(s ...googleapi.Field) *AdvertisersTargetingTypesAssignedTargetingOptionsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsGetCall) IfNoneMatch(entityTag string) *AdvertisersTargetingTypesAssignedTargetingOptionsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsGetCall) Context(ctx context.Context) *AdvertisersTargetingTypesAssignedTargetingOptionsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersTargetingTypesAssignedTargetingOptionsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/targetingTypes/{+targetingType}/assignedTargetingOptions/{+assignedTargetingOptionId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":              strconv.FormatInt(c.advertiserId, 10),
		"targetingType":             c.targetingType,
		"assignedTargetingOptionId": c.assignedTargetingOptionId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.targetingTypes.assignedTargetingOptions.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.targetingTypes.assignedTargetingOptions.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *AssignedTargetingOption.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 *AdvertisersTargetingTypesAssignedTargetingOptionsGetCall) Do(opts ...googleapi.CallOption) (*AssignedTargetingOption, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &AssignedTargetingOption{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.targetingTypes.assignedTargetingOptions.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists the targeting options assigned to an advertiser.
//
//   - advertiserId: The ID of the advertiser.
//   - targetingType: Identifies the type of assigned targeting options to list.
//     Supported targeting types: * `TARGETING_TYPE_CHANNEL` *
//     `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` *
//     `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` *
//     `TARGETING_TYPE_YOUTUBE_VIDEO` * `TARGETING_TYPE_YOUTUBE_CHANNEL` *
//     `TARGETING_TYPE_KEYWORD` * `TARGETING_TYPE_CONTENT_THEME_EXCLUSION`.
func (r *AdvertisersTargetingTypesAssignedTargetingOptionsService) List(advertiserId int64, targetingType string) *AdvertisersTargetingTypesAssignedTargetingOptionsListCall {
	c := &AdvertisersTargetingTypesAssignedTargetingOptionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.advertiserId = advertiserId
	c.targetingType = targetingType
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by assigned
// targeting option fields. Supported syntax: * Filter expressions are made up
// of one or more restrictions. * Restrictions can be combined by the `OR`
// logical operator. * A restriction has the form of `{field} {operator}
// {value}`. * All fields must use the `EQUALS (=)` operator. Supported fields:
// * `assignedTargetingOptionId` Examples: * `AssignedTargetingOption` with ID
// 123456: `assignedTargetingOptionId="123456" The length of this field should
// be no more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsListCall) Filter(filter string) *AdvertisersTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `assignedTargetingOptionId` (default) The
// default sorting order is ascending. To specify descending order for a field,
// a suffix "desc" should be added to the field name. Example:
// `assignedTargetingOptionId desc`.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsListCall) OrderBy(orderBy string) *AdvertisersTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `5000`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsListCall) PageSize(pageSize int64) *AdvertisersTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to
// `ListAdvertiserAssignedTargetingOptions` method. If not specified, the first
// page of results will be returned.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsListCall) PageToken(pageToken string) *AdvertisersTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsListCall) Fields(s ...googleapi.Field) *AdvertisersTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsListCall) IfNoneMatch(entityTag string) *AdvertisersTargetingTypesAssignedTargetingOptionsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsListCall) Context(ctx context.Context) *AdvertisersTargetingTypesAssignedTargetingOptionsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *AdvertisersTargetingTypesAssignedTargetingOptionsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/advertisers/{+advertiserId}/targetingTypes/{+targetingType}/assignedTargetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"advertiserId":  strconv.FormatInt(c.advertiserId, 10),
		"targetingType": c.targetingType,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.advertisers.targetingTypes.assignedTargetingOptions.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.advertisers.targetingTypes.assignedTargetingOptions.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListAdvertiserAssignedTargetingOptionsResponse.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 *AdvertisersTargetingTypesAssignedTargetingOptionsListCall) Do(opts ...googleapi.CallOption) (*ListAdvertiserAssignedTargetingOptionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListAdvertiserAssignedTargetingOptionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.advertisers.targetingTypes.assignedTargetingOptions.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *AdvertisersTargetingTypesAssignedTargetingOptionsListCall) Pages(ctx context.Context, f func(*ListAdvertiserAssignedTargetingOptionsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

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

// Get: Gets a combined audience.
//
// - combinedAudienceId: The ID of the combined audience to fetch.
func (r *CombinedAudiencesService) Get(combinedAudienceId int64) *CombinedAudiencesGetCall {
	c := &CombinedAudiencesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.combinedAudienceId = combinedAudienceId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that has access to the fetched combined audience.
func (c *CombinedAudiencesGetCall) AdvertiserId(advertiserId int64) *CombinedAudiencesGetCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that has access to the fetched combined audience.
func (c *CombinedAudiencesGetCall) PartnerId(partnerId int64) *CombinedAudiencesGetCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CombinedAudiencesGetCall) Fields(s ...googleapi.Field) *CombinedAudiencesGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *CombinedAudiencesGetCall) IfNoneMatch(entityTag string) *CombinedAudiencesGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CombinedAudiencesGetCall) Context(ctx context.Context) *CombinedAudiencesGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CombinedAudiencesGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CombinedAudiencesGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/combinedAudiences/{+combinedAudienceId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"combinedAudienceId": strconv.FormatInt(c.combinedAudienceId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.combinedAudiences.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.combinedAudiences.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *CombinedAudience.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 *CombinedAudiencesGetCall) Do(opts ...googleapi.CallOption) (*CombinedAudience, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &CombinedAudience{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.combinedAudiences.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists combined audiences. The order is defined by the order_by
// parameter.
func (r *CombinedAudiencesService) List() *CombinedAudiencesListCall {
	c := &CombinedAudiencesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that has access to the fetched combined audiences.
func (c *CombinedAudiencesListCall) AdvertiserId(advertiserId int64) *CombinedAudiencesListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by combined
// audience fields. Supported syntax: * Filter expressions for combined
// audiences can only contain at most one restriction. * A restriction has the
// form of `{field} {operator} {value}`. * All fields must use the `HAS (:)`
// operator. Supported fields: * `displayName` Examples: * All combined
// audiences for which the display name contains "Google": `displayName :
// "Google". The length of this field should be no more than 500 characters.
// Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *CombinedAudiencesListCall) Filter(filter string) *CombinedAudiencesListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `combinedAudienceId` (default) *
// `displayName` The default sorting order is ascending. To specify descending
// order for a field, a suffix "desc" should be added to the field name.
// Example: `displayName desc`.
func (c *CombinedAudiencesListCall) OrderBy(orderBy string) *CombinedAudiencesListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *CombinedAudiencesListCall) PageSize(pageSize int64) *CombinedAudiencesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListCombinedAudiences`
// method. If not specified, the first page of results will be returned.
func (c *CombinedAudiencesListCall) PageToken(pageToken string) *CombinedAudiencesListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that has access to the fetched combined audiences.
func (c *CombinedAudiencesListCall) PartnerId(partnerId int64) *CombinedAudiencesListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CombinedAudiencesListCall) Fields(s ...googleapi.Field) *CombinedAudiencesListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *CombinedAudiencesListCall) IfNoneMatch(entityTag string) *CombinedAudiencesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CombinedAudiencesListCall) Context(ctx context.Context) *CombinedAudiencesListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CombinedAudiencesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CombinedAudiencesListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/combinedAudiences")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.combinedAudiences.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.combinedAudiences.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListCombinedAudiencesResponse.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 *CombinedAudiencesListCall) Do(opts ...googleapi.CallOption) (*ListCombinedAudiencesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListCombinedAudiencesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.combinedAudiences.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *CombinedAudiencesListCall) Pages(ctx context.Context, f func(*ListCombinedAudiencesResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type CustomBiddingAlgorithmsCreateCall struct {
	s                      *Service
	custombiddingalgorithm *CustomBiddingAlgorithm
	urlParams_             gensupport.URLParams
	ctx_                   context.Context
	header_                http.Header
}

// Create: Creates a new custom bidding algorithm. Returns the newly created
// custom bidding algorithm if successful.
func (r *CustomBiddingAlgorithmsService) Create(custombiddingalgorithm *CustomBiddingAlgorithm) *CustomBiddingAlgorithmsCreateCall {
	c := &CustomBiddingAlgorithmsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.custombiddingalgorithm = custombiddingalgorithm
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomBiddingAlgorithmsCreateCall) Fields(s ...googleapi.Field) *CustomBiddingAlgorithmsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomBiddingAlgorithmsCreateCall) Context(ctx context.Context) *CustomBiddingAlgorithmsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomBiddingAlgorithmsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomBiddingAlgorithmsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.custombiddingalgorithm)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customBiddingAlgorithms")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customBiddingAlgorithms.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *CustomBiddingAlgorithm.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 *CustomBiddingAlgorithmsCreateCall) Do(opts ...googleapi.CallOption) (*CustomBiddingAlgorithm, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &CustomBiddingAlgorithm{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a custom bidding algorithm.
//
// - customBiddingAlgorithmId: The ID of the custom bidding algorithm to fetch.
func (r *CustomBiddingAlgorithmsService) Get(customBiddingAlgorithmId int64) *CustomBiddingAlgorithmsGetCall {
	c := &CustomBiddingAlgorithmsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.customBiddingAlgorithmId = customBiddingAlgorithmId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the DV360
// partner that has access to the custom bidding algorithm.
func (c *CustomBiddingAlgorithmsGetCall) AdvertiserId(advertiserId int64) *CustomBiddingAlgorithmsGetCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the DV360
// partner that has access to the custom bidding algorithm.
func (c *CustomBiddingAlgorithmsGetCall) PartnerId(partnerId int64) *CustomBiddingAlgorithmsGetCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomBiddingAlgorithmsGetCall) Fields(s ...googleapi.Field) *CustomBiddingAlgorithmsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *CustomBiddingAlgorithmsGetCall) IfNoneMatch(entityTag string) *CustomBiddingAlgorithmsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomBiddingAlgorithmsGetCall) Context(ctx context.Context) *CustomBiddingAlgorithmsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomBiddingAlgorithmsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomBiddingAlgorithmsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customBiddingAlgorithms/{+customBiddingAlgorithmId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"customBiddingAlgorithmId": strconv.FormatInt(c.customBiddingAlgorithmId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customBiddingAlgorithms.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *CustomBiddingAlgorithm.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 *CustomBiddingAlgorithmsGetCall) Do(opts ...googleapi.CallOption) (*CustomBiddingAlgorithm, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &CustomBiddingAlgorithm{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists custom bidding algorithms that are accessible to the current
// user and can be used in bidding stratgies. The order is defined by the
// order_by parameter.
func (r *CustomBiddingAlgorithmsService) List() *CustomBiddingAlgorithmsListCall {
	c := &CustomBiddingAlgorithmsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the DV360
// advertiser that has access to the custom bidding algorithm.
func (c *CustomBiddingAlgorithmsListCall) AdvertiserId(advertiserId int64) *CustomBiddingAlgorithmsListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by custom
// bidding algorithm fields. Supported syntax: * Filter expressions are made up
// of one or more restrictions. * Restrictions can be combined by `AND`. A
// sequence of restrictions implicitly uses `AND`. * A restriction has the form
// of `{field} {operator} {value}`. * The `customBiddingAlgorithmType` field
// must use the `EQUALS (=)` operator. * The `displayName` field must use the
// `HAS (:)` operator. Supported fields: * `customBiddingAlgorithmType` *
// `displayName` Examples: * All custom bidding algorithms for which the
// display name contains "politics": `displayName:"politics". * All custom
// bidding algorithms for which the type is "SCRIPT_BASED":
// `customBiddingAlgorithmType=SCRIPT_BASED` The length of this field should be
// no more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *CustomBiddingAlgorithmsListCall) Filter(filter string) *CustomBiddingAlgorithmsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `displayName` (default) The default sorting
// order is ascending. To specify descending order for a field, a suffix "desc"
// should be added to the field name. Example: `displayName desc`.
func (c *CustomBiddingAlgorithmsListCall) OrderBy(orderBy string) *CustomBiddingAlgorithmsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *CustomBiddingAlgorithmsListCall) PageSize(pageSize int64) *CustomBiddingAlgorithmsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to
// `ListCustomBiddingAlgorithms` method. If not specified, the first page of
// results will be returned.
func (c *CustomBiddingAlgorithmsListCall) PageToken(pageToken string) *CustomBiddingAlgorithmsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the DV360
// partner that has access to the custom bidding algorithm.
func (c *CustomBiddingAlgorithmsListCall) PartnerId(partnerId int64) *CustomBiddingAlgorithmsListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomBiddingAlgorithmsListCall) Fields(s ...googleapi.Field) *CustomBiddingAlgorithmsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *CustomBiddingAlgorithmsListCall) IfNoneMatch(entityTag string) *CustomBiddingAlgorithmsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomBiddingAlgorithmsListCall) Context(ctx context.Context) *CustomBiddingAlgorithmsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomBiddingAlgorithmsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomBiddingAlgorithmsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customBiddingAlgorithms")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customBiddingAlgorithms.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListCustomBiddingAlgorithmsResponse.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 *CustomBiddingAlgorithmsListCall) Do(opts ...googleapi.CallOption) (*ListCustomBiddingAlgorithmsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListCustomBiddingAlgorithmsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *CustomBiddingAlgorithmsListCall) Pages(ctx context.Context, f func(*ListCustomBiddingAlgorithmsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type CustomBiddingAlgorithmsPatchCall struct {
	s                        *Service
	customBiddingAlgorithmId int64
	custombiddingalgorithm   *CustomBiddingAlgorithm
	urlParams_               gensupport.URLParams
	ctx_                     context.Context
	header_                  http.Header
}

// Patch: Updates an existing custom bidding algorithm. Returns the updated
// custom bidding algorithm if successful. Requests updating a custom bidding
// algorithm assigned to a line item will return an error.
//
//   - customBiddingAlgorithmId: Output only. The unique ID of the custom bidding
//     algorithm. Assigned by the system.
func (r *CustomBiddingAlgorithmsService) Patch(customBiddingAlgorithmId int64, custombiddingalgorithm *CustomBiddingAlgorithm) *CustomBiddingAlgorithmsPatchCall {
	c := &CustomBiddingAlgorithmsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.customBiddingAlgorithmId = customBiddingAlgorithmId
	c.custombiddingalgorithm = custombiddingalgorithm
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *CustomBiddingAlgorithmsPatchCall) UpdateMask(updateMask string) *CustomBiddingAlgorithmsPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomBiddingAlgorithmsPatchCall) Fields(s ...googleapi.Field) *CustomBiddingAlgorithmsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomBiddingAlgorithmsPatchCall) Context(ctx context.Context) *CustomBiddingAlgorithmsPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomBiddingAlgorithmsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomBiddingAlgorithmsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.custombiddingalgorithm)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customBiddingAlgorithms/{+customBiddingAlgorithmId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"customBiddingAlgorithmId": strconv.FormatInt(c.customBiddingAlgorithmId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customBiddingAlgorithms.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *CustomBiddingAlgorithm.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 *CustomBiddingAlgorithmsPatchCall) Do(opts ...googleapi.CallOption) (*CustomBiddingAlgorithm, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &CustomBiddingAlgorithm{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// UploadRules: Creates a rules reference object for an AlgorithmRules file.
// The resulting reference object provides a resource path where the
// AlgorithmRules file should be uploaded. This reference object should be
// included when creating a new CustomBiddingAlgorithmRules resource.
//
//   - customBiddingAlgorithmId: The ID of the custom bidding algorithm that owns
//     the rules resource.
func (r *CustomBiddingAlgorithmsService) UploadRules(customBiddingAlgorithmId int64) *CustomBiddingAlgorithmsUploadRulesCall {
	c := &CustomBiddingAlgorithmsUploadRulesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.customBiddingAlgorithmId = customBiddingAlgorithmId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the parent custom bidding algorithm.
func (c *CustomBiddingAlgorithmsUploadRulesCall) AdvertiserId(advertiserId int64) *CustomBiddingAlgorithmsUploadRulesCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the parent custom bidding algorithm.
func (c *CustomBiddingAlgorithmsUploadRulesCall) PartnerId(partnerId int64) *CustomBiddingAlgorithmsUploadRulesCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomBiddingAlgorithmsUploadRulesCall) Fields(s ...googleapi.Field) *CustomBiddingAlgorithmsUploadRulesCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *CustomBiddingAlgorithmsUploadRulesCall) IfNoneMatch(entityTag string) *CustomBiddingAlgorithmsUploadRulesCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomBiddingAlgorithmsUploadRulesCall) Context(ctx context.Context) *CustomBiddingAlgorithmsUploadRulesCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomBiddingAlgorithmsUploadRulesCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomBiddingAlgorithmsUploadRulesCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customBiddingAlgorithms/{+customBiddingAlgorithmId}:uploadRules")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"customBiddingAlgorithmId": strconv.FormatInt(c.customBiddingAlgorithmId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.uploadRules", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customBiddingAlgorithms.uploadRules" call.
// Any non-2xx status code is an error. Response headers are in either
// *CustomBiddingAlgorithmRulesRef.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 *CustomBiddingAlgorithmsUploadRulesCall) Do(opts ...googleapi.CallOption) (*CustomBiddingAlgorithmRulesRef, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &CustomBiddingAlgorithmRulesRef{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.uploadRules", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// UploadScript: Creates a custom bidding script reference object for a script
// file. The resulting reference object provides a resource path to which the
// script file should be uploaded. This reference object should be included in
// when creating a new custom bidding script object.
//
//   - customBiddingAlgorithmId: The ID of the custom bidding algorithm owns the
//     script.
func (r *CustomBiddingAlgorithmsService) UploadScript(customBiddingAlgorithmId int64) *CustomBiddingAlgorithmsUploadScriptCall {
	c := &CustomBiddingAlgorithmsUploadScriptCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.customBiddingAlgorithmId = customBiddingAlgorithmId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the parent custom bidding algorithm.
func (c *CustomBiddingAlgorithmsUploadScriptCall) AdvertiserId(advertiserId int64) *CustomBiddingAlgorithmsUploadScriptCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the parent custom bidding algorithm. Only this partner will have
// write access to this custom bidding script.
func (c *CustomBiddingAlgorithmsUploadScriptCall) PartnerId(partnerId int64) *CustomBiddingAlgorithmsUploadScriptCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomBiddingAlgorithmsUploadScriptCall) Fields(s ...googleapi.Field) *CustomBiddingAlgorithmsUploadScriptCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *CustomBiddingAlgorithmsUploadScriptCall) IfNoneMatch(entityTag string) *CustomBiddingAlgorithmsUploadScriptCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomBiddingAlgorithmsUploadScriptCall) Context(ctx context.Context) *CustomBiddingAlgorithmsUploadScriptCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomBiddingAlgorithmsUploadScriptCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomBiddingAlgorithmsUploadScriptCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customBiddingAlgorithms/{+customBiddingAlgorithmId}:uploadScript")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"customBiddingAlgorithmId": strconv.FormatInt(c.customBiddingAlgorithmId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.uploadScript", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customBiddingAlgorithms.uploadScript" call.
// Any non-2xx status code is an error. Response headers are in either
// *CustomBiddingScriptRef.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 *CustomBiddingAlgorithmsUploadScriptCall) Do(opts ...googleapi.CallOption) (*CustomBiddingScriptRef, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &CustomBiddingScriptRef{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.uploadScript", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type CustomBiddingAlgorithmsRulesCreateCall struct {
	s                           *Service
	customBiddingAlgorithmId    int64
	custombiddingalgorithmrules *CustomBiddingAlgorithmRules
	urlParams_                  gensupport.URLParams
	ctx_                        context.Context
	header_                     http.Header
}

// Create: Creates a new rules resource. Returns the newly created rules
// resource if successful. Requests creating a custom bidding rules resource
// under an algorithm assigned to a line item will return an error.
//
//   - customBiddingAlgorithmId: The ID of the custom bidding algorithm that owns
//     the rules resource.
func (r *CustomBiddingAlgorithmsRulesService) Create(customBiddingAlgorithmId int64, custombiddingalgorithmrules *CustomBiddingAlgorithmRules) *CustomBiddingAlgorithmsRulesCreateCall {
	c := &CustomBiddingAlgorithmsRulesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.customBiddingAlgorithmId = customBiddingAlgorithmId
	c.custombiddingalgorithmrules = custombiddingalgorithmrules
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the parent custom bidding algorithm.
func (c *CustomBiddingAlgorithmsRulesCreateCall) AdvertiserId(advertiserId int64) *CustomBiddingAlgorithmsRulesCreateCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the parent custom bidding algorithm. Only this partner will have
// write access to this rules resource.
func (c *CustomBiddingAlgorithmsRulesCreateCall) PartnerId(partnerId int64) *CustomBiddingAlgorithmsRulesCreateCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomBiddingAlgorithmsRulesCreateCall) Fields(s ...googleapi.Field) *CustomBiddingAlgorithmsRulesCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomBiddingAlgorithmsRulesCreateCall) Context(ctx context.Context) *CustomBiddingAlgorithmsRulesCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomBiddingAlgorithmsRulesCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomBiddingAlgorithmsRulesCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.custombiddingalgorithmrules)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customBiddingAlgorithms/{+customBiddingAlgorithmId}/rules")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"customBiddingAlgorithmId": strconv.FormatInt(c.customBiddingAlgorithmId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.rules.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customBiddingAlgorithms.rules.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *CustomBiddingAlgorithmRules.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 *CustomBiddingAlgorithmsRulesCreateCall) Do(opts ...googleapi.CallOption) (*CustomBiddingAlgorithmRules, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &CustomBiddingAlgorithmRules{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.rules.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Retrieves a rules resource.
//
//   - customBiddingAlgorithmId: The ID of the custom bidding algorithm that owns
//     the rules resource.
//   - customBiddingAlgorithmRulesId: The ID of the rules resource to fetch.
func (r *CustomBiddingAlgorithmsRulesService) Get(customBiddingAlgorithmId int64, customBiddingAlgorithmRulesId int64) *CustomBiddingAlgorithmsRulesGetCall {
	c := &CustomBiddingAlgorithmsRulesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.customBiddingAlgorithmId = customBiddingAlgorithmId
	c.customBiddingAlgorithmRulesId = customBiddingAlgorithmRulesId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the parent custom bidding algorithm.
func (c *CustomBiddingAlgorithmsRulesGetCall) AdvertiserId(advertiserId int64) *CustomBiddingAlgorithmsRulesGetCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the parent custom bidding algorithm.
func (c *CustomBiddingAlgorithmsRulesGetCall) PartnerId(partnerId int64) *CustomBiddingAlgorithmsRulesGetCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomBiddingAlgorithmsRulesGetCall) Fields(s ...googleapi.Field) *CustomBiddingAlgorithmsRulesGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *CustomBiddingAlgorithmsRulesGetCall) IfNoneMatch(entityTag string) *CustomBiddingAlgorithmsRulesGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomBiddingAlgorithmsRulesGetCall) Context(ctx context.Context) *CustomBiddingAlgorithmsRulesGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomBiddingAlgorithmsRulesGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomBiddingAlgorithmsRulesGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customBiddingAlgorithms/{+customBiddingAlgorithmId}/rules/{+customBiddingAlgorithmRulesId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"customBiddingAlgorithmId":      strconv.FormatInt(c.customBiddingAlgorithmId, 10),
		"customBiddingAlgorithmRulesId": strconv.FormatInt(c.customBiddingAlgorithmRulesId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.rules.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customBiddingAlgorithms.rules.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *CustomBiddingAlgorithmRules.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 *CustomBiddingAlgorithmsRulesGetCall) Do(opts ...googleapi.CallOption) (*CustomBiddingAlgorithmRules, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &CustomBiddingAlgorithmRules{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.rules.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists rules resources that belong to the given algorithm. The order is
// defined by the order_by parameter.
//
//   - customBiddingAlgorithmId: The ID of the custom bidding algorithm that owns
//     the rules resource.
func (r *CustomBiddingAlgorithmsRulesService) List(customBiddingAlgorithmId int64) *CustomBiddingAlgorithmsRulesListCall {
	c := &CustomBiddingAlgorithmsRulesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.customBiddingAlgorithmId = customBiddingAlgorithmId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the parent custom bidding algorithm.
func (c *CustomBiddingAlgorithmsRulesListCall) AdvertiserId(advertiserId int64) *CustomBiddingAlgorithmsRulesListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `createTime desc` (default) The default
// sorting order is descending. To specify ascending order for a field, the
// suffix "desc" should be removed. Example: `createTime`.
func (c *CustomBiddingAlgorithmsRulesListCall) OrderBy(orderBy string) *CustomBiddingAlgorithmsRulesListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *CustomBiddingAlgorithmsRulesListCall) PageSize(pageSize int64) *CustomBiddingAlgorithmsRulesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to
// `ListCustomBiddingAlgorithmRules` method. If not specified, the first page
// of results will be returned.
func (c *CustomBiddingAlgorithmsRulesListCall) PageToken(pageToken string) *CustomBiddingAlgorithmsRulesListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the parent custom bidding algorithm.
func (c *CustomBiddingAlgorithmsRulesListCall) PartnerId(partnerId int64) *CustomBiddingAlgorithmsRulesListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomBiddingAlgorithmsRulesListCall) Fields(s ...googleapi.Field) *CustomBiddingAlgorithmsRulesListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *CustomBiddingAlgorithmsRulesListCall) IfNoneMatch(entityTag string) *CustomBiddingAlgorithmsRulesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomBiddingAlgorithmsRulesListCall) Context(ctx context.Context) *CustomBiddingAlgorithmsRulesListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomBiddingAlgorithmsRulesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomBiddingAlgorithmsRulesListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customBiddingAlgorithms/{+customBiddingAlgorithmId}/rules")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"customBiddingAlgorithmId": strconv.FormatInt(c.customBiddingAlgorithmId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.rules.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customBiddingAlgorithms.rules.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListCustomBiddingAlgorithmRulesResponse.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 *CustomBiddingAlgorithmsRulesListCall) Do(opts ...googleapi.CallOption) (*ListCustomBiddingAlgorithmRulesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListCustomBiddingAlgorithmRulesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.rules.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *CustomBiddingAlgorithmsRulesListCall) Pages(ctx context.Context, f func(*ListCustomBiddingAlgorithmRulesResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type CustomBiddingAlgorithmsScriptsCreateCall struct {
	s                        *Service
	customBiddingAlgorithmId int64
	custombiddingscript      *CustomBiddingScript
	urlParams_               gensupport.URLParams
	ctx_                     context.Context
	header_                  http.Header
}

// Create: Creates a new custom bidding script. Returns the newly created
// script if successful. Requests creating a custom bidding script under an
// algorithm assigned to a line item will return an error.
//
//   - customBiddingAlgorithmId: The ID of the custom bidding algorithm that owns
//     the script.
func (r *CustomBiddingAlgorithmsScriptsService) Create(customBiddingAlgorithmId int64, custombiddingscript *CustomBiddingScript) *CustomBiddingAlgorithmsScriptsCreateCall {
	c := &CustomBiddingAlgorithmsScriptsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.customBiddingAlgorithmId = customBiddingAlgorithmId
	c.custombiddingscript = custombiddingscript
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the parent custom bidding algorithm.
func (c *CustomBiddingAlgorithmsScriptsCreateCall) AdvertiserId(advertiserId int64) *CustomBiddingAlgorithmsScriptsCreateCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the parent custom bidding algorithm. Only this partner will have
// write access to this custom bidding script.
func (c *CustomBiddingAlgorithmsScriptsCreateCall) PartnerId(partnerId int64) *CustomBiddingAlgorithmsScriptsCreateCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomBiddingAlgorithmsScriptsCreateCall) Fields(s ...googleapi.Field) *CustomBiddingAlgorithmsScriptsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomBiddingAlgorithmsScriptsCreateCall) Context(ctx context.Context) *CustomBiddingAlgorithmsScriptsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomBiddingAlgorithmsScriptsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomBiddingAlgorithmsScriptsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.custombiddingscript)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customBiddingAlgorithms/{+customBiddingAlgorithmId}/scripts")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"customBiddingAlgorithmId": strconv.FormatInt(c.customBiddingAlgorithmId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.scripts.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customBiddingAlgorithms.scripts.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *CustomBiddingScript.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 *CustomBiddingAlgorithmsScriptsCreateCall) Do(opts ...googleapi.CallOption) (*CustomBiddingScript, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &CustomBiddingScript{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.scripts.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a custom bidding script.
//
//   - customBiddingAlgorithmId: The ID of the custom bidding algorithm owns the
//     script.
//   - customBiddingScriptId: The ID of the custom bidding script to fetch.
func (r *CustomBiddingAlgorithmsScriptsService) Get(customBiddingAlgorithmId int64, customBiddingScriptId int64) *CustomBiddingAlgorithmsScriptsGetCall {
	c := &CustomBiddingAlgorithmsScriptsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.customBiddingAlgorithmId = customBiddingAlgorithmId
	c.customBiddingScriptId = customBiddingScriptId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the parent custom bidding algorithm.
func (c *CustomBiddingAlgorithmsScriptsGetCall) AdvertiserId(advertiserId int64) *CustomBiddingAlgorithmsScriptsGetCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the parent custom bidding algorithm. Only this partner will have
// write access to this custom bidding script.
func (c *CustomBiddingAlgorithmsScriptsGetCall) PartnerId(partnerId int64) *CustomBiddingAlgorithmsScriptsGetCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomBiddingAlgorithmsScriptsGetCall) Fields(s ...googleapi.Field) *CustomBiddingAlgorithmsScriptsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *CustomBiddingAlgorithmsScriptsGetCall) IfNoneMatch(entityTag string) *CustomBiddingAlgorithmsScriptsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomBiddingAlgorithmsScriptsGetCall) Context(ctx context.Context) *CustomBiddingAlgorithmsScriptsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomBiddingAlgorithmsScriptsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomBiddingAlgorithmsScriptsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customBiddingAlgorithms/{+customBiddingAlgorithmId}/scripts/{+customBiddingScriptId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"customBiddingAlgorithmId": strconv.FormatInt(c.customBiddingAlgorithmId, 10),
		"customBiddingScriptId":    strconv.FormatInt(c.customBiddingScriptId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.scripts.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customBiddingAlgorithms.scripts.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *CustomBiddingScript.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 *CustomBiddingAlgorithmsScriptsGetCall) Do(opts ...googleapi.CallOption) (*CustomBiddingScript, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &CustomBiddingScript{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.scripts.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists custom bidding scripts that belong to the given algorithm. The
// order is defined by the order_by parameter.
//
//   - customBiddingAlgorithmId: The ID of the custom bidding algorithm owns the
//     script.
func (r *CustomBiddingAlgorithmsScriptsService) List(customBiddingAlgorithmId int64) *CustomBiddingAlgorithmsScriptsListCall {
	c := &CustomBiddingAlgorithmsScriptsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.customBiddingAlgorithmId = customBiddingAlgorithmId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the parent custom bidding algorithm.
func (c *CustomBiddingAlgorithmsScriptsListCall) AdvertiserId(advertiserId int64) *CustomBiddingAlgorithmsScriptsListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `createTime desc` (default) The default
// sorting order is descending. To specify ascending order for a field, the
// suffix "desc" should be removed. Example: `createTime`.
func (c *CustomBiddingAlgorithmsScriptsListCall) OrderBy(orderBy string) *CustomBiddingAlgorithmsScriptsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *CustomBiddingAlgorithmsScriptsListCall) PageSize(pageSize int64) *CustomBiddingAlgorithmsScriptsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to
// `ListCustomBiddingScripts` method. If not specified, the first page of
// results will be returned.
func (c *CustomBiddingAlgorithmsScriptsListCall) PageToken(pageToken string) *CustomBiddingAlgorithmsScriptsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the parent custom bidding algorithm. Only this partner will have
// write access to this custom bidding script.
func (c *CustomBiddingAlgorithmsScriptsListCall) PartnerId(partnerId int64) *CustomBiddingAlgorithmsScriptsListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomBiddingAlgorithmsScriptsListCall) Fields(s ...googleapi.Field) *CustomBiddingAlgorithmsScriptsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *CustomBiddingAlgorithmsScriptsListCall) IfNoneMatch(entityTag string) *CustomBiddingAlgorithmsScriptsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomBiddingAlgorithmsScriptsListCall) Context(ctx context.Context) *CustomBiddingAlgorithmsScriptsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomBiddingAlgorithmsScriptsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomBiddingAlgorithmsScriptsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customBiddingAlgorithms/{+customBiddingAlgorithmId}/scripts")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"customBiddingAlgorithmId": strconv.FormatInt(c.customBiddingAlgorithmId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.scripts.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customBiddingAlgorithms.scripts.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListCustomBiddingScriptsResponse.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 *CustomBiddingAlgorithmsScriptsListCall) Do(opts ...googleapi.CallOption) (*ListCustomBiddingScriptsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListCustomBiddingScriptsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customBiddingAlgorithms.scripts.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *CustomBiddingAlgorithmsScriptsListCall) Pages(ctx context.Context, f func(*ListCustomBiddingScriptsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

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

// Get: Gets a custom list.
//
// - customListId: The ID of the custom list to fetch.
func (r *CustomListsService) Get(customListId int64) *CustomListsGetCall {
	c := &CustomListsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.customListId = customListId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the DV360
// advertiser that has access to the fetched custom lists.
func (c *CustomListsGetCall) AdvertiserId(advertiserId int64) *CustomListsGetCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomListsGetCall) Fields(s ...googleapi.Field) *CustomListsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *CustomListsGetCall) IfNoneMatch(entityTag string) *CustomListsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomListsGetCall) Context(ctx context.Context) *CustomListsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomListsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomListsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customLists/{+customListId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"customListId": strconv.FormatInt(c.customListId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customLists.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customLists.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *CustomList.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 *CustomListsGetCall) Do(opts ...googleapi.CallOption) (*CustomList, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &CustomList{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customLists.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists custom lists. The order is defined by the order_by parameter.
func (r *CustomListsService) List() *CustomListsListCall {
	c := &CustomListsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the DV360
// advertiser that has access to the fetched custom lists.
func (c *CustomListsListCall) AdvertiserId(advertiserId int64) *CustomListsListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by custom list
// fields. Supported syntax: * Filter expressions for custom lists can only
// contain at most one restriction. * A restriction has the form of `{field}
// {operator} {value}`. * All fields must use the `HAS (:)` operator. Supported
// fields: * `displayName` Examples: * All custom lists for which the display
// name contains "Google": `displayName:"Google". The length of this field
// should be no more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *CustomListsListCall) Filter(filter string) *CustomListsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `customListId` (default) * `displayName` The
// default sorting order is ascending. To specify descending order for a field,
// a suffix "desc" should be added to the field name. Example: `displayName
// desc`.
func (c *CustomListsListCall) OrderBy(orderBy string) *CustomListsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *CustomListsListCall) PageSize(pageSize int64) *CustomListsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListCustomLists` method.
// If not specified, the first page of results will be returned.
func (c *CustomListsListCall) PageToken(pageToken string) *CustomListsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *CustomListsListCall) Fields(s ...googleapi.Field) *CustomListsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *CustomListsListCall) IfNoneMatch(entityTag string) *CustomListsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *CustomListsListCall) Context(ctx context.Context) *CustomListsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *CustomListsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *CustomListsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/customLists")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.customLists.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.customLists.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListCustomListsResponse.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 *CustomListsListCall) Do(opts ...googleapi.CallOption) (*ListCustomListsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListCustomListsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.customLists.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *CustomListsListCall) Pages(ctx context.Context, f func(*ListCustomListsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type FirstPartyAndPartnerAudiencesCreateCall struct {
	s                            *Service
	firstpartyandpartneraudience *FirstPartyAndPartnerAudience
	urlParams_                   gensupport.URLParams
	ctx_                         context.Context
	header_                      http.Header
}

// Create: Creates a FirstPartyAndPartnerAudience. Only supported for the
// following audience_type: * `CUSTOMER_MATCH_CONTACT_INFO` *
// `CUSTOMER_MATCH_DEVICE_ID`
func (r *FirstPartyAndPartnerAudiencesService) Create(firstpartyandpartneraudience *FirstPartyAndPartnerAudience) *FirstPartyAndPartnerAudiencesCreateCall {
	c := &FirstPartyAndPartnerAudiencesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.firstpartyandpartneraudience = firstpartyandpartneraudience
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": Required. The ID of
// the advertiser under whom the FirstPartyAndPartnerAudience will be created.
func (c *FirstPartyAndPartnerAudiencesCreateCall) AdvertiserId(advertiserId int64) *FirstPartyAndPartnerAudiencesCreateCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *FirstPartyAndPartnerAudiencesCreateCall) Fields(s ...googleapi.Field) *FirstPartyAndPartnerAudiencesCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *FirstPartyAndPartnerAudiencesCreateCall) Context(ctx context.Context) *FirstPartyAndPartnerAudiencesCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *FirstPartyAndPartnerAudiencesCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *FirstPartyAndPartnerAudiencesCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.firstpartyandpartneraudience)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/firstPartyAndPartnerAudiences")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.firstPartyAndPartnerAudiences.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.firstPartyAndPartnerAudiences.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *FirstPartyAndPartnerAudience.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 *FirstPartyAndPartnerAudiencesCreateCall) Do(opts ...googleapi.CallOption) (*FirstPartyAndPartnerAudience, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &FirstPartyAndPartnerAudience{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.firstPartyAndPartnerAudiences.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type FirstPartyAndPartnerAudiencesEditCustomerMatchMembersCall struct {
	s                               *Service
	firstPartyAndPartnerAudienceId  int64
	editcustomermatchmembersrequest *EditCustomerMatchMembersRequest
	urlParams_                      gensupport.URLParams
	ctx_                            context.Context
	header_                         http.Header
}

// EditCustomerMatchMembers: Updates the member list of a Customer Match
// audience. Only supported for the following audience_type: *
// `CUSTOMER_MATCH_CONTACT_INFO` * `CUSTOMER_MATCH_DEVICE_ID`
//
//   - firstPartyAndPartnerAudienceId: The ID of the Customer Match
//     FirstPartyAndPartnerAudience whose members will be edited.
func (r *FirstPartyAndPartnerAudiencesService) EditCustomerMatchMembers(firstPartyAndPartnerAudienceId int64, editcustomermatchmembersrequest *EditCustomerMatchMembersRequest) *FirstPartyAndPartnerAudiencesEditCustomerMatchMembersCall {
	c := &FirstPartyAndPartnerAudiencesEditCustomerMatchMembersCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.firstPartyAndPartnerAudienceId = firstPartyAndPartnerAudienceId
	c.editcustomermatchmembersrequest = editcustomermatchmembersrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *FirstPartyAndPartnerAudiencesEditCustomerMatchMembersCall) Fields(s ...googleapi.Field) *FirstPartyAndPartnerAudiencesEditCustomerMatchMembersCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *FirstPartyAndPartnerAudiencesEditCustomerMatchMembersCall) Context(ctx context.Context) *FirstPartyAndPartnerAudiencesEditCustomerMatchMembersCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *FirstPartyAndPartnerAudiencesEditCustomerMatchMembersCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *FirstPartyAndPartnerAudiencesEditCustomerMatchMembersCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.editcustomermatchmembersrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/firstPartyAndPartnerAudiences/{+firstPartyAndPartnerAudienceId}:editCustomerMatchMembers")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"firstPartyAndPartnerAudienceId": strconv.FormatInt(c.firstPartyAndPartnerAudienceId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.firstPartyAndPartnerAudiences.editCustomerMatchMembers", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.firstPartyAndPartnerAudiences.editCustomerMatchMembers" call.
// Any non-2xx status code is an error. Response headers are in either
// *EditCustomerMatchMembersResponse.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 *FirstPartyAndPartnerAudiencesEditCustomerMatchMembersCall) Do(opts ...googleapi.CallOption) (*EditCustomerMatchMembersResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &EditCustomerMatchMembersResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.firstPartyAndPartnerAudiences.editCustomerMatchMembers", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a first party or partner audience.
//
//   - firstPartyAndPartnerAudienceId: The ID of the first party and partner
//     audience to fetch.
func (r *FirstPartyAndPartnerAudiencesService) Get(firstPartyAndPartnerAudienceId int64) *FirstPartyAndPartnerAudiencesGetCall {
	c := &FirstPartyAndPartnerAudiencesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.firstPartyAndPartnerAudienceId = firstPartyAndPartnerAudienceId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that has access to the fetched first party and partner audience.
func (c *FirstPartyAndPartnerAudiencesGetCall) AdvertiserId(advertiserId int64) *FirstPartyAndPartnerAudiencesGetCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that has access to the fetched first party and partner audience.
func (c *FirstPartyAndPartnerAudiencesGetCall) PartnerId(partnerId int64) *FirstPartyAndPartnerAudiencesGetCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *FirstPartyAndPartnerAudiencesGetCall) Fields(s ...googleapi.Field) *FirstPartyAndPartnerAudiencesGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *FirstPartyAndPartnerAudiencesGetCall) IfNoneMatch(entityTag string) *FirstPartyAndPartnerAudiencesGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *FirstPartyAndPartnerAudiencesGetCall) Context(ctx context.Context) *FirstPartyAndPartnerAudiencesGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *FirstPartyAndPartnerAudiencesGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *FirstPartyAndPartnerAudiencesGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/firstPartyAndPartnerAudiences/{+firstPartyAndPartnerAudienceId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"firstPartyAndPartnerAudienceId": strconv.FormatInt(c.firstPartyAndPartnerAudienceId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.firstPartyAndPartnerAudiences.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.firstPartyAndPartnerAudiences.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *FirstPartyAndPartnerAudience.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 *FirstPartyAndPartnerAudiencesGetCall) Do(opts ...googleapi.CallOption) (*FirstPartyAndPartnerAudience, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &FirstPartyAndPartnerAudience{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.firstPartyAndPartnerAudiences.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists first party and partner audiences. The order is defined by the
// order_by parameter.
func (r *FirstPartyAndPartnerAudiencesService) List() *FirstPartyAndPartnerAudiencesListCall {
	c := &FirstPartyAndPartnerAudiencesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that has access to the fetched first party and partner audiences.
func (c *FirstPartyAndPartnerAudiencesListCall) AdvertiserId(advertiserId int64) *FirstPartyAndPartnerAudiencesListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by first party
// and partner audience fields. Supported syntax: * Filter expressions for
// first party and partner audiences can only contain at most one restriction.
// * A restriction has the form of `{field} {operator} {value}`. * All fields
// must use the `HAS (:)` operator. Supported fields: * `displayName` Examples:
// * All first party and partner audiences for which the display name contains
// "Google": `displayName:"Google". The length of this field should be no more
// than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *FirstPartyAndPartnerAudiencesListCall) Filter(filter string) *FirstPartyAndPartnerAudiencesListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `FirstPartyAndPartnerAudienceId` (default) *
// `displayName` The default sorting order is ascending. To specify descending
// order for a field, a suffix "desc" should be added to the field name.
// Example: `displayName desc`.
func (c *FirstPartyAndPartnerAudiencesListCall) OrderBy(orderBy string) *FirstPartyAndPartnerAudiencesListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `5000`. If unspecified, this value defaults to `5000`.
// Returns error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *FirstPartyAndPartnerAudiencesListCall) PageSize(pageSize int64) *FirstPartyAndPartnerAudiencesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to
// `ListFirstPartyAndPartnerAudiences` method. If not specified, the first page
// of results will be returned.
func (c *FirstPartyAndPartnerAudiencesListCall) PageToken(pageToken string) *FirstPartyAndPartnerAudiencesListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that has access to the fetched first party and partner audiences.
func (c *FirstPartyAndPartnerAudiencesListCall) PartnerId(partnerId int64) *FirstPartyAndPartnerAudiencesListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *FirstPartyAndPartnerAudiencesListCall) Fields(s ...googleapi.Field) *FirstPartyAndPartnerAudiencesListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *FirstPartyAndPartnerAudiencesListCall) IfNoneMatch(entityTag string) *FirstPartyAndPartnerAudiencesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *FirstPartyAndPartnerAudiencesListCall) Context(ctx context.Context) *FirstPartyAndPartnerAudiencesListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *FirstPartyAndPartnerAudiencesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *FirstPartyAndPartnerAudiencesListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/firstPartyAndPartnerAudiences")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.firstPartyAndPartnerAudiences.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.firstPartyAndPartnerAudiences.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListFirstPartyAndPartnerAudiencesResponse.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 *FirstPartyAndPartnerAudiencesListCall) Do(opts ...googleapi.CallOption) (*ListFirstPartyAndPartnerAudiencesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListFirstPartyAndPartnerAudiencesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.firstPartyAndPartnerAudiences.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *FirstPartyAndPartnerAudiencesListCall) Pages(ctx context.Context, f func(*ListFirstPartyAndPartnerAudiencesResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type FirstPartyAndPartnerAudiencesPatchCall struct {
	s                              *Service
	firstPartyAndPartnerAudienceId int64
	firstpartyandpartneraudience   *FirstPartyAndPartnerAudience
	urlParams_                     gensupport.URLParams
	ctx_                           context.Context
	header_                        http.Header
}

// Patch: Updates an existing FirstPartyAndPartnerAudience. Only supported for
// the following audience_type: * `CUSTOMER_MATCH_CONTACT_INFO` *
// `CUSTOMER_MATCH_DEVICE_ID`
//
//   - firstPartyAndPartnerAudienceId: Identifier. The unique ID of the first
//     party and partner audience. Assigned by the system.
func (r *FirstPartyAndPartnerAudiencesService) Patch(firstPartyAndPartnerAudienceId int64, firstpartyandpartneraudience *FirstPartyAndPartnerAudience) *FirstPartyAndPartnerAudiencesPatchCall {
	c := &FirstPartyAndPartnerAudiencesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.firstPartyAndPartnerAudienceId = firstPartyAndPartnerAudienceId
	c.firstpartyandpartneraudience = firstpartyandpartneraudience
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": Required. The ID of
// the owner advertiser of the updated FirstPartyAndPartnerAudience.
func (c *FirstPartyAndPartnerAudiencesPatchCall) AdvertiserId(advertiserId int64) *FirstPartyAndPartnerAudiencesPatchCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update. Updates are only supported for the following
// fields: * `displayName` * `description` * `membershipDurationDays`
func (c *FirstPartyAndPartnerAudiencesPatchCall) UpdateMask(updateMask string) *FirstPartyAndPartnerAudiencesPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *FirstPartyAndPartnerAudiencesPatchCall) Fields(s ...googleapi.Field) *FirstPartyAndPartnerAudiencesPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *FirstPartyAndPartnerAudiencesPatchCall) Context(ctx context.Context) *FirstPartyAndPartnerAudiencesPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *FirstPartyAndPartnerAudiencesPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *FirstPartyAndPartnerAudiencesPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.firstpartyandpartneraudience)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/firstPartyAndPartnerAudiences/{+firstPartyAndPartnerAudienceId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"firstPartyAndPartnerAudienceId": strconv.FormatInt(c.firstPartyAndPartnerAudienceId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.firstPartyAndPartnerAudiences.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.firstPartyAndPartnerAudiences.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *FirstPartyAndPartnerAudience.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 *FirstPartyAndPartnerAudiencesPatchCall) Do(opts ...googleapi.CallOption) (*FirstPartyAndPartnerAudience, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &FirstPartyAndPartnerAudience{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.firstPartyAndPartnerAudiences.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a Floodlight group.
//
// - floodlightGroupId: The ID of the Floodlight group to fetch.
func (r *FloodlightGroupsService) Get(floodlightGroupId int64) *FloodlightGroupsGetCall {
	c := &FloodlightGroupsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.floodlightGroupId = floodlightGroupId
	return c
}

// PartnerId sets the optional parameter "partnerId": Required. The partner
// context by which the Floodlight group is being accessed.
func (c *FloodlightGroupsGetCall) PartnerId(partnerId int64) *FloodlightGroupsGetCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *FloodlightGroupsGetCall) Fields(s ...googleapi.Field) *FloodlightGroupsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *FloodlightGroupsGetCall) IfNoneMatch(entityTag string) *FloodlightGroupsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *FloodlightGroupsGetCall) Context(ctx context.Context) *FloodlightGroupsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *FloodlightGroupsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *FloodlightGroupsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/floodlightGroups/{+floodlightGroupId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"floodlightGroupId": strconv.FormatInt(c.floodlightGroupId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.floodlightGroups.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.floodlightGroups.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *FloodlightGroup.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 *FloodlightGroupsGetCall) Do(opts ...googleapi.CallOption) (*FloodlightGroup, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &FloodlightGroup{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.floodlightGroups.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type FloodlightGroupsPatchCall struct {
	s                 *Service
	floodlightGroupId int64
	floodlightgroup   *FloodlightGroup
	urlParams_        gensupport.URLParams
	ctx_              context.Context
	header_           http.Header
}

// Patch: Updates an existing Floodlight group. Returns the updated Floodlight
// group if successful.
//
//   - floodlightGroupId: Output only. The unique ID of the Floodlight group.
//     Assigned by the system.
func (r *FloodlightGroupsService) Patch(floodlightGroupId int64, floodlightgroup *FloodlightGroup) *FloodlightGroupsPatchCall {
	c := &FloodlightGroupsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.floodlightGroupId = floodlightGroupId
	c.floodlightgroup = floodlightgroup
	return c
}

// PartnerId sets the optional parameter "partnerId": Required. The partner
// context by which the Floodlight group is being accessed.
func (c *FloodlightGroupsPatchCall) PartnerId(partnerId int64) *FloodlightGroupsPatchCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *FloodlightGroupsPatchCall) UpdateMask(updateMask string) *FloodlightGroupsPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *FloodlightGroupsPatchCall) Fields(s ...googleapi.Field) *FloodlightGroupsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *FloodlightGroupsPatchCall) Context(ctx context.Context) *FloodlightGroupsPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *FloodlightGroupsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *FloodlightGroupsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.floodlightgroup)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/floodlightGroups/{floodlightGroupId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"floodlightGroupId": strconv.FormatInt(c.floodlightGroupId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.floodlightGroups.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.floodlightGroups.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *FloodlightGroup.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 *FloodlightGroupsPatchCall) Do(opts ...googleapi.CallOption) (*FloodlightGroup, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &FloodlightGroup{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.floodlightGroups.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a Floodlight activity.
//
//   - floodlightActivityId: The ID of the Floodlight activity to fetch.
//   - floodlightGroupId: The ID of the parent Floodlight group to which the
//     requested Floodlight activity belongs.
func (r *FloodlightGroupsFloodlightActivitiesService) Get(floodlightGroupId int64, floodlightActivityId int64) *FloodlightGroupsFloodlightActivitiesGetCall {
	c := &FloodlightGroupsFloodlightActivitiesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.floodlightGroupId = floodlightGroupId
	c.floodlightActivityId = floodlightActivityId
	return c
}

// PartnerId sets the optional parameter "partnerId": Required. The ID of the
// partner through which the Floodlight activity is being accessed.
func (c *FloodlightGroupsFloodlightActivitiesGetCall) PartnerId(partnerId int64) *FloodlightGroupsFloodlightActivitiesGetCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *FloodlightGroupsFloodlightActivitiesGetCall) Fields(s ...googleapi.Field) *FloodlightGroupsFloodlightActivitiesGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *FloodlightGroupsFloodlightActivitiesGetCall) IfNoneMatch(entityTag string) *FloodlightGroupsFloodlightActivitiesGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *FloodlightGroupsFloodlightActivitiesGetCall) Context(ctx context.Context) *FloodlightGroupsFloodlightActivitiesGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *FloodlightGroupsFloodlightActivitiesGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *FloodlightGroupsFloodlightActivitiesGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/floodlightGroups/{+floodlightGroupId}/floodlightActivities/{+floodlightActivityId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"floodlightGroupId":    strconv.FormatInt(c.floodlightGroupId, 10),
		"floodlightActivityId": strconv.FormatInt(c.floodlightActivityId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.floodlightGroups.floodlightActivities.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.floodlightGroups.floodlightActivities.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *FloodlightActivity.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 *FloodlightGroupsFloodlightActivitiesGetCall) Do(opts ...googleapi.CallOption) (*FloodlightActivity, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &FloodlightActivity{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.floodlightGroups.floodlightActivities.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists Floodlight activities in a Floodlight group.
//
//   - floodlightGroupId: The ID of the parent Floodlight group to which the
//     requested Floodlight activities belong.
func (r *FloodlightGroupsFloodlightActivitiesService) List(floodlightGroupId int64) *FloodlightGroupsFloodlightActivitiesListCall {
	c := &FloodlightGroupsFloodlightActivitiesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.floodlightGroupId = floodlightGroupId
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `displayName` (default) *
// `floodlightActivityId` The default sorting order is ascending. To specify
// descending order for a field, a suffix "desc" should be added to the field
// name. Example: `displayName desc`.
func (c *FloodlightGroupsFloodlightActivitiesListCall) OrderBy(orderBy string) *FloodlightGroupsFloodlightActivitiesListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `100`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *FloodlightGroupsFloodlightActivitiesListCall) PageSize(pageSize int64) *FloodlightGroupsFloodlightActivitiesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to
// `ListFloodlightActivities` method. If not specified, the first page of
// results will be returned.
func (c *FloodlightGroupsFloodlightActivitiesListCall) PageToken(pageToken string) *FloodlightGroupsFloodlightActivitiesListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": Required. The ID of the
// partner through which the Floodlight activities are being accessed.
func (c *FloodlightGroupsFloodlightActivitiesListCall) PartnerId(partnerId int64) *FloodlightGroupsFloodlightActivitiesListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *FloodlightGroupsFloodlightActivitiesListCall) Fields(s ...googleapi.Field) *FloodlightGroupsFloodlightActivitiesListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *FloodlightGroupsFloodlightActivitiesListCall) IfNoneMatch(entityTag string) *FloodlightGroupsFloodlightActivitiesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *FloodlightGroupsFloodlightActivitiesListCall) Context(ctx context.Context) *FloodlightGroupsFloodlightActivitiesListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *FloodlightGroupsFloodlightActivitiesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *FloodlightGroupsFloodlightActivitiesListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/floodlightGroups/{+floodlightGroupId}/floodlightActivities")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"floodlightGroupId": strconv.FormatInt(c.floodlightGroupId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.floodlightGroups.floodlightActivities.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.floodlightGroups.floodlightActivities.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListFloodlightActivitiesResponse.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 *FloodlightGroupsFloodlightActivitiesListCall) Do(opts ...googleapi.CallOption) (*ListFloodlightActivitiesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListFloodlightActivitiesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.floodlightGroups.floodlightActivities.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *FloodlightGroupsFloodlightActivitiesListCall) Pages(ctx context.Context, f func(*ListFloodlightActivitiesResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

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

// Get: Gets a Google audience.
//
// - googleAudienceId: The ID of the Google audience to fetch.
func (r *GoogleAudiencesService) Get(googleAudienceId int64) *GoogleAudiencesGetCall {
	c := &GoogleAudiencesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.googleAudienceId = googleAudienceId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that has access to the fetched Google audience.
func (c *GoogleAudiencesGetCall) AdvertiserId(advertiserId int64) *GoogleAudiencesGetCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that has access to the fetched Google audience.
func (c *GoogleAudiencesGetCall) PartnerId(partnerId int64) *GoogleAudiencesGetCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *GoogleAudiencesGetCall) Fields(s ...googleapi.Field) *GoogleAudiencesGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *GoogleAudiencesGetCall) IfNoneMatch(entityTag string) *GoogleAudiencesGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *GoogleAudiencesGetCall) Context(ctx context.Context) *GoogleAudiencesGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *GoogleAudiencesGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *GoogleAudiencesGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/googleAudiences/{+googleAudienceId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"googleAudienceId": strconv.FormatInt(c.googleAudienceId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.googleAudiences.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.googleAudiences.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleAudience.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 *GoogleAudiencesGetCall) Do(opts ...googleapi.CallOption) (*GoogleAudience, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleAudience{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.googleAudiences.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists Google audiences. The order is defined by the order_by
// parameter.
func (r *GoogleAudiencesService) List() *GoogleAudiencesListCall {
	c := &GoogleAudiencesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that has access to the fetched Google audiences.
func (c *GoogleAudiencesListCall) AdvertiserId(advertiserId int64) *GoogleAudiencesListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by Google
// audience fields. Supported syntax: * Filter expressions for Google audiences
// can only contain at most one restriction. * A restriction has the form of
// `{field} {operator} {value}`. * All fields must use the `HAS (:)` operator.
// Supported fields: * `displayName` Examples: * All Google audiences for which
// the display name contains "Google": `displayName:"Google". The length of
// this field should be no more than 500 characters. Reference our filter
// `LIST` requests (/display-video/api/guides/how-tos/filters) guide for more
// information.
func (c *GoogleAudiencesListCall) Filter(filter string) *GoogleAudiencesListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `googleAudienceId` (default) * `displayName`
// The default sorting order is ascending. To specify descending order for a
// field, a suffix "desc" should be added to the field name. Example:
// `displayName desc`.
func (c *GoogleAudiencesListCall) OrderBy(orderBy string) *GoogleAudiencesListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *GoogleAudiencesListCall) PageSize(pageSize int64) *GoogleAudiencesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListGoogleAudiences`
// method. If not specified, the first page of results will be returned.
func (c *GoogleAudiencesListCall) PageToken(pageToken string) *GoogleAudiencesListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that has access to the fetched Google audiences.
func (c *GoogleAudiencesListCall) PartnerId(partnerId int64) *GoogleAudiencesListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *GoogleAudiencesListCall) Fields(s ...googleapi.Field) *GoogleAudiencesListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *GoogleAudiencesListCall) IfNoneMatch(entityTag string) *GoogleAudiencesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *GoogleAudiencesListCall) Context(ctx context.Context) *GoogleAudiencesListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *GoogleAudiencesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *GoogleAudiencesListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/googleAudiences")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.googleAudiences.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.googleAudiences.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListGoogleAudiencesResponse.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 *GoogleAudiencesListCall) Do(opts ...googleapi.CallOption) (*ListGoogleAudiencesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListGoogleAudiencesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.googleAudiences.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *GoogleAudiencesListCall) Pages(ctx context.Context, f func(*ListGoogleAudiencesResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type GuaranteedOrdersCreateCall struct {
	s               *Service
	guaranteedorder *GuaranteedOrder
	urlParams_      gensupport.URLParams
	ctx_            context.Context
	header_         http.Header
}

// Create: Creates a new guaranteed order. Returns the newly created guaranteed
// order if successful.
func (r *GuaranteedOrdersService) Create(guaranteedorder *GuaranteedOrder) *GuaranteedOrdersCreateCall {
	c := &GuaranteedOrdersCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.guaranteedorder = guaranteedorder
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that the request is being made within.
func (c *GuaranteedOrdersCreateCall) AdvertiserId(advertiserId int64) *GuaranteedOrdersCreateCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that the request is being made within.
func (c *GuaranteedOrdersCreateCall) PartnerId(partnerId int64) *GuaranteedOrdersCreateCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *GuaranteedOrdersCreateCall) Fields(s ...googleapi.Field) *GuaranteedOrdersCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *GuaranteedOrdersCreateCall) Context(ctx context.Context) *GuaranteedOrdersCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *GuaranteedOrdersCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *GuaranteedOrdersCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.guaranteedorder)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/guaranteedOrders")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.guaranteedOrders.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.guaranteedOrders.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *GuaranteedOrder.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 *GuaranteedOrdersCreateCall) Do(opts ...googleapi.CallOption) (*GuaranteedOrder, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GuaranteedOrder{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.guaranteedOrders.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type GuaranteedOrdersEditGuaranteedOrderReadAccessorsCall struct {
	s                                       *Service
	guaranteedOrderId                       string
	editguaranteedorderreadaccessorsrequest *EditGuaranteedOrderReadAccessorsRequest
	urlParams_                              gensupport.URLParams
	ctx_                                    context.Context
	header_                                 http.Header
}

// EditGuaranteedOrderReadAccessors: Edits read advertisers of a guaranteed
// order.
//
//   - guaranteedOrderId: The ID of the guaranteed order to edit. The ID is of
//     the format `{exchange}-{legacy_guaranteed_order_id}`.
func (r *GuaranteedOrdersService) EditGuaranteedOrderReadAccessors(guaranteedOrderId string, editguaranteedorderreadaccessorsrequest *EditGuaranteedOrderReadAccessorsRequest) *GuaranteedOrdersEditGuaranteedOrderReadAccessorsCall {
	c := &GuaranteedOrdersEditGuaranteedOrderReadAccessorsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.guaranteedOrderId = guaranteedOrderId
	c.editguaranteedorderreadaccessorsrequest = editguaranteedorderreadaccessorsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *GuaranteedOrdersEditGuaranteedOrderReadAccessorsCall) Fields(s ...googleapi.Field) *GuaranteedOrdersEditGuaranteedOrderReadAccessorsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *GuaranteedOrdersEditGuaranteedOrderReadAccessorsCall) Context(ctx context.Context) *GuaranteedOrdersEditGuaranteedOrderReadAccessorsCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *GuaranteedOrdersEditGuaranteedOrderReadAccessorsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *GuaranteedOrdersEditGuaranteedOrderReadAccessorsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.editguaranteedorderreadaccessorsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/guaranteedOrders/{+guaranteedOrderId}:editGuaranteedOrderReadAccessors")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"guaranteedOrderId": c.guaranteedOrderId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.guaranteedOrders.editGuaranteedOrderReadAccessors", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.guaranteedOrders.editGuaranteedOrderReadAccessors" call.
// Any non-2xx status code is an error. Response headers are in either
// *EditGuaranteedOrderReadAccessorsResponse.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 *GuaranteedOrdersEditGuaranteedOrderReadAccessorsCall) Do(opts ...googleapi.CallOption) (*EditGuaranteedOrderReadAccessorsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &EditGuaranteedOrderReadAccessorsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.guaranteedOrders.editGuaranteedOrderReadAccessors", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a guaranteed order.
//
//   - guaranteedOrderId: The ID of the guaranteed order to fetch. The ID is of
//     the format `{exchange}-{legacy_guaranteed_order_id}`.
func (r *GuaranteedOrdersService) Get(guaranteedOrderId string) *GuaranteedOrdersGetCall {
	c := &GuaranteedOrdersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.guaranteedOrderId = guaranteedOrderId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that has access to the guaranteed order.
func (c *GuaranteedOrdersGetCall) AdvertiserId(advertiserId int64) *GuaranteedOrdersGetCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that has access to the guaranteed order.
func (c *GuaranteedOrdersGetCall) PartnerId(partnerId int64) *GuaranteedOrdersGetCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *GuaranteedOrdersGetCall) Fields(s ...googleapi.Field) *GuaranteedOrdersGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *GuaranteedOrdersGetCall) IfNoneMatch(entityTag string) *GuaranteedOrdersGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *GuaranteedOrdersGetCall) Context(ctx context.Context) *GuaranteedOrdersGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *GuaranteedOrdersGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *GuaranteedOrdersGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/guaranteedOrders/{+guaranteedOrderId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"guaranteedOrderId": c.guaranteedOrderId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.guaranteedOrders.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.guaranteedOrders.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *GuaranteedOrder.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 *GuaranteedOrdersGetCall) Do(opts ...googleapi.CallOption) (*GuaranteedOrder, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GuaranteedOrder{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.guaranteedOrders.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists guaranteed orders that are accessible to the current user. The
// order is defined by the order_by parameter. If a filter by entity_status is
// not specified, guaranteed orders with entity status `ENTITY_STATUS_ARCHIVED`
// will not be included in the results.
func (r *GuaranteedOrdersService) List() *GuaranteedOrdersListCall {
	c := &GuaranteedOrdersListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that has access to the guaranteed order.
func (c *GuaranteedOrdersListCall) AdvertiserId(advertiserId int64) *GuaranteedOrdersListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by guaranteed
// order fields. * Filter expressions are made up of one or more restrictions.
// * Restrictions can be combined by `AND` or `OR` logical operators. A
// sequence of restrictions implicitly uses `AND`. * A restriction has the form
// of `{field} {operator} {value}`. * All fields must use the `EQUALS (=)`
// operator. Supported fields: * `guaranteed_order_id` * `exchange` *
// `display_name` * `status.entityStatus` Examples: * All active guaranteed
// orders: `status.entityStatus="ENTITY_STATUS_ACTIVE" * Guaranteed orders
// belonging to Google Ad Manager or Rubicon exchanges:
// `exchange="EXCHANGE_GOOGLE_AD_MANAGER" OR exchange="EXCHANGE_RUBICON" The
// length of this field should be no more than 500 characters. Reference our
// filter `LIST` requests (/display-video/api/guides/how-tos/filters) guide for
// more information.
func (c *GuaranteedOrdersListCall) Filter(filter string) *GuaranteedOrdersListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `displayName` (default) The default sorting
// order is ascending. To specify descending order for a field, a suffix "desc"
// should be added to the field name. For example, `displayName desc`.
func (c *GuaranteedOrdersListCall) OrderBy(orderBy string) *GuaranteedOrdersListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`.
func (c *GuaranteedOrdersListCall) PageSize(pageSize int64) *GuaranteedOrdersListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListGuaranteedOrders`
// method. If not specified, the first page of results will be returned.
func (c *GuaranteedOrdersListCall) PageToken(pageToken string) *GuaranteedOrdersListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that has access to the guaranteed order.
func (c *GuaranteedOrdersListCall) PartnerId(partnerId int64) *GuaranteedOrdersListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *GuaranteedOrdersListCall) Fields(s ...googleapi.Field) *GuaranteedOrdersListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *GuaranteedOrdersListCall) IfNoneMatch(entityTag string) *GuaranteedOrdersListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *GuaranteedOrdersListCall) Context(ctx context.Context) *GuaranteedOrdersListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *GuaranteedOrdersListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *GuaranteedOrdersListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/guaranteedOrders")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.guaranteedOrders.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.guaranteedOrders.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListGuaranteedOrdersResponse.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 *GuaranteedOrdersListCall) Do(opts ...googleapi.CallOption) (*ListGuaranteedOrdersResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListGuaranteedOrdersResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.guaranteedOrders.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *GuaranteedOrdersListCall) Pages(ctx context.Context, f func(*ListGuaranteedOrdersResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type GuaranteedOrdersPatchCall struct {
	s                 *Service
	guaranteedOrderId string
	guaranteedorder   *GuaranteedOrder
	urlParams_        gensupport.URLParams
	ctx_              context.Context
	header_           http.Header
}

// Patch: Updates an existing guaranteed order. Returns the updated guaranteed
// order if successful.
//
//   - guaranteedOrderId: Output only. The unique identifier of the guaranteed
//     order. The guaranteed order IDs have the format
//     `{exchange}-{legacy_guaranteed_order_id}`.
func (r *GuaranteedOrdersService) Patch(guaranteedOrderId string, guaranteedorder *GuaranteedOrder) *GuaranteedOrdersPatchCall {
	c := &GuaranteedOrdersPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.guaranteedOrderId = guaranteedOrderId
	c.guaranteedorder = guaranteedorder
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that the request is being made within.
func (c *GuaranteedOrdersPatchCall) AdvertiserId(advertiserId int64) *GuaranteedOrdersPatchCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that the request is being made within.
func (c *GuaranteedOrdersPatchCall) PartnerId(partnerId int64) *GuaranteedOrdersPatchCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *GuaranteedOrdersPatchCall) UpdateMask(updateMask string) *GuaranteedOrdersPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *GuaranteedOrdersPatchCall) Fields(s ...googleapi.Field) *GuaranteedOrdersPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *GuaranteedOrdersPatchCall) Context(ctx context.Context) *GuaranteedOrdersPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *GuaranteedOrdersPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *GuaranteedOrdersPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.guaranteedorder)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/guaranteedOrders/{+guaranteedOrderId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"guaranteedOrderId": c.guaranteedOrderId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.guaranteedOrders.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.guaranteedOrders.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *GuaranteedOrder.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 *GuaranteedOrdersPatchCall) Do(opts ...googleapi.CallOption) (*GuaranteedOrder, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GuaranteedOrder{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.guaranteedOrders.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type InventorySourceGroupsCreateCall struct {
	s                    *Service
	inventorysourcegroup *InventorySourceGroup
	urlParams_           gensupport.URLParams
	ctx_                 context.Context
	header_              http.Header
}

// Create: Creates a new inventory source group. Returns the newly created
// inventory source group if successful.
func (r *InventorySourceGroupsService) Create(inventorysourcegroup *InventorySourceGroup) *InventorySourceGroupsCreateCall {
	c := &InventorySourceGroupsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.inventorysourcegroup = inventorysourcegroup
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the inventory source group. The parent partner will not
// have access to this group.
func (c *InventorySourceGroupsCreateCall) AdvertiserId(advertiserId int64) *InventorySourceGroupsCreateCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the inventory source group. Only this partner will have write
// access to this group. Only advertisers to which this group is explicitly
// shared will have read access to this group.
func (c *InventorySourceGroupsCreateCall) PartnerId(partnerId int64) *InventorySourceGroupsCreateCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourceGroupsCreateCall) Fields(s ...googleapi.Field) *InventorySourceGroupsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourceGroupsCreateCall) Context(ctx context.Context) *InventorySourceGroupsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourceGroupsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourceGroupsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.inventorysourcegroup)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySourceGroups")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySourceGroups.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *InventorySourceGroup.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 *InventorySourceGroupsCreateCall) Do(opts ...googleapi.CallOption) (*InventorySourceGroup, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &InventorySourceGroup{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Delete: Deletes an inventory source group.
//
// - inventorySourceGroupId: The ID of the inventory source group to delete.
func (r *InventorySourceGroupsService) Delete(inventorySourceGroupId int64) *InventorySourceGroupsDeleteCall {
	c := &InventorySourceGroupsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.inventorySourceGroupId = inventorySourceGroupId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the inventory source group. The parent partner does not
// have access to this group.
func (c *InventorySourceGroupsDeleteCall) AdvertiserId(advertiserId int64) *InventorySourceGroupsDeleteCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the inventory source group. Only this partner has write access to
// this group.
func (c *InventorySourceGroupsDeleteCall) PartnerId(partnerId int64) *InventorySourceGroupsDeleteCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourceGroupsDeleteCall) Fields(s ...googleapi.Field) *InventorySourceGroupsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourceGroupsDeleteCall) Context(ctx context.Context) *InventorySourceGroupsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourceGroupsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourceGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySourceGroups/{+inventorySourceGroupId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"inventorySourceGroupId": strconv.FormatInt(c.inventorySourceGroupId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySourceGroups.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *InventorySourceGroupsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets an inventory source group.
//
// - inventorySourceGroupId: The ID of the inventory source group to fetch.
func (r *InventorySourceGroupsService) Get(inventorySourceGroupId int64) *InventorySourceGroupsGetCall {
	c := &InventorySourceGroupsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.inventorySourceGroupId = inventorySourceGroupId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that has access to the inventory source group. If an inventory
// source group is partner-owned, only advertisers to which the group is
// explicitly shared can access the group.
func (c *InventorySourceGroupsGetCall) AdvertiserId(advertiserId int64) *InventorySourceGroupsGetCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that has access to the inventory source group. A partner cannot access an
// advertiser-owned inventory source group.
func (c *InventorySourceGroupsGetCall) PartnerId(partnerId int64) *InventorySourceGroupsGetCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourceGroupsGetCall) Fields(s ...googleapi.Field) *InventorySourceGroupsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *InventorySourceGroupsGetCall) IfNoneMatch(entityTag string) *InventorySourceGroupsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourceGroupsGetCall) Context(ctx context.Context) *InventorySourceGroupsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourceGroupsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourceGroupsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySourceGroups/{+inventorySourceGroupId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"inventorySourceGroupId": strconv.FormatInt(c.inventorySourceGroupId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySourceGroups.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *InventorySourceGroup.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 *InventorySourceGroupsGetCall) Do(opts ...googleapi.CallOption) (*InventorySourceGroup, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &InventorySourceGroup{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists inventory source groups that are accessible to the current user.
// The order is defined by the order_by parameter.
func (r *InventorySourceGroupsService) List() *InventorySourceGroupsListCall {
	c := &InventorySourceGroupsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that has access to the inventory source group. If an inventory
// source group is partner-owned, only advertisers to which the group is
// explicitly shared can access the group.
func (c *InventorySourceGroupsListCall) AdvertiserId(advertiserId int64) *InventorySourceGroupsListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by inventory
// source group fields. Supported syntax: * Filter expressions are made up of
// one or more restrictions. * Restrictions can be combined by the logical
// operator `OR`. * A restriction has the form of `{field} {operator} {value}`.
// * All fields must use the `EQUALS (=)` operator. Supported fields: *
// `inventorySourceGroupId` The length of this field should be no more than 500
// characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *InventorySourceGroupsListCall) Filter(filter string) *InventorySourceGroupsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `displayName` (default) *
// `inventorySourceGroupId` The default sorting order is ascending. To specify
// descending order for a field, a suffix "desc" should be added to the field
// name. For example, `displayName desc`.
func (c *InventorySourceGroupsListCall) OrderBy(orderBy string) *InventorySourceGroupsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`.
func (c *InventorySourceGroupsListCall) PageSize(pageSize int64) *InventorySourceGroupsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListInventorySources`
// method. If not specified, the first page of results will be returned.
func (c *InventorySourceGroupsListCall) PageToken(pageToken string) *InventorySourceGroupsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that has access to the inventory source group. A partner cannot access
// advertiser-owned inventory source groups.
func (c *InventorySourceGroupsListCall) PartnerId(partnerId int64) *InventorySourceGroupsListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourceGroupsListCall) Fields(s ...googleapi.Field) *InventorySourceGroupsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *InventorySourceGroupsListCall) IfNoneMatch(entityTag string) *InventorySourceGroupsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourceGroupsListCall) Context(ctx context.Context) *InventorySourceGroupsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourceGroupsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourceGroupsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySourceGroups")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySourceGroups.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListInventorySourceGroupsResponse.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 *InventorySourceGroupsListCall) Do(opts ...googleapi.CallOption) (*ListInventorySourceGroupsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListInventorySourceGroupsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *InventorySourceGroupsListCall) Pages(ctx context.Context, f func(*ListInventorySourceGroupsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type InventorySourceGroupsPatchCall struct {
	s                      *Service
	inventorySourceGroupId int64
	inventorysourcegroup   *InventorySourceGroup
	urlParams_             gensupport.URLParams
	ctx_                   context.Context
	header_                http.Header
}

// Patch: Updates an inventory source group. Returns the updated inventory
// source group if successful.
//
//   - inventorySourceGroupId: Output only. The unique ID of the inventory source
//     group. Assigned by the system.
func (r *InventorySourceGroupsService) Patch(inventorySourceGroupId int64, inventorysourcegroup *InventorySourceGroup) *InventorySourceGroupsPatchCall {
	c := &InventorySourceGroupsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.inventorySourceGroupId = inventorySourceGroupId
	c.inventorysourcegroup = inventorysourcegroup
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the inventory source group. The parent partner does not
// have access to this group.
func (c *InventorySourceGroupsPatchCall) AdvertiserId(advertiserId int64) *InventorySourceGroupsPatchCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the inventory source group. Only this partner has write access to
// this group.
func (c *InventorySourceGroupsPatchCall) PartnerId(partnerId int64) *InventorySourceGroupsPatchCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *InventorySourceGroupsPatchCall) UpdateMask(updateMask string) *InventorySourceGroupsPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourceGroupsPatchCall) Fields(s ...googleapi.Field) *InventorySourceGroupsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourceGroupsPatchCall) Context(ctx context.Context) *InventorySourceGroupsPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourceGroupsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourceGroupsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.inventorysourcegroup)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySourceGroups/{inventorySourceGroupId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"inventorySourceGroupId": strconv.FormatInt(c.inventorySourceGroupId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySourceGroups.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *InventorySourceGroup.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 *InventorySourceGroupsPatchCall) Do(opts ...googleapi.CallOption) (*InventorySourceGroup, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &InventorySourceGroup{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type InventorySourceGroupsAssignedInventorySourcesBulkEditCall struct {
	s                                       *Service
	inventorySourceGroupId                  int64
	bulkeditassignedinventorysourcesrequest *BulkEditAssignedInventorySourcesRequest
	urlParams_                              gensupport.URLParams
	ctx_                                    context.Context
	header_                                 http.Header
}

// BulkEdit: Bulk edits multiple assignments between inventory sources and a
// single inventory source group. The operation will delete the assigned
// inventory sources provided in
// BulkEditAssignedInventorySourcesRequest.deleted_assigned_inventory_sources
// and then create the assigned inventory sources provided in
// BulkEditAssignedInventorySourcesRequest.created_assigned_inventory_sources.
//
//   - inventorySourceGroupId: The ID of the inventory source group to which the
//     assignments are assigned.
func (r *InventorySourceGroupsAssignedInventorySourcesService) BulkEdit(inventorySourceGroupId int64, bulkeditassignedinventorysourcesrequest *BulkEditAssignedInventorySourcesRequest) *InventorySourceGroupsAssignedInventorySourcesBulkEditCall {
	c := &InventorySourceGroupsAssignedInventorySourcesBulkEditCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.inventorySourceGroupId = inventorySourceGroupId
	c.bulkeditassignedinventorysourcesrequest = bulkeditassignedinventorysourcesrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourceGroupsAssignedInventorySourcesBulkEditCall) Fields(s ...googleapi.Field) *InventorySourceGroupsAssignedInventorySourcesBulkEditCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourceGroupsAssignedInventorySourcesBulkEditCall) Context(ctx context.Context) *InventorySourceGroupsAssignedInventorySourcesBulkEditCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourceGroupsAssignedInventorySourcesBulkEditCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourceGroupsAssignedInventorySourcesBulkEditCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.bulkeditassignedinventorysourcesrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySourceGroups/{+inventorySourceGroupId}/assignedInventorySources:bulkEdit")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"inventorySourceGroupId": strconv.FormatInt(c.inventorySourceGroupId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.assignedInventorySources.bulkEdit", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySourceGroups.assignedInventorySources.bulkEdit" call.
// Any non-2xx status code is an error. Response headers are in either
// *BulkEditAssignedInventorySourcesResponse.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 *InventorySourceGroupsAssignedInventorySourcesBulkEditCall) Do(opts ...googleapi.CallOption) (*BulkEditAssignedInventorySourcesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &BulkEditAssignedInventorySourcesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.assignedInventorySources.bulkEdit", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type InventorySourceGroupsAssignedInventorySourcesCreateCall struct {
	s                       *Service
	inventorySourceGroupId  int64
	assignedinventorysource *AssignedInventorySource
	urlParams_              gensupport.URLParams
	ctx_                    context.Context
	header_                 http.Header
}

// Create: Creates an assignment between an inventory source and an inventory
// source group.
//
//   - inventorySourceGroupId: The ID of the inventory source group to which the
//     assignment will be assigned.
func (r *InventorySourceGroupsAssignedInventorySourcesService) Create(inventorySourceGroupId int64, assignedinventorysource *AssignedInventorySource) *InventorySourceGroupsAssignedInventorySourcesCreateCall {
	c := &InventorySourceGroupsAssignedInventorySourcesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.inventorySourceGroupId = inventorySourceGroupId
	c.assignedinventorysource = assignedinventorysource
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the parent inventory source group. The parent partner
// will not have access to this assigned inventory source.
func (c *InventorySourceGroupsAssignedInventorySourcesCreateCall) AdvertiserId(advertiserId int64) *InventorySourceGroupsAssignedInventorySourcesCreateCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the parent inventory source group. Only this partner will have
// write access to this assigned inventory source.
func (c *InventorySourceGroupsAssignedInventorySourcesCreateCall) PartnerId(partnerId int64) *InventorySourceGroupsAssignedInventorySourcesCreateCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourceGroupsAssignedInventorySourcesCreateCall) Fields(s ...googleapi.Field) *InventorySourceGroupsAssignedInventorySourcesCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourceGroupsAssignedInventorySourcesCreateCall) Context(ctx context.Context) *InventorySourceGroupsAssignedInventorySourcesCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourceGroupsAssignedInventorySourcesCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourceGroupsAssignedInventorySourcesCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.assignedinventorysource)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySourceGroups/{+inventorySourceGroupId}/assignedInventorySources")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"inventorySourceGroupId": strconv.FormatInt(c.inventorySourceGroupId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.assignedInventorySources.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySourceGroups.assignedInventorySources.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *AssignedInventorySource.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 *InventorySourceGroupsAssignedInventorySourcesCreateCall) Do(opts ...googleapi.CallOption) (*AssignedInventorySource, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &AssignedInventorySource{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.assignedInventorySources.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type InventorySourceGroupsAssignedInventorySourcesDeleteCall struct {
	s                         *Service
	inventorySourceGroupId    int64
	assignedInventorySourceId int64
	urlParams_                gensupport.URLParams
	ctx_                      context.Context
	header_                   http.Header
}

// Delete: Deletes the assignment between an inventory source and an inventory
// source group.
//
//   - assignedInventorySourceId: The ID of the assigned inventory source to
//     delete.
//   - inventorySourceGroupId: The ID of the inventory source group to which this
//     assignment is assigned.
func (r *InventorySourceGroupsAssignedInventorySourcesService) Delete(inventorySourceGroupId int64, assignedInventorySourceId int64) *InventorySourceGroupsAssignedInventorySourcesDeleteCall {
	c := &InventorySourceGroupsAssignedInventorySourcesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.inventorySourceGroupId = inventorySourceGroupId
	c.assignedInventorySourceId = assignedInventorySourceId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the parent inventory source group. The parent partner
// does not have access to this assigned inventory source.
func (c *InventorySourceGroupsAssignedInventorySourcesDeleteCall) AdvertiserId(advertiserId int64) *InventorySourceGroupsAssignedInventorySourcesDeleteCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that owns the parent inventory source group. Only this partner has write
// access to this assigned inventory source.
func (c *InventorySourceGroupsAssignedInventorySourcesDeleteCall) PartnerId(partnerId int64) *InventorySourceGroupsAssignedInventorySourcesDeleteCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourceGroupsAssignedInventorySourcesDeleteCall) Fields(s ...googleapi.Field) *InventorySourceGroupsAssignedInventorySourcesDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourceGroupsAssignedInventorySourcesDeleteCall) Context(ctx context.Context) *InventorySourceGroupsAssignedInventorySourcesDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourceGroupsAssignedInventorySourcesDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourceGroupsAssignedInventorySourcesDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySourceGroups/{+inventorySourceGroupId}/assignedInventorySources/{+assignedInventorySourceId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"inventorySourceGroupId":    strconv.FormatInt(c.inventorySourceGroupId, 10),
		"assignedInventorySourceId": strconv.FormatInt(c.assignedInventorySourceId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.assignedInventorySources.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySourceGroups.assignedInventorySources.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *InventorySourceGroupsAssignedInventorySourcesDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.assignedInventorySources.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists inventory sources assigned to an inventory source group.
//
//   - inventorySourceGroupId: The ID of the inventory source group to which
//     these assignments are assigned.
func (r *InventorySourceGroupsAssignedInventorySourcesService) List(inventorySourceGroupId int64) *InventorySourceGroupsAssignedInventorySourcesListCall {
	c := &InventorySourceGroupsAssignedInventorySourcesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.inventorySourceGroupId = inventorySourceGroupId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that has access to the assignment. If the parent inventory source
// group is partner-owned, only advertisers to which the parent group is
// explicitly shared can access the assigned inventory source.
func (c *InventorySourceGroupsAssignedInventorySourcesListCall) AdvertiserId(advertiserId int64) *InventorySourceGroupsAssignedInventorySourcesListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by assigned
// inventory source fields. Supported syntax: * Filter expressions are made up
// of one or more restrictions. * Restrictions can be combined by the `OR`
// logical operator. * A restriction has the form of `{field} {operator}
// {value}`. * All fields must use the `EQUALS (=)` operator. Supported fields:
// * `assignedInventorySourceId` The length of this field should be no more
// than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *InventorySourceGroupsAssignedInventorySourcesListCall) Filter(filter string) *InventorySourceGroupsAssignedInventorySourcesListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `assignedInventorySourceId` (default) The
// default sorting order is ascending. To specify descending order for a field,
// a suffix " desc" should be added to the field name. Example:
// `assignedInventorySourceId desc`.
func (c *InventorySourceGroupsAssignedInventorySourcesListCall) OrderBy(orderBy string) *InventorySourceGroupsAssignedInventorySourcesListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `100`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *InventorySourceGroupsAssignedInventorySourcesListCall) PageSize(pageSize int64) *InventorySourceGroupsAssignedInventorySourcesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to
// `ListAssignedInventorySources` method. If not specified, the first page of
// results will be returned.
func (c *InventorySourceGroupsAssignedInventorySourcesListCall) PageToken(pageToken string) *InventorySourceGroupsAssignedInventorySourcesListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that has access to the assignment. If the parent inventory source group is
// advertiser-owned, the assignment cannot be accessed via a partner.
func (c *InventorySourceGroupsAssignedInventorySourcesListCall) PartnerId(partnerId int64) *InventorySourceGroupsAssignedInventorySourcesListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourceGroupsAssignedInventorySourcesListCall) Fields(s ...googleapi.Field) *InventorySourceGroupsAssignedInventorySourcesListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *InventorySourceGroupsAssignedInventorySourcesListCall) IfNoneMatch(entityTag string) *InventorySourceGroupsAssignedInventorySourcesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourceGroupsAssignedInventorySourcesListCall) Context(ctx context.Context) *InventorySourceGroupsAssignedInventorySourcesListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourceGroupsAssignedInventorySourcesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourceGroupsAssignedInventorySourcesListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySourceGroups/{+inventorySourceGroupId}/assignedInventorySources")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"inventorySourceGroupId": strconv.FormatInt(c.inventorySourceGroupId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.assignedInventorySources.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySourceGroups.assignedInventorySources.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListAssignedInventorySourcesResponse.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 *InventorySourceGroupsAssignedInventorySourcesListCall) Do(opts ...googleapi.CallOption) (*ListAssignedInventorySourcesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListAssignedInventorySourcesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySourceGroups.assignedInventorySources.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *InventorySourceGroupsAssignedInventorySourcesListCall) Pages(ctx context.Context, f func(*ListAssignedInventorySourcesResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type InventorySourcesCreateCall struct {
	s               *Service
	inventorysource *InventorySource
	urlParams_      gensupport.URLParams
	ctx_            context.Context
	header_         http.Header
}

// Create: Creates a new inventory source. Returns the newly created inventory
// source if successful.
func (r *InventorySourcesService) Create(inventorysource *InventorySource) *InventorySourcesCreateCall {
	c := &InventorySourcesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.inventorysource = inventorysource
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that the request is being made within.
func (c *InventorySourcesCreateCall) AdvertiserId(advertiserId int64) *InventorySourcesCreateCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that the request is being made within.
func (c *InventorySourcesCreateCall) PartnerId(partnerId int64) *InventorySourcesCreateCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourcesCreateCall) Fields(s ...googleapi.Field) *InventorySourcesCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourcesCreateCall) Context(ctx context.Context) *InventorySourcesCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourcesCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourcesCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.inventorysource)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySources")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySources.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySources.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *InventorySource.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 *InventorySourcesCreateCall) Do(opts ...googleapi.CallOption) (*InventorySource, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &InventorySource{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySources.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type InventorySourcesEditInventorySourceReadWriteAccessorsCall struct {
	s                                            *Service
	inventorySourceId                            int64
	editinventorysourcereadwriteaccessorsrequest *EditInventorySourceReadWriteAccessorsRequest
	urlParams_                                   gensupport.URLParams
	ctx_                                         context.Context
	header_                                      http.Header
}

// EditInventorySourceReadWriteAccessors: Edits read/write accessors of an
// inventory source. Returns the updated read_write_accessors for the inventory
// source.
//
// - inventorySourceId: The ID of inventory source to update.
func (r *InventorySourcesService) EditInventorySourceReadWriteAccessors(inventorySourceId int64, editinventorysourcereadwriteaccessorsrequest *EditInventorySourceReadWriteAccessorsRequest) *InventorySourcesEditInventorySourceReadWriteAccessorsCall {
	c := &InventorySourcesEditInventorySourceReadWriteAccessorsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.inventorySourceId = inventorySourceId
	c.editinventorysourcereadwriteaccessorsrequest = editinventorysourcereadwriteaccessorsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourcesEditInventorySourceReadWriteAccessorsCall) Fields(s ...googleapi.Field) *InventorySourcesEditInventorySourceReadWriteAccessorsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourcesEditInventorySourceReadWriteAccessorsCall) Context(ctx context.Context) *InventorySourcesEditInventorySourceReadWriteAccessorsCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourcesEditInventorySourceReadWriteAccessorsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourcesEditInventorySourceReadWriteAccessorsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.editinventorysourcereadwriteaccessorsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySources/{+inventorySourceId}:editInventorySourceReadWriteAccessors")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"inventorySourceId": strconv.FormatInt(c.inventorySourceId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySources.editInventorySourceReadWriteAccessors", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySources.editInventorySourceReadWriteAccessors" call.
// Any non-2xx status code is an error. Response headers are in either
// *InventorySourceAccessors.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 *InventorySourcesEditInventorySourceReadWriteAccessorsCall) Do(opts ...googleapi.CallOption) (*InventorySourceAccessors, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &InventorySourceAccessors{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySources.editInventorySourceReadWriteAccessors", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets an inventory source.
//
// - inventorySourceId: The ID of the inventory source to fetch.
func (r *InventorySourcesService) Get(inventorySourceId int64) *InventorySourcesGetCall {
	c := &InventorySourcesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.inventorySourceId = inventorySourceId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the DV360
// advertiser to which the fetched inventory source is permissioned. If the
// user only has access to the advertiser and not the parent partner, use this
// field to specify the relevant advertiser.
func (c *InventorySourcesGetCall) AdvertiserId(advertiserId int64) *InventorySourcesGetCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": Required. The ID of the
// DV360 partner to which the fetched inventory source is permissioned.
func (c *InventorySourcesGetCall) PartnerId(partnerId int64) *InventorySourcesGetCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourcesGetCall) Fields(s ...googleapi.Field) *InventorySourcesGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *InventorySourcesGetCall) IfNoneMatch(entityTag string) *InventorySourcesGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourcesGetCall) Context(ctx context.Context) *InventorySourcesGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourcesGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourcesGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySources/{+inventorySourceId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"inventorySourceId": strconv.FormatInt(c.inventorySourceId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySources.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySources.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *InventorySource.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 *InventorySourcesGetCall) Do(opts ...googleapi.CallOption) (*InventorySource, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &InventorySource{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySources.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists inventory sources that are accessible to the current user. The
// order is defined by the order_by parameter. If a filter by entity_status is
// not specified, inventory sources with entity status `ENTITY_STATUS_ARCHIVED`
// will not be included in the results.
func (r *InventorySourcesService) List() *InventorySourcesListCall {
	c := &InventorySourcesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that has access to the inventory source.
func (c *InventorySourcesListCall) AdvertiserId(advertiserId int64) *InventorySourcesListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by inventory
// source fields. Supported syntax: * Filter expressions are made up of one or
// more restrictions. * Restrictions can be combined by `AND` or `OR` logical
// operators. A sequence of restrictions implicitly uses `AND`. * A restriction
// has the form of `{field} {operator} {value}`. * All fields must use the
// `EQUALS (=)` operator. Supported fields: * `status.entityStatus` *
// `commitment` * `deliveryMethod` * `rateDetails.rateType` * `exchange`
// Examples: * All active inventory sources:
// `status.entityStatus="ENTITY_STATUS_ACTIVE" * Inventory sources belonging
// to Google Ad Manager or Rubicon exchanges:
// `exchange="EXCHANGE_GOOGLE_AD_MANAGER" OR exchange="EXCHANGE_RUBICON" The
// length of this field should be no more than 500 characters. Reference our
// filter `LIST` requests (/display-video/api/guides/how-tos/filters) guide for
// more information.
func (c *InventorySourcesListCall) Filter(filter string) *InventorySourcesListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `displayName` (default) The default sorting
// order is ascending. To specify descending order for a field, a suffix "desc"
// should be added to the field name. For example, `displayName desc`.
func (c *InventorySourcesListCall) OrderBy(orderBy string) *InventorySourcesListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`.
func (c *InventorySourcesListCall) PageSize(pageSize int64) *InventorySourcesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListInventorySources`
// method. If not specified, the first page of results will be returned.
func (c *InventorySourcesListCall) PageToken(pageToken string) *InventorySourcesListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that has access to the inventory source.
func (c *InventorySourcesListCall) PartnerId(partnerId int64) *InventorySourcesListCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourcesListCall) Fields(s ...googleapi.Field) *InventorySourcesListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *InventorySourcesListCall) IfNoneMatch(entityTag string) *InventorySourcesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourcesListCall) Context(ctx context.Context) *InventorySourcesListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourcesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourcesListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySources")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySources.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySources.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListInventorySourcesResponse.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 *InventorySourcesListCall) Do(opts ...googleapi.CallOption) (*ListInventorySourcesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListInventorySourcesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySources.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *InventorySourcesListCall) Pages(ctx context.Context, f func(*ListInventorySourcesResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type InventorySourcesPatchCall struct {
	s                 *Service
	inventorySourceId int64
	inventorysource   *InventorySource
	urlParams_        gensupport.URLParams
	ctx_              context.Context
	header_           http.Header
}

// Patch: Updates an existing inventory source. Returns the updated inventory
// source if successful.
//
//   - inventorySourceId: Output only. The unique ID of the inventory source.
//     Assigned by the system.
func (r *InventorySourcesService) Patch(inventorySourceId int64, inventorysource *InventorySource) *InventorySourcesPatchCall {
	c := &InventorySourcesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.inventorySourceId = inventorySourceId
	c.inventorysource = inventorysource
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that the request is being made within.
func (c *InventorySourcesPatchCall) AdvertiserId(advertiserId int64) *InventorySourcesPatchCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// PartnerId sets the optional parameter "partnerId": The ID of the partner
// that the request is being made within.
func (c *InventorySourcesPatchCall) PartnerId(partnerId int64) *InventorySourcesPatchCall {
	c.urlParams_.Set("partnerId", fmt.Sprint(partnerId))
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *InventorySourcesPatchCall) UpdateMask(updateMask string) *InventorySourcesPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *InventorySourcesPatchCall) Fields(s ...googleapi.Field) *InventorySourcesPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *InventorySourcesPatchCall) Context(ctx context.Context) *InventorySourcesPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *InventorySourcesPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *InventorySourcesPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.inventorysource)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/inventorySources/{+inventorySourceId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"inventorySourceId": strconv.FormatInt(c.inventorySourceId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.inventorySources.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.inventorySources.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *InventorySource.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 *InventorySourcesPatchCall) Do(opts ...googleapi.CallOption) (*InventorySource, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &InventorySource{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.inventorySources.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Download: Downloads media. Download is supported on the URI
// `/download/{resource_name=**}?alt=media.` **Note**: Download requests will
// not be successful without including `alt=media` query string.
//
//   - resourceName: Name of the media that is being downloaded. See
//     ReadRequest.resource_name.
func (r *MediaService) Download(resourceName string) *MediaDownloadCall {
	c := &MediaDownloadCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.resourceName = resourceName
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *MediaDownloadCall) Fields(s ...googleapi.Field) *MediaDownloadCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *MediaDownloadCall) IfNoneMatch(entityTag string) *MediaDownloadCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do and Download methods.
func (c *MediaDownloadCall) Context(ctx context.Context) *MediaDownloadCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *MediaDownloadCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *MediaDownloadCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "download/{+resourceName}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"resourceName": c.resourceName,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.media.download", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Download fetches the API endpoint's "media" value, instead of the normal
// API response value. If the returned error is nil, the Response is guaranteed to
// have a 2xx status code. Callers must close the Response.Body as usual.
func (c *MediaDownloadCall) Download(opts ...googleapi.CallOption) (*http.Response, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("media")
	if err != nil {
		return nil, err
	}
	if err := googleapi.CheckResponse(res); err != nil {
		res.Body.Close()
		return nil, gensupport.WrapError(err)
	}
	return res, nil
}

// Do executes the "displayvideo.media.download" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleBytestreamMedia.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 *MediaDownloadCall) Do(opts ...googleapi.CallOption) (*GoogleBytestreamMedia, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleBytestreamMedia{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.media.download", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type MediaUploadCall struct {
	s                     *Service
	resourceName          string
	googlebytestreammedia *GoogleBytestreamMedia
	urlParams_            gensupport.URLParams
	mediaInfo_            *gensupport.MediaInfo
	ctx_                  context.Context
	header_               http.Header
}

// Upload: Uploads media. Upload is supported on the URI
// `/upload/media/{resource_name=**}?upload_type=media.` **Note**: Upload
// requests will not be successful without including `upload_type=media` query
// string.
//
//   - resourceName: Name of the media that is being downloaded. See
//     ReadRequest.resource_name.
func (r *MediaService) Upload(resourceName string, googlebytestreammedia *GoogleBytestreamMedia) *MediaUploadCall {
	c := &MediaUploadCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.resourceName = resourceName
	c.googlebytestreammedia = googlebytestreammedia
	return c
}

// Media specifies the media to upload in one or more chunks. The chunk size
// may be controlled by supplying a MediaOption generated by
// googleapi.ChunkSize. The chunk size defaults to
// googleapi.DefaultUploadChunkSize.The Content-Type header used in the upload
// request will be determined by sniffing the contents of r, unless a
// MediaOption generated by googleapi.ContentType is supplied.
// At most one of Media and ResumableMedia may be set.
func (c *MediaUploadCall) Media(r io.Reader, options ...googleapi.MediaOption) *MediaUploadCall {
	c.mediaInfo_ = gensupport.NewInfoFromMedia(r, options)
	return c
}

// ResumableMedia specifies the media to upload in chunks and can be canceled
// with ctx.
//
// Deprecated: use Media instead.
//
// At most one of Media and ResumableMedia may be set. mediaType identifies the
// MIME media type of the upload, such as "image/png". If mediaType is "", it
// will be auto-detected. The provided ctx will supersede any context
// previously provided to the Context method.
func (c *MediaUploadCall) ResumableMedia(ctx context.Context, r io.ReaderAt, size int64, mediaType string) *MediaUploadCall {
	c.ctx_ = ctx
	c.mediaInfo_ = gensupport.NewInfoFromResumableMedia(r, size, mediaType)
	return c
}

// ProgressUpdater provides a callback function that will be called after every
// chunk. It should be a low-latency function in order to not slow down the
// upload operation. This should only be called when using ResumableMedia (as
// opposed to Media).
func (c *MediaUploadCall) ProgressUpdater(pu googleapi.ProgressUpdater) *MediaUploadCall {
	c.mediaInfo_.SetProgressUpdater(pu)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *MediaUploadCall) Fields(s ...googleapi.Field) *MediaUploadCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
// This context will supersede any context previously provided to the
// ResumableMedia method.
func (c *MediaUploadCall) Context(ctx context.Context) *MediaUploadCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *MediaUploadCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *MediaUploadCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlebytestreammedia)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "media/{+resourceName}")
	if c.mediaInfo_ != nil {
		urls = googleapi.ResolveRelative(c.s.BasePath, "/upload/media/{+resourceName}")
		c.urlParams_.Set("uploadType", c.mediaInfo_.UploadType())
	}
	newBody, getBody, cleanup := c.mediaInfo_.UploadRequest(reqHeaders, body)
	defer cleanup()
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, newBody)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	req.GetBody = getBody
	googleapi.Expand(req.URL, map[string]string{
		"resourceName": c.resourceName,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.media.upload", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.media.upload" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleBytestreamMedia.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 *MediaUploadCall) Do(opts ...googleapi.CallOption) (*GoogleBytestreamMedia, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	rx := c.mediaInfo_.ResumableUpload(res.Header.Get("Location"))
	if rx != nil {
		rx.Client = c.s.client
		rx.UserAgent = c.s.userAgent()
		ctx := c.ctx_
		if ctx == nil {
			ctx = context.TODO()
		}
		res, err = rx.Upload(ctx)
		if err != nil {
			return nil, err
		}
		defer res.Body.Close()
		if err := googleapi.CheckResponse(res); err != nil {
			return nil, gensupport.WrapError(err)
		}
	}
	ret := &GoogleBytestreamMedia{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.media.upload", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersEditAssignedTargetingOptionsCall struct {
	s                                              *Service
	partnerId                                      int64
	bulkeditpartnerassignedtargetingoptionsrequest *BulkEditPartnerAssignedTargetingOptionsRequest
	urlParams_                                     gensupport.URLParams
	ctx_                                           context.Context
	header_                                        http.Header
}

// EditAssignedTargetingOptions: Edits targeting options under a single
// partner. The operation will delete the assigned targeting options provided
// in BulkEditPartnerAssignedTargetingOptionsRequest.deleteRequests and then
// create the assigned targeting options provided in
// BulkEditPartnerAssignedTargetingOptionsRequest.createRequests .
//
// - partnerId: The ID of the partner.
func (r *PartnersService) EditAssignedTargetingOptions(partnerId int64, bulkeditpartnerassignedtargetingoptionsrequest *BulkEditPartnerAssignedTargetingOptionsRequest) *PartnersEditAssignedTargetingOptionsCall {
	c := &PartnersEditAssignedTargetingOptionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	c.bulkeditpartnerassignedtargetingoptionsrequest = bulkeditpartnerassignedtargetingoptionsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersEditAssignedTargetingOptionsCall) Fields(s ...googleapi.Field) *PartnersEditAssignedTargetingOptionsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersEditAssignedTargetingOptionsCall) Context(ctx context.Context) *PartnersEditAssignedTargetingOptionsCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersEditAssignedTargetingOptionsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersEditAssignedTargetingOptionsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.bulkeditpartnerassignedtargetingoptionsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{+partnerId}:editAssignedTargetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId": strconv.FormatInt(c.partnerId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.editAssignedTargetingOptions", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.editAssignedTargetingOptions" call.
// Any non-2xx status code is an error. Response headers are in either
// *BulkEditPartnerAssignedTargetingOptionsResponse.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 *PartnersEditAssignedTargetingOptionsCall) Do(opts ...googleapi.CallOption) (*BulkEditPartnerAssignedTargetingOptionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &BulkEditPartnerAssignedTargetingOptionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.editAssignedTargetingOptions", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a partner.
//
// - partnerId: The ID of the partner to fetch.
func (r *PartnersService) Get(partnerId int64) *PartnersGetCall {
	c := &PartnersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersGetCall) Fields(s ...googleapi.Field) *PartnersGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *PartnersGetCall) IfNoneMatch(entityTag string) *PartnersGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersGetCall) Context(ctx context.Context) *PartnersGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{+partnerId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId": strconv.FormatInt(c.partnerId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Partner.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 *PartnersGetCall) Do(opts ...googleapi.CallOption) (*Partner, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Partner{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists partners that are accessible to the current user. The order is
// defined by the order_by parameter.
func (r *PartnersService) List() *PartnersListCall {
	c := &PartnersListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by partner
// fields. Supported syntax: * Filter expressions are made up of one or more
// restrictions. * Restrictions can be combined by `AND` or `OR` logical
// operators. A sequence of restrictions implicitly uses `AND`. * A restriction
// has the form of `{field} {operator} {value}`. * All fields must use the
// `EQUALS (=)` operator. Supported fields: * `entityStatus` Examples: * All
// active partners: `entityStatus="ENTITY_STATUS_ACTIVE" The length of this
// field should be no more than 500 characters. Reference our filter `LIST`
// requests (/display-video/api/guides/how-tos/filters) guide for more
// information.
func (c *PartnersListCall) Filter(filter string) *PartnersListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `displayName` The default sorting order is
// ascending. To specify descending order for a field, a suffix "desc" should
// be added to the field name. For example, `displayName desc`.
func (c *PartnersListCall) OrderBy(orderBy string) *PartnersListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`.
func (c *PartnersListCall) PageSize(pageSize int64) *PartnersListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListPartners` method. If
// not specified, the first page of results will be returned.
func (c *PartnersListCall) PageToken(pageToken string) *PartnersListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersListCall) Fields(s ...googleapi.Field) *PartnersListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *PartnersListCall) IfNoneMatch(entityTag string) *PartnersListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersListCall) Context(ctx context.Context) *PartnersListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListPartnersResponse.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 *PartnersListCall) Do(opts ...googleapi.CallOption) (*ListPartnersResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListPartnersResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *PartnersListCall) Pages(ctx context.Context, f func(*ListPartnersResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type PartnersChannelsCreateCall struct {
	s          *Service
	partnerId  int64
	channel    *Channel
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Create: Creates a new channel. Returns the newly created channel if
// successful.
//
// - partnerId: The ID of the partner that owns the created channel.
func (r *PartnersChannelsService) Create(partnerId int64, channel *Channel) *PartnersChannelsCreateCall {
	c := &PartnersChannelsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	c.channel = channel
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the created channel.
func (c *PartnersChannelsCreateCall) AdvertiserId(advertiserId int64) *PartnersChannelsCreateCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersChannelsCreateCall) Fields(s ...googleapi.Field) *PartnersChannelsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersChannelsCreateCall) Context(ctx context.Context) *PartnersChannelsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersChannelsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersChannelsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.channel)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{+partnerId}/channels")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId": strconv.FormatInt(c.partnerId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.channels.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Channel.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 *PartnersChannelsCreateCall) Do(opts ...googleapi.CallOption) (*Channel, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Channel{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a channel for a partner or advertiser.
//
// - channelId: The ID of the channel to fetch.
// - partnerId: The ID of the partner that owns the fetched channel.
func (r *PartnersChannelsService) Get(partnerId int64, channelId int64) *PartnersChannelsGetCall {
	c := &PartnersChannelsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	c.channelId = channelId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the fetched channel.
func (c *PartnersChannelsGetCall) AdvertiserId(advertiserId int64) *PartnersChannelsGetCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersChannelsGetCall) Fields(s ...googleapi.Field) *PartnersChannelsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *PartnersChannelsGetCall) IfNoneMatch(entityTag string) *PartnersChannelsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersChannelsGetCall) Context(ctx context.Context) *PartnersChannelsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersChannelsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersChannelsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{+partnerId}/channels/{+channelId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId": strconv.FormatInt(c.partnerId, 10),
		"channelId": strconv.FormatInt(c.channelId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.channels.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Channel.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 *PartnersChannelsGetCall) Do(opts ...googleapi.CallOption) (*Channel, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Channel{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists channels for a partner or advertiser.
//
// - partnerId: The ID of the partner that owns the channels.
func (r *PartnersChannelsService) List(partnerId int64) *PartnersChannelsListCall {
	c := &PartnersChannelsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the channels.
func (c *PartnersChannelsListCall) AdvertiserId(advertiserId int64) *PartnersChannelsListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by channel
// fields. Supported syntax: * Filter expressions for channel can only contain
// at most one restriction. * A restriction has the form of `{field} {operator}
// {value}`. * All fields must use the `HAS (:)` operator. Supported fields: *
// `displayName` Examples: * All channels for which the display name contains
// "google": `displayName : "google". The length of this field should be no
// more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *PartnersChannelsListCall) Filter(filter string) *PartnersChannelsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `displayName` (default) * `channelId` The
// default sorting order is ascending. To specify descending order for a field,
// a suffix " desc" should be added to the field name. Example: `displayName
// desc`.
func (c *PartnersChannelsListCall) OrderBy(orderBy string) *PartnersChannelsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *PartnersChannelsListCall) PageSize(pageSize int64) *PartnersChannelsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListChannels` method. If
// not specified, the first page of results will be returned.
func (c *PartnersChannelsListCall) PageToken(pageToken string) *PartnersChannelsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersChannelsListCall) Fields(s ...googleapi.Field) *PartnersChannelsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *PartnersChannelsListCall) IfNoneMatch(entityTag string) *PartnersChannelsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersChannelsListCall) Context(ctx context.Context) *PartnersChannelsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersChannelsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersChannelsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{+partnerId}/channels")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId": strconv.FormatInt(c.partnerId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.channels.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListChannelsResponse.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 *PartnersChannelsListCall) Do(opts ...googleapi.CallOption) (*ListChannelsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListChannelsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *PartnersChannelsListCall) Pages(ctx context.Context, f func(*ListChannelsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type PartnersChannelsPatchCall struct {
	s          *Service
	partnerId  int64
	channelId  int64
	channel    *Channel
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Patch: Updates a channel. Returns the updated channel if successful.
//
//   - channelId: Output only. The unique ID of the channel. Assigned by the
//     system.
//   - partnerId: The ID of the partner that owns the created channel.
func (r *PartnersChannelsService) Patch(partnerId int64, channelId int64, channel *Channel) *PartnersChannelsPatchCall {
	c := &PartnersChannelsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	c.channelId = channelId
	c.channel = channel
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the created channel.
func (c *PartnersChannelsPatchCall) AdvertiserId(advertiserId int64) *PartnersChannelsPatchCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *PartnersChannelsPatchCall) UpdateMask(updateMask string) *PartnersChannelsPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersChannelsPatchCall) Fields(s ...googleapi.Field) *PartnersChannelsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersChannelsPatchCall) Context(ctx context.Context) *PartnersChannelsPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersChannelsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersChannelsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.channel)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{+partnerId}/channels/{channelId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId": strconv.FormatInt(c.partnerId, 10),
		"channelId": strconv.FormatInt(c.channelId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.channels.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *Channel.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 *PartnersChannelsPatchCall) Do(opts ...googleapi.CallOption) (*Channel, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Channel{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersChannelsSitesBulkEditCall struct {
	s                    *Service
	partnerId            int64
	channelId            int64
	bulkeditsitesrequest *BulkEditSitesRequest
	urlParams_           gensupport.URLParams
	ctx_                 context.Context
	header_              http.Header
}

// BulkEdit: Bulk edits sites under a single channel. The operation will delete
// the sites provided in BulkEditSitesRequest.deleted_sites and then create the
// sites provided in BulkEditSitesRequest.created_sites.
//
// - channelId: The ID of the parent channel to which the sites belong.
// - partnerId: The ID of the partner that owns the parent channel.
func (r *PartnersChannelsSitesService) BulkEdit(partnerId int64, channelId int64, bulkeditsitesrequest *BulkEditSitesRequest) *PartnersChannelsSitesBulkEditCall {
	c := &PartnersChannelsSitesBulkEditCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	c.channelId = channelId
	c.bulkeditsitesrequest = bulkeditsitesrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersChannelsSitesBulkEditCall) Fields(s ...googleapi.Field) *PartnersChannelsSitesBulkEditCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersChannelsSitesBulkEditCall) Context(ctx context.Context) *PartnersChannelsSitesBulkEditCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersChannelsSitesBulkEditCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersChannelsSitesBulkEditCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.bulkeditsitesrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{partnerId}/channels/{+channelId}/sites:bulkEdit")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId": strconv.FormatInt(c.partnerId, 10),
		"channelId": strconv.FormatInt(c.channelId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.sites.bulkEdit", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.channels.sites.bulkEdit" call.
// Any non-2xx status code is an error. Response headers are in either
// *BulkEditSitesResponse.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 *PartnersChannelsSitesBulkEditCall) Do(opts ...googleapi.CallOption) (*BulkEditSitesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &BulkEditSitesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.sites.bulkEdit", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersChannelsSitesCreateCall struct {
	s          *Service
	partnerId  int64
	channelId  int64
	site       *Site
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Create: Creates a site in a channel.
//
// - channelId: The ID of the parent channel in which the site will be created.
// - partnerId: The ID of the partner that owns the parent channel.
func (r *PartnersChannelsSitesService) Create(partnerId int64, channelId int64, site *Site) *PartnersChannelsSitesCreateCall {
	c := &PartnersChannelsSitesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	c.channelId = channelId
	c.site = site
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the parent channel.
func (c *PartnersChannelsSitesCreateCall) AdvertiserId(advertiserId int64) *PartnersChannelsSitesCreateCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersChannelsSitesCreateCall) Fields(s ...googleapi.Field) *PartnersChannelsSitesCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersChannelsSitesCreateCall) Context(ctx context.Context) *PartnersChannelsSitesCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersChannelsSitesCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersChannelsSitesCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.site)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{partnerId}/channels/{+channelId}/sites")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId": strconv.FormatInt(c.partnerId, 10),
		"channelId": strconv.FormatInt(c.channelId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.sites.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.channels.sites.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Site.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 *PartnersChannelsSitesCreateCall) Do(opts ...googleapi.CallOption) (*Site, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Site{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.sites.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersChannelsSitesDeleteCall struct {
	s          *Service
	partnerId  int64
	channelId  int64
	urlOrAppId string
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Delete: Deletes a site from a channel.
//
// - channelId: The ID of the parent channel to which the site belongs.
// - partnerId: The ID of the partner that owns the parent channel.
// - urlOrAppId: The URL or app ID of the site to delete.
func (r *PartnersChannelsSitesService) Delete(partnerId int64, channelId int64, urlOrAppId string) *PartnersChannelsSitesDeleteCall {
	c := &PartnersChannelsSitesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	c.channelId = channelId
	c.urlOrAppId = urlOrAppId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the parent channel.
func (c *PartnersChannelsSitesDeleteCall) AdvertiserId(advertiserId int64) *PartnersChannelsSitesDeleteCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersChannelsSitesDeleteCall) Fields(s ...googleapi.Field) *PartnersChannelsSitesDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersChannelsSitesDeleteCall) Context(ctx context.Context) *PartnersChannelsSitesDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersChannelsSitesDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersChannelsSitesDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{partnerId}/channels/{+channelId}/sites/{+urlOrAppId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId":  strconv.FormatInt(c.partnerId, 10),
		"channelId":  strconv.FormatInt(c.channelId, 10),
		"urlOrAppId": c.urlOrAppId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.sites.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.channels.sites.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *PartnersChannelsSitesDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.sites.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists sites in a channel.
//
//   - channelId: The ID of the parent channel to which the requested sites
//     belong.
//   - partnerId: The ID of the partner that owns the parent channel.
func (r *PartnersChannelsSitesService) List(partnerId int64, channelId int64) *PartnersChannelsSitesListCall {
	c := &PartnersChannelsSitesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	c.channelId = channelId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": The ID of the
// advertiser that owns the parent channel.
func (c *PartnersChannelsSitesListCall) AdvertiserId(advertiserId int64) *PartnersChannelsSitesListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by site
// fields. Supported syntax: * Filter expressions for site retrieval can only
// contain at most one restriction. * A restriction has the form of `{field}
// {operator} {value}`. * All fields must use the `HAS (:)` operator. Supported
// fields: * `urlOrAppId` Examples: * All sites for which the URL or app ID
// contains "google": `urlOrAppId : "google" The length of this field should
// be no more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *PartnersChannelsSitesListCall) Filter(filter string) *PartnersChannelsSitesListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `urlOrAppId` (default) The default sorting
// order is ascending. To specify descending order for a field, a suffix "
// desc" should be added to the field name. Example: `urlOrAppId desc`.
func (c *PartnersChannelsSitesListCall) OrderBy(orderBy string) *PartnersChannelsSitesListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `10000`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *PartnersChannelsSitesListCall) PageSize(pageSize int64) *PartnersChannelsSitesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListSites` method. If
// not specified, the first page of results will be returned.
func (c *PartnersChannelsSitesListCall) PageToken(pageToken string) *PartnersChannelsSitesListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersChannelsSitesListCall) Fields(s ...googleapi.Field) *PartnersChannelsSitesListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *PartnersChannelsSitesListCall) IfNoneMatch(entityTag string) *PartnersChannelsSitesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersChannelsSitesListCall) Context(ctx context.Context) *PartnersChannelsSitesListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersChannelsSitesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersChannelsSitesListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{+partnerId}/channels/{+channelId}/sites")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId": strconv.FormatInt(c.partnerId, 10),
		"channelId": strconv.FormatInt(c.channelId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.sites.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.channels.sites.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListSitesResponse.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 *PartnersChannelsSitesListCall) Do(opts ...googleapi.CallOption) (*ListSitesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListSitesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.sites.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *PartnersChannelsSitesListCall) Pages(ctx context.Context, f func(*ListSitesResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type PartnersChannelsSitesReplaceCall struct {
	s                   *Service
	partnerId           int64
	channelId           int64
	replacesitesrequest *ReplaceSitesRequest
	urlParams_          gensupport.URLParams
	ctx_                context.Context
	header_             http.Header
}

// Replace: Replaces all of the sites under a single channel. The operation
// will replace the sites under a channel with the sites provided in
// ReplaceSitesRequest.new_sites. **This method regularly experiences high
// latency.** We recommend increasing your default timeout
// (/display-video/api/guides/best-practices/timeouts#client_library_timeout)
// to avoid errors.
//
// - channelId: The ID of the parent channel whose sites will be replaced.
// - partnerId: The ID of the partner that owns the parent channel.
func (r *PartnersChannelsSitesService) Replace(partnerId int64, channelId int64, replacesitesrequest *ReplaceSitesRequest) *PartnersChannelsSitesReplaceCall {
	c := &PartnersChannelsSitesReplaceCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	c.channelId = channelId
	c.replacesitesrequest = replacesitesrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersChannelsSitesReplaceCall) Fields(s ...googleapi.Field) *PartnersChannelsSitesReplaceCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersChannelsSitesReplaceCall) Context(ctx context.Context) *PartnersChannelsSitesReplaceCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersChannelsSitesReplaceCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersChannelsSitesReplaceCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.replacesitesrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{partnerId}/channels/{+channelId}/sites:replace")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId": strconv.FormatInt(c.partnerId, 10),
		"channelId": strconv.FormatInt(c.channelId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.sites.replace", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.channels.sites.replace" call.
// Any non-2xx status code is an error. Response headers are in either
// *ReplaceSitesResponse.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 *PartnersChannelsSitesReplaceCall) Do(opts ...googleapi.CallOption) (*ReplaceSitesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ReplaceSitesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.channels.sites.replace", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersTargetingTypesAssignedTargetingOptionsCreateCall struct {
	s                       *Service
	partnerId               int64
	targetingType           string
	assignedtargetingoption *AssignedTargetingOption
	urlParams_              gensupport.URLParams
	ctx_                    context.Context
	header_                 http.Header
}

// Create: Assigns a targeting option to a partner. Returns the assigned
// targeting option if successful.
//
//   - partnerId: The ID of the partner.
//   - targetingType: Identifies the type of this assigned targeting option.
//     Supported targeting types: * `TARGETING_TYPE_CHANNEL`.
func (r *PartnersTargetingTypesAssignedTargetingOptionsService) Create(partnerId int64, targetingType string, assignedtargetingoption *AssignedTargetingOption) *PartnersTargetingTypesAssignedTargetingOptionsCreateCall {
	c := &PartnersTargetingTypesAssignedTargetingOptionsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	c.targetingType = targetingType
	c.assignedtargetingoption = assignedtargetingoption
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersTargetingTypesAssignedTargetingOptionsCreateCall) Fields(s ...googleapi.Field) *PartnersTargetingTypesAssignedTargetingOptionsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersTargetingTypesAssignedTargetingOptionsCreateCall) Context(ctx context.Context) *PartnersTargetingTypesAssignedTargetingOptionsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersTargetingTypesAssignedTargetingOptionsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersTargetingTypesAssignedTargetingOptionsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.assignedtargetingoption)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{+partnerId}/targetingTypes/{+targetingType}/assignedTargetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId":     strconv.FormatInt(c.partnerId, 10),
		"targetingType": c.targetingType,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.targetingTypes.assignedTargetingOptions.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.targetingTypes.assignedTargetingOptions.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *AssignedTargetingOption.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 *PartnersTargetingTypesAssignedTargetingOptionsCreateCall) Do(opts ...googleapi.CallOption) (*AssignedTargetingOption, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &AssignedTargetingOption{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.targetingTypes.assignedTargetingOptions.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersTargetingTypesAssignedTargetingOptionsDeleteCall struct {
	s                         *Service
	partnerId                 int64
	targetingType             string
	assignedTargetingOptionId string
	urlParams_                gensupport.URLParams
	ctx_                      context.Context
	header_                   http.Header
}

// Delete: Deletes an assigned targeting option from a partner.
//
//   - assignedTargetingOptionId: The ID of the assigned targeting option to
//     delete.
//   - partnerId: The ID of the partner.
//   - targetingType: Identifies the type of this assigned targeting option.
//     Supported targeting types: * `TARGETING_TYPE_CHANNEL`.
func (r *PartnersTargetingTypesAssignedTargetingOptionsService) Delete(partnerId int64, targetingType string, assignedTargetingOptionId string) *PartnersTargetingTypesAssignedTargetingOptionsDeleteCall {
	c := &PartnersTargetingTypesAssignedTargetingOptionsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	c.targetingType = targetingType
	c.assignedTargetingOptionId = assignedTargetingOptionId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersTargetingTypesAssignedTargetingOptionsDeleteCall) Fields(s ...googleapi.Field) *PartnersTargetingTypesAssignedTargetingOptionsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersTargetingTypesAssignedTargetingOptionsDeleteCall) Context(ctx context.Context) *PartnersTargetingTypesAssignedTargetingOptionsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersTargetingTypesAssignedTargetingOptionsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersTargetingTypesAssignedTargetingOptionsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{+partnerId}/targetingTypes/{+targetingType}/assignedTargetingOptions/{+assignedTargetingOptionId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId":                 strconv.FormatInt(c.partnerId, 10),
		"targetingType":             c.targetingType,
		"assignedTargetingOptionId": c.assignedTargetingOptionId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.targetingTypes.assignedTargetingOptions.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.targetingTypes.assignedTargetingOptions.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *PartnersTargetingTypesAssignedTargetingOptionsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.targetingTypes.assignedTargetingOptions.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersTargetingTypesAssignedTargetingOptionsGetCall struct {
	s                         *Service
	partnerId                 int64
	targetingType             string
	assignedTargetingOptionId string
	urlParams_                gensupport.URLParams
	ifNoneMatch_              string
	ctx_                      context.Context
	header_                   http.Header
}

// Get: Gets a single targeting option assigned to a partner.
//
//   - assignedTargetingOptionId: An identifier unique to the targeting type in
//     this partner that identifies the assigned targeting option being
//     requested.
//   - partnerId: The ID of the partner.
//   - targetingType: Identifies the type of this assigned targeting option.
//     Supported targeting types: * `TARGETING_TYPE_CHANNEL`.
func (r *PartnersTargetingTypesAssignedTargetingOptionsService) Get(partnerId int64, targetingType string, assignedTargetingOptionId string) *PartnersTargetingTypesAssignedTargetingOptionsGetCall {
	c := &PartnersTargetingTypesAssignedTargetingOptionsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	c.targetingType = targetingType
	c.assignedTargetingOptionId = assignedTargetingOptionId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersTargetingTypesAssignedTargetingOptionsGetCall) Fields(s ...googleapi.Field) *PartnersTargetingTypesAssignedTargetingOptionsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *PartnersTargetingTypesAssignedTargetingOptionsGetCall) IfNoneMatch(entityTag string) *PartnersTargetingTypesAssignedTargetingOptionsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersTargetingTypesAssignedTargetingOptionsGetCall) Context(ctx context.Context) *PartnersTargetingTypesAssignedTargetingOptionsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersTargetingTypesAssignedTargetingOptionsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersTargetingTypesAssignedTargetingOptionsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{+partnerId}/targetingTypes/{+targetingType}/assignedTargetingOptions/{+assignedTargetingOptionId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId":                 strconv.FormatInt(c.partnerId, 10),
		"targetingType":             c.targetingType,
		"assignedTargetingOptionId": c.assignedTargetingOptionId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.targetingTypes.assignedTargetingOptions.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.targetingTypes.assignedTargetingOptions.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *AssignedTargetingOption.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 *PartnersTargetingTypesAssignedTargetingOptionsGetCall) Do(opts ...googleapi.CallOption) (*AssignedTargetingOption, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &AssignedTargetingOption{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.targetingTypes.assignedTargetingOptions.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists the targeting options assigned to a partner.
//
//   - partnerId: The ID of the partner.
//   - targetingType: Identifies the type of assigned targeting options to list.
//     Supported targeting types: * `TARGETING_TYPE_CHANNEL`.
func (r *PartnersTargetingTypesAssignedTargetingOptionsService) List(partnerId int64, targetingType string) *PartnersTargetingTypesAssignedTargetingOptionsListCall {
	c := &PartnersTargetingTypesAssignedTargetingOptionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.partnerId = partnerId
	c.targetingType = targetingType
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by assigned
// targeting option fields. Supported syntax: * Filter expressions are made up
// of one or more restrictions. * Restrictions can be combined by the logical
// operator `OR`. * A restriction has the form of `{field} {operator} {value}`.
// * All fields must use the `EQUALS (=)` operator. Supported fields: *
// `assignedTargetingOptionId` Examples: * `AssignedTargetingOption` resource
// with ID 123456: `assignedTargetingOptionId="123456" The length of this
// field should be no more than 500 characters. Reference our filter `LIST`
// requests (/display-video/api/guides/how-tos/filters) guide for more
// information.
func (c *PartnersTargetingTypesAssignedTargetingOptionsListCall) Filter(filter string) *PartnersTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `assignedTargetingOptionId` (default) The
// default sorting order is ascending. To specify descending order for a field,
// a suffix "desc" should be added to the field name. Example:
// `assignedTargetingOptionId desc`.
func (c *PartnersTargetingTypesAssignedTargetingOptionsListCall) OrderBy(orderBy string) *PartnersTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *PartnersTargetingTypesAssignedTargetingOptionsListCall) PageSize(pageSize int64) *PartnersTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to
// `ListPartnerAssignedTargetingOptions` method. If not specified, the first
// page of results will be returned.
func (c *PartnersTargetingTypesAssignedTargetingOptionsListCall) PageToken(pageToken string) *PartnersTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersTargetingTypesAssignedTargetingOptionsListCall) Fields(s ...googleapi.Field) *PartnersTargetingTypesAssignedTargetingOptionsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *PartnersTargetingTypesAssignedTargetingOptionsListCall) IfNoneMatch(entityTag string) *PartnersTargetingTypesAssignedTargetingOptionsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersTargetingTypesAssignedTargetingOptionsListCall) Context(ctx context.Context) *PartnersTargetingTypesAssignedTargetingOptionsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersTargetingTypesAssignedTargetingOptionsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersTargetingTypesAssignedTargetingOptionsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/partners/{+partnerId}/targetingTypes/{+targetingType}/assignedTargetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"partnerId":     strconv.FormatInt(c.partnerId, 10),
		"targetingType": c.targetingType,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.partners.targetingTypes.assignedTargetingOptions.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.partners.targetingTypes.assignedTargetingOptions.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListPartnerAssignedTargetingOptionsResponse.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 *PartnersTargetingTypesAssignedTargetingOptionsListCall) Do(opts ...googleapi.CallOption) (*ListPartnerAssignedTargetingOptionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListPartnerAssignedTargetingOptionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.partners.targetingTypes.assignedTargetingOptions.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *PartnersTargetingTypesAssignedTargetingOptionsListCall) Pages(ctx context.Context, f func(*ListPartnerAssignedTargetingOptionsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type SdfdownloadtasksCreateCall struct {
	s                            *Service
	createsdfdownloadtaskrequest *CreateSdfDownloadTaskRequest
	urlParams_                   gensupport.URLParams
	ctx_                         context.Context
	header_                      http.Header
}

// Create: Creates an SDF Download Task. Returns an Operation. An SDF Download
// Task is a long-running, asynchronous operation. The metadata type of this
// operation is SdfDownloadTaskMetadata. If the request is successful, the
// response type of the operation is SdfDownloadTask. The response will not
// include the download files, which must be retrieved with media.download. The
// state of operation can be retrieved with `sdfdownloadtasks.operations.get`.
// Any errors can be found in the error.message. Note that error.details is
// expected to be empty.
func (r *SdfdownloadtasksService) Create(createsdfdownloadtaskrequest *CreateSdfDownloadTaskRequest) *SdfdownloadtasksCreateCall {
	c := &SdfdownloadtasksCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.createsdfdownloadtaskrequest = createsdfdownloadtaskrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *SdfdownloadtasksCreateCall) Fields(s ...googleapi.Field) *SdfdownloadtasksCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *SdfdownloadtasksCreateCall) Context(ctx context.Context) *SdfdownloadtasksCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *SdfdownloadtasksCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *SdfdownloadtasksCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.createsdfdownloadtaskrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/sdfdownloadtasks")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.sdfdownloadtasks.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.sdfdownloadtasks.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.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 *SdfdownloadtasksCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.sdfdownloadtasks.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets the latest state of an asynchronous SDF download task operation.
// Clients should poll this method at intervals of 30 seconds.
//
// - name: The name of the operation resource.
func (r *SdfdownloadtasksOperationsService) Get(name string) *SdfdownloadtasksOperationsGetCall {
	c := &SdfdownloadtasksOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *SdfdownloadtasksOperationsGetCall) Fields(s ...googleapi.Field) *SdfdownloadtasksOperationsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *SdfdownloadtasksOperationsGetCall) IfNoneMatch(entityTag string) *SdfdownloadtasksOperationsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *SdfdownloadtasksOperationsGetCall) Context(ctx context.Context) *SdfdownloadtasksOperationsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *SdfdownloadtasksOperationsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *SdfdownloadtasksOperationsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.sdfdownloadtasks.operations.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.sdfdownloadtasks.operations.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.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 *SdfdownloadtasksOperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.sdfdownloadtasks.operations.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets the latest state of an asynchronous SDF download task operation.
// Clients should poll this method at intervals of 30 seconds.
//
// - name: The name of the operation resource.
func (r *SdfuploadtasksOperationsService) Get(name string) *SdfuploadtasksOperationsGetCall {
	c := &SdfuploadtasksOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *SdfuploadtasksOperationsGetCall) Fields(s ...googleapi.Field) *SdfuploadtasksOperationsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *SdfuploadtasksOperationsGetCall) IfNoneMatch(entityTag string) *SdfuploadtasksOperationsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *SdfuploadtasksOperationsGetCall) Context(ctx context.Context) *SdfuploadtasksOperationsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *SdfuploadtasksOperationsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *SdfuploadtasksOperationsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.sdfuploadtasks.operations.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.sdfuploadtasks.operations.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.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 *SdfuploadtasksOperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.sdfuploadtasks.operations.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a single targeting option.
//
//   - targetingOptionId: The ID of the of targeting option to retrieve.
//   - targetingType: The type of targeting option to retrieve. Accepted values
//     are: * `TARGETING_TYPE_APP_CATEGORY` * `TARGETING_TYPE_AGE_RANGE` *
//     `TARGETING_TYPE_GENDER` * `TARGETING_TYPE_VIDEO_PLAYER_SIZE` *
//     `TARGETING_TYPE_USER_REWARDED_CONTENT` * `TARGETING_TYPE_PARENTAL_STATUS`
//   - `TARGETING_TYPE_CONTENT_INSTREAM_POSITION` *
//     `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION` * `TARGETING_TYPE_DEVICE_TYPE`
//   - `TARGETING_TYPE_BROWSER` * `TARGETING_TYPE_HOUSEHOLD_INCOME` *
//     `TARGETING_TYPE_ON_SCREEN_POSITION` * `TARGETING_TYPE_CARRIER_AND_ISP` *
//     `TARGETING_TYPE_OPERATING_SYSTEM` * `TARGETING_TYPE_DEVICE_MAKE_MODEL` *
//     `TARGETING_TYPE_ENVIRONMENT` * `TARGETING_TYPE_CATEGORY` *
//     `TARGETING_TYPE_VIEWABILITY` * `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS` *
//     `TARGETING_TYPE_LANGUAGE` * `TARGETING_TYPE_GEO_REGION` *
//     `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` *
//     `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` * `TARGETING_TYPE_EXCHANGE`
//   - `TARGETING_TYPE_SUB_EXCHANGE` * `TARGETING_TYPE_NATIVE_CONTENT_POSITION`
//   - `TARGETING_TYPE_OMID`.
func (r *TargetingTypesTargetingOptionsService) Get(targetingType string, targetingOptionId string) *TargetingTypesTargetingOptionsGetCall {
	c := &TargetingTypesTargetingOptionsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.targetingType = targetingType
	c.targetingOptionId = targetingOptionId
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": Required. The
// Advertiser this request is being made in the context of.
func (c *TargetingTypesTargetingOptionsGetCall) AdvertiserId(advertiserId int64) *TargetingTypesTargetingOptionsGetCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *TargetingTypesTargetingOptionsGetCall) Fields(s ...googleapi.Field) *TargetingTypesTargetingOptionsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *TargetingTypesTargetingOptionsGetCall) IfNoneMatch(entityTag string) *TargetingTypesTargetingOptionsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TargetingTypesTargetingOptionsGetCall) Context(ctx context.Context) *TargetingTypesTargetingOptionsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *TargetingTypesTargetingOptionsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TargetingTypesTargetingOptionsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/targetingTypes/{+targetingType}/targetingOptions/{+targetingOptionId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"targetingType":     c.targetingType,
		"targetingOptionId": c.targetingOptionId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.targetingTypes.targetingOptions.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.targetingTypes.targetingOptions.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *TargetingOption.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 *TargetingTypesTargetingOptionsGetCall) Do(opts ...googleapi.CallOption) (*TargetingOption, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &TargetingOption{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.targetingTypes.targetingOptions.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists targeting options of a given type.
//
//   - targetingType: The type of targeting option to be listed. Accepted values
//     are: * `TARGETING_TYPE_APP_CATEGORY` * `TARGETING_TYPE_AGE_RANGE` *
//     `TARGETING_TYPE_GENDER` * `TARGETING_TYPE_VIDEO_PLAYER_SIZE` *
//     `TARGETING_TYPE_USER_REWARDED_CONTENT` * `TARGETING_TYPE_PARENTAL_STATUS`
//   - `TARGETING_TYPE_CONTENT_INSTREAM_POSITION` *
//     `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION` * `TARGETING_TYPE_DEVICE_TYPE`
//   - `TARGETING_TYPE_BROWSER` * `TARGETING_TYPE_HOUSEHOLD_INCOME` *
//     `TARGETING_TYPE_ON_SCREEN_POSITION` * `TARGETING_TYPE_CARRIER_AND_ISP` *
//     `TARGETING_TYPE_OPERATING_SYSTEM` * `TARGETING_TYPE_DEVICE_MAKE_MODEL` *
//     `TARGETING_TYPE_ENVIRONMENT` * `TARGETING_TYPE_CATEGORY` *
//     `TARGETING_TYPE_VIEWABILITY` * `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS` *
//     `TARGETING_TYPE_LANGUAGE` * `TARGETING_TYPE_GEO_REGION` *
//     `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` *
//     `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` * `TARGETING_TYPE_EXCHANGE`
//   - `TARGETING_TYPE_SUB_EXCHANGE` * `TARGETING_TYPE_NATIVE_CONTENT_POSITION`
//   - `TARGETING_TYPE_OMID`.
func (r *TargetingTypesTargetingOptionsService) List(targetingType string) *TargetingTypesTargetingOptionsListCall {
	c := &TargetingTypesTargetingOptionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.targetingType = targetingType
	return c
}

// AdvertiserId sets the optional parameter "advertiserId": Required. The
// Advertiser this request is being made in the context of.
func (c *TargetingTypesTargetingOptionsListCall) AdvertiserId(advertiserId int64) *TargetingTypesTargetingOptionsListCall {
	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by targeting
// option fields. Supported syntax: * Filter expressions are made up of one or
// more restrictions. * Restrictions can be combined by `OR` logical operators.
// * A restriction has the form of `{field} {operator} {value}`. * All fields
// must use the `EQUALS (=)` operator. Supported fields: *
// `carrierAndIspDetails.type` * `geoRegionDetails.geoRegionType` *
// `targetingOptionId` Examples: * All `GEO REGION` targeting options that
// belong to sub type `GEO_REGION_TYPE_COUNTRY` or `GEO_REGION_TYPE_STATE`:
// `geoRegionDetails.geoRegionType="GEO_REGION_TYPE_COUNTRY" OR
// geoRegionDetails.geoRegionType="GEO_REGION_TYPE_STATE" * All `CARRIER AND
// ISP` targeting options that belong to sub type
// `CARRIER_AND_ISP_TYPE_CARRIER`:
// `carrierAndIspDetails.type="CARRIER_AND_ISP_TYPE_CARRIER" The length of
// this field should be no more than 500 characters. Reference our filter
// `LIST` requests (/display-video/api/guides/how-tos/filters) guide for more
// information.
func (c *TargetingTypesTargetingOptionsListCall) Filter(filter string) *TargetingTypesTargetingOptionsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `targetingOptionId` (default) The default
// sorting order is ascending. To specify descending order for a field, a
// suffix "desc" should be added to the field name. Example: `targetingOptionId
// desc`.
func (c *TargetingTypesTargetingOptionsListCall) OrderBy(orderBy string) *TargetingTypesTargetingOptionsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`. Returns
// error code `INVALID_ARGUMENT` if an invalid value is specified.
func (c *TargetingTypesTargetingOptionsListCall) PageSize(pageSize int64) *TargetingTypesTargetingOptionsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListTargetingOptions`
// method. If not specified, the first page of results will be returned.
func (c *TargetingTypesTargetingOptionsListCall) PageToken(pageToken string) *TargetingTypesTargetingOptionsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *TargetingTypesTargetingOptionsListCall) Fields(s ...googleapi.Field) *TargetingTypesTargetingOptionsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *TargetingTypesTargetingOptionsListCall) IfNoneMatch(entityTag string) *TargetingTypesTargetingOptionsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TargetingTypesTargetingOptionsListCall) Context(ctx context.Context) *TargetingTypesTargetingOptionsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *TargetingTypesTargetingOptionsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TargetingTypesTargetingOptionsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/targetingTypes/{+targetingType}/targetingOptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"targetingType": c.targetingType,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.targetingTypes.targetingOptions.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.targetingTypes.targetingOptions.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListTargetingOptionsResponse.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 *TargetingTypesTargetingOptionsListCall) Do(opts ...googleapi.CallOption) (*ListTargetingOptionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListTargetingOptionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.targetingTypes.targetingOptions.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *TargetingTypesTargetingOptionsListCall) Pages(ctx context.Context, f func(*ListTargetingOptionsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type TargetingTypesTargetingOptionsSearchCall struct {
	s                             *Service
	targetingType                 string
	searchtargetingoptionsrequest *SearchTargetingOptionsRequest
	urlParams_                    gensupport.URLParams
	ctx_                          context.Context
	header_                       http.Header
}

// Search: Searches for targeting options of a given type based on the given
// search terms.
//
//   - targetingType: The type of targeting options to retrieve. Accepted values
//     are: * `TARGETING_TYPE_GEO_REGION` * `TARGETING_TYPE_POI` *
//     `TARGETING_TYPE_BUSINESS_CHAIN`.
func (r *TargetingTypesTargetingOptionsService) Search(targetingType string, searchtargetingoptionsrequest *SearchTargetingOptionsRequest) *TargetingTypesTargetingOptionsSearchCall {
	c := &TargetingTypesTargetingOptionsSearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.targetingType = targetingType
	c.searchtargetingoptionsrequest = searchtargetingoptionsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *TargetingTypesTargetingOptionsSearchCall) Fields(s ...googleapi.Field) *TargetingTypesTargetingOptionsSearchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TargetingTypesTargetingOptionsSearchCall) Context(ctx context.Context) *TargetingTypesTargetingOptionsSearchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *TargetingTypesTargetingOptionsSearchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TargetingTypesTargetingOptionsSearchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.searchtargetingoptionsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/targetingTypes/{+targetingType}/targetingOptions:search")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"targetingType": c.targetingType,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.targetingTypes.targetingOptions.search", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.targetingTypes.targetingOptions.search" call.
// Any non-2xx status code is an error. Response headers are in either
// *SearchTargetingOptionsResponse.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 *TargetingTypesTargetingOptionsSearchCall) Do(opts ...googleapi.CallOption) (*SearchTargetingOptionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &SearchTargetingOptionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.targetingTypes.targetingOptions.search", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *TargetingTypesTargetingOptionsSearchCall) Pages(ctx context.Context, f func(*SearchTargetingOptionsResponse) error) error {
	c.ctx_ = ctx
	defer func(pt string) { c.searchtargetingoptionsrequest.PageToken = pt }(c.searchtargetingoptionsrequest.PageToken)
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.searchtargetingoptionsrequest.PageToken = x.NextPageToken
	}
}

type UsersBulkEditAssignedUserRolesCall struct {
	s                                *Service
	userId                           int64
	bulkeditassigneduserrolesrequest *BulkEditAssignedUserRolesRequest
	urlParams_                       gensupport.URLParams
	ctx_                             context.Context
	header_                          http.Header
}

// BulkEditAssignedUserRoles: Bulk edits user roles for a user. The operation
// will delete the assigned user roles provided in
// BulkEditAssignedUserRolesRequest.deletedAssignedUserRoles and then assign
// the user roles provided in
// BulkEditAssignedUserRolesRequest.createdAssignedUserRoles. This method has
// unique authentication requirements. Read the prerequisites in our Managing
// Users guide (/display-video/api/guides/users/overview#prerequisites) before
// using this method. The "Try this method" feature does not work for this
// method.
//
// - userId: The ID of the user to which the assigned user roles belong.
func (r *UsersService) BulkEditAssignedUserRoles(userId int64, bulkeditassigneduserrolesrequest *BulkEditAssignedUserRolesRequest) *UsersBulkEditAssignedUserRolesCall {
	c := &UsersBulkEditAssignedUserRolesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.userId = userId
	c.bulkeditassigneduserrolesrequest = bulkeditassigneduserrolesrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersBulkEditAssignedUserRolesCall) Fields(s ...googleapi.Field) *UsersBulkEditAssignedUserRolesCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersBulkEditAssignedUserRolesCall) Context(ctx context.Context) *UsersBulkEditAssignedUserRolesCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersBulkEditAssignedUserRolesCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersBulkEditAssignedUserRolesCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.bulkeditassigneduserrolesrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/users/{+userId}:bulkEditAssignedUserRoles")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"userId": strconv.FormatInt(c.userId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.users.bulkEditAssignedUserRoles", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.users.bulkEditAssignedUserRoles" call.
// Any non-2xx status code is an error. Response headers are in either
// *BulkEditAssignedUserRolesResponse.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 *UsersBulkEditAssignedUserRolesCall) Do(opts ...googleapi.CallOption) (*BulkEditAssignedUserRolesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &BulkEditAssignedUserRolesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.users.bulkEditAssignedUserRoles", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type UsersCreateCall struct {
	s          *Service
	user       *User
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Create: Creates a new user. Returns the newly created user if successful.
// This method has unique authentication requirements. Read the prerequisites
// in our Managing Users guide
// (/display-video/api/guides/users/overview#prerequisites) before using this
// method. The "Try this method" feature does not work for this method.
func (r *UsersService) Create(user *User) *UsersCreateCall {
	c := &UsersCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.user = user
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersCreateCall) Fields(s ...googleapi.Field) *UsersCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersCreateCall) Context(ctx context.Context) *UsersCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.user)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/users")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.users.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.users.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *User.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 *UsersCreateCall) Do(opts ...googleapi.CallOption) (*User, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &User{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.users.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Delete: Deletes a user. This method has unique authentication requirements.
// Read the prerequisites in our Managing Users guide
// (/display-video/api/guides/users/overview#prerequisites) before using this
// method. The "Try this method" feature does not work for this method.
//
// - userId: The ID of the user to delete.
func (r *UsersService) Delete(userId int64) *UsersDeleteCall {
	c := &UsersDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.userId = userId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersDeleteCall) Fields(s ...googleapi.Field) *UsersDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersDeleteCall) Context(ctx context.Context) *UsersDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/users/{+userId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"userId": strconv.FormatInt(c.userId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.users.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.users.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.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 *UsersDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.users.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets a user. This method has unique authentication requirements. Read
// the prerequisites in our Managing Users guide
// (/display-video/api/guides/users/overview#prerequisites) before using this
// method. The "Try this method" feature does not work for this method.
//
// - userId: The ID of the user to fetch.
func (r *UsersService) Get(userId int64) *UsersGetCall {
	c := &UsersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.userId = userId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersGetCall) Fields(s ...googleapi.Field) *UsersGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *UsersGetCall) IfNoneMatch(entityTag string) *UsersGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersGetCall) Context(ctx context.Context) *UsersGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/users/{+userId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"userId": strconv.FormatInt(c.userId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.users.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.users.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *User.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 *UsersGetCall) Do(opts ...googleapi.CallOption) (*User, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &User{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.users.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists users that are accessible to the current user. If two users have
// user roles on the same partner or advertiser, they can access each other.
// This method has unique authentication requirements. Read the prerequisites
// in our Managing Users guide
// (/display-video/api/guides/users/overview#prerequisites) before using this
// method. The "Try this method" feature does not work for this method.
func (r *UsersService) List() *UsersListCall {
	c := &UsersListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// Filter sets the optional parameter "filter": Allows filtering by user
// fields. Supported syntax: * Filter expressions are made up of one or more
// restrictions. * Restrictions can be combined by the logical operator `AND`.
// * A restriction has the form of `{field} {operator} {value}`. * The
// `displayName` and `email` fields must use the `HAS (:)` operator. * The
// `lastLoginTime` field must use either the `LESS THAN OR EQUAL TO (<=)` or
// `GREATER THAN OR EQUAL TO (>=)` operator. * All other fields must use the
// `EQUALS (=)` operator. Supported fields: * `assignedUserRole.advertiserId` *
// `assignedUserRole.entityType`: This is synthetic field of `AssignedUserRole`
// used for filtering. Identifies the type of entity to which the user role is
// assigned. Valid values are `Partner` and `Advertiser`. *
// `assignedUserRole.parentPartnerId`: This is a synthetic field of
// `AssignedUserRole` used for filtering. Identifies the parent partner of the
// entity to which the user role is assigned. * `assignedUserRole.partnerId` *
// `assignedUserRole.userRole` * `displayName` * `email` * `lastLoginTime`
// (input in ISO 8601 format, or `YYYY-MM-DDTHH:MM:SSZ`) Examples: * The user
// with `displayName` containing "foo": `displayName:"foo" * The user with
// `email` containing "bar": `email:"bar" * All users with standard user
// roles: `assignedUserRole.userRole="STANDARD" * All users with user roles
// for partner 123: `assignedUserRole.partnerId="123" * All users with user
// roles for advertiser 123: `assignedUserRole.advertiserId="123" * All users
// with partner level user roles: `entityType="PARTNER" * All users with user
// roles for partner 123 and advertisers under partner 123:
// `parentPartnerId="123" * All users that last logged in on or after
// 2023-01-01T00:00:00Z (format of ISO 8601):
// `lastLoginTime>="2023-01-01T00:00:00Z" The length of this field should be
// no more than 500 characters. Reference our filter `LIST` requests
// (/display-video/api/guides/how-tos/filters) guide for more information.
func (c *UsersListCall) Filter(filter string) *UsersListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Field by which to sort the
// list. Acceptable values are: * `displayName` (default) The default sorting
// order is ascending. To specify descending order for a field, a suffix "desc"
// should be added to the field name. For example, `displayName desc`.
func (c *UsersListCall) OrderBy(orderBy string) *UsersListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Requested page size. Must
// be between `1` and `200`. If unspecified will default to `100`.
func (c *UsersListCall) PageSize(pageSize int64) *UsersListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A token identifying a
// page of results the server should return. Typically, this is the value of
// next_page_token returned from the previous call to `ListUsers` method. If
// not specified, the first page of results will be returned.
func (c *UsersListCall) PageToken(pageToken string) *UsersListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersListCall) Fields(s ...googleapi.Field) *UsersListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an 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.
func (c *UsersListCall) IfNoneMatch(entityTag string) *UsersListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersListCall) Context(ctx context.Context) *UsersListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/users")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.users.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.users.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListUsersResponse.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 *UsersListCall) Do(opts ...googleapi.CallOption) (*ListUsersResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListUsersResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.users.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *UsersListCall) Pages(ctx context.Context, f func(*ListUsersResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type UsersPatchCall struct {
	s          *Service
	userId     int64
	user       *User
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Patch: Updates an existing user. Returns the updated user if successful.
// This method has unique authentication requirements. Read the prerequisites
// in our Managing Users guide
// (/display-video/api/guides/users/overview#prerequisites) before using this
// method. The "Try this method" feature does not work for this method.
//
// - userId: Output only. The unique ID of the user. Assigned by the system.
func (r *UsersService) Patch(userId int64, user *User) *UsersPatchCall {
	c := &UsersPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.userId = userId
	c.user = user
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The mask to
// control which fields to update.
func (c *UsersPatchCall) UpdateMask(updateMask string) *UsersPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersPatchCall) Fields(s ...googleapi.Field) *UsersPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersPatchCall) Context(ctx context.Context) *UsersPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.user)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/users/{+userId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"userId": strconv.FormatInt(c.userId, 10),
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "displayvideo.users.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "displayvideo.users.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *User.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 *UsersPatchCall) Do(opts ...googleapi.CallOption) (*User, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &User{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "displayvideo.users.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}
