// 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 Campaign}.
*/
public enum CampaignField implements EntityField {
// Fields constants definitions
/**
* Ad serving optimization status.
*/
AdServingOptimizationStatus(false),
/**
* Optional refinement of advertisingChannelType.
* Must be a valid sub-type of the parent channel type.
* May only be set for new campaigns and cannot be changed once set.
*/
@Filterable
AdvertisingChannelSubType(true),
/**
* The primary serving target for ads within this campaign.
* The targeting options can be refined in NetworkSetting.
* May only be set for new campaigns.
* This field is required and should not be {@code null} when it is contained within {@code Operator}s : ADD
*/
@Filterable
AdvertisingChannelType(true),
/**
* Amount of budget in the local currency for the account.
*/
@Filterable
Amount(true),
/**
* ID of the base campaign of the draft or trial campaign.
* For base campaigns, this is equal to the campaign ID.
* This field is only returned on get requests.
*/
@Filterable
BaseCampaignId(true),
/**
* Ceiling on bids placed by the budget optimizer.
*/
BidCeiling(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),
/**
* 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),
/**
* A Budget is created using the BudgetService ADD operation and is assigned a BudgetId.
* The BudgetId is used when modifying the Budget with BudgetService, or associating the Budget to a Campaign with CampaignService.
* A BudgetId can be shared across different campaigns--the system will then allocate the Budget among the Campaigns to get the optimum result.
*/
@Filterable
BudgetId(true),
/**
* Name of the Budget.
* When creating a Budget through BudgetService, every explicitly shared Budget must have a non-null non-empty name.
* In addition, all explicitly shared Budget names owned by an account must be distinct.
* Budgets that are not explicitly shared derive their name from the attached Campaign's name.
*/
BudgetName(false),
/**
* Number of campaigns actively using this budget.
* This field is only populated for Get operations.
*/
@Filterable
BudgetReferenceCount(true),
/**
*
*/
@Filterable
BudgetStatus(true),
/**
* Indicates if this campaign is a normal campaign, a draft campaign, or a trial campaign.
*/
@Filterable
CampaignTrialType(true),
/**
* Delivery method for the Budget which determines the rate at which the Budget is spent.
* Defaults to STANDARD and can be changed through BudgetService ADD or SET operations.
*/
DeliveryMethod(false),
/**
* If the campaign is eligible to enter conversion optimizer.
*/
Eligible(false),
/**
* Date the campaign ends.
* On add, defaults to <code>20371230</code>, which means the campaign will run indefinitely.
* To set an existing campaign to run indefinitely, set this field to <code>203712<b>30</b></code>.
* The date's format should be YYYYMMDD.
*/
@Filterable
EndDate(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),
/**
* Maximum number of impressions allowed during the time range by this cap.
* To remove the frequency cap on a campaign, set this field to {@code 0}.
*/
@Filterable
FrequencyCapMaxImpressions(true),
/**
* ID of this campaign.
*/
@Filterable
Id(true),
/**
* If true, this budget was created with the purpose of sharing this budget across one or more campaigns.
* <p>If false, this budget was created with the intention to be dedicatedly used with a single campaign, and the Budget's name and status will stay in the sync with the associated Campaign's name and status.
* Attempting to share this budget with a second Campaign will result in an error.</p>
*/
IsBudgetExplicitlyShared(false),
/**
* Labels that are attached to the campaign.
* To associate an existing {@code Label} to an existing {@code Campaign}, use {@code CampaignService#mutateLabel} with the ADD operator.
* To remove an associated {@code Label} from the {@code Campaign}, use {@code CampaignService#mutateLabel} with the 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),
/**
* The level on which the cap is to be applied (creative/adgroup).
* Cap is applied to all the entities of this level in the campaign.
*/
@Filterable
Level(true),
/**
* Name of this campaign.
* This field is required and should not be {@code null} for ADD operations.
* For SET and REMOVE operations, this can be used to address the campaign by name when the campaign is ENABLED or PAUSED.
* Removed campaigns cannot be addressed by name.
* If you wish to rename a campaign, you must provide the ID.
*/
@Filterable
Name(true),
/**
* <b>Note:</b> The value for this field currently cannot be changed.
* Pricing model indicates whether it is a pay per clicks or pay per conversions campaign.
* If the pricing model is not specified it defaults to Clicks.
*/
@Filterable
PricingMode(true),
/**
* Reason why a campaign would be rejected for conversion optimizer.
*/
RejectionReasons(false),
/**
* Serving status.
*/
@Filterable
ServingStatus(true),
/**
* List of settings for the campaign.
*/
Settings(false),
/**
* Date the campaign begins.
* On add, defaults to the current day in the parent account's local timezone.
* The date's format should be YYYYMMDD.
*/
@Filterable
StartDate(true),
/**
* Status of this campaign.
* On add, defaults to {@code ENABLED}.
*/
@Filterable
Status(true),
/**
* Ads will be served on specified placements in the Google Display Network.
* Placements are specified using {@code Placement} criteria.
*/
@Filterable
TargetContentNetwork(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.
*/
TargetCpa(false),
/**
* Maximum cpc bid limit that applies to all keywords managed by the strategy.
*/
@Filterable
TargetCpaMaxCpcBidCeiling(true),
/**
* Minimum cpc bid limit that applies to all keywords managed by the strategy.
*/
@Filterable
TargetCpaMaxCpcBidFloor(true),
/**
* Ads will be served with Google.com search results.
*/
@Filterable
TargetGoogleSearch(true),
/**
* Ads will be served on the Google Partner Network.
* This is available to only some specific Google partner accounts.
*/
@Filterable
TargetPartnerSearchNetwork(true),
/**
* The desired revenue (based on conversion data) per unit of spend.
*/
TargetRoas(false),
/**
* Maximum bid limit that applies to all keywords managed by the strategy.
*/
TargetRoasBidCeiling(false),
/**
* Minimum bid limit that applies to all keywords managed by the strategy.
*/
TargetRoasBidFloor(false),
/**
* Ads will be served on partner sites in the Google Search Network (requires {@code GOOGLE_SEARCH}).
*/
@Filterable
TargetSearchNetwork(true),
/**
* The largest max CPC bid that can be set by the TargetSpend bidder.
*/
TargetSpendBidCeiling(false),
/**
* A spend target under which to maximize clicks.
* The TargetSpend bidder will attempt to spend the smaller of this value or the natural throttling spend amount.
* If not specified, the budget is used as the spend target.
*/
TargetSpendSpendTarget(false),
/**
* Unit of time the cap is defined at.
* Only the Day, Week and Month time units are supported.
*/
@Filterable
TimeUnit(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),
/**
* The display mode for vanity pharma URLs.
*/
@Filterable
VanityPharmaDisplayUrlMode(true),
/**
* The text that will be displayed in display URL of the text ad when website description is the selected display mode for vanity pharma URLs.
*/
@Filterable
VanityPharmaText(true),
;
private final boolean isFilterable;
private CampaignField(boolean isFilterable) {
this.isFilterable = isFilterable;
}
@Override
public boolean isFilterable() {
return this.isFilterable;
}
}