// 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.v201609.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 ManagedCustomer}.
*/
public enum ManagedCustomerField implements EntityField {
// Fields constants definitions
/**
* The list of account labels associated with this customer.
* Only labels owned by the requesting manager will be returned.
* To change the list of labels applied to this customer, see {@code ManagedCustomerService#mutateLabels}.
*/
@Filterable
AccountLabels(true),
/**
* Whether this account can manage clients.
* <span class="constraint ReadOnly">This field is read only and will be ignored when sent to the API.</span>
*/
@Filterable
CanManageClients(true),
/**
* The currency in which this account operates.
* We support a subset of the currency codes derived from the ISO 4217 standard.
* See <a href="https://developers.google.com/adwords/api/docs/appendix/currencycodes" >Currency Codes</a> for the currently supported currencies.
*/
@Filterable
CurrencyCode(true),
/**
* The 10-digit ID that uniquely identifies the AdWords account.
*/
@Filterable
CustomerId(true),
/**
* The local timezone ID for this customer.
* See <a href="https://developers.google.com/adwords/api/docs/appendix/timezones" >Time Zone Codes</a> for the currently supported list.
*/
@Filterable
DateTimeZone(true),
/**
* ID of the label.
* <p>This field is selectable/filterable in AccountLabelService.
* To select labels or filter by label ID in {@code ManagedCustomerService#get}, use the {@code AccountLabels} field instead.
*/
@Filterable
LabelId(true),
/**
* Name of the label.
* <p>This field is selectable in AccountLabelService.
* To select labels in {@code ManagedCustomerService#get}, use the {@code AccountLabels} field instead.
*/
LabelName(false),
/**
* The name used by the manager to refer to the client.
*/
@Filterable
Name(true),
/**
* Whether this managed customer's account is a test account.
*/
TestAccount(false),
;
private final boolean isFilterable;
private ManagedCustomerField(boolean isFilterable) {
this.isFilterable = isFilterable;
}
@Override
public boolean isFilterable() {
return this.isFilterable;
}
}