// Copyright 2016 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.api.ads.adwords.lib.selectorfields.v201607.cm;
import com.google.api.ads.adwords.lib.selectorfields.EntityField;
import com.google.api.ads.adwords.lib.selectorfields.Filterable;
/**
* A {@code Enum} to facilitate the selection of fields for {@code AdGroup}.
*/
public enum AdGroupField implements EntityField {
// Fields constants definitions
/**
* ID of the base adgroup from which this draft/trial adgroup was created.
* For base adgroups this is equal to the adgroup ID.
* If the adgroup was created in the draft or trial and has no corresponding base adgroup, this field is null.
* This field is readonly and only returned on get requests.
*/
BaseAdGroupId(false),
/**
* ID of the base campaign from which this draft/trial adgroup was created.
* This field is only returned on get requests.
*/
BaseCampaignId(false),
/**
* Bid type indicates if it is a Target CPA campaign.
* If the Bid type is not specified it defaults to Target CPA.
*/
@Filterable
BidType(true),
/**
* Id of the bidding strategy to be associated with the campaign, ad group or ad group criteria.
* A bidding strategy is created using the BiddingStrategyService ADD operation and is assigned a BiddingStrategyId.
* The BiddingStrategyId can be shared across campaigns, ad groups and ad group criteria.
*/
@Filterable
BiddingStrategyId(true),
/**
* Name of the bidding strategy.
* This is applicable only for flexible bidding strategies.
*/
@Filterable
BiddingStrategyName(true),
/**
* Indicates where the bidding strategy is associated i.e.
* campaign, ad group or ad group criterion.
*/
@Filterable
BiddingStrategySource(true),
/**
* The type of the bidding strategy to be attached.
* <p>For details on portfolio vs.
* standard availability, see the <a href="https://developers.google.com/adwords/api/docs/guides/bidding">bidding guide</a>.
*/
@Filterable
BiddingStrategyType(true),
/**
* ID of the campaign with which this ad group is associated.
*/
@Filterable
CampaignId(true),
/**
* Name of the campaign with which this ad group is associated.
*/
@Filterable
CampaignName(true),
/**
* Allows advertisers to specify a criteria dimension on which to place absolute bids.
* This is only applicable for campaigns that target only the content network and not search.
*/
@Filterable
ContentBidCriterionTypeGroup(true),
/**
* Max CPC (cost per click) bid.
* At the ad group level, this represents the default bid applicable for <ul><li>keyword targeting on search network.</li> <li>keywords & placements for content targeting.</li></ul> At the ad group criteria level, this is the max cpc bid.
*/
@Filterable
CpcBid(true),
/**
* Max CPM (cost per thousand impressions) bid.
*/
@Filterable
CpmBid(true),
/**
* The enhanced CPC bidding option for the campaign, which enables bids to be enhanced based on conversion optimizer data.
* For more information about enhanced CPC, see the <a href="//support.google.com/adwords/answer/2464964" >AdWords Help Center</a>.
*/
@Filterable
EnhancedCpcEnabled(true),
/**
* Status of the experiment row.
* If this is set to REMOVED in a SET operation, the adgroup will be removed from the experiment.
*/
ExperimentDataStatus(false),
/**
* Status of this adgroup in the experiment.
* It must be specified while adding experiment data, which could come through a SET as well.
*/
ExperimentDeltaStatus(false),
/**
*
*/
@Filterable
ExperimentId(true),
/**
* ID of this ad group.
*/
@Filterable
Id(true),
/**
* Labels that are attached to the {@code AdGroup}.
* To associate an existing {@code Label} to an existing {@code AdGroup}, use {@code AdGroupService#mutateLabel} with ADD operator.
* To remove an associated {@code Label} from the {@code AdGroup}, use {@code AdGroupService#mutateLabel} with REMOVE operator.
* To filter on {@code Label}s, use one of {@code Predicate.Operator#CONTAINS_ALL}, {@code Predicate.Operator#CONTAINS_ANY}, {@code Predicate.Operator#CONTAINS_NONE} operators with a list of {@code Label} ids.
*/
@Filterable
Labels(true),
/**
*
*/
@Filterable
MaxContentCpcMultiplier(true),
/**
*
*/
@Filterable
MaxCpcMultiplier(true),
/**
*
*/
@Filterable
MaxCpmMultiplier(true),
/**
* Name of this ad group (at most 255 UTF-8 full-width characters).
* This field is required and should not be {@code null} for ADD operations from v201309 version.
*/
@Filterable
Name(true),
/**
* List of settings for the AdGroup.
*/
Settings(false),
/**
* Status of this ad group.
*/
@Filterable
Status(true),
/**
* Average cost per acquisition (CPA) target.
* This target should be greater than or equal to minimum billable unit based on the currency for the account.
*/
@Filterable
TargetCpa(true),
/**
* Target cost per acquisition (CPA).
* This is applicable only at the ad group level.
* <p>If an ad group-level target is not set and the strategy type is TARGET_CPA, the strategy level target will be used.
* To set the strategy-level target, set the {@code TargetCpaBiddingScheme#targetCpa} on the strategy's {@code BiddingStrategyConfiguration#biddingScheme}.
*/
@Filterable
TargetCpaBid(true),
/**
* The level (ad group, ad group strategy, or campaign strategy) at which the bid was set.
* This is applicable only at the ad group level.
*/
@Filterable
TargetCpaBidSource(true),
/**
* URL template for constructing a tracking URL.
* <p>On update, empty string ("") indicates to clear the field.
*/
@Filterable
TrackingUrlTemplate(true),
/**
* A list of mappings to be used for substituting URL custom parameter tags in the trackingUrlTemplate, finalUrls, and/or finalMobileUrls.
*/
UrlCustomParameters(false),
;
private final boolean isFilterable;
private AdGroupField(boolean isFilterable) {
this.isFilterable = isFilterable;
}
@Override
public boolean isFilterable() {
return this.isFilterable;
}
}