All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.facebook.ads.sdk.Page Maven / Gradle / Ivy

/**
 * Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
 *
 * You are hereby granted a non-exclusive, worldwide, royalty-free license to
 * use, copy, modify, and distribute this software in source code or binary
 * form for use in connection with the web services and APIs provided by
 * Facebook.
 *
 * As with any software that integrates with the Facebook platform, your use
 * of this software is subject to the Facebook Developer Principles and
 * Policies [http://developers.facebook.com/policy/]. This copyright notice
 * shall be included in all copies or substantial portions of the software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 *
 */

package com.facebook.ads.sdk;

import java.io.File;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.common.base.Function;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
import com.google.gson.JsonObject;
import com.google.gson.JsonArray;
import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;

import com.facebook.ads.sdk.APIException.MalformedResponseException;

/**
 * This class is auto-generated.
 *
 * For any issues or feature requests related to this class, please let us know
 * on github and we'll fix in our codegen framework. We'll not be able to accept
 * pull request for this class.
 *
 */
public class Page extends APINode {
  @SerializedName("about")
  private String mAbout = null;
  @SerializedName("access_token")
  private String mAccessToken = null;
  @SerializedName("ad_campaign")
  private AdSet mAdCampaign = null;
  @SerializedName("affiliation")
  private String mAffiliation = null;
  @SerializedName("app_id")
  private String mAppId = null;
  @SerializedName("app_links")
  private AppLinks mAppLinks = null;
  @SerializedName("artists_we_like")
  private String mArtistsWeLike = null;
  @SerializedName("attire")
  private String mAttire = null;
  @SerializedName("awards")
  private String mAwards = null;
  @SerializedName("band_interests")
  private String mBandInterests = null;
  @SerializedName("band_members")
  private String mBandMembers = null;
  @SerializedName("best_page")
  private Page mBestPage = null;
  @SerializedName("bio")
  private String mBio = null;
  @SerializedName("birthday")
  private String mBirthday = null;
  @SerializedName("booking_agent")
  private String mBookingAgent = null;
  @SerializedName("built")
  private String mBuilt = null;
  @SerializedName("business")
  private Object mBusiness = null;
  @SerializedName("can_checkin")
  private Boolean mCanCheckin = null;
  @SerializedName("can_post")
  private Boolean mCanPost = null;
  @SerializedName("category")
  private String mCategory = null;
  @SerializedName("category_list")
  private List mCategoryList = null;
  @SerializedName("checkins")
  private Long mCheckins = null;
  @SerializedName("company_overview")
  private String mCompanyOverview = null;
  @SerializedName("connected_instagram_account")
  private ShadowIGUser mConnectedInstagramAccount = null;
  @SerializedName("contact_address")
  private MailingAddress mContactAddress = null;
  @SerializedName("context")
  private OpenGraphContext mContext = null;
  @SerializedName("copyright_attribution_insights")
  private CopyrightAttributionInsights mCopyrightAttributionInsights = null;
  @SerializedName("copyright_whitelisted_ig_partners")
  private List mCopyrightWhitelistedIgPartners = null;
  @SerializedName("country_page_likes")
  private Long mCountryPageLikes = null;
  @SerializedName("cover")
  private CoverPhoto mCover = null;
  @SerializedName("culinary_team")
  private String mCulinaryTeam = null;
  @SerializedName("current_location")
  private String mCurrentLocation = null;
  @SerializedName("description")
  private String mDescription = null;
  @SerializedName("description_html")
  private String mDescriptionHtml = null;
  @SerializedName("directed_by")
  private String mDirectedBy = null;
  @SerializedName("display_subtext")
  private String mDisplaySubtext = null;
  @SerializedName("displayed_message_response_time")
  private String mDisplayedMessageResponseTime = null;
  @SerializedName("emails")
  private List mEmails = null;
  @SerializedName("engagement")
  private Engagement mEngagement = null;
  @SerializedName("fan_count")
  private Long mFanCount = null;
  @SerializedName("featured_video")
  private AdVideo mFeaturedVideo = null;
  @SerializedName("features")
  private String mFeatures = null;
  @SerializedName("food_styles")
  private List mFoodStyles = null;
  @SerializedName("founded")
  private String mFounded = null;
  @SerializedName("general_info")
  private String mGeneralInfo = null;
  @SerializedName("general_manager")
  private String mGeneralManager = null;
  @SerializedName("genre")
  private String mGenre = null;
  @SerializedName("global_brand_page_name")
  private String mGlobalBrandPageName = null;
  @SerializedName("global_brand_root_id")
  private String mGlobalBrandRootId = null;
  @SerializedName("has_added_app")
  private Boolean mHasAddedApp = null;
  @SerializedName("has_whatsapp_business_number")
  private Boolean mHasWhatsappBusinessNumber = null;
  @SerializedName("has_whatsapp_number")
  private Boolean mHasWhatsappNumber = null;
  @SerializedName("hometown")
  private String mHometown = null;
  @SerializedName("hours")
  private Map mHours = null;
  @SerializedName("id")
  private String mId = null;
  @SerializedName("impressum")
  private String mImpressum = null;
  @SerializedName("influences")
  private String mInfluences = null;
  @SerializedName("instagram_business_account")
  private ShadowIGUser mInstagramBusinessAccount = null;
  @SerializedName("instant_articles_review_status")
  private String mInstantArticlesReviewStatus = null;
  @SerializedName("is_always_open")
  private Boolean mIsAlwaysOpen = null;
  @SerializedName("is_chain")
  private Boolean mIsChain = null;
  @SerializedName("is_community_page")
  private Boolean mIsCommunityPage = null;
  @SerializedName("is_eligible_for_branded_content")
  private Boolean mIsEligibleForBrandedContent = null;
  @SerializedName("is_messenger_bot_get_started_enabled")
  private Boolean mIsMessengerBotGetStartedEnabled = null;
  @SerializedName("is_messenger_platform_bot")
  private Boolean mIsMessengerPlatformBot = null;
  @SerializedName("is_owned")
  private Boolean mIsOwned = null;
  @SerializedName("is_permanently_closed")
  private Boolean mIsPermanentlyClosed = null;
  @SerializedName("is_published")
  private Boolean mIsPublished = null;
  @SerializedName("is_unclaimed")
  private Boolean mIsUnclaimed = null;
  @SerializedName("is_verified")
  private Boolean mIsVerified = null;
  @SerializedName("is_webhooks_subscribed")
  private Boolean mIsWebhooksSubscribed = null;
  @SerializedName("keywords")
  private Object mKeywords = null;
  @SerializedName("leadgen_form_preview_details")
  private LeadGenFormPreviewDetails mLeadgenFormPreviewDetails = null;
  @SerializedName("leadgen_has_crm_integration")
  private Boolean mLeadgenHasCrmIntegration = null;
  @SerializedName("leadgen_has_fat_ping_crm_integration")
  private Boolean mLeadgenHasFatPingCrmIntegration = null;
  @SerializedName("leadgen_tos_acceptance_time")
  private String mLeadgenTosAcceptanceTime = null;
  @SerializedName("leadgen_tos_accepted")
  private Boolean mLeadgenTosAccepted = null;
  @SerializedName("leadgen_tos_accepting_user")
  private User mLeadgenTosAcceptingUser = null;
  @SerializedName("link")
  private String mLink = null;
  @SerializedName("location")
  private Location mLocation = null;
  @SerializedName("members")
  private String mMembers = null;
  @SerializedName("merchant_id")
  private String mMerchantId = null;
  @SerializedName("merchant_review_status")
  private String mMerchantReviewStatus = null;
  @SerializedName("messenger_ads_default_icebreakers")
  private List mMessengerAdsDefaultIcebreakers = null;
  @SerializedName("messenger_ads_default_page_welcome_message")
  private MessengerDestinationPageWelcomeMessage mMessengerAdsDefaultPageWelcomeMessage = null;
  @SerializedName("messenger_ads_default_quick_replies")
  private List mMessengerAdsDefaultQuickReplies = null;
  @SerializedName("messenger_ads_quick_replies_type")
  private String mMessengerAdsQuickRepliesType = null;
  @SerializedName("mission")
  private String mMission = null;
  @SerializedName("mpg")
  private String mMpg = null;
  @SerializedName("name")
  private String mName = null;
  @SerializedName("name_with_location_descriptor")
  private String mNameWithLocationDescriptor = null;
  @SerializedName("network")
  private String mNetwork = null;
  @SerializedName("new_like_count")
  private Long mNewLikeCount = null;
  @SerializedName("offer_eligible")
  private Boolean mOfferEligible = null;
  @SerializedName("overall_star_rating")
  private Double mOverallStarRating = null;
  @SerializedName("page_about_story")
  private PageAboutStory mPageAboutStory = null;
  @SerializedName("page_token")
  private String mPageToken = null;
  @SerializedName("parent_page")
  private Page mParentPage = null;
  @SerializedName("parking")
  private PageParking mParking = null;
  @SerializedName("payment_options")
  private PagePaymentOptions mPaymentOptions = null;
  @SerializedName("personal_info")
  private String mPersonalInfo = null;
  @SerializedName("personal_interests")
  private String mPersonalInterests = null;
  @SerializedName("pharma_safety_info")
  private String mPharmaSafetyInfo = null;
  @SerializedName("phone")
  private String mPhone = null;
  @SerializedName("place_type")
  private String mPlaceType = null;
  @SerializedName("plot_outline")
  private String mPlotOutline = null;
  @SerializedName("preferred_audience")
  private Targeting mPreferredAudience = null;
  @SerializedName("press_contact")
  private String mPressContact = null;
  @SerializedName("price_range")
  private String mPriceRange = null;
  @SerializedName("privacy_info_url")
  private String mPrivacyInfoUrl = null;
  @SerializedName("produced_by")
  private String mProducedBy = null;
  @SerializedName("products")
  private String mProducts = null;
  @SerializedName("promotion_eligible")
  private Boolean mPromotionEligible = null;
  @SerializedName("promotion_ineligible_reason")
  private String mPromotionIneligibleReason = null;
  @SerializedName("public_transit")
  private String mPublicTransit = null;
  @SerializedName("rating_count")
  private Long mRatingCount = null;
  @SerializedName("recipient")
  private String mRecipient = null;
  @SerializedName("record_label")
  private String mRecordLabel = null;
  @SerializedName("release_date")
  private String mReleaseDate = null;
  @SerializedName("restaurant_services")
  private PageRestaurantServices mRestaurantServices = null;
  @SerializedName("restaurant_specialties")
  private PageRestaurantSpecialties mRestaurantSpecialties = null;
  @SerializedName("schedule")
  private String mSchedule = null;
  @SerializedName("screenplay_by")
  private String mScreenplayBy = null;
  @SerializedName("season")
  private String mSeason = null;
  @SerializedName("single_line_address")
  private String mSingleLineAddress = null;
  @SerializedName("starring")
  private String mStarring = null;
  @SerializedName("start_info")
  private PageStartInfo mStartInfo = null;
  @SerializedName("store_code")
  private String mStoreCode = null;
  @SerializedName("store_location_descriptor")
  private String mStoreLocationDescriptor = null;
  @SerializedName("store_number")
  private Long mStoreNumber = null;
  @SerializedName("studio")
  private String mStudio = null;
  @SerializedName("supports_instant_articles")
  private Boolean mSupportsInstantArticles = null;
  @SerializedName("talking_about_count")
  private Long mTalkingAboutCount = null;
  @SerializedName("unread_message_count")
  private Long mUnreadMessageCount = null;
  @SerializedName("unread_notif_count")
  private Long mUnreadNotifCount = null;
  @SerializedName("unseen_message_count")
  private Long mUnseenMessageCount = null;
  @SerializedName("username")
  private String mUsername = null;
  @SerializedName("verification_status")
  private String mVerificationStatus = null;
  @SerializedName("voip_info")
  private VoipInfo mVoipInfo = null;
  @SerializedName("website")
  private String mWebsite = null;
  @SerializedName("were_here_count")
  private Long mWereHereCount = null;
  @SerializedName("whatsapp_number")
  private String mWhatsappNumber = null;
  @SerializedName("written_by")
  private String mWrittenBy = null;
  protected static Gson gson = null;

  Page() {
  }

  public Page(Long id, APIContext context) {
    this(id.toString(), context);
  }

  public Page(String id, APIContext context) {
    this.mId = id;

    this.context = context;
  }

  public Page fetch() throws APIException{
    Page newInstance = fetchById(this.getPrefixedId().toString(), this.context);
    this.copyFrom(newInstance);
    return this;
  }

  public static Page fetchById(Long id, APIContext context) throws APIException {
    return fetchById(id.toString(), context);
  }

  public static ListenableFuture fetchByIdAsync(Long id, APIContext context) throws APIException {
    return fetchByIdAsync(id.toString(), context);
  }

  public static Page fetchById(String id, APIContext context) throws APIException {
    return
      new APIRequestGet(id, context)
      .requestAllFields()
      .execute();
  }

  public static ListenableFuture fetchByIdAsync(String id, APIContext context) throws APIException {
    return
      new APIRequestGet(id, context)
      .requestAllFields()
      .executeAsync();
  }

  public static APINodeList fetchByIds(List ids, List fields, APIContext context) throws APIException {
    return (APINodeList)(
      new APIRequest(context, "", "/", "GET", Page.getParser())
        .setParam("ids", APIRequest.joinStringList(ids))
        .requestFields(fields)
        .execute()
    );
  }

  public static ListenableFuture> fetchByIdsAsync(List ids, List fields, APIContext context) throws APIException {
    return
      new APIRequest(context, "", "/", "GET", Page.getParser())
        .setParam("ids", APIRequest.joinStringList(ids))
        .requestFields(fields)
        .executeAsyncBase();
  }

  private String getPrefixedId() {
    return getId();
  }

  public String getId() {
    return getFieldId().toString();
  }
  public static Page loadJSON(String json, APIContext context, String header) {
    Page page = getGson().fromJson(json, Page.class);
    if (context.isDebug()) {
      JsonParser parser = new JsonParser();
      JsonElement o1 = parser.parse(json);
      JsonElement o2 = parser.parse(page.toString());
      if (o1.getAsJsonObject().get("__fb_trace_id__") != null) {
        o2.getAsJsonObject().add("__fb_trace_id__", o1.getAsJsonObject().get("__fb_trace_id__"));
      }
      if (!o1.equals(o2)) {
        context.log("[Warning] When parsing response, object is not consistent with JSON:");
        context.log("[JSON]" + o1);
        context.log("[Object]" + o2);
      };
    }
    page.context = context;
    page.rawValue = json;
    page.header = header;
    return page;
  }

  public static APINodeList parseResponse(String json, APIContext context, APIRequest request, String header) throws MalformedResponseException {
    APINodeList pages = new APINodeList(request, json, header);
    JsonArray arr;
    JsonObject obj;
    JsonParser parser = new JsonParser();
    Exception exception = null;
    try{
      JsonElement result = parser.parse(json);
      if (result.isJsonArray()) {
        // First, check if it's a pure JSON Array
        arr = result.getAsJsonArray();
        for (int i = 0; i < arr.size(); i++) {
          pages.add(loadJSON(arr.get(i).getAsJsonObject().toString(), context, header));
        };
        return pages;
      } else if (result.isJsonObject()) {
        obj = result.getAsJsonObject();
        if (obj.has("data")) {
          if (obj.has("paging")) {
            JsonObject paging = obj.get("paging").getAsJsonObject();
            if (paging.has("cursors")) {
                JsonObject cursors = paging.get("cursors").getAsJsonObject();
                String before = cursors.has("before") ? cursors.get("before").getAsString() : null;
                String after = cursors.has("after") ? cursors.get("after").getAsString() : null;
                pages.setCursors(before, after);
            }
            String previous = paging.has("previous") ? paging.get("previous").getAsString() : null;
            String next = paging.has("next") ? paging.get("next").getAsString() : null;
            pages.setPaging(previous, next);
            if (context.hasAppSecret()) {
              pages.setAppSecret(context.getAppSecretProof());
            }
          }
          if (obj.get("data").isJsonArray()) {
            // Second, check if it's a JSON array with "data"
            arr = obj.get("data").getAsJsonArray();
            for (int i = 0; i < arr.size(); i++) {
              pages.add(loadJSON(arr.get(i).getAsJsonObject().toString(), context, header));
            };
          } else if (obj.get("data").isJsonObject()) {
            // Third, check if it's a JSON object with "data"
            obj = obj.get("data").getAsJsonObject();
            boolean isRedownload = false;
            for (String s : new String[]{"campaigns", "adsets", "ads"}) {
              if (obj.has(s)) {
                isRedownload = true;
                obj = obj.getAsJsonObject(s);
                for (Map.Entry entry : obj.entrySet()) {
                  pages.add(loadJSON(entry.getValue().toString(), context, header));
                }
                break;
              }
            }
            if (!isRedownload) {
              pages.add(loadJSON(obj.toString(), context, header));
            }
          }
          return pages;
        } else if (obj.has("images")) {
          // Fourth, check if it's a map of image objects
          obj = obj.get("images").getAsJsonObject();
          for (Map.Entry entry : obj.entrySet()) {
              pages.add(loadJSON(entry.getValue().toString(), context, header));
          }
          return pages;
        } else {
          // Fifth, check if it's an array of objects indexed by id
          boolean isIdIndexedArray = true;
          for (Map.Entry entry : obj.entrySet()) {
            String key = (String) entry.getKey();
            if (key.equals("__fb_trace_id__")) {
              continue;
            }
            JsonElement value = (JsonElement) entry.getValue();
            if (
              value != null &&
              value.isJsonObject() &&
              value.getAsJsonObject().has("id") &&
              value.getAsJsonObject().get("id") != null &&
              value.getAsJsonObject().get("id").getAsString().equals(key)
            ) {
              pages.add(loadJSON(value.toString(), context, header));
            } else {
              isIdIndexedArray = false;
              break;
            }
          }
          if (isIdIndexedArray) {
            return pages;
          }

          // Sixth, check if it's pure JsonObject
          pages.clear();
          pages.add(loadJSON(json, context, header));
          return pages;
        }
      }
    } catch (Exception e) {
      exception = e;
    }
    throw new MalformedResponseException(
      "Invalid response string: " + json,
      exception
    );
  }

  @Override
  public APIContext getContext() {
    return context;
  }

  @Override
  public void setContext(APIContext context) {
    this.context = context;
  }

  @Override
  public String toString() {
    return getGson().toJson(this);
  }

  public APIRequestCreateActivity createActivity() {
    return new APIRequestCreateActivity(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetAdminNotes getAdminNotes() {
    return new APIRequestGetAdminNotes(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateAdminNote createAdminNote() {
    return new APIRequestCreateAdminNote(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateAdminSetting createAdminSetting() {
    return new APIRequestCreateAdminSetting(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteAdmins deleteAdmins() {
    return new APIRequestDeleteAdmins(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateAdmin createAdmin() {
    return new APIRequestCreateAdmin(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateAdminStickySetting createAdminStickySetting() {
    return new APIRequestCreateAdminStickySetting(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteAgencies deleteAgencies() {
    return new APIRequestDeleteAgencies(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetAgencies getAgencies() {
    return new APIRequestGetAgencies(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateAgency createAgency() {
    return new APIRequestCreateAgency(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetAlbums getAlbums() {
    return new APIRequestGetAlbums(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateAlbum createAlbum() {
    return new APIRequestCreateAlbum(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetAsset3Ds getAsset3Ds() {
    return new APIRequestGetAsset3Ds(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteAssignedUsers deleteAssignedUsers() {
    return new APIRequestDeleteAssignedUsers(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetAssignedUsers getAssignedUsers() {
    return new APIRequestGetAssignedUsers(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateAssignedUser createAssignedUser() {
    return new APIRequestCreateAssignedUser(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetAudioMediaCopyrights getAudioMediaCopyrights() {
    return new APIRequestGetAudioMediaCopyrights(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteBlocked deleteBlocked() {
    return new APIRequestDeleteBlocked(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetBlocked getBlocked() {
    return new APIRequestGetBlocked(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateBlocked createBlocked() {
    return new APIRequestCreateBlocked(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetBroadcastMessages getBroadcastMessages() {
    return new APIRequestGetBroadcastMessages(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateBroadcastMessage createBroadcastMessage() {
    return new APIRequestCreateBroadcastMessage(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateBroadcastReachEstimation createBroadcastReachEstimation() {
    return new APIRequestCreateBroadcastReachEstimation(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetBusinessActivities getBusinessActivities() {
    return new APIRequestGetBusinessActivities(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateBusiness createBusiness() {
    return new APIRequestCreateBusiness(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetBusinessProjects getBusinessProjects() {
    return new APIRequestGetBusinessProjects(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetBusinessSettingLogs getBusinessSettingLogs() {
    return new APIRequestGetBusinessSettingLogs(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetCallToActions getCallToActions() {
    return new APIRequestGetCallToActions(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateCallToAction createCallToAction() {
    return new APIRequestCreateCallToAction(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetCanvasElements getCanvasElements() {
    return new APIRequestGetCanvasElements(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateCanvasElement createCanvasElement() {
    return new APIRequestCreateCanvasElement(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetCanvases getCanvases() {
    return new APIRequestGetCanvases(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateCanvase createCanvase() {
    return new APIRequestCreateCanvase(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteClaimedUrls deleteClaimedUrls() {
    return new APIRequestDeleteClaimedUrls(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetClaimedUrls getClaimedUrls() {
    return new APIRequestGetClaimedUrls(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateClaimedUrl createClaimedUrl() {
    return new APIRequestCreateClaimedUrl(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetConversations getConversations() {
    return new APIRequestGetConversations(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateCopyrightManualClaim createCopyrightManualClaim() {
    return new APIRequestCreateCopyrightManualClaim(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteCopyrightWhitelistedIgPartners deleteCopyrightWhitelistedIgPartners() {
    return new APIRequestDeleteCopyrightWhitelistedIgPartners(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateCopyrightWhitelistedIgPartner createCopyrightWhitelistedIgPartner() {
    return new APIRequestCreateCopyrightWhitelistedIgPartner(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteCopyrightWhitelistedPartners deleteCopyrightWhitelistedPartners() {
    return new APIRequestDeleteCopyrightWhitelistedPartners(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetCopyrightWhitelistedPartners getCopyrightWhitelistedPartners() {
    return new APIRequestGetCopyrightWhitelistedPartners(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateCopyrightWhitelistedPartner createCopyrightWhitelistedPartner() {
    return new APIRequestCreateCopyrightWhitelistedPartner(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetCrosspostPendingApprovalPages getCrosspostPendingApprovalPages() {
    return new APIRequestGetCrosspostPendingApprovalPages(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetCrosspostWhitelistedPages getCrosspostWhitelistedPages() {
    return new APIRequestGetCrosspostWhitelistedPages(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetCustomLabels getCustomLabels() {
    return new APIRequestGetCustomLabels(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateCustomLabel createCustomLabel() {
    return new APIRequestCreateCustomLabel(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetEvents getEvents() {
    return new APIRequestGetEvents(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetExpiredPosts getExpiredPosts() {
    return new APIRequestGetExpiredPosts(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetExpiringPosts getExpiringPosts() {
    return new APIRequestGetExpiringPosts(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetFeatureDVideosCollection getFeatureDVideosCollection() {
    return new APIRequestGetFeatureDVideosCollection(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetFeed getFeed() {
    return new APIRequestGetFeed(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateFeed createFeed() {
    return new APIRequestCreateFeed(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateFlag createFlag() {
    return new APIRequestCreateFlag(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetGlobalBrandChildren getGlobalBrandChildren() {
    return new APIRequestGetGlobalBrandChildren(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetIndexedVideoCopyrights getIndexedVideoCopyrights() {
    return new APIRequestGetIndexedVideoCopyrights(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetIndexedVideos getIndexedVideos() {
    return new APIRequestGetIndexedVideos(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetInsights getInsights() {
    return new APIRequestGetInsights(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetInsightsExports getInsightsExports() {
    return new APIRequestGetInsightsExports(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetInstagramAccounts getInstagramAccounts() {
    return new APIRequestGetInstagramAccounts(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetInstantArticles getInstantArticles() {
    return new APIRequestGetInstantArticles(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateInstantArticle createInstantArticle() {
    return new APIRequestCreateInstantArticle(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetInstantArticlesInsights getInstantArticlesInsights() {
    return new APIRequestGetInstantArticlesInsights(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateInstantArticlesPublish createInstantArticlesPublish() {
    return new APIRequestCreateInstantArticlesPublish(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetLabels getLabels() {
    return new APIRequestGetLabels(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateLabel createLabel() {
    return new APIRequestCreateLabel(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetLeadGenConditionalQuestionsGroup getLeadGenConditionalQuestionsGroup() {
    return new APIRequestGetLeadGenConditionalQuestionsGroup(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateLeadGenConditionalQuestionsGroup createLeadGenConditionalQuestionsGroup() {
    return new APIRequestCreateLeadGenConditionalQuestionsGroup(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetLeadGenContextCards getLeadGenContextCards() {
    return new APIRequestGetLeadGenContextCards(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetLeadGenDraftForms getLeadGenDraftForms() {
    return new APIRequestGetLeadGenDraftForms(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateLeadGenDraftForm createLeadGenDraftForm() {
    return new APIRequestCreateLeadGenDraftForm(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetLeadGenForms getLeadGenForms() {
    return new APIRequestGetLeadGenForms(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateLeadGenForm createLeadGenForm() {
    return new APIRequestCreateLeadGenForm(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetLeadGenLegalContent getLeadGenLegalContent() {
    return new APIRequestGetLeadGenLegalContent(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteLeadGenWhitelistedUsers deleteLeadGenWhitelistedUsers() {
    return new APIRequestDeleteLeadGenWhitelistedUsers(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetLeadGenWhitelistedUsers getLeadGenWhitelistedUsers() {
    return new APIRequestGetLeadGenWhitelistedUsers(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateLeadGenWhitelistedUser createLeadGenWhitelistedUser() {
    return new APIRequestCreateLeadGenWhitelistedUser(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetLikes getLikes() {
    return new APIRequestGetLikes(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetLiveEncoders getLiveEncoders() {
    return new APIRequestGetLiveEncoders(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateLiveEncoder createLiveEncoder() {
    return new APIRequestCreateLiveEncoder(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetLiveVideos getLiveVideos() {
    return new APIRequestGetLiveVideos(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateLiveVideo createLiveVideo() {
    return new APIRequestCreateLiveVideo(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteLocations deleteLocations() {
    return new APIRequestDeleteLocations(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetLocations getLocations() {
    return new APIRequestGetLocations(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateLocation createLocation() {
    return new APIRequestCreateLocation(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetMediaFingerprints getMediaFingerprints() {
    return new APIRequestGetMediaFingerprints(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateMediaFingerprint createMediaFingerprint() {
    return new APIRequestCreateMediaFingerprint(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateMessageAttachment createMessageAttachment() {
    return new APIRequestCreateMessageAttachment(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateMessageCreative createMessageCreative() {
    return new APIRequestCreateMessageCreative(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateMessage createMessage() {
    return new APIRequestCreateMessage(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetMessagingFeatureReview getMessagingFeatureReview() {
    return new APIRequestGetMessagingFeatureReview(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetMessengerAdsPageWelcomeMessages getMessengerAdsPageWelcomeMessages() {
    return new APIRequestGetMessengerAdsPageWelcomeMessages(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateMessengerCode createMessengerCode() {
    return new APIRequestCreateMessengerCode(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteMessengerProfile deleteMessengerProfile() {
    return new APIRequestDeleteMessengerProfile(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetMessengerProfile getMessengerProfile() {
    return new APIRequestGetMessengerProfile(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateMessengerProfile createMessengerProfile() {
    return new APIRequestCreateMessengerProfile(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetMilestones getMilestones() {
    return new APIRequestGetMilestones(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateMilestone createMilestone() {
    return new APIRequestCreateMilestone(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetMusicVideoMediaCopyrights getMusicVideoMediaCopyrights() {
    return new APIRequestGetMusicVideoMediaCopyrights(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetNativeOffers getNativeOffers() {
    return new APIRequestGetNativeOffers(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateNativeOffer createNativeOffer() {
    return new APIRequestCreateNativeOffer(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateNlpConfig createNlpConfig() {
    return new APIRequestCreateNlpConfig(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateNotification createNotification() {
    return new APIRequestCreateNotification(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreatePageAboutStory createPageAboutStory() {
    return new APIRequestCreatePageAboutStory(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetPageBackedInstagramAccounts getPageBackedInstagramAccounts() {
    return new APIRequestGetPageBackedInstagramAccounts(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreatePageBackedInstagramAccount createPageBackedInstagramAccount() {
    return new APIRequestCreatePageBackedInstagramAccount(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreatePassThreadControl createPassThreadControl() {
    return new APIRequestCreatePassThreadControl(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetPersonas getPersonas() {
    return new APIRequestGetPersonas(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreatePersona createPersona() {
    return new APIRequestCreatePersona(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetPhotos getPhotos() {
    return new APIRequestGetPhotos(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreatePhoto createPhoto() {
    return new APIRequestCreatePhoto(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetPicture getPicture() {
    return new APIRequestGetPicture(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreatePicture createPicture() {
    return new APIRequestCreatePicture(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetPlaceTopics getPlaceTopics() {
    return new APIRequestGetPlaceTopics(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetPosts getPosts() {
    return new APIRequestGetPosts(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetProductCatalogs getProductCatalogs() {
    return new APIRequestGetProductCatalogs(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetPromotablePosts getPromotablePosts() {
    return new APIRequestGetPromotablePosts(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreatePromotion createPromotion() {
    return new APIRequestCreatePromotion(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetPublishedPosts getPublishedPosts() {
    return new APIRequestGetPublishedPosts(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetRatings getRatings() {
    return new APIRequestGetRatings(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateRequestThreadControl createRequestThreadControl() {
    return new APIRequestCreateRequestThreadControl(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetRestaurantOrders getRestaurantOrders() {
    return new APIRequestGetRestaurantOrders(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetRoles getRoles() {
    return new APIRequestGetRoles(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetRtbDynamicPosts getRtbDynamicPosts() {
    return new APIRequestGetRtbDynamicPosts(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetSavedFilters getSavedFilters() {
    return new APIRequestGetSavedFilters(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateSavedFilter createSavedFilter() {
    return new APIRequestCreateSavedFilter(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetSavedMessageResponses getSavedMessageResponses() {
    return new APIRequestGetSavedMessageResponses(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateSavedMessageResponse createSavedMessageResponse() {
    return new APIRequestCreateSavedMessageResponse(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetScheduledPosts getScheduledPosts() {
    return new APIRequestGetScheduledPosts(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetScreenNames getScreenNames() {
    return new APIRequestGetScreenNames(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetSeasons getSeasons() {
    return new APIRequestGetSeasons(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetSecondaryReceivers getSecondaryReceivers() {
    return new APIRequestGetSecondaryReceivers(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetSettings getSettings() {
    return new APIRequestGetSettings(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateSetting createSetting() {
    return new APIRequestCreateSetting(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetShowPlaylists getShowPlaylists() {
    return new APIRequestGetShowPlaylists(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteSubscribedApps deleteSubscribedApps() {
    return new APIRequestDeleteSubscribedApps(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetSubscribedApps getSubscribedApps() {
    return new APIRequestGetSubscribedApps(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateSubscribedApp createSubscribedApp() {
    return new APIRequestCreateSubscribedApp(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateSubscription createSubscription() {
    return new APIRequestCreateSubscription(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteTabs deleteTabs() {
    return new APIRequestDeleteTabs(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetTabs getTabs() {
    return new APIRequestGetTabs(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateTab createTab() {
    return new APIRequestCreateTab(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetTagged getTagged() {
    return new APIRequestGetTagged(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateTakeThreadControl createTakeThreadControl() {
    return new APIRequestCreateTakeThreadControl(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetThreadOwner getThreadOwner() {
    return new APIRequestGetThreadOwner(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteThreadSettings deleteThreadSettings() {
    return new APIRequestDeleteThreadSettings(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetThreadSettings getThreadSettings() {
    return new APIRequestGetThreadSettings(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateThreadSetting createThreadSetting() {
    return new APIRequestCreateThreadSetting(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetThreads getThreads() {
    return new APIRequestGetThreads(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetTours getTours() {
    return new APIRequestGetTours(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateUnlinkAccount createUnlinkAccount() {
    return new APIRequestCreateUnlinkAccount(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetVideoBroadcasts getVideoBroadcasts() {
    return new APIRequestGetVideoBroadcasts(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetVideoCopyrightRules getVideoCopyrightRules() {
    return new APIRequestGetVideoCopyrightRules(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateVideoCopyrightRule createVideoCopyrightRule() {
    return new APIRequestCreateVideoCopyrightRule(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetVideoCopyrights getVideoCopyrights() {
    return new APIRequestGetVideoCopyrights(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateVideoCopyright createVideoCopyright() {
    return new APIRequestCreateVideoCopyright(this.getPrefixedId().toString(), context);
  }

  public APIRequestDeleteVideoLists deleteVideoLists() {
    return new APIRequestDeleteVideoLists(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetVideoLists getVideoLists() {
    return new APIRequestGetVideoLists(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateVideoList createVideoList() {
    return new APIRequestCreateVideoList(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetVideoMediaCopyrights getVideoMediaCopyrights() {
    return new APIRequestGetVideoMediaCopyrights(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetVideos getVideos() {
    return new APIRequestGetVideos(this.getPrefixedId().toString(), context);
  }

  public APIRequestCreateVideo createVideo() {
    return new APIRequestCreateVideo(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetVideosYouCanUse getVideosYouCanUse() {
    return new APIRequestGetVideosYouCanUse(this.getPrefixedId().toString(), context);
  }

  public APIRequestGetVisitorPosts getVisitorPosts() {
    return new APIRequestGetVisitorPosts(this.getPrefixedId().toString(), context);
  }

  public APIRequestGet get() {
    return new APIRequestGet(this.getPrefixedId().toString(), context);
  }

  public APIRequestUpdate update() {
    return new APIRequestUpdate(this.getPrefixedId().toString(), context);
  }


  public String getFieldAbout() {
    return mAbout;
  }

  public String getFieldAccessToken() {
    return mAccessToken;
  }

  public AdSet getFieldAdCampaign() {
    if (mAdCampaign != null) {
      mAdCampaign.context = getContext();
    }
    return mAdCampaign;
  }

  public String getFieldAffiliation() {
    return mAffiliation;
  }

  public String getFieldAppId() {
    return mAppId;
  }

  public AppLinks getFieldAppLinks() {
    if (mAppLinks != null) {
      mAppLinks.context = getContext();
    }
    return mAppLinks;
  }

  public String getFieldArtistsWeLike() {
    return mArtistsWeLike;
  }

  public String getFieldAttire() {
    return mAttire;
  }

  public String getFieldAwards() {
    return mAwards;
  }

  public String getFieldBandInterests() {
    return mBandInterests;
  }

  public String getFieldBandMembers() {
    return mBandMembers;
  }

  public Page getFieldBestPage() {
    if (mBestPage != null) {
      mBestPage.context = getContext();
    }
    return mBestPage;
  }

  public String getFieldBio() {
    return mBio;
  }

  public String getFieldBirthday() {
    return mBirthday;
  }

  public String getFieldBookingAgent() {
    return mBookingAgent;
  }

  public String getFieldBuilt() {
    return mBuilt;
  }

  public Object getFieldBusiness() {
    return mBusiness;
  }

  public Boolean getFieldCanCheckin() {
    return mCanCheckin;
  }

  public Boolean getFieldCanPost() {
    return mCanPost;
  }

  public String getFieldCategory() {
    return mCategory;
  }

  public List getFieldCategoryList() {
    return mCategoryList;
  }

  public Long getFieldCheckins() {
    return mCheckins;
  }

  public String getFieldCompanyOverview() {
    return mCompanyOverview;
  }

  public ShadowIGUser getFieldConnectedInstagramAccount() {
    if (mConnectedInstagramAccount != null) {
      mConnectedInstagramAccount.context = getContext();
    }
    return mConnectedInstagramAccount;
  }

  public MailingAddress getFieldContactAddress() {
    if (mContactAddress != null) {
      mContactAddress.context = getContext();
    }
    return mContactAddress;
  }

  public OpenGraphContext getFieldContext() {
    if (mContext != null) {
      mContext.context = getContext();
    }
    return mContext;
  }

  public CopyrightAttributionInsights getFieldCopyrightAttributionInsights() {
    return mCopyrightAttributionInsights;
  }

  public List getFieldCopyrightWhitelistedIgPartners() {
    return mCopyrightWhitelistedIgPartners;
  }

  public Long getFieldCountryPageLikes() {
    return mCountryPageLikes;
  }

  public CoverPhoto getFieldCover() {
    return mCover;
  }

  public String getFieldCulinaryTeam() {
    return mCulinaryTeam;
  }

  public String getFieldCurrentLocation() {
    return mCurrentLocation;
  }

  public String getFieldDescription() {
    return mDescription;
  }

  public String getFieldDescriptionHtml() {
    return mDescriptionHtml;
  }

  public String getFieldDirectedBy() {
    return mDirectedBy;
  }

  public String getFieldDisplaySubtext() {
    return mDisplaySubtext;
  }

  public String getFieldDisplayedMessageResponseTime() {
    return mDisplayedMessageResponseTime;
  }

  public List getFieldEmails() {
    return mEmails;
  }

  public Engagement getFieldEngagement() {
    return mEngagement;
  }

  public Long getFieldFanCount() {
    return mFanCount;
  }

  public AdVideo getFieldFeaturedVideo() {
    if (mFeaturedVideo != null) {
      mFeaturedVideo.context = getContext();
    }
    return mFeaturedVideo;
  }

  public String getFieldFeatures() {
    return mFeatures;
  }

  public List getFieldFoodStyles() {
    return mFoodStyles;
  }

  public String getFieldFounded() {
    return mFounded;
  }

  public String getFieldGeneralInfo() {
    return mGeneralInfo;
  }

  public String getFieldGeneralManager() {
    return mGeneralManager;
  }

  public String getFieldGenre() {
    return mGenre;
  }

  public String getFieldGlobalBrandPageName() {
    return mGlobalBrandPageName;
  }

  public String getFieldGlobalBrandRootId() {
    return mGlobalBrandRootId;
  }

  public Boolean getFieldHasAddedApp() {
    return mHasAddedApp;
  }

  public Boolean getFieldHasWhatsappBusinessNumber() {
    return mHasWhatsappBusinessNumber;
  }

  public Boolean getFieldHasWhatsappNumber() {
    return mHasWhatsappNumber;
  }

  public String getFieldHometown() {
    return mHometown;
  }

  public Map getFieldHours() {
    return mHours;
  }

  public String getFieldId() {
    return mId;
  }

  public String getFieldImpressum() {
    return mImpressum;
  }

  public String getFieldInfluences() {
    return mInfluences;
  }

  public ShadowIGUser getFieldInstagramBusinessAccount() {
    if (mInstagramBusinessAccount != null) {
      mInstagramBusinessAccount.context = getContext();
    }
    return mInstagramBusinessAccount;
  }

  public String getFieldInstantArticlesReviewStatus() {
    return mInstantArticlesReviewStatus;
  }

  public Boolean getFieldIsAlwaysOpen() {
    return mIsAlwaysOpen;
  }

  public Boolean getFieldIsChain() {
    return mIsChain;
  }

  public Boolean getFieldIsCommunityPage() {
    return mIsCommunityPage;
  }

  public Boolean getFieldIsEligibleForBrandedContent() {
    return mIsEligibleForBrandedContent;
  }

  public Boolean getFieldIsMessengerBotGetStartedEnabled() {
    return mIsMessengerBotGetStartedEnabled;
  }

  public Boolean getFieldIsMessengerPlatformBot() {
    return mIsMessengerPlatformBot;
  }

  public Boolean getFieldIsOwned() {
    return mIsOwned;
  }

  public Boolean getFieldIsPermanentlyClosed() {
    return mIsPermanentlyClosed;
  }

  public Boolean getFieldIsPublished() {
    return mIsPublished;
  }

  public Boolean getFieldIsUnclaimed() {
    return mIsUnclaimed;
  }

  public Boolean getFieldIsVerified() {
    return mIsVerified;
  }

  public Boolean getFieldIsWebhooksSubscribed() {
    return mIsWebhooksSubscribed;
  }

  public Object getFieldKeywords() {
    return mKeywords;
  }

  public LeadGenFormPreviewDetails getFieldLeadgenFormPreviewDetails() {
    return mLeadgenFormPreviewDetails;
  }

  public Boolean getFieldLeadgenHasCrmIntegration() {
    return mLeadgenHasCrmIntegration;
  }

  public Boolean getFieldLeadgenHasFatPingCrmIntegration() {
    return mLeadgenHasFatPingCrmIntegration;
  }

  public String getFieldLeadgenTosAcceptanceTime() {
    return mLeadgenTosAcceptanceTime;
  }

  public Boolean getFieldLeadgenTosAccepted() {
    return mLeadgenTosAccepted;
  }

  public User getFieldLeadgenTosAcceptingUser() {
    if (mLeadgenTosAcceptingUser != null) {
      mLeadgenTosAcceptingUser.context = getContext();
    }
    return mLeadgenTosAcceptingUser;
  }

  public String getFieldLink() {
    return mLink;
  }

  public Location getFieldLocation() {
    return mLocation;
  }

  public String getFieldMembers() {
    return mMembers;
  }

  public String getFieldMerchantId() {
    return mMerchantId;
  }

  public String getFieldMerchantReviewStatus() {
    return mMerchantReviewStatus;
  }

  public List getFieldMessengerAdsDefaultIcebreakers() {
    return mMessengerAdsDefaultIcebreakers;
  }

  public MessengerDestinationPageWelcomeMessage getFieldMessengerAdsDefaultPageWelcomeMessage() {
    if (mMessengerAdsDefaultPageWelcomeMessage != null) {
      mMessengerAdsDefaultPageWelcomeMessage.context = getContext();
    }
    return mMessengerAdsDefaultPageWelcomeMessage;
  }

  public List getFieldMessengerAdsDefaultQuickReplies() {
    return mMessengerAdsDefaultQuickReplies;
  }

  public String getFieldMessengerAdsQuickRepliesType() {
    return mMessengerAdsQuickRepliesType;
  }

  public String getFieldMission() {
    return mMission;
  }

  public String getFieldMpg() {
    return mMpg;
  }

  public String getFieldName() {
    return mName;
  }

  public String getFieldNameWithLocationDescriptor() {
    return mNameWithLocationDescriptor;
  }

  public String getFieldNetwork() {
    return mNetwork;
  }

  public Long getFieldNewLikeCount() {
    return mNewLikeCount;
  }

  public Boolean getFieldOfferEligible() {
    return mOfferEligible;
  }

  public Double getFieldOverallStarRating() {
    return mOverallStarRating;
  }

  public PageAboutStory getFieldPageAboutStory() {
    if (mPageAboutStory != null) {
      mPageAboutStory.context = getContext();
    }
    return mPageAboutStory;
  }

  public String getFieldPageToken() {
    return mPageToken;
  }

  public Page getFieldParentPage() {
    if (mParentPage != null) {
      mParentPage.context = getContext();
    }
    return mParentPage;
  }

  public PageParking getFieldParking() {
    return mParking;
  }

  public PagePaymentOptions getFieldPaymentOptions() {
    return mPaymentOptions;
  }

  public String getFieldPersonalInfo() {
    return mPersonalInfo;
  }

  public String getFieldPersonalInterests() {
    return mPersonalInterests;
  }

  public String getFieldPharmaSafetyInfo() {
    return mPharmaSafetyInfo;
  }

  public String getFieldPhone() {
    return mPhone;
  }

  public String getFieldPlaceType() {
    return mPlaceType;
  }

  public String getFieldPlotOutline() {
    return mPlotOutline;
  }

  public Targeting getFieldPreferredAudience() {
    return mPreferredAudience;
  }

  public String getFieldPressContact() {
    return mPressContact;
  }

  public String getFieldPriceRange() {
    return mPriceRange;
  }

  public String getFieldPrivacyInfoUrl() {
    return mPrivacyInfoUrl;
  }

  public String getFieldProducedBy() {
    return mProducedBy;
  }

  public String getFieldProducts() {
    return mProducts;
  }

  public Boolean getFieldPromotionEligible() {
    return mPromotionEligible;
  }

  public String getFieldPromotionIneligibleReason() {
    return mPromotionIneligibleReason;
  }

  public String getFieldPublicTransit() {
    return mPublicTransit;
  }

  public Long getFieldRatingCount() {
    return mRatingCount;
  }

  public String getFieldRecipient() {
    return mRecipient;
  }

  public String getFieldRecordLabel() {
    return mRecordLabel;
  }

  public String getFieldReleaseDate() {
    return mReleaseDate;
  }

  public PageRestaurantServices getFieldRestaurantServices() {
    return mRestaurantServices;
  }

  public PageRestaurantSpecialties getFieldRestaurantSpecialties() {
    return mRestaurantSpecialties;
  }

  public String getFieldSchedule() {
    return mSchedule;
  }

  public String getFieldScreenplayBy() {
    return mScreenplayBy;
  }

  public String getFieldSeason() {
    return mSeason;
  }

  public String getFieldSingleLineAddress() {
    return mSingleLineAddress;
  }

  public String getFieldStarring() {
    return mStarring;
  }

  public PageStartInfo getFieldStartInfo() {
    return mStartInfo;
  }

  public String getFieldStoreCode() {
    return mStoreCode;
  }

  public String getFieldStoreLocationDescriptor() {
    return mStoreLocationDescriptor;
  }

  public Long getFieldStoreNumber() {
    return mStoreNumber;
  }

  public String getFieldStudio() {
    return mStudio;
  }

  public Boolean getFieldSupportsInstantArticles() {
    return mSupportsInstantArticles;
  }

  public Long getFieldTalkingAboutCount() {
    return mTalkingAboutCount;
  }

  public Long getFieldUnreadMessageCount() {
    return mUnreadMessageCount;
  }

  public Long getFieldUnreadNotifCount() {
    return mUnreadNotifCount;
  }

  public Long getFieldUnseenMessageCount() {
    return mUnseenMessageCount;
  }

  public String getFieldUsername() {
    return mUsername;
  }

  public String getFieldVerificationStatus() {
    return mVerificationStatus;
  }

  public VoipInfo getFieldVoipInfo() {
    return mVoipInfo;
  }

  public String getFieldWebsite() {
    return mWebsite;
  }

  public Long getFieldWereHereCount() {
    return mWereHereCount;
  }

  public String getFieldWhatsappNumber() {
    return mWhatsappNumber;
  }

  public String getFieldWrittenBy() {
    return mWrittenBy;
  }



  public static class APIRequestCreateActivity extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "page_scoped_user_id",
      "user_ref",
      "advertiser_tracking_enabled",
      "custom_events",
      "app_id",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateActivity.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateActivity(String nodeId, APIContext context) {
      super(context, nodeId, "/activities", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateActivity setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateActivity setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateActivity setPageScopedUserId (Long pageScopedUserId) {
      this.setParam("page_scoped_user_id", pageScopedUserId);
      return this;
    }
    public APIRequestCreateActivity setPageScopedUserId (String pageScopedUserId) {
      this.setParam("page_scoped_user_id", pageScopedUserId);
      return this;
    }

    public APIRequestCreateActivity setUserRef (String userRef) {
      this.setParam("user_ref", userRef);
      return this;
    }

    public APIRequestCreateActivity setAdvertiserTrackingEnabled (Boolean advertiserTrackingEnabled) {
      this.setParam("advertiser_tracking_enabled", advertiserTrackingEnabled);
      return this;
    }
    public APIRequestCreateActivity setAdvertiserTrackingEnabled (String advertiserTrackingEnabled) {
      this.setParam("advertiser_tracking_enabled", advertiserTrackingEnabled);
      return this;
    }

    public APIRequestCreateActivity setCustomEvents (List customEvents) {
      this.setParam("custom_events", customEvents);
      return this;
    }
    public APIRequestCreateActivity setCustomEvents (String customEvents) {
      this.setParam("custom_events", customEvents);
      return this;
    }

    public APIRequestCreateActivity setAppId (String appId) {
      this.setParam("app_id", appId);
      return this;
    }

    public APIRequestCreateActivity requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateActivity requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateActivity requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateActivity requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateActivity requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateActivity requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetAdminNotes extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "body",
      "from",
      "id",
      "user",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PageAdminNote.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetAdminNotes.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetAdminNotes(String nodeId, APIContext context) {
      super(context, nodeId, "/admin_notes", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetAdminNotes setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetAdminNotes setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetAdminNotes requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetAdminNotes requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetAdminNotes requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetAdminNotes requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetAdminNotes requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetAdminNotes requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetAdminNotes requestBodyField () {
      return this.requestBodyField(true);
    }
    public APIRequestGetAdminNotes requestBodyField (boolean value) {
      this.requestField("body", value);
      return this;
    }
    public APIRequestGetAdminNotes requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetAdminNotes requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetAdminNotes requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetAdminNotes requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetAdminNotes requestUserField () {
      return this.requestUserField(true);
    }
    public APIRequestGetAdminNotes requestUserField (boolean value) {
      this.requestField("user", value);
      return this;
    }
  }

  public static class APIRequestCreateAdminNote extends APIRequest {

    PageAdminNote lastResponse = null;
    @Override
    public PageAdminNote getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "body",
      "user_id",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public PageAdminNote parseResponse(String response, String header) throws APIException {
      return PageAdminNote.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public PageAdminNote execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public PageAdminNote execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public PageAdminNote apply(ResponseWrapper result) {
             try {
               return APIRequestCreateAdminNote.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateAdminNote(String nodeId, APIContext context) {
      super(context, nodeId, "/admin_notes", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateAdminNote setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateAdminNote setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateAdminNote setBody (String body) {
      this.setParam("body", body);
      return this;
    }

    public APIRequestCreateAdminNote setUserId (Long userId) {
      this.setParam("user_id", userId);
      return this;
    }
    public APIRequestCreateAdminNote setUserId (String userId) {
      this.setParam("user_id", userId);
      return this;
    }

    public APIRequestCreateAdminNote requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateAdminNote requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAdminNote requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateAdminNote requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAdminNote requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateAdminNote requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreateAdminSetting extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "setting",
      "value",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateAdminSetting.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateAdminSetting(String nodeId, APIContext context) {
      super(context, nodeId, "/admin_settings", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateAdminSetting setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateAdminSetting setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateAdminSetting setSetting (Page.EnumSetting setting) {
      this.setParam("setting", setting);
      return this;
    }
    public APIRequestCreateAdminSetting setSetting (String setting) {
      this.setParam("setting", setting);
      return this;
    }

    public APIRequestCreateAdminSetting setValue (Boolean value) {
      this.setParam("value", value);
      return this;
    }
    public APIRequestCreateAdminSetting setValue (String value) {
      this.setParam("value", value);
      return this;
    }

    public APIRequestCreateAdminSetting requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateAdminSetting requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAdminSetting requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateAdminSetting requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAdminSetting requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateAdminSetting requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestDeleteAdmins extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "trusted",
      "admin_id",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteAdmins.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteAdmins(String nodeId, APIContext context) {
      super(context, nodeId, "/admins", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteAdmins setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteAdmins setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteAdmins setTrusted (Boolean trusted) {
      this.setParam("trusted", trusted);
      return this;
    }
    public APIRequestDeleteAdmins setTrusted (String trusted) {
      this.setParam("trusted", trusted);
      return this;
    }

    public APIRequestDeleteAdmins setAdminId (Long adminId) {
      this.setParam("admin_id", adminId);
      return this;
    }
    public APIRequestDeleteAdmins setAdminId (String adminId) {
      this.setParam("admin_id", adminId);
      return this;
    }

    public APIRequestDeleteAdmins requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteAdmins requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteAdmins requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteAdmins requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteAdmins requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteAdmins requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreateAdmin extends APIRequest {

    User lastResponse = null;
    @Override
    public User getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "trusted",
      "admin_id",
      "tasks",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public User parseResponse(String response, String header) throws APIException {
      return User.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public User execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public User execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public User apply(ResponseWrapper result) {
             try {
               return APIRequestCreateAdmin.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateAdmin(String nodeId, APIContext context) {
      super(context, nodeId, "/admins", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateAdmin setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateAdmin setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateAdmin setTrusted (Boolean trusted) {
      this.setParam("trusted", trusted);
      return this;
    }
    public APIRequestCreateAdmin setTrusted (String trusted) {
      this.setParam("trusted", trusted);
      return this;
    }

    public APIRequestCreateAdmin setAdminId (Long adminId) {
      this.setParam("admin_id", adminId);
      return this;
    }
    public APIRequestCreateAdmin setAdminId (String adminId) {
      this.setParam("admin_id", adminId);
      return this;
    }

    public APIRequestCreateAdmin setTasks (List tasks) {
      this.setParam("tasks", tasks);
      return this;
    }
    public APIRequestCreateAdmin setTasks (String tasks) {
      this.setParam("tasks", tasks);
      return this;
    }

    public APIRequestCreateAdmin requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateAdmin requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAdmin requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateAdmin requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAdmin requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateAdmin requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreateAdminStickySetting extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "budget",
      "currency",
      "ad_account_id",
      "audience",
      "targeting",
      "campaign_length",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateAdminStickySetting.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateAdminStickySetting(String nodeId, APIContext context) {
      super(context, nodeId, "/adminstickysettings", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateAdminStickySetting setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateAdminStickySetting setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateAdminStickySetting setBudget (Long budget) {
      this.setParam("budget", budget);
      return this;
    }
    public APIRequestCreateAdminStickySetting setBudget (String budget) {
      this.setParam("budget", budget);
      return this;
    }

    public APIRequestCreateAdminStickySetting setCurrency (String currency) {
      this.setParam("currency", currency);
      return this;
    }

    public APIRequestCreateAdminStickySetting setAdAccountId (String adAccountId) {
      this.setParam("ad_account_id", adAccountId);
      return this;
    }

    public APIRequestCreateAdminStickySetting setAudience (Page.EnumAudience audience) {
      this.setParam("audience", audience);
      return this;
    }
    public APIRequestCreateAdminStickySetting setAudience (String audience) {
      this.setParam("audience", audience);
      return this;
    }

    public APIRequestCreateAdminStickySetting setTargeting (Targeting targeting) {
      this.setParam("targeting", targeting);
      return this;
    }
    public APIRequestCreateAdminStickySetting setTargeting (String targeting) {
      this.setParam("targeting", targeting);
      return this;
    }

    public APIRequestCreateAdminStickySetting setCampaignLength (String campaignLength) {
      this.setParam("campaign_length", campaignLength);
      return this;
    }

    public APIRequestCreateAdminStickySetting requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateAdminStickySetting requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAdminStickySetting requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateAdminStickySetting requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAdminStickySetting requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateAdminStickySetting requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestDeleteAgencies extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "business",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteAgencies.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteAgencies(String nodeId, APIContext context) {
      super(context, nodeId, "/agencies", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteAgencies setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteAgencies setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteAgencies setBusiness (String business) {
      this.setParam("business", business);
      return this;
    }

    public APIRequestDeleteAgencies requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteAgencies requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteAgencies requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteAgencies requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteAgencies requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteAgencies requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetAgencies extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "block_offline_analytics",
      "created_by",
      "created_time",
      "extended_updated_time",
      "id",
      "is_hidden",
      "is_instagram_enabled_in_fb_analytics",
      "link",
      "name",
      "primary_page",
      "profile_picture_uri",
      "timezone_id",
      "two_factor_type",
      "updated_by",
      "updated_time",
      "verification_status",
      "vertical",
      "vertical_id",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Business.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetAgencies.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetAgencies(String nodeId, APIContext context) {
      super(context, nodeId, "/agencies", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetAgencies setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetAgencies setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetAgencies requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetAgencies requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetAgencies requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetAgencies requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetAgencies requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetAgencies requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetAgencies requestBlockOfflineAnalyticsField () {
      return this.requestBlockOfflineAnalyticsField(true);
    }
    public APIRequestGetAgencies requestBlockOfflineAnalyticsField (boolean value) {
      this.requestField("block_offline_analytics", value);
      return this;
    }
    public APIRequestGetAgencies requestCreatedByField () {
      return this.requestCreatedByField(true);
    }
    public APIRequestGetAgencies requestCreatedByField (boolean value) {
      this.requestField("created_by", value);
      return this;
    }
    public APIRequestGetAgencies requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetAgencies requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetAgencies requestExtendedUpdatedTimeField () {
      return this.requestExtendedUpdatedTimeField(true);
    }
    public APIRequestGetAgencies requestExtendedUpdatedTimeField (boolean value) {
      this.requestField("extended_updated_time", value);
      return this;
    }
    public APIRequestGetAgencies requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetAgencies requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetAgencies requestIsHiddenField () {
      return this.requestIsHiddenField(true);
    }
    public APIRequestGetAgencies requestIsHiddenField (boolean value) {
      this.requestField("is_hidden", value);
      return this;
    }
    public APIRequestGetAgencies requestIsInstagramEnabledInFbAnalyticsField () {
      return this.requestIsInstagramEnabledInFbAnalyticsField(true);
    }
    public APIRequestGetAgencies requestIsInstagramEnabledInFbAnalyticsField (boolean value) {
      this.requestField("is_instagram_enabled_in_fb_analytics", value);
      return this;
    }
    public APIRequestGetAgencies requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetAgencies requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetAgencies requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetAgencies requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetAgencies requestPrimaryPageField () {
      return this.requestPrimaryPageField(true);
    }
    public APIRequestGetAgencies requestPrimaryPageField (boolean value) {
      this.requestField("primary_page", value);
      return this;
    }
    public APIRequestGetAgencies requestProfilePictureUriField () {
      return this.requestProfilePictureUriField(true);
    }
    public APIRequestGetAgencies requestProfilePictureUriField (boolean value) {
      this.requestField("profile_picture_uri", value);
      return this;
    }
    public APIRequestGetAgencies requestTimezoneIdField () {
      return this.requestTimezoneIdField(true);
    }
    public APIRequestGetAgencies requestTimezoneIdField (boolean value) {
      this.requestField("timezone_id", value);
      return this;
    }
    public APIRequestGetAgencies requestTwoFactorTypeField () {
      return this.requestTwoFactorTypeField(true);
    }
    public APIRequestGetAgencies requestTwoFactorTypeField (boolean value) {
      this.requestField("two_factor_type", value);
      return this;
    }
    public APIRequestGetAgencies requestUpdatedByField () {
      return this.requestUpdatedByField(true);
    }
    public APIRequestGetAgencies requestUpdatedByField (boolean value) {
      this.requestField("updated_by", value);
      return this;
    }
    public APIRequestGetAgencies requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetAgencies requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetAgencies requestVerificationStatusField () {
      return this.requestVerificationStatusField(true);
    }
    public APIRequestGetAgencies requestVerificationStatusField (boolean value) {
      this.requestField("verification_status", value);
      return this;
    }
    public APIRequestGetAgencies requestVerticalField () {
      return this.requestVerticalField(true);
    }
    public APIRequestGetAgencies requestVerticalField (boolean value) {
      this.requestField("vertical", value);
      return this;
    }
    public APIRequestGetAgencies requestVerticalIdField () {
      return this.requestVerticalIdField(true);
    }
    public APIRequestGetAgencies requestVerticalIdField (boolean value) {
      this.requestField("vertical_id", value);
      return this;
    }
  }

  public static class APIRequestCreateAgency extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "business",
      "permitted_tasks",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateAgency.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateAgency(String nodeId, APIContext context) {
      super(context, nodeId, "/agencies", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateAgency setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateAgency setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateAgency setBusiness (String business) {
      this.setParam("business", business);
      return this;
    }

    public APIRequestCreateAgency setPermittedTasks (List permittedTasks) {
      this.setParam("permitted_tasks", permittedTasks);
      return this;
    }
    public APIRequestCreateAgency setPermittedTasks (String permittedTasks) {
      this.setParam("permitted_tasks", permittedTasks);
      return this;
    }

    public APIRequestCreateAgency requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateAgency requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAgency requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateAgency requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAgency requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateAgency requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetAlbums extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "backdated_time",
      "backdated_time_granularity",
      "can_backdate",
      "can_upload",
      "count",
      "cover_photo",
      "created_time",
      "description",
      "edit_link",
      "event",
      "from",
      "id",
      "is_user_facing",
      "link",
      "location",
      "modified_major",
      "name",
      "photo_count",
      "place",
      "privacy",
      "type",
      "updated_time",
      "video_count",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Album.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetAlbums.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetAlbums(String nodeId, APIContext context) {
      super(context, nodeId, "/albums", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetAlbums setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetAlbums setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetAlbums requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetAlbums requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetAlbums requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetAlbums requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetAlbums requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetAlbums requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetAlbums requestBackdatedTimeField () {
      return this.requestBackdatedTimeField(true);
    }
    public APIRequestGetAlbums requestBackdatedTimeField (boolean value) {
      this.requestField("backdated_time", value);
      return this;
    }
    public APIRequestGetAlbums requestBackdatedTimeGranularityField () {
      return this.requestBackdatedTimeGranularityField(true);
    }
    public APIRequestGetAlbums requestBackdatedTimeGranularityField (boolean value) {
      this.requestField("backdated_time_granularity", value);
      return this;
    }
    public APIRequestGetAlbums requestCanBackdateField () {
      return this.requestCanBackdateField(true);
    }
    public APIRequestGetAlbums requestCanBackdateField (boolean value) {
      this.requestField("can_backdate", value);
      return this;
    }
    public APIRequestGetAlbums requestCanUploadField () {
      return this.requestCanUploadField(true);
    }
    public APIRequestGetAlbums requestCanUploadField (boolean value) {
      this.requestField("can_upload", value);
      return this;
    }
    public APIRequestGetAlbums requestCountField () {
      return this.requestCountField(true);
    }
    public APIRequestGetAlbums requestCountField (boolean value) {
      this.requestField("count", value);
      return this;
    }
    public APIRequestGetAlbums requestCoverPhotoField () {
      return this.requestCoverPhotoField(true);
    }
    public APIRequestGetAlbums requestCoverPhotoField (boolean value) {
      this.requestField("cover_photo", value);
      return this;
    }
    public APIRequestGetAlbums requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetAlbums requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetAlbums requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetAlbums requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetAlbums requestEditLinkField () {
      return this.requestEditLinkField(true);
    }
    public APIRequestGetAlbums requestEditLinkField (boolean value) {
      this.requestField("edit_link", value);
      return this;
    }
    public APIRequestGetAlbums requestEventField () {
      return this.requestEventField(true);
    }
    public APIRequestGetAlbums requestEventField (boolean value) {
      this.requestField("event", value);
      return this;
    }
    public APIRequestGetAlbums requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetAlbums requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetAlbums requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetAlbums requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetAlbums requestIsUserFacingField () {
      return this.requestIsUserFacingField(true);
    }
    public APIRequestGetAlbums requestIsUserFacingField (boolean value) {
      this.requestField("is_user_facing", value);
      return this;
    }
    public APIRequestGetAlbums requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetAlbums requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetAlbums requestLocationField () {
      return this.requestLocationField(true);
    }
    public APIRequestGetAlbums requestLocationField (boolean value) {
      this.requestField("location", value);
      return this;
    }
    public APIRequestGetAlbums requestModifiedMajorField () {
      return this.requestModifiedMajorField(true);
    }
    public APIRequestGetAlbums requestModifiedMajorField (boolean value) {
      this.requestField("modified_major", value);
      return this;
    }
    public APIRequestGetAlbums requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetAlbums requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetAlbums requestPhotoCountField () {
      return this.requestPhotoCountField(true);
    }
    public APIRequestGetAlbums requestPhotoCountField (boolean value) {
      this.requestField("photo_count", value);
      return this;
    }
    public APIRequestGetAlbums requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetAlbums requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetAlbums requestPrivacyField () {
      return this.requestPrivacyField(true);
    }
    public APIRequestGetAlbums requestPrivacyField (boolean value) {
      this.requestField("privacy", value);
      return this;
    }
    public APIRequestGetAlbums requestTypeField () {
      return this.requestTypeField(true);
    }
    public APIRequestGetAlbums requestTypeField (boolean value) {
      this.requestField("type", value);
      return this;
    }
    public APIRequestGetAlbums requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetAlbums requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetAlbums requestVideoCountField () {
      return this.requestVideoCountField(true);
    }
    public APIRequestGetAlbums requestVideoCountField (boolean value) {
      this.requestField("video_count", value);
      return this;
    }
  }

  public static class APIRequestCreateAlbum extends APIRequest {

    Album lastResponse = null;
    @Override
    public Album getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "is_default",
      "name",
      "description",
      "contributors",
      "make_shared_album",
      "location",
      "visible",
      "privacy",
      "place",
      "tags",
      "message",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Album parseResponse(String response, String header) throws APIException {
      return Album.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Album execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Album execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Album apply(ResponseWrapper result) {
             try {
               return APIRequestCreateAlbum.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateAlbum(String nodeId, APIContext context) {
      super(context, nodeId, "/albums", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateAlbum setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateAlbum setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateAlbum setIsDefault (Boolean isDefault) {
      this.setParam("is_default", isDefault);
      return this;
    }
    public APIRequestCreateAlbum setIsDefault (String isDefault) {
      this.setParam("is_default", isDefault);
      return this;
    }

    public APIRequestCreateAlbum setName (String name) {
      this.setParam("name", name);
      return this;
    }

    public APIRequestCreateAlbum setDescription (String description) {
      this.setParam("description", description);
      return this;
    }

    public APIRequestCreateAlbum setContributors (List contributors) {
      this.setParam("contributors", contributors);
      return this;
    }
    public APIRequestCreateAlbum setContributors (String contributors) {
      this.setParam("contributors", contributors);
      return this;
    }

    public APIRequestCreateAlbum setMakeSharedAlbum (Boolean makeSharedAlbum) {
      this.setParam("make_shared_album", makeSharedAlbum);
      return this;
    }
    public APIRequestCreateAlbum setMakeSharedAlbum (String makeSharedAlbum) {
      this.setParam("make_shared_album", makeSharedAlbum);
      return this;
    }

    public APIRequestCreateAlbum setLocation (String location) {
      this.setParam("location", location);
      return this;
    }

    public APIRequestCreateAlbum setVisible (String visible) {
      this.setParam("visible", visible);
      return this;
    }

    public APIRequestCreateAlbum setPrivacy (String privacy) {
      this.setParam("privacy", privacy);
      return this;
    }

    public APIRequestCreateAlbum setPlace (Object place) {
      this.setParam("place", place);
      return this;
    }
    public APIRequestCreateAlbum setPlace (String place) {
      this.setParam("place", place);
      return this;
    }

    public APIRequestCreateAlbum setTags (List tags) {
      this.setParam("tags", tags);
      return this;
    }
    public APIRequestCreateAlbum setTags (String tags) {
      this.setParam("tags", tags);
      return this;
    }

    public APIRequestCreateAlbum setMessage (String message) {
      this.setParam("message", message);
      return this;
    }

    public APIRequestCreateAlbum requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateAlbum requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAlbum requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateAlbum requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAlbum requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateAlbum requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetAsset3Ds extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "id",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return WithAsset3D.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetAsset3Ds.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetAsset3Ds(String nodeId, APIContext context) {
      super(context, nodeId, "/asset3ds", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetAsset3Ds setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetAsset3Ds setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetAsset3Ds requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetAsset3Ds requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetAsset3Ds requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetAsset3Ds requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetAsset3Ds requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetAsset3Ds requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetAsset3Ds requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetAsset3Ds requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
  }

  public static class APIRequestDeleteAssignedUsers extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "user",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteAssignedUsers.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteAssignedUsers(String nodeId, APIContext context) {
      super(context, nodeId, "/assigned_users", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteAssignedUsers setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteAssignedUsers setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteAssignedUsers setUser (Long user) {
      this.setParam("user", user);
      return this;
    }
    public APIRequestDeleteAssignedUsers setUser (String user) {
      this.setParam("user", user);
      return this;
    }

    public APIRequestDeleteAssignedUsers requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteAssignedUsers requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteAssignedUsers requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteAssignedUsers requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteAssignedUsers requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteAssignedUsers requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetAssignedUsers extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "business",
    };

    public static final String[] FIELDS = {
      "business",
      "id",
      "name",
      "user_type",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return AssignedUser.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetAssignedUsers.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetAssignedUsers(String nodeId, APIContext context) {
      super(context, nodeId, "/assigned_users", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetAssignedUsers setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetAssignedUsers setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetAssignedUsers setBusiness (String business) {
      this.setParam("business", business);
      return this;
    }

    public APIRequestGetAssignedUsers requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetAssignedUsers requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetAssignedUsers requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetAssignedUsers requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetAssignedUsers requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetAssignedUsers requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetAssignedUsers requestBusinessField () {
      return this.requestBusinessField(true);
    }
    public APIRequestGetAssignedUsers requestBusinessField (boolean value) {
      this.requestField("business", value);
      return this;
    }
    public APIRequestGetAssignedUsers requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetAssignedUsers requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetAssignedUsers requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetAssignedUsers requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetAssignedUsers requestUserTypeField () {
      return this.requestUserTypeField(true);
    }
    public APIRequestGetAssignedUsers requestUserTypeField (boolean value) {
      this.requestField("user_type", value);
      return this;
    }
  }

  public static class APIRequestCreateAssignedUser extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "user",
      "tasks",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateAssignedUser.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateAssignedUser(String nodeId, APIContext context) {
      super(context, nodeId, "/assigned_users", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateAssignedUser setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateAssignedUser setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateAssignedUser setUser (Long user) {
      this.setParam("user", user);
      return this;
    }
    public APIRequestCreateAssignedUser setUser (String user) {
      this.setParam("user", user);
      return this;
    }

    public APIRequestCreateAssignedUser setTasks (List tasks) {
      this.setParam("tasks", tasks);
      return this;
    }
    public APIRequestCreateAssignedUser setTasks (String tasks) {
      this.setParam("tasks", tasks);
      return this;
    }

    public APIRequestCreateAssignedUser requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateAssignedUser requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAssignedUser requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateAssignedUser requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateAssignedUser requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateAssignedUser requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetAudioMediaCopyrights extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "creation_time",
      "displayed_matches_count",
      "id",
      "in_conflict",
      "isrc",
      "match_rule",
      "ownership_countries",
      "reference_file_status",
      "ridge_monitoring_status",
      "update_time",
      "whitelisted_fb_users",
      "whitelisted_ig_users",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return AudioCopyright.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetAudioMediaCopyrights.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetAudioMediaCopyrights(String nodeId, APIContext context) {
      super(context, nodeId, "/audio_media_copyrights", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetAudioMediaCopyrights setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetAudioMediaCopyrights setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetAudioMediaCopyrights requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetAudioMediaCopyrights requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetAudioMediaCopyrights requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetAudioMediaCopyrights requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetAudioMediaCopyrights requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetAudioMediaCopyrights requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetAudioMediaCopyrights requestCreationTimeField () {
      return this.requestCreationTimeField(true);
    }
    public APIRequestGetAudioMediaCopyrights requestCreationTimeField (boolean value) {
      this.requestField("creation_time", value);
      return this;
    }
    public APIRequestGetAudioMediaCopyrights requestDisplayedMatchesCountField () {
      return this.requestDisplayedMatchesCountField(true);
    }
    public APIRequestGetAudioMediaCopyrights requestDisplayedMatchesCountField (boolean value) {
      this.requestField("displayed_matches_count", value);
      return this;
    }
    public APIRequestGetAudioMediaCopyrights requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetAudioMediaCopyrights requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetAudioMediaCopyrights requestInConflictField () {
      return this.requestInConflictField(true);
    }
    public APIRequestGetAudioMediaCopyrights requestInConflictField (boolean value) {
      this.requestField("in_conflict", value);
      return this;
    }
    public APIRequestGetAudioMediaCopyrights requestIsrcField () {
      return this.requestIsrcField(true);
    }
    public APIRequestGetAudioMediaCopyrights requestIsrcField (boolean value) {
      this.requestField("isrc", value);
      return this;
    }
    public APIRequestGetAudioMediaCopyrights requestMatchRuleField () {
      return this.requestMatchRuleField(true);
    }
    public APIRequestGetAudioMediaCopyrights requestMatchRuleField (boolean value) {
      this.requestField("match_rule", value);
      return this;
    }
    public APIRequestGetAudioMediaCopyrights requestOwnershipCountriesField () {
      return this.requestOwnershipCountriesField(true);
    }
    public APIRequestGetAudioMediaCopyrights requestOwnershipCountriesField (boolean value) {
      this.requestField("ownership_countries", value);
      return this;
    }
    public APIRequestGetAudioMediaCopyrights requestReferenceFileStatusField () {
      return this.requestReferenceFileStatusField(true);
    }
    public APIRequestGetAudioMediaCopyrights requestReferenceFileStatusField (boolean value) {
      this.requestField("reference_file_status", value);
      return this;
    }
    public APIRequestGetAudioMediaCopyrights requestRidgeMonitoringStatusField () {
      return this.requestRidgeMonitoringStatusField(true);
    }
    public APIRequestGetAudioMediaCopyrights requestRidgeMonitoringStatusField (boolean value) {
      this.requestField("ridge_monitoring_status", value);
      return this;
    }
    public APIRequestGetAudioMediaCopyrights requestUpdateTimeField () {
      return this.requestUpdateTimeField(true);
    }
    public APIRequestGetAudioMediaCopyrights requestUpdateTimeField (boolean value) {
      this.requestField("update_time", value);
      return this;
    }
    public APIRequestGetAudioMediaCopyrights requestWhitelistedFbUsersField () {
      return this.requestWhitelistedFbUsersField(true);
    }
    public APIRequestGetAudioMediaCopyrights requestWhitelistedFbUsersField (boolean value) {
      this.requestField("whitelisted_fb_users", value);
      return this;
    }
    public APIRequestGetAudioMediaCopyrights requestWhitelistedIgUsersField () {
      return this.requestWhitelistedIgUsersField(true);
    }
    public APIRequestGetAudioMediaCopyrights requestWhitelistedIgUsersField (boolean value) {
      this.requestField("whitelisted_ig_users", value);
      return this;
    }
  }

  public static class APIRequestDeleteBlocked extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "uid",
      "user",
      "asid",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteBlocked.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteBlocked(String nodeId, APIContext context) {
      super(context, nodeId, "/blocked", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteBlocked setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteBlocked setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteBlocked setUid (Long uid) {
      this.setParam("uid", uid);
      return this;
    }
    public APIRequestDeleteBlocked setUid (String uid) {
      this.setParam("uid", uid);
      return this;
    }

    public APIRequestDeleteBlocked setUser (Long user) {
      this.setParam("user", user);
      return this;
    }
    public APIRequestDeleteBlocked setUser (String user) {
      this.setParam("user", user);
      return this;
    }

    public APIRequestDeleteBlocked setAsid (Long asid) {
      this.setParam("asid", asid);
      return this;
    }
    public APIRequestDeleteBlocked setAsid (String asid) {
      this.setParam("asid", asid);
      return this;
    }

    public APIRequestDeleteBlocked requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteBlocked requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteBlocked requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteBlocked requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteBlocked requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteBlocked requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetBlocked extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "uid",
      "user",
    };

    public static final String[] FIELDS = {
      "can_post",
      "id",
      "link",
      "name",
      "pic",
      "pic_crop",
      "pic_large",
      "pic_small",
      "pic_square",
      "profile_type",
      "username",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Profile.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetBlocked.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetBlocked(String nodeId, APIContext context) {
      super(context, nodeId, "/blocked", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetBlocked setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetBlocked setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetBlocked setUid (Long uid) {
      this.setParam("uid", uid);
      return this;
    }
    public APIRequestGetBlocked setUid (String uid) {
      this.setParam("uid", uid);
      return this;
    }

    public APIRequestGetBlocked setUser (Long user) {
      this.setParam("user", user);
      return this;
    }
    public APIRequestGetBlocked setUser (String user) {
      this.setParam("user", user);
      return this;
    }

    public APIRequestGetBlocked requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetBlocked requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetBlocked requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetBlocked requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetBlocked requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetBlocked requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetBlocked requestCanPostField () {
      return this.requestCanPostField(true);
    }
    public APIRequestGetBlocked requestCanPostField (boolean value) {
      this.requestField("can_post", value);
      return this;
    }
    public APIRequestGetBlocked requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetBlocked requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetBlocked requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetBlocked requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetBlocked requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetBlocked requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetBlocked requestPicField () {
      return this.requestPicField(true);
    }
    public APIRequestGetBlocked requestPicField (boolean value) {
      this.requestField("pic", value);
      return this;
    }
    public APIRequestGetBlocked requestPicCropField () {
      return this.requestPicCropField(true);
    }
    public APIRequestGetBlocked requestPicCropField (boolean value) {
      this.requestField("pic_crop", value);
      return this;
    }
    public APIRequestGetBlocked requestPicLargeField () {
      return this.requestPicLargeField(true);
    }
    public APIRequestGetBlocked requestPicLargeField (boolean value) {
      this.requestField("pic_large", value);
      return this;
    }
    public APIRequestGetBlocked requestPicSmallField () {
      return this.requestPicSmallField(true);
    }
    public APIRequestGetBlocked requestPicSmallField (boolean value) {
      this.requestField("pic_small", value);
      return this;
    }
    public APIRequestGetBlocked requestPicSquareField () {
      return this.requestPicSquareField(true);
    }
    public APIRequestGetBlocked requestPicSquareField (boolean value) {
      this.requestField("pic_square", value);
      return this;
    }
    public APIRequestGetBlocked requestProfileTypeField () {
      return this.requestProfileTypeField(true);
    }
    public APIRequestGetBlocked requestProfileTypeField (boolean value) {
      this.requestField("profile_type", value);
      return this;
    }
    public APIRequestGetBlocked requestUsernameField () {
      return this.requestUsernameField(true);
    }
    public APIRequestGetBlocked requestUsernameField (boolean value) {
      this.requestField("username", value);
      return this;
    }
  }

  public static class APIRequestCreateBlocked extends APIRequest {

    APINode lastResponse = null;
    @Override
    public APINode getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "user",
      "uid",
      "asid",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINode parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public APINode execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINode execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public APINode apply(ResponseWrapper result) {
             try {
               return APIRequestCreateBlocked.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateBlocked(String nodeId, APIContext context) {
      super(context, nodeId, "/blocked", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateBlocked setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateBlocked setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateBlocked setUser (List user) {
      this.setParam("user", user);
      return this;
    }
    public APIRequestCreateBlocked setUser (String user) {
      this.setParam("user", user);
      return this;
    }

    public APIRequestCreateBlocked setUid (List uid) {
      this.setParam("uid", uid);
      return this;
    }
    public APIRequestCreateBlocked setUid (String uid) {
      this.setParam("uid", uid);
      return this;
    }

    public APIRequestCreateBlocked setAsid (JsonArray asid) {
      this.setParam("asid", asid);
      return this;
    }
    public APIRequestCreateBlocked setAsid (String asid) {
      this.setParam("asid", asid);
      return this;
    }

    public APIRequestCreateBlocked requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateBlocked requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateBlocked requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateBlocked requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateBlocked requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateBlocked requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetBroadcastMessages extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "id",
      "scheduled_time",
      "status",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PageBroadcast.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetBroadcastMessages.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetBroadcastMessages(String nodeId, APIContext context) {
      super(context, nodeId, "/broadcast_messages", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetBroadcastMessages setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetBroadcastMessages setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetBroadcastMessages requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetBroadcastMessages requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetBroadcastMessages requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetBroadcastMessages requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetBroadcastMessages requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetBroadcastMessages requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetBroadcastMessages requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetBroadcastMessages requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetBroadcastMessages requestScheduledTimeField () {
      return this.requestScheduledTimeField(true);
    }
    public APIRequestGetBroadcastMessages requestScheduledTimeField (boolean value) {
      this.requestField("scheduled_time", value);
      return this;
    }
    public APIRequestGetBroadcastMessages requestStatusField () {
      return this.requestStatusField(true);
    }
    public APIRequestGetBroadcastMessages requestStatusField (boolean value) {
      this.requestField("status", value);
      return this;
    }
  }

  public static class APIRequestCreateBroadcastMessage extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "message_creative_id",
      "notification_type",
      "tag",
      "messaging_type",
      "targeting",
      "custom_label_id",
      "schedule_time",
      "schedule_local_time",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateBroadcastMessage.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateBroadcastMessage(String nodeId, APIContext context) {
      super(context, nodeId, "/broadcast_messages", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateBroadcastMessage setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateBroadcastMessage setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateBroadcastMessage setMessageCreativeId (String messageCreativeId) {
      this.setParam("message_creative_id", messageCreativeId);
      return this;
    }

    public APIRequestCreateBroadcastMessage setNotificationType (Page.EnumNotificationType notificationType) {
      this.setParam("notification_type", notificationType);
      return this;
    }
    public APIRequestCreateBroadcastMessage setNotificationType (String notificationType) {
      this.setParam("notification_type", notificationType);
      return this;
    }

    public APIRequestCreateBroadcastMessage setTag (Object tag) {
      this.setParam("tag", tag);
      return this;
    }
    public APIRequestCreateBroadcastMessage setTag (String tag) {
      this.setParam("tag", tag);
      return this;
    }

    public APIRequestCreateBroadcastMessage setMessagingType (Page.EnumMessagingType messagingType) {
      this.setParam("messaging_type", messagingType);
      return this;
    }
    public APIRequestCreateBroadcastMessage setMessagingType (String messagingType) {
      this.setParam("messaging_type", messagingType);
      return this;
    }

    public APIRequestCreateBroadcastMessage setTargeting (Object targeting) {
      this.setParam("targeting", targeting);
      return this;
    }
    public APIRequestCreateBroadcastMessage setTargeting (String targeting) {
      this.setParam("targeting", targeting);
      return this;
    }

    public APIRequestCreateBroadcastMessage setCustomLabelId (Long customLabelId) {
      this.setParam("custom_label_id", customLabelId);
      return this;
    }
    public APIRequestCreateBroadcastMessage setCustomLabelId (String customLabelId) {
      this.setParam("custom_label_id", customLabelId);
      return this;
    }

    public APIRequestCreateBroadcastMessage setScheduleTime (String scheduleTime) {
      this.setParam("schedule_time", scheduleTime);
      return this;
    }

    public APIRequestCreateBroadcastMessage setScheduleLocalTime (String scheduleLocalTime) {
      this.setParam("schedule_local_time", scheduleLocalTime);
      return this;
    }

    public APIRequestCreateBroadcastMessage requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateBroadcastMessage requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateBroadcastMessage requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateBroadcastMessage requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateBroadcastMessage requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateBroadcastMessage requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreateBroadcastReachEstimation extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "custom_label_id",
      "targeting",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateBroadcastReachEstimation.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateBroadcastReachEstimation(String nodeId, APIContext context) {
      super(context, nodeId, "/broadcast_reach_estimations", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateBroadcastReachEstimation setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateBroadcastReachEstimation setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateBroadcastReachEstimation setCustomLabelId (Long customLabelId) {
      this.setParam("custom_label_id", customLabelId);
      return this;
    }
    public APIRequestCreateBroadcastReachEstimation setCustomLabelId (String customLabelId) {
      this.setParam("custom_label_id", customLabelId);
      return this;
    }

    public APIRequestCreateBroadcastReachEstimation setTargeting (Object targeting) {
      this.setParam("targeting", targeting);
      return this;
    }
    public APIRequestCreateBroadcastReachEstimation setTargeting (String targeting) {
      this.setParam("targeting", targeting);
      return this;
    }

    public APIRequestCreateBroadcastReachEstimation requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateBroadcastReachEstimation requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateBroadcastReachEstimation requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateBroadcastReachEstimation requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateBroadcastReachEstimation requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateBroadcastReachEstimation requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetBusinessActivities extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "business",
    };

    public static final String[] FIELDS = {
      "acted_upon_business_id",
      "acted_upon_business_name",
      "acted_upon_business_object_id",
      "acted_upon_business_object_name",
      "acted_upon_business_object_type",
      "acted_upon_user_id",
      "acted_upon_user_name",
      "acting_business_id",
      "acting_business_name",
      "acting_user_id",
      "acting_user_name",
      "event_time",
      "event_type",
      "extra_data",
      "target_business_id",
      "target_business_name",
      "target_business_object_id",
      "target_business_object_name",
      "target_business_object_type",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return BusinessActivityLogEvent.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetBusinessActivities.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetBusinessActivities(String nodeId, APIContext context) {
      super(context, nodeId, "/business_activities", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetBusinessActivities setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetBusinessActivities setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetBusinessActivities setBusiness (String business) {
      this.setParam("business", business);
      return this;
    }

    public APIRequestGetBusinessActivities requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetBusinessActivities requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetBusinessActivities requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetBusinessActivities requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetBusinessActivities requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetBusinessActivities requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetBusinessActivities requestActedUponBusinessIdField () {
      return this.requestActedUponBusinessIdField(true);
    }
    public APIRequestGetBusinessActivities requestActedUponBusinessIdField (boolean value) {
      this.requestField("acted_upon_business_id", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestActedUponBusinessNameField () {
      return this.requestActedUponBusinessNameField(true);
    }
    public APIRequestGetBusinessActivities requestActedUponBusinessNameField (boolean value) {
      this.requestField("acted_upon_business_name", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestActedUponBusinessObjectIdField () {
      return this.requestActedUponBusinessObjectIdField(true);
    }
    public APIRequestGetBusinessActivities requestActedUponBusinessObjectIdField (boolean value) {
      this.requestField("acted_upon_business_object_id", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestActedUponBusinessObjectNameField () {
      return this.requestActedUponBusinessObjectNameField(true);
    }
    public APIRequestGetBusinessActivities requestActedUponBusinessObjectNameField (boolean value) {
      this.requestField("acted_upon_business_object_name", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestActedUponBusinessObjectTypeField () {
      return this.requestActedUponBusinessObjectTypeField(true);
    }
    public APIRequestGetBusinessActivities requestActedUponBusinessObjectTypeField (boolean value) {
      this.requestField("acted_upon_business_object_type", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestActedUponUserIdField () {
      return this.requestActedUponUserIdField(true);
    }
    public APIRequestGetBusinessActivities requestActedUponUserIdField (boolean value) {
      this.requestField("acted_upon_user_id", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestActedUponUserNameField () {
      return this.requestActedUponUserNameField(true);
    }
    public APIRequestGetBusinessActivities requestActedUponUserNameField (boolean value) {
      this.requestField("acted_upon_user_name", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestActingBusinessIdField () {
      return this.requestActingBusinessIdField(true);
    }
    public APIRequestGetBusinessActivities requestActingBusinessIdField (boolean value) {
      this.requestField("acting_business_id", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestActingBusinessNameField () {
      return this.requestActingBusinessNameField(true);
    }
    public APIRequestGetBusinessActivities requestActingBusinessNameField (boolean value) {
      this.requestField("acting_business_name", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestActingUserIdField () {
      return this.requestActingUserIdField(true);
    }
    public APIRequestGetBusinessActivities requestActingUserIdField (boolean value) {
      this.requestField("acting_user_id", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestActingUserNameField () {
      return this.requestActingUserNameField(true);
    }
    public APIRequestGetBusinessActivities requestActingUserNameField (boolean value) {
      this.requestField("acting_user_name", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestEventTimeField () {
      return this.requestEventTimeField(true);
    }
    public APIRequestGetBusinessActivities requestEventTimeField (boolean value) {
      this.requestField("event_time", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestEventTypeField () {
      return this.requestEventTypeField(true);
    }
    public APIRequestGetBusinessActivities requestEventTypeField (boolean value) {
      this.requestField("event_type", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestExtraDataField () {
      return this.requestExtraDataField(true);
    }
    public APIRequestGetBusinessActivities requestExtraDataField (boolean value) {
      this.requestField("extra_data", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestTargetBusinessIdField () {
      return this.requestTargetBusinessIdField(true);
    }
    public APIRequestGetBusinessActivities requestTargetBusinessIdField (boolean value) {
      this.requestField("target_business_id", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestTargetBusinessNameField () {
      return this.requestTargetBusinessNameField(true);
    }
    public APIRequestGetBusinessActivities requestTargetBusinessNameField (boolean value) {
      this.requestField("target_business_name", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestTargetBusinessObjectIdField () {
      return this.requestTargetBusinessObjectIdField(true);
    }
    public APIRequestGetBusinessActivities requestTargetBusinessObjectIdField (boolean value) {
      this.requestField("target_business_object_id", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestTargetBusinessObjectNameField () {
      return this.requestTargetBusinessObjectNameField(true);
    }
    public APIRequestGetBusinessActivities requestTargetBusinessObjectNameField (boolean value) {
      this.requestField("target_business_object_name", value);
      return this;
    }
    public APIRequestGetBusinessActivities requestTargetBusinessObjectTypeField () {
      return this.requestTargetBusinessObjectTypeField(true);
    }
    public APIRequestGetBusinessActivities requestTargetBusinessObjectTypeField (boolean value) {
      this.requestField("target_business_object_type", value);
      return this;
    }
  }

  public static class APIRequestCreateBusiness extends APIRequest {

    Business lastResponse = null;
    @Override
    public Business getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "business",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Business parseResponse(String response, String header) throws APIException {
      return Business.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Business execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Business execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Business apply(ResponseWrapper result) {
             try {
               return APIRequestCreateBusiness.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateBusiness(String nodeId, APIContext context) {
      super(context, nodeId, "/businesses", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateBusiness setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateBusiness setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateBusiness setBusiness (String business) {
      this.setParam("business", business);
      return this;
    }

    public APIRequestCreateBusiness requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateBusiness requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateBusiness requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateBusiness requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateBusiness requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateBusiness requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetBusinessProjects extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "business",
    };

    public static final String[] FIELDS = {
      "business",
      "created_time",
      "creator",
      "id",
      "name",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return BusinessProject.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetBusinessProjects.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetBusinessProjects(String nodeId, APIContext context) {
      super(context, nodeId, "/businessprojects", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetBusinessProjects setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetBusinessProjects setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetBusinessProjects setBusiness (String business) {
      this.setParam("business", business);
      return this;
    }

    public APIRequestGetBusinessProjects requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetBusinessProjects requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetBusinessProjects requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetBusinessProjects requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetBusinessProjects requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetBusinessProjects requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetBusinessProjects requestBusinessField () {
      return this.requestBusinessField(true);
    }
    public APIRequestGetBusinessProjects requestBusinessField (boolean value) {
      this.requestField("business", value);
      return this;
    }
    public APIRequestGetBusinessProjects requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetBusinessProjects requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetBusinessProjects requestCreatorField () {
      return this.requestCreatorField(true);
    }
    public APIRequestGetBusinessProjects requestCreatorField (boolean value) {
      this.requestField("creator", value);
      return this;
    }
    public APIRequestGetBusinessProjects requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetBusinessProjects requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetBusinessProjects requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetBusinessProjects requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
  }

  public static class APIRequestGetBusinessSettingLogs extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "actor",
      "event_object",
      "event_time",
      "event_type",
      "extra_data",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return BusinessSettingLogsData.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetBusinessSettingLogs.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetBusinessSettingLogs(String nodeId, APIContext context) {
      super(context, nodeId, "/businesssettinglogs", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetBusinessSettingLogs setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetBusinessSettingLogs setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetBusinessSettingLogs requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetBusinessSettingLogs requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetBusinessSettingLogs requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetBusinessSettingLogs requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetBusinessSettingLogs requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetBusinessSettingLogs requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetBusinessSettingLogs requestActorField () {
      return this.requestActorField(true);
    }
    public APIRequestGetBusinessSettingLogs requestActorField (boolean value) {
      this.requestField("actor", value);
      return this;
    }
    public APIRequestGetBusinessSettingLogs requestEventObjectField () {
      return this.requestEventObjectField(true);
    }
    public APIRequestGetBusinessSettingLogs requestEventObjectField (boolean value) {
      this.requestField("event_object", value);
      return this;
    }
    public APIRequestGetBusinessSettingLogs requestEventTimeField () {
      return this.requestEventTimeField(true);
    }
    public APIRequestGetBusinessSettingLogs requestEventTimeField (boolean value) {
      this.requestField("event_time", value);
      return this;
    }
    public APIRequestGetBusinessSettingLogs requestEventTypeField () {
      return this.requestEventTypeField(true);
    }
    public APIRequestGetBusinessSettingLogs requestEventTypeField (boolean value) {
      this.requestField("event_type", value);
      return this;
    }
    public APIRequestGetBusinessSettingLogs requestExtraDataField () {
      return this.requestExtraDataField(true);
    }
    public APIRequestGetBusinessSettingLogs requestExtraDataField (boolean value) {
      this.requestField("extra_data", value);
      return this;
    }
  }

  public static class APIRequestGetCallToActions extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "android_app",
      "android_deeplink",
      "android_destination_type",
      "android_package_name",
      "android_url",
      "created_time",
      "email_address",
      "from",
      "id",
      "intl_number_with_plus",
      "iphone_app",
      "iphone_deeplink",
      "iphone_destination_type",
      "iphone_url",
      "status",
      "type",
      "updated_time",
      "web_destination_type",
      "web_url",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PageCallToAction.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetCallToActions.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetCallToActions(String nodeId, APIContext context) {
      super(context, nodeId, "/call_to_actions", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetCallToActions setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetCallToActions setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetCallToActions requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetCallToActions requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCallToActions requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetCallToActions requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCallToActions requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetCallToActions requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetCallToActions requestAndroidAppField () {
      return this.requestAndroidAppField(true);
    }
    public APIRequestGetCallToActions requestAndroidAppField (boolean value) {
      this.requestField("android_app", value);
      return this;
    }
    public APIRequestGetCallToActions requestAndroidDeeplinkField () {
      return this.requestAndroidDeeplinkField(true);
    }
    public APIRequestGetCallToActions requestAndroidDeeplinkField (boolean value) {
      this.requestField("android_deeplink", value);
      return this;
    }
    public APIRequestGetCallToActions requestAndroidDestinationTypeField () {
      return this.requestAndroidDestinationTypeField(true);
    }
    public APIRequestGetCallToActions requestAndroidDestinationTypeField (boolean value) {
      this.requestField("android_destination_type", value);
      return this;
    }
    public APIRequestGetCallToActions requestAndroidPackageNameField () {
      return this.requestAndroidPackageNameField(true);
    }
    public APIRequestGetCallToActions requestAndroidPackageNameField (boolean value) {
      this.requestField("android_package_name", value);
      return this;
    }
    public APIRequestGetCallToActions requestAndroidUrlField () {
      return this.requestAndroidUrlField(true);
    }
    public APIRequestGetCallToActions requestAndroidUrlField (boolean value) {
      this.requestField("android_url", value);
      return this;
    }
    public APIRequestGetCallToActions requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetCallToActions requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetCallToActions requestEmailAddressField () {
      return this.requestEmailAddressField(true);
    }
    public APIRequestGetCallToActions requestEmailAddressField (boolean value) {
      this.requestField("email_address", value);
      return this;
    }
    public APIRequestGetCallToActions requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetCallToActions requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetCallToActions requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetCallToActions requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetCallToActions requestIntlNumberWithPlusField () {
      return this.requestIntlNumberWithPlusField(true);
    }
    public APIRequestGetCallToActions requestIntlNumberWithPlusField (boolean value) {
      this.requestField("intl_number_with_plus", value);
      return this;
    }
    public APIRequestGetCallToActions requestIphoneAppField () {
      return this.requestIphoneAppField(true);
    }
    public APIRequestGetCallToActions requestIphoneAppField (boolean value) {
      this.requestField("iphone_app", value);
      return this;
    }
    public APIRequestGetCallToActions requestIphoneDeeplinkField () {
      return this.requestIphoneDeeplinkField(true);
    }
    public APIRequestGetCallToActions requestIphoneDeeplinkField (boolean value) {
      this.requestField("iphone_deeplink", value);
      return this;
    }
    public APIRequestGetCallToActions requestIphoneDestinationTypeField () {
      return this.requestIphoneDestinationTypeField(true);
    }
    public APIRequestGetCallToActions requestIphoneDestinationTypeField (boolean value) {
      this.requestField("iphone_destination_type", value);
      return this;
    }
    public APIRequestGetCallToActions requestIphoneUrlField () {
      return this.requestIphoneUrlField(true);
    }
    public APIRequestGetCallToActions requestIphoneUrlField (boolean value) {
      this.requestField("iphone_url", value);
      return this;
    }
    public APIRequestGetCallToActions requestStatusField () {
      return this.requestStatusField(true);
    }
    public APIRequestGetCallToActions requestStatusField (boolean value) {
      this.requestField("status", value);
      return this;
    }
    public APIRequestGetCallToActions requestTypeField () {
      return this.requestTypeField(true);
    }
    public APIRequestGetCallToActions requestTypeField (boolean value) {
      this.requestField("type", value);
      return this;
    }
    public APIRequestGetCallToActions requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetCallToActions requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetCallToActions requestWebDestinationTypeField () {
      return this.requestWebDestinationTypeField(true);
    }
    public APIRequestGetCallToActions requestWebDestinationTypeField (boolean value) {
      this.requestField("web_destination_type", value);
      return this;
    }
    public APIRequestGetCallToActions requestWebUrlField () {
      return this.requestWebUrlField(true);
    }
    public APIRequestGetCallToActions requestWebUrlField (boolean value) {
      this.requestField("web_url", value);
      return this;
    }
  }

  public static class APIRequestCreateCallToAction extends APIRequest {

    PageCallToAction lastResponse = null;
    @Override
    public PageCallToAction getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "type",
      "web_destination_type",
      "android_destination_type",
      "iphone_destination_type",
      "intl_number_with_plus",
      "web_url",
      "android_app_id",
      "android_deeplink",
      "android_package_name",
      "android_url",
      "iphone_app_id",
      "iphone_deeplink",
      "iphone_url",
      "email_address",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public PageCallToAction parseResponse(String response, String header) throws APIException {
      return PageCallToAction.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public PageCallToAction execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public PageCallToAction execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public PageCallToAction apply(ResponseWrapper result) {
             try {
               return APIRequestCreateCallToAction.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateCallToAction(String nodeId, APIContext context) {
      super(context, nodeId, "/call_to_actions", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateCallToAction setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateCallToAction setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateCallToAction setType (PageCallToAction.EnumType type) {
      this.setParam("type", type);
      return this;
    }
    public APIRequestCreateCallToAction setType (String type) {
      this.setParam("type", type);
      return this;
    }

    public APIRequestCreateCallToAction setWebDestinationType (PageCallToAction.EnumWebDestinationType webDestinationType) {
      this.setParam("web_destination_type", webDestinationType);
      return this;
    }
    public APIRequestCreateCallToAction setWebDestinationType (String webDestinationType) {
      this.setParam("web_destination_type", webDestinationType);
      return this;
    }

    public APIRequestCreateCallToAction setAndroidDestinationType (PageCallToAction.EnumAndroidDestinationType androidDestinationType) {
      this.setParam("android_destination_type", androidDestinationType);
      return this;
    }
    public APIRequestCreateCallToAction setAndroidDestinationType (String androidDestinationType) {
      this.setParam("android_destination_type", androidDestinationType);
      return this;
    }

    public APIRequestCreateCallToAction setIphoneDestinationType (PageCallToAction.EnumIphoneDestinationType iphoneDestinationType) {
      this.setParam("iphone_destination_type", iphoneDestinationType);
      return this;
    }
    public APIRequestCreateCallToAction setIphoneDestinationType (String iphoneDestinationType) {
      this.setParam("iphone_destination_type", iphoneDestinationType);
      return this;
    }

    public APIRequestCreateCallToAction setIntlNumberWithPlus (String intlNumberWithPlus) {
      this.setParam("intl_number_with_plus", intlNumberWithPlus);
      return this;
    }

    public APIRequestCreateCallToAction setWebUrl (String webUrl) {
      this.setParam("web_url", webUrl);
      return this;
    }

    public APIRequestCreateCallToAction setAndroidAppId (Long androidAppId) {
      this.setParam("android_app_id", androidAppId);
      return this;
    }
    public APIRequestCreateCallToAction setAndroidAppId (String androidAppId) {
      this.setParam("android_app_id", androidAppId);
      return this;
    }

    public APIRequestCreateCallToAction setAndroidDeeplink (String androidDeeplink) {
      this.setParam("android_deeplink", androidDeeplink);
      return this;
    }

    public APIRequestCreateCallToAction setAndroidPackageName (String androidPackageName) {
      this.setParam("android_package_name", androidPackageName);
      return this;
    }

    public APIRequestCreateCallToAction setAndroidUrl (String androidUrl) {
      this.setParam("android_url", androidUrl);
      return this;
    }

    public APIRequestCreateCallToAction setIphoneAppId (Long iphoneAppId) {
      this.setParam("iphone_app_id", iphoneAppId);
      return this;
    }
    public APIRequestCreateCallToAction setIphoneAppId (String iphoneAppId) {
      this.setParam("iphone_app_id", iphoneAppId);
      return this;
    }

    public APIRequestCreateCallToAction setIphoneDeeplink (String iphoneDeeplink) {
      this.setParam("iphone_deeplink", iphoneDeeplink);
      return this;
    }

    public APIRequestCreateCallToAction setIphoneUrl (String iphoneUrl) {
      this.setParam("iphone_url", iphoneUrl);
      return this;
    }

    public APIRequestCreateCallToAction setEmailAddress (String emailAddress) {
      this.setParam("email_address", emailAddress);
      return this;
    }

    public APIRequestCreateCallToAction requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateCallToAction requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCallToAction requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateCallToAction requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCallToAction requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateCallToAction requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetCanvasElements extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "element",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return CanvasBodyElement.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetCanvasElements.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetCanvasElements(String nodeId, APIContext context) {
      super(context, nodeId, "/canvas_elements", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetCanvasElements setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetCanvasElements setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetCanvasElements requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetCanvasElements requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCanvasElements requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetCanvasElements requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCanvasElements requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetCanvasElements requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetCanvasElements requestElementField () {
      return this.requestElementField(true);
    }
    public APIRequestGetCanvasElements requestElementField (boolean value) {
      this.requestField("element", value);
      return this;
    }
  }

  public static class APIRequestCreateCanvasElement extends APIRequest {

    CanvasBodyElement lastResponse = null;
    @Override
    public CanvasBodyElement getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "canvas_photo",
      "canvas_video",
      "canvas_text",
      "canvas_button",
      "canvas_footer",
      "canvas_carousel",
      "canvas_header",
      "canvas_product_list",
      "canvas_product_set",
      "canvas_store_locator",
      "canvas_lead_form",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public CanvasBodyElement parseResponse(String response, String header) throws APIException {
      return CanvasBodyElement.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public CanvasBodyElement execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public CanvasBodyElement execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public CanvasBodyElement apply(ResponseWrapper result) {
             try {
               return APIRequestCreateCanvasElement.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateCanvasElement(String nodeId, APIContext context) {
      super(context, nodeId, "/canvas_elements", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateCanvasElement setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateCanvasElement setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateCanvasElement setCanvasPhoto (Object canvasPhoto) {
      this.setParam("canvas_photo", canvasPhoto);
      return this;
    }
    public APIRequestCreateCanvasElement setCanvasPhoto (String canvasPhoto) {
      this.setParam("canvas_photo", canvasPhoto);
      return this;
    }

    public APIRequestCreateCanvasElement setCanvasVideo (Object canvasVideo) {
      this.setParam("canvas_video", canvasVideo);
      return this;
    }
    public APIRequestCreateCanvasElement setCanvasVideo (String canvasVideo) {
      this.setParam("canvas_video", canvasVideo);
      return this;
    }

    public APIRequestCreateCanvasElement setCanvasText (Object canvasText) {
      this.setParam("canvas_text", canvasText);
      return this;
    }
    public APIRequestCreateCanvasElement setCanvasText (String canvasText) {
      this.setParam("canvas_text", canvasText);
      return this;
    }

    public APIRequestCreateCanvasElement setCanvasButton (Object canvasButton) {
      this.setParam("canvas_button", canvasButton);
      return this;
    }
    public APIRequestCreateCanvasElement setCanvasButton (String canvasButton) {
      this.setParam("canvas_button", canvasButton);
      return this;
    }

    public APIRequestCreateCanvasElement setCanvasFooter (Object canvasFooter) {
      this.setParam("canvas_footer", canvasFooter);
      return this;
    }
    public APIRequestCreateCanvasElement setCanvasFooter (String canvasFooter) {
      this.setParam("canvas_footer", canvasFooter);
      return this;
    }

    public APIRequestCreateCanvasElement setCanvasCarousel (Object canvasCarousel) {
      this.setParam("canvas_carousel", canvasCarousel);
      return this;
    }
    public APIRequestCreateCanvasElement setCanvasCarousel (String canvasCarousel) {
      this.setParam("canvas_carousel", canvasCarousel);
      return this;
    }

    public APIRequestCreateCanvasElement setCanvasHeader (Object canvasHeader) {
      this.setParam("canvas_header", canvasHeader);
      return this;
    }
    public APIRequestCreateCanvasElement setCanvasHeader (String canvasHeader) {
      this.setParam("canvas_header", canvasHeader);
      return this;
    }

    public APIRequestCreateCanvasElement setCanvasProductList (Object canvasProductList) {
      this.setParam("canvas_product_list", canvasProductList);
      return this;
    }
    public APIRequestCreateCanvasElement setCanvasProductList (String canvasProductList) {
      this.setParam("canvas_product_list", canvasProductList);
      return this;
    }

    public APIRequestCreateCanvasElement setCanvasProductSet (Object canvasProductSet) {
      this.setParam("canvas_product_set", canvasProductSet);
      return this;
    }
    public APIRequestCreateCanvasElement setCanvasProductSet (String canvasProductSet) {
      this.setParam("canvas_product_set", canvasProductSet);
      return this;
    }

    public APIRequestCreateCanvasElement setCanvasStoreLocator (Object canvasStoreLocator) {
      this.setParam("canvas_store_locator", canvasStoreLocator);
      return this;
    }
    public APIRequestCreateCanvasElement setCanvasStoreLocator (String canvasStoreLocator) {
      this.setParam("canvas_store_locator", canvasStoreLocator);
      return this;
    }

    public APIRequestCreateCanvasElement setCanvasLeadForm (Object canvasLeadForm) {
      this.setParam("canvas_lead_form", canvasLeadForm);
      return this;
    }
    public APIRequestCreateCanvasElement setCanvasLeadForm (String canvasLeadForm) {
      this.setParam("canvas_lead_form", canvasLeadForm);
      return this;
    }

    public APIRequestCreateCanvasElement requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateCanvasElement requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCanvasElement requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateCanvasElement requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCanvasElement requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateCanvasElement requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetCanvases extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "is_published",
    };

    public static final String[] FIELDS = {
      "background_color",
      "body_elements",
      "canvas_link",
      "id",
      "is_hidden",
      "is_published",
      "last_editor",
      "name",
      "owner",
      "update_time",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Canvas.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetCanvases.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetCanvases(String nodeId, APIContext context) {
      super(context, nodeId, "/canvases", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetCanvases setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetCanvases setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetCanvases setIsPublished (Boolean isPublished) {
      this.setParam("is_published", isPublished);
      return this;
    }
    public APIRequestGetCanvases setIsPublished (String isPublished) {
      this.setParam("is_published", isPublished);
      return this;
    }

    public APIRequestGetCanvases requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetCanvases requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCanvases requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetCanvases requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCanvases requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetCanvases requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetCanvases requestBackgroundColorField () {
      return this.requestBackgroundColorField(true);
    }
    public APIRequestGetCanvases requestBackgroundColorField (boolean value) {
      this.requestField("background_color", value);
      return this;
    }
    public APIRequestGetCanvases requestBodyElementsField () {
      return this.requestBodyElementsField(true);
    }
    public APIRequestGetCanvases requestBodyElementsField (boolean value) {
      this.requestField("body_elements", value);
      return this;
    }
    public APIRequestGetCanvases requestCanvasLinkField () {
      return this.requestCanvasLinkField(true);
    }
    public APIRequestGetCanvases requestCanvasLinkField (boolean value) {
      this.requestField("canvas_link", value);
      return this;
    }
    public APIRequestGetCanvases requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetCanvases requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetCanvases requestIsHiddenField () {
      return this.requestIsHiddenField(true);
    }
    public APIRequestGetCanvases requestIsHiddenField (boolean value) {
      this.requestField("is_hidden", value);
      return this;
    }
    public APIRequestGetCanvases requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetCanvases requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetCanvases requestLastEditorField () {
      return this.requestLastEditorField(true);
    }
    public APIRequestGetCanvases requestLastEditorField (boolean value) {
      this.requestField("last_editor", value);
      return this;
    }
    public APIRequestGetCanvases requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetCanvases requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetCanvases requestOwnerField () {
      return this.requestOwnerField(true);
    }
    public APIRequestGetCanvases requestOwnerField (boolean value) {
      this.requestField("owner", value);
      return this;
    }
    public APIRequestGetCanvases requestUpdateTimeField () {
      return this.requestUpdateTimeField(true);
    }
    public APIRequestGetCanvases requestUpdateTimeField (boolean value) {
      this.requestField("update_time", value);
      return this;
    }
  }

  public static class APIRequestCreateCanvase extends APIRequest {

    Canvas lastResponse = null;
    @Override
    public Canvas getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "body_element_ids",
      "background_color",
      "enable_swipe_to_open",
      "is_published",
      "is_hidden",
      "name",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Canvas parseResponse(String response, String header) throws APIException {
      return Canvas.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Canvas execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Canvas execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Canvas apply(ResponseWrapper result) {
             try {
               return APIRequestCreateCanvase.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateCanvase(String nodeId, APIContext context) {
      super(context, nodeId, "/canvases", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateCanvase setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateCanvase setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateCanvase setBodyElementIds (List bodyElementIds) {
      this.setParam("body_element_ids", bodyElementIds);
      return this;
    }
    public APIRequestCreateCanvase setBodyElementIds (String bodyElementIds) {
      this.setParam("body_element_ids", bodyElementIds);
      return this;
    }

    public APIRequestCreateCanvase setBackgroundColor (String backgroundColor) {
      this.setParam("background_color", backgroundColor);
      return this;
    }

    public APIRequestCreateCanvase setEnableSwipeToOpen (Boolean enableSwipeToOpen) {
      this.setParam("enable_swipe_to_open", enableSwipeToOpen);
      return this;
    }
    public APIRequestCreateCanvase setEnableSwipeToOpen (String enableSwipeToOpen) {
      this.setParam("enable_swipe_to_open", enableSwipeToOpen);
      return this;
    }

    public APIRequestCreateCanvase setIsPublished (Boolean isPublished) {
      this.setParam("is_published", isPublished);
      return this;
    }
    public APIRequestCreateCanvase setIsPublished (String isPublished) {
      this.setParam("is_published", isPublished);
      return this;
    }

    public APIRequestCreateCanvase setIsHidden (Boolean isHidden) {
      this.setParam("is_hidden", isHidden);
      return this;
    }
    public APIRequestCreateCanvase setIsHidden (String isHidden) {
      this.setParam("is_hidden", isHidden);
      return this;
    }

    public APIRequestCreateCanvase setName (String name) {
      this.setParam("name", name);
      return this;
    }

    public APIRequestCreateCanvase requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateCanvase requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCanvase requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateCanvase requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCanvase requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateCanvase requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestDeleteClaimedUrls extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "url",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteClaimedUrls.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteClaimedUrls(String nodeId, APIContext context) {
      super(context, nodeId, "/claimed_urls", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteClaimedUrls setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteClaimedUrls setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteClaimedUrls setUrl (String url) {
      this.setParam("url", url);
      return this;
    }

    public APIRequestDeleteClaimedUrls requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteClaimedUrls requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteClaimedUrls requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteClaimedUrls requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteClaimedUrls requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteClaimedUrls requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetClaimedUrls extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "app_links",
      "development_instant_article",
      "engagement",
      "id",
      "instant_article",
      "og_object",
      "ownership_permissions",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return URL.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetClaimedUrls.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetClaimedUrls(String nodeId, APIContext context) {
      super(context, nodeId, "/claimed_urls", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetClaimedUrls setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetClaimedUrls setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetClaimedUrls requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetClaimedUrls requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetClaimedUrls requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetClaimedUrls requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetClaimedUrls requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetClaimedUrls requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetClaimedUrls requestAppLinksField () {
      return this.requestAppLinksField(true);
    }
    public APIRequestGetClaimedUrls requestAppLinksField (boolean value) {
      this.requestField("app_links", value);
      return this;
    }
    public APIRequestGetClaimedUrls requestDevelopmentInstantArticleField () {
      return this.requestDevelopmentInstantArticleField(true);
    }
    public APIRequestGetClaimedUrls requestDevelopmentInstantArticleField (boolean value) {
      this.requestField("development_instant_article", value);
      return this;
    }
    public APIRequestGetClaimedUrls requestEngagementField () {
      return this.requestEngagementField(true);
    }
    public APIRequestGetClaimedUrls requestEngagementField (boolean value) {
      this.requestField("engagement", value);
      return this;
    }
    public APIRequestGetClaimedUrls requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetClaimedUrls requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetClaimedUrls requestInstantArticleField () {
      return this.requestInstantArticleField(true);
    }
    public APIRequestGetClaimedUrls requestInstantArticleField (boolean value) {
      this.requestField("instant_article", value);
      return this;
    }
    public APIRequestGetClaimedUrls requestOgObjectField () {
      return this.requestOgObjectField(true);
    }
    public APIRequestGetClaimedUrls requestOgObjectField (boolean value) {
      this.requestField("og_object", value);
      return this;
    }
    public APIRequestGetClaimedUrls requestOwnershipPermissionsField () {
      return this.requestOwnershipPermissionsField(true);
    }
    public APIRequestGetClaimedUrls requestOwnershipPermissionsField (boolean value) {
      this.requestField("ownership_permissions", value);
      return this;
    }
  }

  public static class APIRequestCreateClaimedUrl extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "url",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateClaimedUrl.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateClaimedUrl(String nodeId, APIContext context) {
      super(context, nodeId, "/claimed_urls", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateClaimedUrl setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateClaimedUrl setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateClaimedUrl setUrl (String url) {
      this.setParam("url", url);
      return this;
    }

    public APIRequestCreateClaimedUrl requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateClaimedUrl requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateClaimedUrl requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateClaimedUrl requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateClaimedUrl requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateClaimedUrl requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetConversations extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "tags",
      "folder",
      "user_id",
    };

    public static final String[] FIELDS = {
      "can_reply",
      "former_participants",
      "id",
      "is_subscribed",
      "link",
      "message_count",
      "name",
      "participants",
      "scoped_thread_key",
      "senders",
      "snippet",
      "subject",
      "unread_count",
      "updated_time",
      "wallpaper",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return UnifiedThread.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetConversations.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetConversations(String nodeId, APIContext context) {
      super(context, nodeId, "/conversations", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetConversations setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetConversations setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetConversations setTags (List tags) {
      this.setParam("tags", tags);
      return this;
    }
    public APIRequestGetConversations setTags (String tags) {
      this.setParam("tags", tags);
      return this;
    }

    public APIRequestGetConversations setFolder (String folder) {
      this.setParam("folder", folder);
      return this;
    }

    public APIRequestGetConversations setUserId (String userId) {
      this.setParam("user_id", userId);
      return this;
    }

    public APIRequestGetConversations requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetConversations requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetConversations requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetConversations requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetConversations requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetConversations requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetConversations requestCanReplyField () {
      return this.requestCanReplyField(true);
    }
    public APIRequestGetConversations requestCanReplyField (boolean value) {
      this.requestField("can_reply", value);
      return this;
    }
    public APIRequestGetConversations requestFormerParticipantsField () {
      return this.requestFormerParticipantsField(true);
    }
    public APIRequestGetConversations requestFormerParticipantsField (boolean value) {
      this.requestField("former_participants", value);
      return this;
    }
    public APIRequestGetConversations requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetConversations requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetConversations requestIsSubscribedField () {
      return this.requestIsSubscribedField(true);
    }
    public APIRequestGetConversations requestIsSubscribedField (boolean value) {
      this.requestField("is_subscribed", value);
      return this;
    }
    public APIRequestGetConversations requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetConversations requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetConversations requestMessageCountField () {
      return this.requestMessageCountField(true);
    }
    public APIRequestGetConversations requestMessageCountField (boolean value) {
      this.requestField("message_count", value);
      return this;
    }
    public APIRequestGetConversations requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetConversations requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetConversations requestParticipantsField () {
      return this.requestParticipantsField(true);
    }
    public APIRequestGetConversations requestParticipantsField (boolean value) {
      this.requestField("participants", value);
      return this;
    }
    public APIRequestGetConversations requestScopedThreadKeyField () {
      return this.requestScopedThreadKeyField(true);
    }
    public APIRequestGetConversations requestScopedThreadKeyField (boolean value) {
      this.requestField("scoped_thread_key", value);
      return this;
    }
    public APIRequestGetConversations requestSendersField () {
      return this.requestSendersField(true);
    }
    public APIRequestGetConversations requestSendersField (boolean value) {
      this.requestField("senders", value);
      return this;
    }
    public APIRequestGetConversations requestSnippetField () {
      return this.requestSnippetField(true);
    }
    public APIRequestGetConversations requestSnippetField (boolean value) {
      this.requestField("snippet", value);
      return this;
    }
    public APIRequestGetConversations requestSubjectField () {
      return this.requestSubjectField(true);
    }
    public APIRequestGetConversations requestSubjectField (boolean value) {
      this.requestField("subject", value);
      return this;
    }
    public APIRequestGetConversations requestUnreadCountField () {
      return this.requestUnreadCountField(true);
    }
    public APIRequestGetConversations requestUnreadCountField (boolean value) {
      this.requestField("unread_count", value);
      return this;
    }
    public APIRequestGetConversations requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetConversations requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetConversations requestWallpaperField () {
      return this.requestWallpaperField(true);
    }
    public APIRequestGetConversations requestWallpaperField (boolean value) {
      this.requestField("wallpaper", value);
      return this;
    }
  }

  public static class APIRequestCreateCopyrightManualClaim extends APIRequest {

    APINode lastResponse = null;
    @Override
    public APINode getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "reference_asset_id",
      "matched_asset_id",
      "match_content_type",
      "action",
      "action_reason",
      "countries",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINode parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public APINode execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINode execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public APINode apply(ResponseWrapper result) {
             try {
               return APIRequestCreateCopyrightManualClaim.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateCopyrightManualClaim(String nodeId, APIContext context) {
      super(context, nodeId, "/copyright_manual_claims", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateCopyrightManualClaim setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateCopyrightManualClaim setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateCopyrightManualClaim setReferenceAssetId (String referenceAssetId) {
      this.setParam("reference_asset_id", referenceAssetId);
      return this;
    }

    public APIRequestCreateCopyrightManualClaim setMatchedAssetId (String matchedAssetId) {
      this.setParam("matched_asset_id", matchedAssetId);
      return this;
    }

    public APIRequestCreateCopyrightManualClaim setMatchContentType (EnumMatchContentType matchContentType) {
      this.setParam("match_content_type", matchContentType);
      return this;
    }
    public APIRequestCreateCopyrightManualClaim setMatchContentType (String matchContentType) {
      this.setParam("match_content_type", matchContentType);
      return this;
    }

    public APIRequestCreateCopyrightManualClaim setAction (EnumAction action) {
      this.setParam("action", action);
      return this;
    }
    public APIRequestCreateCopyrightManualClaim setAction (String action) {
      this.setParam("action", action);
      return this;
    }

    public APIRequestCreateCopyrightManualClaim setActionReason (EnumActionReason actionReason) {
      this.setParam("action_reason", actionReason);
      return this;
    }
    public APIRequestCreateCopyrightManualClaim setActionReason (String actionReason) {
      this.setParam("action_reason", actionReason);
      return this;
    }

    public APIRequestCreateCopyrightManualClaim setCountries (Object countries) {
      this.setParam("countries", countries);
      return this;
    }
    public APIRequestCreateCopyrightManualClaim setCountries (String countries) {
      this.setParam("countries", countries);
      return this;
    }

    public APIRequestCreateCopyrightManualClaim requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateCopyrightManualClaim requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCopyrightManualClaim requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateCopyrightManualClaim requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCopyrightManualClaim requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateCopyrightManualClaim requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestDeleteCopyrightWhitelistedIgPartners extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "usernames",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteCopyrightWhitelistedIgPartners.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteCopyrightWhitelistedIgPartners(String nodeId, APIContext context) {
      super(context, nodeId, "/copyright_whitelisted_ig_partners", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteCopyrightWhitelistedIgPartners setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteCopyrightWhitelistedIgPartners setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteCopyrightWhitelistedIgPartners setUsernames (List usernames) {
      this.setParam("usernames", usernames);
      return this;
    }
    public APIRequestDeleteCopyrightWhitelistedIgPartners setUsernames (String usernames) {
      this.setParam("usernames", usernames);
      return this;
    }

    public APIRequestDeleteCopyrightWhitelistedIgPartners requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteCopyrightWhitelistedIgPartners requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteCopyrightWhitelistedIgPartners requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteCopyrightWhitelistedIgPartners requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteCopyrightWhitelistedIgPartners requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteCopyrightWhitelistedIgPartners requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreateCopyrightWhitelistedIgPartner extends APIRequest {

    APINode lastResponse = null;
    @Override
    public APINode getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "usernames",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINode parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public APINode execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINode execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public APINode apply(ResponseWrapper result) {
             try {
               return APIRequestCreateCopyrightWhitelistedIgPartner.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateCopyrightWhitelistedIgPartner(String nodeId, APIContext context) {
      super(context, nodeId, "/copyright_whitelisted_ig_partners", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateCopyrightWhitelistedIgPartner setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateCopyrightWhitelistedIgPartner setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateCopyrightWhitelistedIgPartner setUsernames (List usernames) {
      this.setParam("usernames", usernames);
      return this;
    }
    public APIRequestCreateCopyrightWhitelistedIgPartner setUsernames (String usernames) {
      this.setParam("usernames", usernames);
      return this;
    }

    public APIRequestCreateCopyrightWhitelistedIgPartner requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateCopyrightWhitelistedIgPartner requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCopyrightWhitelistedIgPartner requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateCopyrightWhitelistedIgPartner requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCopyrightWhitelistedIgPartner requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateCopyrightWhitelistedIgPartner requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestDeleteCopyrightWhitelistedPartners extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "partner_ids",
      "urls",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteCopyrightWhitelistedPartners.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteCopyrightWhitelistedPartners(String nodeId, APIContext context) {
      super(context, nodeId, "/copyright_whitelisted_partners", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteCopyrightWhitelistedPartners setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteCopyrightWhitelistedPartners setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteCopyrightWhitelistedPartners setPartnerIds (List partnerIds) {
      this.setParam("partner_ids", partnerIds);
      return this;
    }
    public APIRequestDeleteCopyrightWhitelistedPartners setPartnerIds (String partnerIds) {
      this.setParam("partner_ids", partnerIds);
      return this;
    }

    public APIRequestDeleteCopyrightWhitelistedPartners setUrls (List urls) {
      this.setParam("urls", urls);
      return this;
    }
    public APIRequestDeleteCopyrightWhitelistedPartners setUrls (String urls) {
      this.setParam("urls", urls);
      return this;
    }

    public APIRequestDeleteCopyrightWhitelistedPartners requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteCopyrightWhitelistedPartners requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteCopyrightWhitelistedPartners requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteCopyrightWhitelistedPartners requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteCopyrightWhitelistedPartners requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteCopyrightWhitelistedPartners requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetCopyrightWhitelistedPartners extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "can_post",
      "id",
      "link",
      "name",
      "pic",
      "pic_crop",
      "pic_large",
      "pic_small",
      "pic_square",
      "profile_type",
      "username",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Profile.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetCopyrightWhitelistedPartners.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetCopyrightWhitelistedPartners(String nodeId, APIContext context) {
      super(context, nodeId, "/copyright_whitelisted_partners", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetCopyrightWhitelistedPartners setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetCopyrightWhitelistedPartners setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetCopyrightWhitelistedPartners requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetCopyrightWhitelistedPartners requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCopyrightWhitelistedPartners requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetCopyrightWhitelistedPartners requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCopyrightWhitelistedPartners requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetCopyrightWhitelistedPartners requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetCopyrightWhitelistedPartners requestCanPostField () {
      return this.requestCanPostField(true);
    }
    public APIRequestGetCopyrightWhitelistedPartners requestCanPostField (boolean value) {
      this.requestField("can_post", value);
      return this;
    }
    public APIRequestGetCopyrightWhitelistedPartners requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetCopyrightWhitelistedPartners requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetCopyrightWhitelistedPartners requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetCopyrightWhitelistedPartners requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetCopyrightWhitelistedPartners requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetCopyrightWhitelistedPartners requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetCopyrightWhitelistedPartners requestPicField () {
      return this.requestPicField(true);
    }
    public APIRequestGetCopyrightWhitelistedPartners requestPicField (boolean value) {
      this.requestField("pic", value);
      return this;
    }
    public APIRequestGetCopyrightWhitelistedPartners requestPicCropField () {
      return this.requestPicCropField(true);
    }
    public APIRequestGetCopyrightWhitelistedPartners requestPicCropField (boolean value) {
      this.requestField("pic_crop", value);
      return this;
    }
    public APIRequestGetCopyrightWhitelistedPartners requestPicLargeField () {
      return this.requestPicLargeField(true);
    }
    public APIRequestGetCopyrightWhitelistedPartners requestPicLargeField (boolean value) {
      this.requestField("pic_large", value);
      return this;
    }
    public APIRequestGetCopyrightWhitelistedPartners requestPicSmallField () {
      return this.requestPicSmallField(true);
    }
    public APIRequestGetCopyrightWhitelistedPartners requestPicSmallField (boolean value) {
      this.requestField("pic_small", value);
      return this;
    }
    public APIRequestGetCopyrightWhitelistedPartners requestPicSquareField () {
      return this.requestPicSquareField(true);
    }
    public APIRequestGetCopyrightWhitelistedPartners requestPicSquareField (boolean value) {
      this.requestField("pic_square", value);
      return this;
    }
    public APIRequestGetCopyrightWhitelistedPartners requestProfileTypeField () {
      return this.requestProfileTypeField(true);
    }
    public APIRequestGetCopyrightWhitelistedPartners requestProfileTypeField (boolean value) {
      this.requestField("profile_type", value);
      return this;
    }
    public APIRequestGetCopyrightWhitelistedPartners requestUsernameField () {
      return this.requestUsernameField(true);
    }
    public APIRequestGetCopyrightWhitelistedPartners requestUsernameField (boolean value) {
      this.requestField("username", value);
      return this;
    }
  }

  public static class APIRequestCreateCopyrightWhitelistedPartner extends APIRequest {

    APINode lastResponse = null;
    @Override
    public APINode getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "partner_ids",
      "urls",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINode parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public APINode execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINode execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public APINode apply(ResponseWrapper result) {
             try {
               return APIRequestCreateCopyrightWhitelistedPartner.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateCopyrightWhitelistedPartner(String nodeId, APIContext context) {
      super(context, nodeId, "/copyright_whitelisted_partners", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateCopyrightWhitelistedPartner setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateCopyrightWhitelistedPartner setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateCopyrightWhitelistedPartner setPartnerIds (List partnerIds) {
      this.setParam("partner_ids", partnerIds);
      return this;
    }
    public APIRequestCreateCopyrightWhitelistedPartner setPartnerIds (String partnerIds) {
      this.setParam("partner_ids", partnerIds);
      return this;
    }

    public APIRequestCreateCopyrightWhitelistedPartner setUrls (List urls) {
      this.setParam("urls", urls);
      return this;
    }
    public APIRequestCreateCopyrightWhitelistedPartner setUrls (String urls) {
      this.setParam("urls", urls);
      return this;
    }

    public APIRequestCreateCopyrightWhitelistedPartner requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateCopyrightWhitelistedPartner requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCopyrightWhitelistedPartner requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateCopyrightWhitelistedPartner requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCopyrightWhitelistedPartner requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateCopyrightWhitelistedPartner requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetCrosspostPendingApprovalPages extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "about",
      "access_token",
      "ad_campaign",
      "affiliation",
      "app_id",
      "app_links",
      "artists_we_like",
      "attire",
      "awards",
      "band_interests",
      "band_members",
      "best_page",
      "bio",
      "birthday",
      "booking_agent",
      "built",
      "business",
      "can_checkin",
      "can_post",
      "category",
      "category_list",
      "checkins",
      "company_overview",
      "connected_instagram_account",
      "contact_address",
      "context",
      "copyright_attribution_insights",
      "copyright_whitelisted_ig_partners",
      "country_page_likes",
      "cover",
      "culinary_team",
      "current_location",
      "description",
      "description_html",
      "directed_by",
      "display_subtext",
      "displayed_message_response_time",
      "emails",
      "engagement",
      "fan_count",
      "featured_video",
      "features",
      "food_styles",
      "founded",
      "general_info",
      "general_manager",
      "genre",
      "global_brand_page_name",
      "global_brand_root_id",
      "has_added_app",
      "has_whatsapp_business_number",
      "has_whatsapp_number",
      "hometown",
      "hours",
      "id",
      "impressum",
      "influences",
      "instagram_business_account",
      "instant_articles_review_status",
      "is_always_open",
      "is_chain",
      "is_community_page",
      "is_eligible_for_branded_content",
      "is_messenger_bot_get_started_enabled",
      "is_messenger_platform_bot",
      "is_owned",
      "is_permanently_closed",
      "is_published",
      "is_unclaimed",
      "is_verified",
      "is_webhooks_subscribed",
      "keywords",
      "leadgen_form_preview_details",
      "leadgen_has_crm_integration",
      "leadgen_has_fat_ping_crm_integration",
      "leadgen_tos_acceptance_time",
      "leadgen_tos_accepted",
      "leadgen_tos_accepting_user",
      "link",
      "location",
      "members",
      "merchant_id",
      "merchant_review_status",
      "messenger_ads_default_icebreakers",
      "messenger_ads_default_page_welcome_message",
      "messenger_ads_default_quick_replies",
      "messenger_ads_quick_replies_type",
      "mission",
      "mpg",
      "name",
      "name_with_location_descriptor",
      "network",
      "new_like_count",
      "offer_eligible",
      "overall_star_rating",
      "page_about_story",
      "page_token",
      "parent_page",
      "parking",
      "payment_options",
      "personal_info",
      "personal_interests",
      "pharma_safety_info",
      "phone",
      "place_type",
      "plot_outline",
      "preferred_audience",
      "press_contact",
      "price_range",
      "privacy_info_url",
      "produced_by",
      "products",
      "promotion_eligible",
      "promotion_ineligible_reason",
      "public_transit",
      "rating_count",
      "recipient",
      "record_label",
      "release_date",
      "restaurant_services",
      "restaurant_specialties",
      "schedule",
      "screenplay_by",
      "season",
      "single_line_address",
      "starring",
      "start_info",
      "store_code",
      "store_location_descriptor",
      "store_number",
      "studio",
      "supports_instant_articles",
      "talking_about_count",
      "unread_message_count",
      "unread_notif_count",
      "unseen_message_count",
      "username",
      "verification_status",
      "voip_info",
      "website",
      "were_here_count",
      "whatsapp_number",
      "written_by",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetCrosspostPendingApprovalPages.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetCrosspostPendingApprovalPages(String nodeId, APIContext context) {
      super(context, nodeId, "/crosspost_pending_approval_pages", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetCrosspostPendingApprovalPages setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetCrosspostPendingApprovalPages setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetCrosspostPendingApprovalPages requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetCrosspostPendingApprovalPages requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCrosspostPendingApprovalPages requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetCrosspostPendingApprovalPages requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCrosspostPendingApprovalPages requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetCrosspostPendingApprovalPages requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetCrosspostPendingApprovalPages requestAboutField () {
      return this.requestAboutField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAboutField (boolean value) {
      this.requestField("about", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAccessTokenField () {
      return this.requestAccessTokenField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAccessTokenField (boolean value) {
      this.requestField("access_token", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAdCampaignField () {
      return this.requestAdCampaignField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAdCampaignField (boolean value) {
      this.requestField("ad_campaign", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAffiliationField () {
      return this.requestAffiliationField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAffiliationField (boolean value) {
      this.requestField("affiliation", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAppIdField () {
      return this.requestAppIdField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAppIdField (boolean value) {
      this.requestField("app_id", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAppLinksField () {
      return this.requestAppLinksField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAppLinksField (boolean value) {
      this.requestField("app_links", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestArtistsWeLikeField () {
      return this.requestArtistsWeLikeField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestArtistsWeLikeField (boolean value) {
      this.requestField("artists_we_like", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAttireField () {
      return this.requestAttireField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAttireField (boolean value) {
      this.requestField("attire", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAwardsField () {
      return this.requestAwardsField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestAwardsField (boolean value) {
      this.requestField("awards", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBandInterestsField () {
      return this.requestBandInterestsField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBandInterestsField (boolean value) {
      this.requestField("band_interests", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBandMembersField () {
      return this.requestBandMembersField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBandMembersField (boolean value) {
      this.requestField("band_members", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBestPageField () {
      return this.requestBestPageField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBestPageField (boolean value) {
      this.requestField("best_page", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBioField () {
      return this.requestBioField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBioField (boolean value) {
      this.requestField("bio", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBirthdayField () {
      return this.requestBirthdayField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBirthdayField (boolean value) {
      this.requestField("birthday", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBookingAgentField () {
      return this.requestBookingAgentField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBookingAgentField (boolean value) {
      this.requestField("booking_agent", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBuiltField () {
      return this.requestBuiltField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBuiltField (boolean value) {
      this.requestField("built", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBusinessField () {
      return this.requestBusinessField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestBusinessField (boolean value) {
      this.requestField("business", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCanCheckinField () {
      return this.requestCanCheckinField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCanCheckinField (boolean value) {
      this.requestField("can_checkin", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCanPostField () {
      return this.requestCanPostField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCanPostField (boolean value) {
      this.requestField("can_post", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCategoryField () {
      return this.requestCategoryField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCategoryField (boolean value) {
      this.requestField("category", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCategoryListField () {
      return this.requestCategoryListField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCategoryListField (boolean value) {
      this.requestField("category_list", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCheckinsField () {
      return this.requestCheckinsField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCheckinsField (boolean value) {
      this.requestField("checkins", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCompanyOverviewField () {
      return this.requestCompanyOverviewField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCompanyOverviewField (boolean value) {
      this.requestField("company_overview", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestConnectedInstagramAccountField () {
      return this.requestConnectedInstagramAccountField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestConnectedInstagramAccountField (boolean value) {
      this.requestField("connected_instagram_account", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestContactAddressField () {
      return this.requestContactAddressField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestContactAddressField (boolean value) {
      this.requestField("contact_address", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestContextField () {
      return this.requestContextField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestContextField (boolean value) {
      this.requestField("context", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCopyrightAttributionInsightsField () {
      return this.requestCopyrightAttributionInsightsField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCopyrightAttributionInsightsField (boolean value) {
      this.requestField("copyright_attribution_insights", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCopyrightWhitelistedIgPartnersField () {
      return this.requestCopyrightWhitelistedIgPartnersField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCopyrightWhitelistedIgPartnersField (boolean value) {
      this.requestField("copyright_whitelisted_ig_partners", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCountryPageLikesField () {
      return this.requestCountryPageLikesField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCountryPageLikesField (boolean value) {
      this.requestField("country_page_likes", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCoverField () {
      return this.requestCoverField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCoverField (boolean value) {
      this.requestField("cover", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCulinaryTeamField () {
      return this.requestCulinaryTeamField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCulinaryTeamField (boolean value) {
      this.requestField("culinary_team", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCurrentLocationField () {
      return this.requestCurrentLocationField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestCurrentLocationField (boolean value) {
      this.requestField("current_location", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestDescriptionHtmlField () {
      return this.requestDescriptionHtmlField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestDescriptionHtmlField (boolean value) {
      this.requestField("description_html", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestDirectedByField () {
      return this.requestDirectedByField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestDirectedByField (boolean value) {
      this.requestField("directed_by", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestDisplaySubtextField () {
      return this.requestDisplaySubtextField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestDisplaySubtextField (boolean value) {
      this.requestField("display_subtext", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestDisplayedMessageResponseTimeField () {
      return this.requestDisplayedMessageResponseTimeField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestDisplayedMessageResponseTimeField (boolean value) {
      this.requestField("displayed_message_response_time", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestEmailsField () {
      return this.requestEmailsField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestEmailsField (boolean value) {
      this.requestField("emails", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestEngagementField () {
      return this.requestEngagementField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestEngagementField (boolean value) {
      this.requestField("engagement", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestFanCountField () {
      return this.requestFanCountField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestFanCountField (boolean value) {
      this.requestField("fan_count", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestFeaturedVideoField () {
      return this.requestFeaturedVideoField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestFeaturedVideoField (boolean value) {
      this.requestField("featured_video", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestFeaturesField () {
      return this.requestFeaturesField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestFeaturesField (boolean value) {
      this.requestField("features", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestFoodStylesField () {
      return this.requestFoodStylesField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestFoodStylesField (boolean value) {
      this.requestField("food_styles", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestFoundedField () {
      return this.requestFoundedField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestFoundedField (boolean value) {
      this.requestField("founded", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestGeneralInfoField () {
      return this.requestGeneralInfoField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestGeneralInfoField (boolean value) {
      this.requestField("general_info", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestGeneralManagerField () {
      return this.requestGeneralManagerField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestGeneralManagerField (boolean value) {
      this.requestField("general_manager", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestGenreField () {
      return this.requestGenreField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestGenreField (boolean value) {
      this.requestField("genre", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestGlobalBrandPageNameField () {
      return this.requestGlobalBrandPageNameField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestGlobalBrandPageNameField (boolean value) {
      this.requestField("global_brand_page_name", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestGlobalBrandRootIdField () {
      return this.requestGlobalBrandRootIdField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestGlobalBrandRootIdField (boolean value) {
      this.requestField("global_brand_root_id", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestHasAddedAppField () {
      return this.requestHasAddedAppField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestHasAddedAppField (boolean value) {
      this.requestField("has_added_app", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestHasWhatsappBusinessNumberField () {
      return this.requestHasWhatsappBusinessNumberField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestHasWhatsappBusinessNumberField (boolean value) {
      this.requestField("has_whatsapp_business_number", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestHasWhatsappNumberField () {
      return this.requestHasWhatsappNumberField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestHasWhatsappNumberField (boolean value) {
      this.requestField("has_whatsapp_number", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestHometownField () {
      return this.requestHometownField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestHometownField (boolean value) {
      this.requestField("hometown", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestHoursField () {
      return this.requestHoursField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestHoursField (boolean value) {
      this.requestField("hours", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestImpressumField () {
      return this.requestImpressumField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestImpressumField (boolean value) {
      this.requestField("impressum", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestInfluencesField () {
      return this.requestInfluencesField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestInfluencesField (boolean value) {
      this.requestField("influences", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestInstagramBusinessAccountField () {
      return this.requestInstagramBusinessAccountField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestInstagramBusinessAccountField (boolean value) {
      this.requestField("instagram_business_account", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestInstantArticlesReviewStatusField () {
      return this.requestInstantArticlesReviewStatusField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestInstantArticlesReviewStatusField (boolean value) {
      this.requestField("instant_articles_review_status", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsAlwaysOpenField () {
      return this.requestIsAlwaysOpenField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsAlwaysOpenField (boolean value) {
      this.requestField("is_always_open", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsChainField () {
      return this.requestIsChainField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsChainField (boolean value) {
      this.requestField("is_chain", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsCommunityPageField () {
      return this.requestIsCommunityPageField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsCommunityPageField (boolean value) {
      this.requestField("is_community_page", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsEligibleForBrandedContentField () {
      return this.requestIsEligibleForBrandedContentField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsEligibleForBrandedContentField (boolean value) {
      this.requestField("is_eligible_for_branded_content", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsMessengerBotGetStartedEnabledField () {
      return this.requestIsMessengerBotGetStartedEnabledField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsMessengerBotGetStartedEnabledField (boolean value) {
      this.requestField("is_messenger_bot_get_started_enabled", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsMessengerPlatformBotField () {
      return this.requestIsMessengerPlatformBotField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsMessengerPlatformBotField (boolean value) {
      this.requestField("is_messenger_platform_bot", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsOwnedField () {
      return this.requestIsOwnedField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsOwnedField (boolean value) {
      this.requestField("is_owned", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsPermanentlyClosedField () {
      return this.requestIsPermanentlyClosedField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsPermanentlyClosedField (boolean value) {
      this.requestField("is_permanently_closed", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsUnclaimedField () {
      return this.requestIsUnclaimedField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsUnclaimedField (boolean value) {
      this.requestField("is_unclaimed", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsVerifiedField () {
      return this.requestIsVerifiedField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsVerifiedField (boolean value) {
      this.requestField("is_verified", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsWebhooksSubscribedField () {
      return this.requestIsWebhooksSubscribedField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestIsWebhooksSubscribedField (boolean value) {
      this.requestField("is_webhooks_subscribed", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestKeywordsField () {
      return this.requestKeywordsField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestKeywordsField (boolean value) {
      this.requestField("keywords", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLeadgenFormPreviewDetailsField () {
      return this.requestLeadgenFormPreviewDetailsField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLeadgenFormPreviewDetailsField (boolean value) {
      this.requestField("leadgen_form_preview_details", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLeadgenHasCrmIntegrationField () {
      return this.requestLeadgenHasCrmIntegrationField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLeadgenHasCrmIntegrationField (boolean value) {
      this.requestField("leadgen_has_crm_integration", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLeadgenHasFatPingCrmIntegrationField () {
      return this.requestLeadgenHasFatPingCrmIntegrationField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLeadgenHasFatPingCrmIntegrationField (boolean value) {
      this.requestField("leadgen_has_fat_ping_crm_integration", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLeadgenTosAcceptanceTimeField () {
      return this.requestLeadgenTosAcceptanceTimeField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLeadgenTosAcceptanceTimeField (boolean value) {
      this.requestField("leadgen_tos_acceptance_time", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLeadgenTosAcceptedField () {
      return this.requestLeadgenTosAcceptedField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLeadgenTosAcceptedField (boolean value) {
      this.requestField("leadgen_tos_accepted", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLeadgenTosAcceptingUserField () {
      return this.requestLeadgenTosAcceptingUserField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLeadgenTosAcceptingUserField (boolean value) {
      this.requestField("leadgen_tos_accepting_user", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLocationField () {
      return this.requestLocationField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestLocationField (boolean value) {
      this.requestField("location", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMembersField () {
      return this.requestMembersField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMembersField (boolean value) {
      this.requestField("members", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMerchantIdField () {
      return this.requestMerchantIdField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMerchantIdField (boolean value) {
      this.requestField("merchant_id", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMerchantReviewStatusField () {
      return this.requestMerchantReviewStatusField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMerchantReviewStatusField (boolean value) {
      this.requestField("merchant_review_status", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMessengerAdsDefaultIcebreakersField () {
      return this.requestMessengerAdsDefaultIcebreakersField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMessengerAdsDefaultIcebreakersField (boolean value) {
      this.requestField("messenger_ads_default_icebreakers", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMessengerAdsDefaultPageWelcomeMessageField () {
      return this.requestMessengerAdsDefaultPageWelcomeMessageField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMessengerAdsDefaultPageWelcomeMessageField (boolean value) {
      this.requestField("messenger_ads_default_page_welcome_message", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMessengerAdsDefaultQuickRepliesField () {
      return this.requestMessengerAdsDefaultQuickRepliesField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMessengerAdsDefaultQuickRepliesField (boolean value) {
      this.requestField("messenger_ads_default_quick_replies", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMessengerAdsQuickRepliesTypeField () {
      return this.requestMessengerAdsQuickRepliesTypeField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMessengerAdsQuickRepliesTypeField (boolean value) {
      this.requestField("messenger_ads_quick_replies_type", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMissionField () {
      return this.requestMissionField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMissionField (boolean value) {
      this.requestField("mission", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMpgField () {
      return this.requestMpgField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestMpgField (boolean value) {
      this.requestField("mpg", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestNameWithLocationDescriptorField () {
      return this.requestNameWithLocationDescriptorField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestNameWithLocationDescriptorField (boolean value) {
      this.requestField("name_with_location_descriptor", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestNetworkField () {
      return this.requestNetworkField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestNetworkField (boolean value) {
      this.requestField("network", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestNewLikeCountField () {
      return this.requestNewLikeCountField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestNewLikeCountField (boolean value) {
      this.requestField("new_like_count", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestOfferEligibleField () {
      return this.requestOfferEligibleField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestOfferEligibleField (boolean value) {
      this.requestField("offer_eligible", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestOverallStarRatingField () {
      return this.requestOverallStarRatingField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestOverallStarRatingField (boolean value) {
      this.requestField("overall_star_rating", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPageAboutStoryField () {
      return this.requestPageAboutStoryField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPageAboutStoryField (boolean value) {
      this.requestField("page_about_story", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPageTokenField () {
      return this.requestPageTokenField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPageTokenField (boolean value) {
      this.requestField("page_token", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestParentPageField () {
      return this.requestParentPageField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestParentPageField (boolean value) {
      this.requestField("parent_page", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestParkingField () {
      return this.requestParkingField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestParkingField (boolean value) {
      this.requestField("parking", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPaymentOptionsField () {
      return this.requestPaymentOptionsField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPaymentOptionsField (boolean value) {
      this.requestField("payment_options", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPersonalInfoField () {
      return this.requestPersonalInfoField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPersonalInfoField (boolean value) {
      this.requestField("personal_info", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPersonalInterestsField () {
      return this.requestPersonalInterestsField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPersonalInterestsField (boolean value) {
      this.requestField("personal_interests", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPharmaSafetyInfoField () {
      return this.requestPharmaSafetyInfoField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPharmaSafetyInfoField (boolean value) {
      this.requestField("pharma_safety_info", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPhoneField () {
      return this.requestPhoneField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPhoneField (boolean value) {
      this.requestField("phone", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPlaceTypeField () {
      return this.requestPlaceTypeField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPlaceTypeField (boolean value) {
      this.requestField("place_type", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPlotOutlineField () {
      return this.requestPlotOutlineField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPlotOutlineField (boolean value) {
      this.requestField("plot_outline", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPreferredAudienceField () {
      return this.requestPreferredAudienceField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPreferredAudienceField (boolean value) {
      this.requestField("preferred_audience", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPressContactField () {
      return this.requestPressContactField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPressContactField (boolean value) {
      this.requestField("press_contact", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPriceRangeField () {
      return this.requestPriceRangeField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPriceRangeField (boolean value) {
      this.requestField("price_range", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPrivacyInfoUrlField () {
      return this.requestPrivacyInfoUrlField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPrivacyInfoUrlField (boolean value) {
      this.requestField("privacy_info_url", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestProducedByField () {
      return this.requestProducedByField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestProducedByField (boolean value) {
      this.requestField("produced_by", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestProductsField () {
      return this.requestProductsField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestProductsField (boolean value) {
      this.requestField("products", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPromotionEligibleField () {
      return this.requestPromotionEligibleField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPromotionEligibleField (boolean value) {
      this.requestField("promotion_eligible", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPromotionIneligibleReasonField () {
      return this.requestPromotionIneligibleReasonField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPromotionIneligibleReasonField (boolean value) {
      this.requestField("promotion_ineligible_reason", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPublicTransitField () {
      return this.requestPublicTransitField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestPublicTransitField (boolean value) {
      this.requestField("public_transit", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestRatingCountField () {
      return this.requestRatingCountField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestRatingCountField (boolean value) {
      this.requestField("rating_count", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestRecipientField () {
      return this.requestRecipientField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestRecipientField (boolean value) {
      this.requestField("recipient", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestRecordLabelField () {
      return this.requestRecordLabelField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestRecordLabelField (boolean value) {
      this.requestField("record_label", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestReleaseDateField () {
      return this.requestReleaseDateField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestReleaseDateField (boolean value) {
      this.requestField("release_date", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestRestaurantServicesField () {
      return this.requestRestaurantServicesField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestRestaurantServicesField (boolean value) {
      this.requestField("restaurant_services", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestRestaurantSpecialtiesField () {
      return this.requestRestaurantSpecialtiesField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestRestaurantSpecialtiesField (boolean value) {
      this.requestField("restaurant_specialties", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestScheduleField () {
      return this.requestScheduleField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestScheduleField (boolean value) {
      this.requestField("schedule", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestScreenplayByField () {
      return this.requestScreenplayByField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestScreenplayByField (boolean value) {
      this.requestField("screenplay_by", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestSeasonField () {
      return this.requestSeasonField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestSeasonField (boolean value) {
      this.requestField("season", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestSingleLineAddressField () {
      return this.requestSingleLineAddressField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestSingleLineAddressField (boolean value) {
      this.requestField("single_line_address", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestStarringField () {
      return this.requestStarringField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestStarringField (boolean value) {
      this.requestField("starring", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestStartInfoField () {
      return this.requestStartInfoField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestStartInfoField (boolean value) {
      this.requestField("start_info", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestStoreCodeField () {
      return this.requestStoreCodeField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestStoreCodeField (boolean value) {
      this.requestField("store_code", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestStoreLocationDescriptorField () {
      return this.requestStoreLocationDescriptorField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestStoreLocationDescriptorField (boolean value) {
      this.requestField("store_location_descriptor", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestStoreNumberField () {
      return this.requestStoreNumberField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestStoreNumberField (boolean value) {
      this.requestField("store_number", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestStudioField () {
      return this.requestStudioField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestStudioField (boolean value) {
      this.requestField("studio", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestSupportsInstantArticlesField () {
      return this.requestSupportsInstantArticlesField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestSupportsInstantArticlesField (boolean value) {
      this.requestField("supports_instant_articles", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestTalkingAboutCountField () {
      return this.requestTalkingAboutCountField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestTalkingAboutCountField (boolean value) {
      this.requestField("talking_about_count", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestUnreadMessageCountField () {
      return this.requestUnreadMessageCountField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestUnreadMessageCountField (boolean value) {
      this.requestField("unread_message_count", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestUnreadNotifCountField () {
      return this.requestUnreadNotifCountField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestUnreadNotifCountField (boolean value) {
      this.requestField("unread_notif_count", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestUnseenMessageCountField () {
      return this.requestUnseenMessageCountField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestUnseenMessageCountField (boolean value) {
      this.requestField("unseen_message_count", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestUsernameField () {
      return this.requestUsernameField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestUsernameField (boolean value) {
      this.requestField("username", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestVerificationStatusField () {
      return this.requestVerificationStatusField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestVerificationStatusField (boolean value) {
      this.requestField("verification_status", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestVoipInfoField () {
      return this.requestVoipInfoField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestVoipInfoField (boolean value) {
      this.requestField("voip_info", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestWebsiteField () {
      return this.requestWebsiteField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestWebsiteField (boolean value) {
      this.requestField("website", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestWereHereCountField () {
      return this.requestWereHereCountField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestWereHereCountField (boolean value) {
      this.requestField("were_here_count", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestWhatsappNumberField () {
      return this.requestWhatsappNumberField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestWhatsappNumberField (boolean value) {
      this.requestField("whatsapp_number", value);
      return this;
    }
    public APIRequestGetCrosspostPendingApprovalPages requestWrittenByField () {
      return this.requestWrittenByField(true);
    }
    public APIRequestGetCrosspostPendingApprovalPages requestWrittenByField (boolean value) {
      this.requestField("written_by", value);
      return this;
    }
  }

  public static class APIRequestGetCrosspostWhitelistedPages extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "about",
      "access_token",
      "ad_campaign",
      "affiliation",
      "app_id",
      "app_links",
      "artists_we_like",
      "attire",
      "awards",
      "band_interests",
      "band_members",
      "best_page",
      "bio",
      "birthday",
      "booking_agent",
      "built",
      "business",
      "can_checkin",
      "can_post",
      "category",
      "category_list",
      "checkins",
      "company_overview",
      "connected_instagram_account",
      "contact_address",
      "context",
      "copyright_attribution_insights",
      "copyright_whitelisted_ig_partners",
      "country_page_likes",
      "cover",
      "culinary_team",
      "current_location",
      "description",
      "description_html",
      "directed_by",
      "display_subtext",
      "displayed_message_response_time",
      "emails",
      "engagement",
      "fan_count",
      "featured_video",
      "features",
      "food_styles",
      "founded",
      "general_info",
      "general_manager",
      "genre",
      "global_brand_page_name",
      "global_brand_root_id",
      "has_added_app",
      "has_whatsapp_business_number",
      "has_whatsapp_number",
      "hometown",
      "hours",
      "id",
      "impressum",
      "influences",
      "instagram_business_account",
      "instant_articles_review_status",
      "is_always_open",
      "is_chain",
      "is_community_page",
      "is_eligible_for_branded_content",
      "is_messenger_bot_get_started_enabled",
      "is_messenger_platform_bot",
      "is_owned",
      "is_permanently_closed",
      "is_published",
      "is_unclaimed",
      "is_verified",
      "is_webhooks_subscribed",
      "keywords",
      "leadgen_form_preview_details",
      "leadgen_has_crm_integration",
      "leadgen_has_fat_ping_crm_integration",
      "leadgen_tos_acceptance_time",
      "leadgen_tos_accepted",
      "leadgen_tos_accepting_user",
      "link",
      "location",
      "members",
      "merchant_id",
      "merchant_review_status",
      "messenger_ads_default_icebreakers",
      "messenger_ads_default_page_welcome_message",
      "messenger_ads_default_quick_replies",
      "messenger_ads_quick_replies_type",
      "mission",
      "mpg",
      "name",
      "name_with_location_descriptor",
      "network",
      "new_like_count",
      "offer_eligible",
      "overall_star_rating",
      "page_about_story",
      "page_token",
      "parent_page",
      "parking",
      "payment_options",
      "personal_info",
      "personal_interests",
      "pharma_safety_info",
      "phone",
      "place_type",
      "plot_outline",
      "preferred_audience",
      "press_contact",
      "price_range",
      "privacy_info_url",
      "produced_by",
      "products",
      "promotion_eligible",
      "promotion_ineligible_reason",
      "public_transit",
      "rating_count",
      "recipient",
      "record_label",
      "release_date",
      "restaurant_services",
      "restaurant_specialties",
      "schedule",
      "screenplay_by",
      "season",
      "single_line_address",
      "starring",
      "start_info",
      "store_code",
      "store_location_descriptor",
      "store_number",
      "studio",
      "supports_instant_articles",
      "talking_about_count",
      "unread_message_count",
      "unread_notif_count",
      "unseen_message_count",
      "username",
      "verification_status",
      "voip_info",
      "website",
      "were_here_count",
      "whatsapp_number",
      "written_by",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetCrosspostWhitelistedPages.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetCrosspostWhitelistedPages(String nodeId, APIContext context) {
      super(context, nodeId, "/crosspost_whitelisted_pages", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetCrosspostWhitelistedPages setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetCrosspostWhitelistedPages setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetCrosspostWhitelistedPages requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetCrosspostWhitelistedPages requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCrosspostWhitelistedPages requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetCrosspostWhitelistedPages requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCrosspostWhitelistedPages requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetCrosspostWhitelistedPages requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetCrosspostWhitelistedPages requestAboutField () {
      return this.requestAboutField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestAboutField (boolean value) {
      this.requestField("about", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestAccessTokenField () {
      return this.requestAccessTokenField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestAccessTokenField (boolean value) {
      this.requestField("access_token", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestAdCampaignField () {
      return this.requestAdCampaignField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestAdCampaignField (boolean value) {
      this.requestField("ad_campaign", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestAffiliationField () {
      return this.requestAffiliationField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestAffiliationField (boolean value) {
      this.requestField("affiliation", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestAppIdField () {
      return this.requestAppIdField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestAppIdField (boolean value) {
      this.requestField("app_id", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestAppLinksField () {
      return this.requestAppLinksField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestAppLinksField (boolean value) {
      this.requestField("app_links", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestArtistsWeLikeField () {
      return this.requestArtistsWeLikeField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestArtistsWeLikeField (boolean value) {
      this.requestField("artists_we_like", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestAttireField () {
      return this.requestAttireField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestAttireField (boolean value) {
      this.requestField("attire", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestAwardsField () {
      return this.requestAwardsField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestAwardsField (boolean value) {
      this.requestField("awards", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestBandInterestsField () {
      return this.requestBandInterestsField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestBandInterestsField (boolean value) {
      this.requestField("band_interests", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestBandMembersField () {
      return this.requestBandMembersField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestBandMembersField (boolean value) {
      this.requestField("band_members", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestBestPageField () {
      return this.requestBestPageField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestBestPageField (boolean value) {
      this.requestField("best_page", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestBioField () {
      return this.requestBioField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestBioField (boolean value) {
      this.requestField("bio", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestBirthdayField () {
      return this.requestBirthdayField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestBirthdayField (boolean value) {
      this.requestField("birthday", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestBookingAgentField () {
      return this.requestBookingAgentField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestBookingAgentField (boolean value) {
      this.requestField("booking_agent", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestBuiltField () {
      return this.requestBuiltField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestBuiltField (boolean value) {
      this.requestField("built", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestBusinessField () {
      return this.requestBusinessField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestBusinessField (boolean value) {
      this.requestField("business", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestCanCheckinField () {
      return this.requestCanCheckinField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestCanCheckinField (boolean value) {
      this.requestField("can_checkin", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestCanPostField () {
      return this.requestCanPostField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestCanPostField (boolean value) {
      this.requestField("can_post", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestCategoryField () {
      return this.requestCategoryField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestCategoryField (boolean value) {
      this.requestField("category", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestCategoryListField () {
      return this.requestCategoryListField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestCategoryListField (boolean value) {
      this.requestField("category_list", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestCheckinsField () {
      return this.requestCheckinsField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestCheckinsField (boolean value) {
      this.requestField("checkins", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestCompanyOverviewField () {
      return this.requestCompanyOverviewField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestCompanyOverviewField (boolean value) {
      this.requestField("company_overview", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestConnectedInstagramAccountField () {
      return this.requestConnectedInstagramAccountField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestConnectedInstagramAccountField (boolean value) {
      this.requestField("connected_instagram_account", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestContactAddressField () {
      return this.requestContactAddressField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestContactAddressField (boolean value) {
      this.requestField("contact_address", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestContextField () {
      return this.requestContextField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestContextField (boolean value) {
      this.requestField("context", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestCopyrightAttributionInsightsField () {
      return this.requestCopyrightAttributionInsightsField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestCopyrightAttributionInsightsField (boolean value) {
      this.requestField("copyright_attribution_insights", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestCopyrightWhitelistedIgPartnersField () {
      return this.requestCopyrightWhitelistedIgPartnersField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestCopyrightWhitelistedIgPartnersField (boolean value) {
      this.requestField("copyright_whitelisted_ig_partners", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestCountryPageLikesField () {
      return this.requestCountryPageLikesField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestCountryPageLikesField (boolean value) {
      this.requestField("country_page_likes", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestCoverField () {
      return this.requestCoverField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestCoverField (boolean value) {
      this.requestField("cover", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestCulinaryTeamField () {
      return this.requestCulinaryTeamField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestCulinaryTeamField (boolean value) {
      this.requestField("culinary_team", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestCurrentLocationField () {
      return this.requestCurrentLocationField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestCurrentLocationField (boolean value) {
      this.requestField("current_location", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestDescriptionHtmlField () {
      return this.requestDescriptionHtmlField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestDescriptionHtmlField (boolean value) {
      this.requestField("description_html", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestDirectedByField () {
      return this.requestDirectedByField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestDirectedByField (boolean value) {
      this.requestField("directed_by", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestDisplaySubtextField () {
      return this.requestDisplaySubtextField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestDisplaySubtextField (boolean value) {
      this.requestField("display_subtext", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestDisplayedMessageResponseTimeField () {
      return this.requestDisplayedMessageResponseTimeField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestDisplayedMessageResponseTimeField (boolean value) {
      this.requestField("displayed_message_response_time", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestEmailsField () {
      return this.requestEmailsField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestEmailsField (boolean value) {
      this.requestField("emails", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestEngagementField () {
      return this.requestEngagementField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestEngagementField (boolean value) {
      this.requestField("engagement", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestFanCountField () {
      return this.requestFanCountField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestFanCountField (boolean value) {
      this.requestField("fan_count", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestFeaturedVideoField () {
      return this.requestFeaturedVideoField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestFeaturedVideoField (boolean value) {
      this.requestField("featured_video", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestFeaturesField () {
      return this.requestFeaturesField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestFeaturesField (boolean value) {
      this.requestField("features", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestFoodStylesField () {
      return this.requestFoodStylesField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestFoodStylesField (boolean value) {
      this.requestField("food_styles", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestFoundedField () {
      return this.requestFoundedField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestFoundedField (boolean value) {
      this.requestField("founded", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestGeneralInfoField () {
      return this.requestGeneralInfoField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestGeneralInfoField (boolean value) {
      this.requestField("general_info", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestGeneralManagerField () {
      return this.requestGeneralManagerField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestGeneralManagerField (boolean value) {
      this.requestField("general_manager", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestGenreField () {
      return this.requestGenreField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestGenreField (boolean value) {
      this.requestField("genre", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestGlobalBrandPageNameField () {
      return this.requestGlobalBrandPageNameField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestGlobalBrandPageNameField (boolean value) {
      this.requestField("global_brand_page_name", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestGlobalBrandRootIdField () {
      return this.requestGlobalBrandRootIdField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestGlobalBrandRootIdField (boolean value) {
      this.requestField("global_brand_root_id", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestHasAddedAppField () {
      return this.requestHasAddedAppField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestHasAddedAppField (boolean value) {
      this.requestField("has_added_app", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestHasWhatsappBusinessNumberField () {
      return this.requestHasWhatsappBusinessNumberField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestHasWhatsappBusinessNumberField (boolean value) {
      this.requestField("has_whatsapp_business_number", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestHasWhatsappNumberField () {
      return this.requestHasWhatsappNumberField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestHasWhatsappNumberField (boolean value) {
      this.requestField("has_whatsapp_number", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestHometownField () {
      return this.requestHometownField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestHometownField (boolean value) {
      this.requestField("hometown", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestHoursField () {
      return this.requestHoursField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestHoursField (boolean value) {
      this.requestField("hours", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestImpressumField () {
      return this.requestImpressumField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestImpressumField (boolean value) {
      this.requestField("impressum", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestInfluencesField () {
      return this.requestInfluencesField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestInfluencesField (boolean value) {
      this.requestField("influences", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestInstagramBusinessAccountField () {
      return this.requestInstagramBusinessAccountField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestInstagramBusinessAccountField (boolean value) {
      this.requestField("instagram_business_account", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestInstantArticlesReviewStatusField () {
      return this.requestInstantArticlesReviewStatusField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestInstantArticlesReviewStatusField (boolean value) {
      this.requestField("instant_articles_review_status", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsAlwaysOpenField () {
      return this.requestIsAlwaysOpenField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsAlwaysOpenField (boolean value) {
      this.requestField("is_always_open", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsChainField () {
      return this.requestIsChainField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsChainField (boolean value) {
      this.requestField("is_chain", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsCommunityPageField () {
      return this.requestIsCommunityPageField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsCommunityPageField (boolean value) {
      this.requestField("is_community_page", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsEligibleForBrandedContentField () {
      return this.requestIsEligibleForBrandedContentField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsEligibleForBrandedContentField (boolean value) {
      this.requestField("is_eligible_for_branded_content", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsMessengerBotGetStartedEnabledField () {
      return this.requestIsMessengerBotGetStartedEnabledField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsMessengerBotGetStartedEnabledField (boolean value) {
      this.requestField("is_messenger_bot_get_started_enabled", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsMessengerPlatformBotField () {
      return this.requestIsMessengerPlatformBotField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsMessengerPlatformBotField (boolean value) {
      this.requestField("is_messenger_platform_bot", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsOwnedField () {
      return this.requestIsOwnedField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsOwnedField (boolean value) {
      this.requestField("is_owned", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsPermanentlyClosedField () {
      return this.requestIsPermanentlyClosedField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsPermanentlyClosedField (boolean value) {
      this.requestField("is_permanently_closed", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsUnclaimedField () {
      return this.requestIsUnclaimedField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsUnclaimedField (boolean value) {
      this.requestField("is_unclaimed", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsVerifiedField () {
      return this.requestIsVerifiedField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsVerifiedField (boolean value) {
      this.requestField("is_verified", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsWebhooksSubscribedField () {
      return this.requestIsWebhooksSubscribedField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestIsWebhooksSubscribedField (boolean value) {
      this.requestField("is_webhooks_subscribed", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestKeywordsField () {
      return this.requestKeywordsField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestKeywordsField (boolean value) {
      this.requestField("keywords", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestLeadgenFormPreviewDetailsField () {
      return this.requestLeadgenFormPreviewDetailsField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestLeadgenFormPreviewDetailsField (boolean value) {
      this.requestField("leadgen_form_preview_details", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestLeadgenHasCrmIntegrationField () {
      return this.requestLeadgenHasCrmIntegrationField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestLeadgenHasCrmIntegrationField (boolean value) {
      this.requestField("leadgen_has_crm_integration", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestLeadgenHasFatPingCrmIntegrationField () {
      return this.requestLeadgenHasFatPingCrmIntegrationField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestLeadgenHasFatPingCrmIntegrationField (boolean value) {
      this.requestField("leadgen_has_fat_ping_crm_integration", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestLeadgenTosAcceptanceTimeField () {
      return this.requestLeadgenTosAcceptanceTimeField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestLeadgenTosAcceptanceTimeField (boolean value) {
      this.requestField("leadgen_tos_acceptance_time", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestLeadgenTosAcceptedField () {
      return this.requestLeadgenTosAcceptedField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestLeadgenTosAcceptedField (boolean value) {
      this.requestField("leadgen_tos_accepted", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestLeadgenTosAcceptingUserField () {
      return this.requestLeadgenTosAcceptingUserField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestLeadgenTosAcceptingUserField (boolean value) {
      this.requestField("leadgen_tos_accepting_user", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestLocationField () {
      return this.requestLocationField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestLocationField (boolean value) {
      this.requestField("location", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestMembersField () {
      return this.requestMembersField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestMembersField (boolean value) {
      this.requestField("members", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestMerchantIdField () {
      return this.requestMerchantIdField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestMerchantIdField (boolean value) {
      this.requestField("merchant_id", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestMerchantReviewStatusField () {
      return this.requestMerchantReviewStatusField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestMerchantReviewStatusField (boolean value) {
      this.requestField("merchant_review_status", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestMessengerAdsDefaultIcebreakersField () {
      return this.requestMessengerAdsDefaultIcebreakersField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestMessengerAdsDefaultIcebreakersField (boolean value) {
      this.requestField("messenger_ads_default_icebreakers", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestMessengerAdsDefaultPageWelcomeMessageField () {
      return this.requestMessengerAdsDefaultPageWelcomeMessageField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestMessengerAdsDefaultPageWelcomeMessageField (boolean value) {
      this.requestField("messenger_ads_default_page_welcome_message", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestMessengerAdsDefaultQuickRepliesField () {
      return this.requestMessengerAdsDefaultQuickRepliesField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestMessengerAdsDefaultQuickRepliesField (boolean value) {
      this.requestField("messenger_ads_default_quick_replies", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestMessengerAdsQuickRepliesTypeField () {
      return this.requestMessengerAdsQuickRepliesTypeField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestMessengerAdsQuickRepliesTypeField (boolean value) {
      this.requestField("messenger_ads_quick_replies_type", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestMissionField () {
      return this.requestMissionField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestMissionField (boolean value) {
      this.requestField("mission", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestMpgField () {
      return this.requestMpgField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestMpgField (boolean value) {
      this.requestField("mpg", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestNameWithLocationDescriptorField () {
      return this.requestNameWithLocationDescriptorField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestNameWithLocationDescriptorField (boolean value) {
      this.requestField("name_with_location_descriptor", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestNetworkField () {
      return this.requestNetworkField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestNetworkField (boolean value) {
      this.requestField("network", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestNewLikeCountField () {
      return this.requestNewLikeCountField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestNewLikeCountField (boolean value) {
      this.requestField("new_like_count", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestOfferEligibleField () {
      return this.requestOfferEligibleField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestOfferEligibleField (boolean value) {
      this.requestField("offer_eligible", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestOverallStarRatingField () {
      return this.requestOverallStarRatingField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestOverallStarRatingField (boolean value) {
      this.requestField("overall_star_rating", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPageAboutStoryField () {
      return this.requestPageAboutStoryField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPageAboutStoryField (boolean value) {
      this.requestField("page_about_story", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPageTokenField () {
      return this.requestPageTokenField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPageTokenField (boolean value) {
      this.requestField("page_token", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestParentPageField () {
      return this.requestParentPageField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestParentPageField (boolean value) {
      this.requestField("parent_page", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestParkingField () {
      return this.requestParkingField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestParkingField (boolean value) {
      this.requestField("parking", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPaymentOptionsField () {
      return this.requestPaymentOptionsField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPaymentOptionsField (boolean value) {
      this.requestField("payment_options", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPersonalInfoField () {
      return this.requestPersonalInfoField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPersonalInfoField (boolean value) {
      this.requestField("personal_info", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPersonalInterestsField () {
      return this.requestPersonalInterestsField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPersonalInterestsField (boolean value) {
      this.requestField("personal_interests", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPharmaSafetyInfoField () {
      return this.requestPharmaSafetyInfoField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPharmaSafetyInfoField (boolean value) {
      this.requestField("pharma_safety_info", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPhoneField () {
      return this.requestPhoneField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPhoneField (boolean value) {
      this.requestField("phone", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPlaceTypeField () {
      return this.requestPlaceTypeField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPlaceTypeField (boolean value) {
      this.requestField("place_type", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPlotOutlineField () {
      return this.requestPlotOutlineField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPlotOutlineField (boolean value) {
      this.requestField("plot_outline", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPreferredAudienceField () {
      return this.requestPreferredAudienceField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPreferredAudienceField (boolean value) {
      this.requestField("preferred_audience", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPressContactField () {
      return this.requestPressContactField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPressContactField (boolean value) {
      this.requestField("press_contact", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPriceRangeField () {
      return this.requestPriceRangeField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPriceRangeField (boolean value) {
      this.requestField("price_range", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPrivacyInfoUrlField () {
      return this.requestPrivacyInfoUrlField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPrivacyInfoUrlField (boolean value) {
      this.requestField("privacy_info_url", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestProducedByField () {
      return this.requestProducedByField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestProducedByField (boolean value) {
      this.requestField("produced_by", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestProductsField () {
      return this.requestProductsField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestProductsField (boolean value) {
      this.requestField("products", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPromotionEligibleField () {
      return this.requestPromotionEligibleField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPromotionEligibleField (boolean value) {
      this.requestField("promotion_eligible", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPromotionIneligibleReasonField () {
      return this.requestPromotionIneligibleReasonField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPromotionIneligibleReasonField (boolean value) {
      this.requestField("promotion_ineligible_reason", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestPublicTransitField () {
      return this.requestPublicTransitField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestPublicTransitField (boolean value) {
      this.requestField("public_transit", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestRatingCountField () {
      return this.requestRatingCountField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestRatingCountField (boolean value) {
      this.requestField("rating_count", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestRecipientField () {
      return this.requestRecipientField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestRecipientField (boolean value) {
      this.requestField("recipient", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestRecordLabelField () {
      return this.requestRecordLabelField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestRecordLabelField (boolean value) {
      this.requestField("record_label", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestReleaseDateField () {
      return this.requestReleaseDateField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestReleaseDateField (boolean value) {
      this.requestField("release_date", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestRestaurantServicesField () {
      return this.requestRestaurantServicesField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestRestaurantServicesField (boolean value) {
      this.requestField("restaurant_services", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestRestaurantSpecialtiesField () {
      return this.requestRestaurantSpecialtiesField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestRestaurantSpecialtiesField (boolean value) {
      this.requestField("restaurant_specialties", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestScheduleField () {
      return this.requestScheduleField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestScheduleField (boolean value) {
      this.requestField("schedule", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestScreenplayByField () {
      return this.requestScreenplayByField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestScreenplayByField (boolean value) {
      this.requestField("screenplay_by", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestSeasonField () {
      return this.requestSeasonField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestSeasonField (boolean value) {
      this.requestField("season", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestSingleLineAddressField () {
      return this.requestSingleLineAddressField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestSingleLineAddressField (boolean value) {
      this.requestField("single_line_address", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestStarringField () {
      return this.requestStarringField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestStarringField (boolean value) {
      this.requestField("starring", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestStartInfoField () {
      return this.requestStartInfoField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestStartInfoField (boolean value) {
      this.requestField("start_info", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestStoreCodeField () {
      return this.requestStoreCodeField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestStoreCodeField (boolean value) {
      this.requestField("store_code", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestStoreLocationDescriptorField () {
      return this.requestStoreLocationDescriptorField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestStoreLocationDescriptorField (boolean value) {
      this.requestField("store_location_descriptor", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestStoreNumberField () {
      return this.requestStoreNumberField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestStoreNumberField (boolean value) {
      this.requestField("store_number", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestStudioField () {
      return this.requestStudioField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestStudioField (boolean value) {
      this.requestField("studio", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestSupportsInstantArticlesField () {
      return this.requestSupportsInstantArticlesField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestSupportsInstantArticlesField (boolean value) {
      this.requestField("supports_instant_articles", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestTalkingAboutCountField () {
      return this.requestTalkingAboutCountField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestTalkingAboutCountField (boolean value) {
      this.requestField("talking_about_count", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestUnreadMessageCountField () {
      return this.requestUnreadMessageCountField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestUnreadMessageCountField (boolean value) {
      this.requestField("unread_message_count", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestUnreadNotifCountField () {
      return this.requestUnreadNotifCountField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestUnreadNotifCountField (boolean value) {
      this.requestField("unread_notif_count", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestUnseenMessageCountField () {
      return this.requestUnseenMessageCountField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestUnseenMessageCountField (boolean value) {
      this.requestField("unseen_message_count", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestUsernameField () {
      return this.requestUsernameField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestUsernameField (boolean value) {
      this.requestField("username", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestVerificationStatusField () {
      return this.requestVerificationStatusField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestVerificationStatusField (boolean value) {
      this.requestField("verification_status", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestVoipInfoField () {
      return this.requestVoipInfoField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestVoipInfoField (boolean value) {
      this.requestField("voip_info", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestWebsiteField () {
      return this.requestWebsiteField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestWebsiteField (boolean value) {
      this.requestField("website", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestWereHereCountField () {
      return this.requestWereHereCountField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestWereHereCountField (boolean value) {
      this.requestField("were_here_count", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestWhatsappNumberField () {
      return this.requestWhatsappNumberField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestWhatsappNumberField (boolean value) {
      this.requestField("whatsapp_number", value);
      return this;
    }
    public APIRequestGetCrosspostWhitelistedPages requestWrittenByField () {
      return this.requestWrittenByField(true);
    }
    public APIRequestGetCrosspostWhitelistedPages requestWrittenByField (boolean value) {
      this.requestField("written_by", value);
      return this;
    }
  }

  public static class APIRequestGetCustomLabels extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "id",
      "name",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PageUserMessageThreadLabel.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetCustomLabels.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetCustomLabels(String nodeId, APIContext context) {
      super(context, nodeId, "/custom_labels", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetCustomLabels setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetCustomLabels setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetCustomLabels requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetCustomLabels requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCustomLabels requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetCustomLabels requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetCustomLabels requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetCustomLabels requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetCustomLabels requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetCustomLabels requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetCustomLabels requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetCustomLabels requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
  }

  public static class APIRequestCreateCustomLabel extends APIRequest {

    PageUserMessageThreadLabel lastResponse = null;
    @Override
    public PageUserMessageThreadLabel getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "name",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public PageUserMessageThreadLabel parseResponse(String response, String header) throws APIException {
      return PageUserMessageThreadLabel.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public PageUserMessageThreadLabel execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public PageUserMessageThreadLabel execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public PageUserMessageThreadLabel apply(ResponseWrapper result) {
             try {
               return APIRequestCreateCustomLabel.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateCustomLabel(String nodeId, APIContext context) {
      super(context, nodeId, "/custom_labels", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateCustomLabel setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateCustomLabel setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateCustomLabel setName (String name) {
      this.setParam("name", name);
      return this;
    }

    public APIRequestCreateCustomLabel requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateCustomLabel requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCustomLabel requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateCustomLabel requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateCustomLabel requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateCustomLabel requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetEvents extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "type",
      "include_canceled",
      "time_filter",
      "event_state_filter",
    };

    public static final String[] FIELDS = {
      "attending_count",
      "can_guests_invite",
      "category",
      "cover",
      "declined_count",
      "description",
      "discount_code_enabled",
      "end_time",
      "event_times",
      "guest_list_enabled",
      "id",
      "interested_count",
      "is_canceled",
      "is_draft",
      "is_page_owned",
      "maybe_count",
      "name",
      "noreply_count",
      "owner",
      "parent_group",
      "place",
      "scheduled_publish_time",
      "start_time",
      "ticket_uri",
      "ticket_uri_start_sales_time",
      "ticketing_privacy_uri",
      "ticketing_terms_uri",
      "timezone",
      "type",
      "updated_time",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Event.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetEvents.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetEvents(String nodeId, APIContext context) {
      super(context, nodeId, "/events", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetEvents setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetEvents setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetEvents setType (Event.EnumType type) {
      this.setParam("type", type);
      return this;
    }
    public APIRequestGetEvents setType (String type) {
      this.setParam("type", type);
      return this;
    }

    public APIRequestGetEvents setIncludeCanceled (Boolean includeCanceled) {
      this.setParam("include_canceled", includeCanceled);
      return this;
    }
    public APIRequestGetEvents setIncludeCanceled (String includeCanceled) {
      this.setParam("include_canceled", includeCanceled);
      return this;
    }

    public APIRequestGetEvents setTimeFilter (Event.EnumTimeFilter timeFilter) {
      this.setParam("time_filter", timeFilter);
      return this;
    }
    public APIRequestGetEvents setTimeFilter (String timeFilter) {
      this.setParam("time_filter", timeFilter);
      return this;
    }

    public APIRequestGetEvents setEventStateFilter (List eventStateFilter) {
      this.setParam("event_state_filter", eventStateFilter);
      return this;
    }
    public APIRequestGetEvents setEventStateFilter (String eventStateFilter) {
      this.setParam("event_state_filter", eventStateFilter);
      return this;
    }

    public APIRequestGetEvents requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetEvents requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetEvents requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetEvents requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetEvents requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetEvents requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetEvents requestAttendingCountField () {
      return this.requestAttendingCountField(true);
    }
    public APIRequestGetEvents requestAttendingCountField (boolean value) {
      this.requestField("attending_count", value);
      return this;
    }
    public APIRequestGetEvents requestCanGuestsInviteField () {
      return this.requestCanGuestsInviteField(true);
    }
    public APIRequestGetEvents requestCanGuestsInviteField (boolean value) {
      this.requestField("can_guests_invite", value);
      return this;
    }
    public APIRequestGetEvents requestCategoryField () {
      return this.requestCategoryField(true);
    }
    public APIRequestGetEvents requestCategoryField (boolean value) {
      this.requestField("category", value);
      return this;
    }
    public APIRequestGetEvents requestCoverField () {
      return this.requestCoverField(true);
    }
    public APIRequestGetEvents requestCoverField (boolean value) {
      this.requestField("cover", value);
      return this;
    }
    public APIRequestGetEvents requestDeclinedCountField () {
      return this.requestDeclinedCountField(true);
    }
    public APIRequestGetEvents requestDeclinedCountField (boolean value) {
      this.requestField("declined_count", value);
      return this;
    }
    public APIRequestGetEvents requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetEvents requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetEvents requestDiscountCodeEnabledField () {
      return this.requestDiscountCodeEnabledField(true);
    }
    public APIRequestGetEvents requestDiscountCodeEnabledField (boolean value) {
      this.requestField("discount_code_enabled", value);
      return this;
    }
    public APIRequestGetEvents requestEndTimeField () {
      return this.requestEndTimeField(true);
    }
    public APIRequestGetEvents requestEndTimeField (boolean value) {
      this.requestField("end_time", value);
      return this;
    }
    public APIRequestGetEvents requestEventTimesField () {
      return this.requestEventTimesField(true);
    }
    public APIRequestGetEvents requestEventTimesField (boolean value) {
      this.requestField("event_times", value);
      return this;
    }
    public APIRequestGetEvents requestGuestListEnabledField () {
      return this.requestGuestListEnabledField(true);
    }
    public APIRequestGetEvents requestGuestListEnabledField (boolean value) {
      this.requestField("guest_list_enabled", value);
      return this;
    }
    public APIRequestGetEvents requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetEvents requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetEvents requestInterestedCountField () {
      return this.requestInterestedCountField(true);
    }
    public APIRequestGetEvents requestInterestedCountField (boolean value) {
      this.requestField("interested_count", value);
      return this;
    }
    public APIRequestGetEvents requestIsCanceledField () {
      return this.requestIsCanceledField(true);
    }
    public APIRequestGetEvents requestIsCanceledField (boolean value) {
      this.requestField("is_canceled", value);
      return this;
    }
    public APIRequestGetEvents requestIsDraftField () {
      return this.requestIsDraftField(true);
    }
    public APIRequestGetEvents requestIsDraftField (boolean value) {
      this.requestField("is_draft", value);
      return this;
    }
    public APIRequestGetEvents requestIsPageOwnedField () {
      return this.requestIsPageOwnedField(true);
    }
    public APIRequestGetEvents requestIsPageOwnedField (boolean value) {
      this.requestField("is_page_owned", value);
      return this;
    }
    public APIRequestGetEvents requestMaybeCountField () {
      return this.requestMaybeCountField(true);
    }
    public APIRequestGetEvents requestMaybeCountField (boolean value) {
      this.requestField("maybe_count", value);
      return this;
    }
    public APIRequestGetEvents requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetEvents requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetEvents requestNoreplyCountField () {
      return this.requestNoreplyCountField(true);
    }
    public APIRequestGetEvents requestNoreplyCountField (boolean value) {
      this.requestField("noreply_count", value);
      return this;
    }
    public APIRequestGetEvents requestOwnerField () {
      return this.requestOwnerField(true);
    }
    public APIRequestGetEvents requestOwnerField (boolean value) {
      this.requestField("owner", value);
      return this;
    }
    public APIRequestGetEvents requestParentGroupField () {
      return this.requestParentGroupField(true);
    }
    public APIRequestGetEvents requestParentGroupField (boolean value) {
      this.requestField("parent_group", value);
      return this;
    }
    public APIRequestGetEvents requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetEvents requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetEvents requestScheduledPublishTimeField () {
      return this.requestScheduledPublishTimeField(true);
    }
    public APIRequestGetEvents requestScheduledPublishTimeField (boolean value) {
      this.requestField("scheduled_publish_time", value);
      return this;
    }
    public APIRequestGetEvents requestStartTimeField () {
      return this.requestStartTimeField(true);
    }
    public APIRequestGetEvents requestStartTimeField (boolean value) {
      this.requestField("start_time", value);
      return this;
    }
    public APIRequestGetEvents requestTicketUriField () {
      return this.requestTicketUriField(true);
    }
    public APIRequestGetEvents requestTicketUriField (boolean value) {
      this.requestField("ticket_uri", value);
      return this;
    }
    public APIRequestGetEvents requestTicketUriStartSalesTimeField () {
      return this.requestTicketUriStartSalesTimeField(true);
    }
    public APIRequestGetEvents requestTicketUriStartSalesTimeField (boolean value) {
      this.requestField("ticket_uri_start_sales_time", value);
      return this;
    }
    public APIRequestGetEvents requestTicketingPrivacyUriField () {
      return this.requestTicketingPrivacyUriField(true);
    }
    public APIRequestGetEvents requestTicketingPrivacyUriField (boolean value) {
      this.requestField("ticketing_privacy_uri", value);
      return this;
    }
    public APIRequestGetEvents requestTicketingTermsUriField () {
      return this.requestTicketingTermsUriField(true);
    }
    public APIRequestGetEvents requestTicketingTermsUriField (boolean value) {
      this.requestField("ticketing_terms_uri", value);
      return this;
    }
    public APIRequestGetEvents requestTimezoneField () {
      return this.requestTimezoneField(true);
    }
    public APIRequestGetEvents requestTimezoneField (boolean value) {
      this.requestField("timezone", value);
      return this;
    }
    public APIRequestGetEvents requestTypeField () {
      return this.requestTypeField(true);
    }
    public APIRequestGetEvents requestTypeField (boolean value) {
      this.requestField("type", value);
      return this;
    }
    public APIRequestGetEvents requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetEvents requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
  }

  public static class APIRequestGetExpiredPosts extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "admin_creator",
      "can_republish",
      "content_type",
      "creation_time",
      "expiration",
      "feed_audience_description",
      "feed_targeting",
      "id",
      "message",
      "modified_time",
      "og_action_summary",
      "permalink_url",
      "place",
      "privacy_description",
      "promotion_info",
      "scheduled_publish_time",
      "story_token",
      "thumbnail",
      "video_id",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return ExpirablePost.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetExpiredPosts.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetExpiredPosts(String nodeId, APIContext context) {
      super(context, nodeId, "/expired_posts", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetExpiredPosts setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetExpiredPosts setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetExpiredPosts requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetExpiredPosts requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetExpiredPosts requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetExpiredPosts requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetExpiredPosts requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetExpiredPosts requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetExpiredPosts requestAdminCreatorField () {
      return this.requestAdminCreatorField(true);
    }
    public APIRequestGetExpiredPosts requestAdminCreatorField (boolean value) {
      this.requestField("admin_creator", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestCanRepublishField () {
      return this.requestCanRepublishField(true);
    }
    public APIRequestGetExpiredPosts requestCanRepublishField (boolean value) {
      this.requestField("can_republish", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestContentTypeField () {
      return this.requestContentTypeField(true);
    }
    public APIRequestGetExpiredPosts requestContentTypeField (boolean value) {
      this.requestField("content_type", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestCreationTimeField () {
      return this.requestCreationTimeField(true);
    }
    public APIRequestGetExpiredPosts requestCreationTimeField (boolean value) {
      this.requestField("creation_time", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestExpirationField () {
      return this.requestExpirationField(true);
    }
    public APIRequestGetExpiredPosts requestExpirationField (boolean value) {
      this.requestField("expiration", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestFeedAudienceDescriptionField () {
      return this.requestFeedAudienceDescriptionField(true);
    }
    public APIRequestGetExpiredPosts requestFeedAudienceDescriptionField (boolean value) {
      this.requestField("feed_audience_description", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestFeedTargetingField () {
      return this.requestFeedTargetingField(true);
    }
    public APIRequestGetExpiredPosts requestFeedTargetingField (boolean value) {
      this.requestField("feed_targeting", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetExpiredPosts requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestMessageField () {
      return this.requestMessageField(true);
    }
    public APIRequestGetExpiredPosts requestMessageField (boolean value) {
      this.requestField("message", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestModifiedTimeField () {
      return this.requestModifiedTimeField(true);
    }
    public APIRequestGetExpiredPosts requestModifiedTimeField (boolean value) {
      this.requestField("modified_time", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestOgActionSummaryField () {
      return this.requestOgActionSummaryField(true);
    }
    public APIRequestGetExpiredPosts requestOgActionSummaryField (boolean value) {
      this.requestField("og_action_summary", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetExpiredPosts requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetExpiredPosts requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestPrivacyDescriptionField () {
      return this.requestPrivacyDescriptionField(true);
    }
    public APIRequestGetExpiredPosts requestPrivacyDescriptionField (boolean value) {
      this.requestField("privacy_description", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestPromotionInfoField () {
      return this.requestPromotionInfoField(true);
    }
    public APIRequestGetExpiredPosts requestPromotionInfoField (boolean value) {
      this.requestField("promotion_info", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestScheduledPublishTimeField () {
      return this.requestScheduledPublishTimeField(true);
    }
    public APIRequestGetExpiredPosts requestScheduledPublishTimeField (boolean value) {
      this.requestField("scheduled_publish_time", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestStoryTokenField () {
      return this.requestStoryTokenField(true);
    }
    public APIRequestGetExpiredPosts requestStoryTokenField (boolean value) {
      this.requestField("story_token", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestThumbnailField () {
      return this.requestThumbnailField(true);
    }
    public APIRequestGetExpiredPosts requestThumbnailField (boolean value) {
      this.requestField("thumbnail", value);
      return this;
    }
    public APIRequestGetExpiredPosts requestVideoIdField () {
      return this.requestVideoIdField(true);
    }
    public APIRequestGetExpiredPosts requestVideoIdField (boolean value) {
      this.requestField("video_id", value);
      return this;
    }
  }

  public static class APIRequestGetExpiringPosts extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "admin_creator",
      "can_republish",
      "content_type",
      "creation_time",
      "expiration",
      "feed_audience_description",
      "feed_targeting",
      "id",
      "message",
      "modified_time",
      "og_action_summary",
      "permalink_url",
      "place",
      "privacy_description",
      "promotion_info",
      "scheduled_publish_time",
      "story_token",
      "thumbnail",
      "video_id",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return ExpirablePost.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetExpiringPosts.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetExpiringPosts(String nodeId, APIContext context) {
      super(context, nodeId, "/expiring_posts", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetExpiringPosts setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetExpiringPosts setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetExpiringPosts requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetExpiringPosts requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetExpiringPosts requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetExpiringPosts requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetExpiringPosts requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetExpiringPosts requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetExpiringPosts requestAdminCreatorField () {
      return this.requestAdminCreatorField(true);
    }
    public APIRequestGetExpiringPosts requestAdminCreatorField (boolean value) {
      this.requestField("admin_creator", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestCanRepublishField () {
      return this.requestCanRepublishField(true);
    }
    public APIRequestGetExpiringPosts requestCanRepublishField (boolean value) {
      this.requestField("can_republish", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestContentTypeField () {
      return this.requestContentTypeField(true);
    }
    public APIRequestGetExpiringPosts requestContentTypeField (boolean value) {
      this.requestField("content_type", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestCreationTimeField () {
      return this.requestCreationTimeField(true);
    }
    public APIRequestGetExpiringPosts requestCreationTimeField (boolean value) {
      this.requestField("creation_time", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestExpirationField () {
      return this.requestExpirationField(true);
    }
    public APIRequestGetExpiringPosts requestExpirationField (boolean value) {
      this.requestField("expiration", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestFeedAudienceDescriptionField () {
      return this.requestFeedAudienceDescriptionField(true);
    }
    public APIRequestGetExpiringPosts requestFeedAudienceDescriptionField (boolean value) {
      this.requestField("feed_audience_description", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestFeedTargetingField () {
      return this.requestFeedTargetingField(true);
    }
    public APIRequestGetExpiringPosts requestFeedTargetingField (boolean value) {
      this.requestField("feed_targeting", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetExpiringPosts requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestMessageField () {
      return this.requestMessageField(true);
    }
    public APIRequestGetExpiringPosts requestMessageField (boolean value) {
      this.requestField("message", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestModifiedTimeField () {
      return this.requestModifiedTimeField(true);
    }
    public APIRequestGetExpiringPosts requestModifiedTimeField (boolean value) {
      this.requestField("modified_time", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestOgActionSummaryField () {
      return this.requestOgActionSummaryField(true);
    }
    public APIRequestGetExpiringPosts requestOgActionSummaryField (boolean value) {
      this.requestField("og_action_summary", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetExpiringPosts requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetExpiringPosts requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestPrivacyDescriptionField () {
      return this.requestPrivacyDescriptionField(true);
    }
    public APIRequestGetExpiringPosts requestPrivacyDescriptionField (boolean value) {
      this.requestField("privacy_description", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestPromotionInfoField () {
      return this.requestPromotionInfoField(true);
    }
    public APIRequestGetExpiringPosts requestPromotionInfoField (boolean value) {
      this.requestField("promotion_info", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestScheduledPublishTimeField () {
      return this.requestScheduledPublishTimeField(true);
    }
    public APIRequestGetExpiringPosts requestScheduledPublishTimeField (boolean value) {
      this.requestField("scheduled_publish_time", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestStoryTokenField () {
      return this.requestStoryTokenField(true);
    }
    public APIRequestGetExpiringPosts requestStoryTokenField (boolean value) {
      this.requestField("story_token", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestThumbnailField () {
      return this.requestThumbnailField(true);
    }
    public APIRequestGetExpiringPosts requestThumbnailField (boolean value) {
      this.requestField("thumbnail", value);
      return this;
    }
    public APIRequestGetExpiringPosts requestVideoIdField () {
      return this.requestVideoIdField(true);
    }
    public APIRequestGetExpiringPosts requestVideoIdField (boolean value) {
      this.requestField("video_id", value);
      return this;
    }
  }

  public static class APIRequestGetFeatureDVideosCollection extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "ad_breaks",
      "backdated_time",
      "backdated_time_granularity",
      "content_category",
      "content_tags",
      "created_time",
      "custom_labels",
      "description",
      "embed_html",
      "embeddable",
      "event",
      "expiration",
      "format",
      "from",
      "icon",
      "id",
      "is_crosspost_video",
      "is_crossposting_eligible",
      "is_episode",
      "is_instagram_eligible",
      "length",
      "live_audience_count",
      "live_status",
      "permalink_url",
      "picture",
      "place",
      "premiere_living_room_status",
      "privacy",
      "published",
      "scheduled_publish_time",
      "source",
      "spherical",
      "status",
      "title",
      "tv_banner_ad",
      "universal_video_id",
      "updated_time",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return AdVideo.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetFeatureDVideosCollection.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetFeatureDVideosCollection(String nodeId, APIContext context) {
      super(context, nodeId, "/featured_videos_collection", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetFeatureDVideosCollection setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetFeatureDVideosCollection setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetFeatureDVideosCollection requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetFeatureDVideosCollection requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetFeatureDVideosCollection requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetFeatureDVideosCollection requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetFeatureDVideosCollection requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetFeatureDVideosCollection requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetFeatureDVideosCollection requestAdBreaksField () {
      return this.requestAdBreaksField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestAdBreaksField (boolean value) {
      this.requestField("ad_breaks", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestBackdatedTimeField () {
      return this.requestBackdatedTimeField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestBackdatedTimeField (boolean value) {
      this.requestField("backdated_time", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestBackdatedTimeGranularityField () {
      return this.requestBackdatedTimeGranularityField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestBackdatedTimeGranularityField (boolean value) {
      this.requestField("backdated_time_granularity", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestContentCategoryField () {
      return this.requestContentCategoryField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestContentCategoryField (boolean value) {
      this.requestField("content_category", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestContentTagsField () {
      return this.requestContentTagsField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestContentTagsField (boolean value) {
      this.requestField("content_tags", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestCustomLabelsField () {
      return this.requestCustomLabelsField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestCustomLabelsField (boolean value) {
      this.requestField("custom_labels", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestEmbedHtmlField () {
      return this.requestEmbedHtmlField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestEmbedHtmlField (boolean value) {
      this.requestField("embed_html", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestEmbeddableField () {
      return this.requestEmbeddableField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestEmbeddableField (boolean value) {
      this.requestField("embeddable", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestEventField () {
      return this.requestEventField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestEventField (boolean value) {
      this.requestField("event", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestExpirationField () {
      return this.requestExpirationField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestExpirationField (boolean value) {
      this.requestField("expiration", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestFormatField () {
      return this.requestFormatField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestFormatField (boolean value) {
      this.requestField("format", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestIconField () {
      return this.requestIconField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestIconField (boolean value) {
      this.requestField("icon", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestIsCrosspostVideoField () {
      return this.requestIsCrosspostVideoField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestIsCrosspostVideoField (boolean value) {
      this.requestField("is_crosspost_video", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestIsCrosspostingEligibleField () {
      return this.requestIsCrosspostingEligibleField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestIsCrosspostingEligibleField (boolean value) {
      this.requestField("is_crossposting_eligible", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestIsEpisodeField () {
      return this.requestIsEpisodeField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestIsEpisodeField (boolean value) {
      this.requestField("is_episode", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestIsInstagramEligibleField () {
      return this.requestIsInstagramEligibleField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestIsInstagramEligibleField (boolean value) {
      this.requestField("is_instagram_eligible", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestLengthField () {
      return this.requestLengthField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestLengthField (boolean value) {
      this.requestField("length", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestLiveAudienceCountField () {
      return this.requestLiveAudienceCountField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestLiveAudienceCountField (boolean value) {
      this.requestField("live_audience_count", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestLiveStatusField () {
      return this.requestLiveStatusField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestLiveStatusField (boolean value) {
      this.requestField("live_status", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestPictureField () {
      return this.requestPictureField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestPictureField (boolean value) {
      this.requestField("picture", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestPremiereLivingRoomStatusField () {
      return this.requestPremiereLivingRoomStatusField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestPremiereLivingRoomStatusField (boolean value) {
      this.requestField("premiere_living_room_status", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestPrivacyField () {
      return this.requestPrivacyField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestPrivacyField (boolean value) {
      this.requestField("privacy", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestPublishedField () {
      return this.requestPublishedField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestPublishedField (boolean value) {
      this.requestField("published", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestScheduledPublishTimeField () {
      return this.requestScheduledPublishTimeField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestScheduledPublishTimeField (boolean value) {
      this.requestField("scheduled_publish_time", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestSourceField () {
      return this.requestSourceField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestSourceField (boolean value) {
      this.requestField("source", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestSphericalField () {
      return this.requestSphericalField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestSphericalField (boolean value) {
      this.requestField("spherical", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestStatusField () {
      return this.requestStatusField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestStatusField (boolean value) {
      this.requestField("status", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestTvBannerAdField () {
      return this.requestTvBannerAdField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestTvBannerAdField (boolean value) {
      this.requestField("tv_banner_ad", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestUniversalVideoIdField () {
      return this.requestUniversalVideoIdField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestUniversalVideoIdField (boolean value) {
      this.requestField("universal_video_id", value);
      return this;
    }
    public APIRequestGetFeatureDVideosCollection requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetFeatureDVideosCollection requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
  }

  public static class APIRequestGetFeed extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "include_hidden",
      "with",
      "show_expired",
    };

    public static final String[] FIELDS = {
      "actions",
      "admin_creator",
      "allowed_advertising_objectives",
      "application",
      "backdated_time",
      "call_to_action",
      "can_reply_privately",
      "caption",
      "child_attachments",
      "comments_mirroring_domain",
      "coordinates",
      "created_time",
      "description",
      "event",
      "expanded_height",
      "expanded_width",
      "feed_targeting",
      "from",
      "full_picture",
      "height",
      "icon",
      "id",
      "instagram_eligibility",
      "is_app_share",
      "is_expired",
      "is_hidden",
      "is_instagram_eligible",
      "is_popular",
      "is_published",
      "is_spherical",
      "link",
      "message",
      "message_tags",
      "multi_share_end_card",
      "multi_share_optimized",
      "name",
      "object_id",
      "parent_id",
      "permalink_url",
      "picture",
      "place",
      "privacy",
      "promotable_id",
      "promotion_status",
      "properties",
      "scheduled_publish_time",
      "shares",
      "source",
      "status_type",
      "story",
      "story_tags",
      "subscribed",
      "target",
      "targeting",
      "timeline_visibility",
      "type",
      "updated_time",
      "via",
      "video_buying_eligibility",
      "width",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PagePost.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetFeed.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetFeed(String nodeId, APIContext context) {
      super(context, nodeId, "/feed", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetFeed setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetFeed setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetFeed setIncludeHidden (Boolean includeHidden) {
      this.setParam("include_hidden", includeHidden);
      return this;
    }
    public APIRequestGetFeed setIncludeHidden (String includeHidden) {
      this.setParam("include_hidden", includeHidden);
      return this;
    }

    public APIRequestGetFeed setWith (PagePost.EnumWith with) {
      this.setParam("with", with);
      return this;
    }
    public APIRequestGetFeed setWith (String with) {
      this.setParam("with", with);
      return this;
    }

    public APIRequestGetFeed setShowExpired (Boolean showExpired) {
      this.setParam("show_expired", showExpired);
      return this;
    }
    public APIRequestGetFeed setShowExpired (String showExpired) {
      this.setParam("show_expired", showExpired);
      return this;
    }

    public APIRequestGetFeed requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetFeed requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetFeed requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetFeed requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetFeed requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetFeed requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetFeed requestActionsField () {
      return this.requestActionsField(true);
    }
    public APIRequestGetFeed requestActionsField (boolean value) {
      this.requestField("actions", value);
      return this;
    }
    public APIRequestGetFeed requestAdminCreatorField () {
      return this.requestAdminCreatorField(true);
    }
    public APIRequestGetFeed requestAdminCreatorField (boolean value) {
      this.requestField("admin_creator", value);
      return this;
    }
    public APIRequestGetFeed requestAllowedAdvertisingObjectivesField () {
      return this.requestAllowedAdvertisingObjectivesField(true);
    }
    public APIRequestGetFeed requestAllowedAdvertisingObjectivesField (boolean value) {
      this.requestField("allowed_advertising_objectives", value);
      return this;
    }
    public APIRequestGetFeed requestApplicationField () {
      return this.requestApplicationField(true);
    }
    public APIRequestGetFeed requestApplicationField (boolean value) {
      this.requestField("application", value);
      return this;
    }
    public APIRequestGetFeed requestBackdatedTimeField () {
      return this.requestBackdatedTimeField(true);
    }
    public APIRequestGetFeed requestBackdatedTimeField (boolean value) {
      this.requestField("backdated_time", value);
      return this;
    }
    public APIRequestGetFeed requestCallToActionField () {
      return this.requestCallToActionField(true);
    }
    public APIRequestGetFeed requestCallToActionField (boolean value) {
      this.requestField("call_to_action", value);
      return this;
    }
    public APIRequestGetFeed requestCanReplyPrivatelyField () {
      return this.requestCanReplyPrivatelyField(true);
    }
    public APIRequestGetFeed requestCanReplyPrivatelyField (boolean value) {
      this.requestField("can_reply_privately", value);
      return this;
    }
    public APIRequestGetFeed requestCaptionField () {
      return this.requestCaptionField(true);
    }
    public APIRequestGetFeed requestCaptionField (boolean value) {
      this.requestField("caption", value);
      return this;
    }
    public APIRequestGetFeed requestChildAttachmentsField () {
      return this.requestChildAttachmentsField(true);
    }
    public APIRequestGetFeed requestChildAttachmentsField (boolean value) {
      this.requestField("child_attachments", value);
      return this;
    }
    public APIRequestGetFeed requestCommentsMirroringDomainField () {
      return this.requestCommentsMirroringDomainField(true);
    }
    public APIRequestGetFeed requestCommentsMirroringDomainField (boolean value) {
      this.requestField("comments_mirroring_domain", value);
      return this;
    }
    public APIRequestGetFeed requestCoordinatesField () {
      return this.requestCoordinatesField(true);
    }
    public APIRequestGetFeed requestCoordinatesField (boolean value) {
      this.requestField("coordinates", value);
      return this;
    }
    public APIRequestGetFeed requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetFeed requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetFeed requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetFeed requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetFeed requestEventField () {
      return this.requestEventField(true);
    }
    public APIRequestGetFeed requestEventField (boolean value) {
      this.requestField("event", value);
      return this;
    }
    public APIRequestGetFeed requestExpandedHeightField () {
      return this.requestExpandedHeightField(true);
    }
    public APIRequestGetFeed requestExpandedHeightField (boolean value) {
      this.requestField("expanded_height", value);
      return this;
    }
    public APIRequestGetFeed requestExpandedWidthField () {
      return this.requestExpandedWidthField(true);
    }
    public APIRequestGetFeed requestExpandedWidthField (boolean value) {
      this.requestField("expanded_width", value);
      return this;
    }
    public APIRequestGetFeed requestFeedTargetingField () {
      return this.requestFeedTargetingField(true);
    }
    public APIRequestGetFeed requestFeedTargetingField (boolean value) {
      this.requestField("feed_targeting", value);
      return this;
    }
    public APIRequestGetFeed requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetFeed requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetFeed requestFullPictureField () {
      return this.requestFullPictureField(true);
    }
    public APIRequestGetFeed requestFullPictureField (boolean value) {
      this.requestField("full_picture", value);
      return this;
    }
    public APIRequestGetFeed requestHeightField () {
      return this.requestHeightField(true);
    }
    public APIRequestGetFeed requestHeightField (boolean value) {
      this.requestField("height", value);
      return this;
    }
    public APIRequestGetFeed requestIconField () {
      return this.requestIconField(true);
    }
    public APIRequestGetFeed requestIconField (boolean value) {
      this.requestField("icon", value);
      return this;
    }
    public APIRequestGetFeed requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetFeed requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetFeed requestInstagramEligibilityField () {
      return this.requestInstagramEligibilityField(true);
    }
    public APIRequestGetFeed requestInstagramEligibilityField (boolean value) {
      this.requestField("instagram_eligibility", value);
      return this;
    }
    public APIRequestGetFeed requestIsAppShareField () {
      return this.requestIsAppShareField(true);
    }
    public APIRequestGetFeed requestIsAppShareField (boolean value) {
      this.requestField("is_app_share", value);
      return this;
    }
    public APIRequestGetFeed requestIsExpiredField () {
      return this.requestIsExpiredField(true);
    }
    public APIRequestGetFeed requestIsExpiredField (boolean value) {
      this.requestField("is_expired", value);
      return this;
    }
    public APIRequestGetFeed requestIsHiddenField () {
      return this.requestIsHiddenField(true);
    }
    public APIRequestGetFeed requestIsHiddenField (boolean value) {
      this.requestField("is_hidden", value);
      return this;
    }
    public APIRequestGetFeed requestIsInstagramEligibleField () {
      return this.requestIsInstagramEligibleField(true);
    }
    public APIRequestGetFeed requestIsInstagramEligibleField (boolean value) {
      this.requestField("is_instagram_eligible", value);
      return this;
    }
    public APIRequestGetFeed requestIsPopularField () {
      return this.requestIsPopularField(true);
    }
    public APIRequestGetFeed requestIsPopularField (boolean value) {
      this.requestField("is_popular", value);
      return this;
    }
    public APIRequestGetFeed requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetFeed requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetFeed requestIsSphericalField () {
      return this.requestIsSphericalField(true);
    }
    public APIRequestGetFeed requestIsSphericalField (boolean value) {
      this.requestField("is_spherical", value);
      return this;
    }
    public APIRequestGetFeed requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetFeed requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetFeed requestMessageField () {
      return this.requestMessageField(true);
    }
    public APIRequestGetFeed requestMessageField (boolean value) {
      this.requestField("message", value);
      return this;
    }
    public APIRequestGetFeed requestMessageTagsField () {
      return this.requestMessageTagsField(true);
    }
    public APIRequestGetFeed requestMessageTagsField (boolean value) {
      this.requestField("message_tags", value);
      return this;
    }
    public APIRequestGetFeed requestMultiShareEndCardField () {
      return this.requestMultiShareEndCardField(true);
    }
    public APIRequestGetFeed requestMultiShareEndCardField (boolean value) {
      this.requestField("multi_share_end_card", value);
      return this;
    }
    public APIRequestGetFeed requestMultiShareOptimizedField () {
      return this.requestMultiShareOptimizedField(true);
    }
    public APIRequestGetFeed requestMultiShareOptimizedField (boolean value) {
      this.requestField("multi_share_optimized", value);
      return this;
    }
    public APIRequestGetFeed requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetFeed requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetFeed requestObjectIdField () {
      return this.requestObjectIdField(true);
    }
    public APIRequestGetFeed requestObjectIdField (boolean value) {
      this.requestField("object_id", value);
      return this;
    }
    public APIRequestGetFeed requestParentIdField () {
      return this.requestParentIdField(true);
    }
    public APIRequestGetFeed requestParentIdField (boolean value) {
      this.requestField("parent_id", value);
      return this;
    }
    public APIRequestGetFeed requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetFeed requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetFeed requestPictureField () {
      return this.requestPictureField(true);
    }
    public APIRequestGetFeed requestPictureField (boolean value) {
      this.requestField("picture", value);
      return this;
    }
    public APIRequestGetFeed requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetFeed requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetFeed requestPrivacyField () {
      return this.requestPrivacyField(true);
    }
    public APIRequestGetFeed requestPrivacyField (boolean value) {
      this.requestField("privacy", value);
      return this;
    }
    public APIRequestGetFeed requestPromotableIdField () {
      return this.requestPromotableIdField(true);
    }
    public APIRequestGetFeed requestPromotableIdField (boolean value) {
      this.requestField("promotable_id", value);
      return this;
    }
    public APIRequestGetFeed requestPromotionStatusField () {
      return this.requestPromotionStatusField(true);
    }
    public APIRequestGetFeed requestPromotionStatusField (boolean value) {
      this.requestField("promotion_status", value);
      return this;
    }
    public APIRequestGetFeed requestPropertiesField () {
      return this.requestPropertiesField(true);
    }
    public APIRequestGetFeed requestPropertiesField (boolean value) {
      this.requestField("properties", value);
      return this;
    }
    public APIRequestGetFeed requestScheduledPublishTimeField () {
      return this.requestScheduledPublishTimeField(true);
    }
    public APIRequestGetFeed requestScheduledPublishTimeField (boolean value) {
      this.requestField("scheduled_publish_time", value);
      return this;
    }
    public APIRequestGetFeed requestSharesField () {
      return this.requestSharesField(true);
    }
    public APIRequestGetFeed requestSharesField (boolean value) {
      this.requestField("shares", value);
      return this;
    }
    public APIRequestGetFeed requestSourceField () {
      return this.requestSourceField(true);
    }
    public APIRequestGetFeed requestSourceField (boolean value) {
      this.requestField("source", value);
      return this;
    }
    public APIRequestGetFeed requestStatusTypeField () {
      return this.requestStatusTypeField(true);
    }
    public APIRequestGetFeed requestStatusTypeField (boolean value) {
      this.requestField("status_type", value);
      return this;
    }
    public APIRequestGetFeed requestStoryField () {
      return this.requestStoryField(true);
    }
    public APIRequestGetFeed requestStoryField (boolean value) {
      this.requestField("story", value);
      return this;
    }
    public APIRequestGetFeed requestStoryTagsField () {
      return this.requestStoryTagsField(true);
    }
    public APIRequestGetFeed requestStoryTagsField (boolean value) {
      this.requestField("story_tags", value);
      return this;
    }
    public APIRequestGetFeed requestSubscribedField () {
      return this.requestSubscribedField(true);
    }
    public APIRequestGetFeed requestSubscribedField (boolean value) {
      this.requestField("subscribed", value);
      return this;
    }
    public APIRequestGetFeed requestTargetField () {
      return this.requestTargetField(true);
    }
    public APIRequestGetFeed requestTargetField (boolean value) {
      this.requestField("target", value);
      return this;
    }
    public APIRequestGetFeed requestTargetingField () {
      return this.requestTargetingField(true);
    }
    public APIRequestGetFeed requestTargetingField (boolean value) {
      this.requestField("targeting", value);
      return this;
    }
    public APIRequestGetFeed requestTimelineVisibilityField () {
      return this.requestTimelineVisibilityField(true);
    }
    public APIRequestGetFeed requestTimelineVisibilityField (boolean value) {
      this.requestField("timeline_visibility", value);
      return this;
    }
    public APIRequestGetFeed requestTypeField () {
      return this.requestTypeField(true);
    }
    public APIRequestGetFeed requestTypeField (boolean value) {
      this.requestField("type", value);
      return this;
    }
    public APIRequestGetFeed requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetFeed requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetFeed requestViaField () {
      return this.requestViaField(true);
    }
    public APIRequestGetFeed requestViaField (boolean value) {
      this.requestField("via", value);
      return this;
    }
    public APIRequestGetFeed requestVideoBuyingEligibilityField () {
      return this.requestVideoBuyingEligibilityField(true);
    }
    public APIRequestGetFeed requestVideoBuyingEligibilityField (boolean value) {
      this.requestField("video_buying_eligibility", value);
      return this;
    }
    public APIRequestGetFeed requestWidthField () {
      return this.requestWidthField(true);
    }
    public APIRequestGetFeed requestWidthField (boolean value) {
      this.requestField("width", value);
      return this;
    }
  }

  public static class APIRequestCreateFeed extends APIRequest {

    PagePost lastResponse = null;
    @Override
    public PagePost getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "picture",
      "name",
      "link",
      "caption",
      "description",
      "quote",
      "source",
      "properties",
      "object_attachment",
      "height",
      "width",
      "expanded_height",
      "expanded_width",
      "referral_id",
      "thumbnail",
      "image_crops",
      "call_to_action",
      "time_since_original_post",
      "client_mutation_id",
      "privacy",
      "composer_session_id",
      "content_attachment",
      "actions",
      "targeting",
      "feed_targeting",
      "ref",
      "tags",
      "place",
      "is_explicit_location",
      "og_action_type_id",
      "og_object_id",
      "og_phrase",
      "og_icon_id",
      "og_set_profile_badge",
      "og_suggestion_mechanism",
      "og_hide_object_attachment",
      "backdated_time",
      "backdated_time_granularity",
      "published",
      "scheduled_publish_time",
      "unpublished_content_type",
      "application_id",
      "proxied_app_id",
      "ios_bundle_id",
      "android_key_hash",
      "user_selected_tags",
      "nectar_module",
      "manual_privacy",
      "audience_exp",
      "coordinates",
      "is_explicit_share",
      "is_photo_container",
      "implicit_with_tags",
      "child_attachments",
      "suggested_place_id",
      "attach_place_suggestion",
      "viewer_coordinates",
      "album_id",
      "multi_share_optimized",
      "multi_share_end_card",
      "title",
      "attached_media",
      "home_checkin_city_id",
      "text_only_place",
      "connection_class",
      "associated_id",
      "posting_to_redspace",
      "place_attachment_setting",
      "checkin_entry_point",
      "is_backout_draft",
      "sponsor_id",
      "direct_share_status",
      "sponsor_relationship",
      "referenceable_image_ids",
      "prompt_id",
      "prompt_tracking_string",
      "post_surfaces_blacklist",
      "tracking_info",
      "text_format_preset_id",
      "cta_link",
      "cta_type",
      "place_list_data",
      "formatting",
      "target_surface",
      "adaptive_type",
      "animated_effect_id",
      "asked_fun_fact_prompt_id",
      "asset3d_id",
      "composer_entry_picker",
      "composer_entry_point",
      "composer_entry_time",
      "composer_session_events_log",
      "composer_source_surface",
      "composer_type",
      "fun_fact_prompt_id",
      "fun_fact_toastee_id",
      "is_group_linking_post",
      "has_nickname",
      "holiday_card",
      "instant_game_entry_point_data",
      "is_boost_intended",
      "location_source_id",
      "message",
      "offer_like_post_id",
      "page_recommendation",
      "place_list",
      "publish_event_id",
      "react_mode_metadata",
      "sales_promo_id",
      "text_format_metadata",
      "throwback_camera_roll_media",
      "video_start_time_ms",
      "enforce_link_ownership",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public PagePost parseResponse(String response, String header) throws APIException {
      return PagePost.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public PagePost execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public PagePost execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public PagePost apply(ResponseWrapper result) {
             try {
               return APIRequestCreateFeed.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateFeed(String nodeId, APIContext context) {
      super(context, nodeId, "/feed", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateFeed setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateFeed setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateFeed setPicture (String picture) {
      this.setParam("picture", picture);
      return this;
    }

    public APIRequestCreateFeed setName (String name) {
      this.setParam("name", name);
      return this;
    }

    public APIRequestCreateFeed setLink (String link) {
      this.setParam("link", link);
      return this;
    }

    public APIRequestCreateFeed setCaption (String caption) {
      this.setParam("caption", caption);
      return this;
    }

    public APIRequestCreateFeed setDescription (String description) {
      this.setParam("description", description);
      return this;
    }

    public APIRequestCreateFeed setQuote (String quote) {
      this.setParam("quote", quote);
      return this;
    }

    public APIRequestCreateFeed setSource (String source) {
      this.setParam("source", source);
      return this;
    }

    public APIRequestCreateFeed setProperties (Object properties) {
      this.setParam("properties", properties);
      return this;
    }
    public APIRequestCreateFeed setProperties (String properties) {
      this.setParam("properties", properties);
      return this;
    }

    public APIRequestCreateFeed setObjectAttachment (String objectAttachment) {
      this.setParam("object_attachment", objectAttachment);
      return this;
    }

    public APIRequestCreateFeed setHeight (Long height) {
      this.setParam("height", height);
      return this;
    }
    public APIRequestCreateFeed setHeight (String height) {
      this.setParam("height", height);
      return this;
    }

    public APIRequestCreateFeed setWidth (Long width) {
      this.setParam("width", width);
      return this;
    }
    public APIRequestCreateFeed setWidth (String width) {
      this.setParam("width", width);
      return this;
    }

    public APIRequestCreateFeed setExpandedHeight (Long expandedHeight) {
      this.setParam("expanded_height", expandedHeight);
      return this;
    }
    public APIRequestCreateFeed setExpandedHeight (String expandedHeight) {
      this.setParam("expanded_height", expandedHeight);
      return this;
    }

    public APIRequestCreateFeed setExpandedWidth (Long expandedWidth) {
      this.setParam("expanded_width", expandedWidth);
      return this;
    }
    public APIRequestCreateFeed setExpandedWidth (String expandedWidth) {
      this.setParam("expanded_width", expandedWidth);
      return this;
    }

    public APIRequestCreateFeed setReferralId (String referralId) {
      this.setParam("referral_id", referralId);
      return this;
    }

    public APIRequestCreateFeed setThumbnail (File thumbnail) {
      this.setParam("thumbnail", thumbnail);
      return this;
    }
    public APIRequestCreateFeed setThumbnail (String thumbnail) {
      this.setParam("thumbnail", thumbnail);
      return this;
    }

    public APIRequestCreateFeed setImageCrops (Map imageCrops) {
      this.setParam("image_crops", imageCrops);
      return this;
    }
    public APIRequestCreateFeed setImageCrops (String imageCrops) {
      this.setParam("image_crops", imageCrops);
      return this;
    }

    public APIRequestCreateFeed setCallToAction (Object callToAction) {
      this.setParam("call_to_action", callToAction);
      return this;
    }
    public APIRequestCreateFeed setCallToAction (String callToAction) {
      this.setParam("call_to_action", callToAction);
      return this;
    }

    public APIRequestCreateFeed setTimeSinceOriginalPost (Long timeSinceOriginalPost) {
      this.setParam("time_since_original_post", timeSinceOriginalPost);
      return this;
    }
    public APIRequestCreateFeed setTimeSinceOriginalPost (String timeSinceOriginalPost) {
      this.setParam("time_since_original_post", timeSinceOriginalPost);
      return this;
    }

    public APIRequestCreateFeed setClientMutationId (String clientMutationId) {
      this.setParam("client_mutation_id", clientMutationId);
      return this;
    }

    public APIRequestCreateFeed setPrivacy (String privacy) {
      this.setParam("privacy", privacy);
      return this;
    }

    public APIRequestCreateFeed setComposerSessionId (String composerSessionId) {
      this.setParam("composer_session_id", composerSessionId);
      return this;
    }

    public APIRequestCreateFeed setContentAttachment (String contentAttachment) {
      this.setParam("content_attachment", contentAttachment);
      return this;
    }

    public APIRequestCreateFeed setActions (Object actions) {
      this.setParam("actions", actions);
      return this;
    }
    public APIRequestCreateFeed setActions (String actions) {
      this.setParam("actions", actions);
      return this;
    }

    public APIRequestCreateFeed setTargeting (Object targeting) {
      this.setParam("targeting", targeting);
      return this;
    }
    public APIRequestCreateFeed setTargeting (String targeting) {
      this.setParam("targeting", targeting);
      return this;
    }

    public APIRequestCreateFeed setFeedTargeting (Object feedTargeting) {
      this.setParam("feed_targeting", feedTargeting);
      return this;
    }
    public APIRequestCreateFeed setFeedTargeting (String feedTargeting) {
      this.setParam("feed_targeting", feedTargeting);
      return this;
    }

    public APIRequestCreateFeed setRef (List ref) {
      this.setParam("ref", ref);
      return this;
    }
    public APIRequestCreateFeed setRef (String ref) {
      this.setParam("ref", ref);
      return this;
    }

    public APIRequestCreateFeed setTags (List tags) {
      this.setParam("tags", tags);
      return this;
    }
    public APIRequestCreateFeed setTags (String tags) {
      this.setParam("tags", tags);
      return this;
    }

    public APIRequestCreateFeed setPlace (Object place) {
      this.setParam("place", place);
      return this;
    }
    public APIRequestCreateFeed setPlace (String place) {
      this.setParam("place", place);
      return this;
    }

    public APIRequestCreateFeed setIsExplicitLocation (Boolean isExplicitLocation) {
      this.setParam("is_explicit_location", isExplicitLocation);
      return this;
    }
    public APIRequestCreateFeed setIsExplicitLocation (String isExplicitLocation) {
      this.setParam("is_explicit_location", isExplicitLocation);
      return this;
    }

    public APIRequestCreateFeed setOgActionTypeId (String ogActionTypeId) {
      this.setParam("og_action_type_id", ogActionTypeId);
      return this;
    }

    public APIRequestCreateFeed setOgObjectId (String ogObjectId) {
      this.setParam("og_object_id", ogObjectId);
      return this;
    }

    public APIRequestCreateFeed setOgPhrase (String ogPhrase) {
      this.setParam("og_phrase", ogPhrase);
      return this;
    }

    public APIRequestCreateFeed setOgIconId (String ogIconId) {
      this.setParam("og_icon_id", ogIconId);
      return this;
    }

    public APIRequestCreateFeed setOgSetProfileBadge (Boolean ogSetProfileBadge) {
      this.setParam("og_set_profile_badge", ogSetProfileBadge);
      return this;
    }
    public APIRequestCreateFeed setOgSetProfileBadge (String ogSetProfileBadge) {
      this.setParam("og_set_profile_badge", ogSetProfileBadge);
      return this;
    }

    public APIRequestCreateFeed setOgSuggestionMechanism (String ogSuggestionMechanism) {
      this.setParam("og_suggestion_mechanism", ogSuggestionMechanism);
      return this;
    }

    public APIRequestCreateFeed setOgHideObjectAttachment (Boolean ogHideObjectAttachment) {
      this.setParam("og_hide_object_attachment", ogHideObjectAttachment);
      return this;
    }
    public APIRequestCreateFeed setOgHideObjectAttachment (String ogHideObjectAttachment) {
      this.setParam("og_hide_object_attachment", ogHideObjectAttachment);
      return this;
    }

    public APIRequestCreateFeed setBackdatedTime (String backdatedTime) {
      this.setParam("backdated_time", backdatedTime);
      return this;
    }

    public APIRequestCreateFeed setBackdatedTimeGranularity (PagePost.EnumBackdatedTimeGranularity backdatedTimeGranularity) {
      this.setParam("backdated_time_granularity", backdatedTimeGranularity);
      return this;
    }
    public APIRequestCreateFeed setBackdatedTimeGranularity (String backdatedTimeGranularity) {
      this.setParam("backdated_time_granularity", backdatedTimeGranularity);
      return this;
    }

    public APIRequestCreateFeed setPublished (Boolean published) {
      this.setParam("published", published);
      return this;
    }
    public APIRequestCreateFeed setPublished (String published) {
      this.setParam("published", published);
      return this;
    }

    public APIRequestCreateFeed setScheduledPublishTime (String scheduledPublishTime) {
      this.setParam("scheduled_publish_time", scheduledPublishTime);
      return this;
    }

    public APIRequestCreateFeed setUnpublishedContentType (PagePost.EnumUnpublishedContentType unpublishedContentType) {
      this.setParam("unpublished_content_type", unpublishedContentType);
      return this;
    }
    public APIRequestCreateFeed setUnpublishedContentType (String unpublishedContentType) {
      this.setParam("unpublished_content_type", unpublishedContentType);
      return this;
    }

    public APIRequestCreateFeed setApplicationId (String applicationId) {
      this.setParam("application_id", applicationId);
      return this;
    }

    public APIRequestCreateFeed setProxiedAppId (String proxiedAppId) {
      this.setParam("proxied_app_id", proxiedAppId);
      return this;
    }

    public APIRequestCreateFeed setIosBundleId (String iosBundleId) {
      this.setParam("ios_bundle_id", iosBundleId);
      return this;
    }

    public APIRequestCreateFeed setAndroidKeyHash (String androidKeyHash) {
      this.setParam("android_key_hash", androidKeyHash);
      return this;
    }

    public APIRequestCreateFeed setUserSelectedTags (Boolean userSelectedTags) {
      this.setParam("user_selected_tags", userSelectedTags);
      return this;
    }
    public APIRequestCreateFeed setUserSelectedTags (String userSelectedTags) {
      this.setParam("user_selected_tags", userSelectedTags);
      return this;
    }

    public APIRequestCreateFeed setNectarModule (String nectarModule) {
      this.setParam("nectar_module", nectarModule);
      return this;
    }

    public APIRequestCreateFeed setManualPrivacy (Boolean manualPrivacy) {
      this.setParam("manual_privacy", manualPrivacy);
      return this;
    }
    public APIRequestCreateFeed setManualPrivacy (String manualPrivacy) {
      this.setParam("manual_privacy", manualPrivacy);
      return this;
    }

    public APIRequestCreateFeed setAudienceExp (Boolean audienceExp) {
      this.setParam("audience_exp", audienceExp);
      return this;
    }
    public APIRequestCreateFeed setAudienceExp (String audienceExp) {
      this.setParam("audience_exp", audienceExp);
      return this;
    }

    public APIRequestCreateFeed setCoordinates (Object coordinates) {
      this.setParam("coordinates", coordinates);
      return this;
    }
    public APIRequestCreateFeed setCoordinates (String coordinates) {
      this.setParam("coordinates", coordinates);
      return this;
    }

    public APIRequestCreateFeed setIsExplicitShare (Boolean isExplicitShare) {
      this.setParam("is_explicit_share", isExplicitShare);
      return this;
    }
    public APIRequestCreateFeed setIsExplicitShare (String isExplicitShare) {
      this.setParam("is_explicit_share", isExplicitShare);
      return this;
    }

    public APIRequestCreateFeed setIsPhotoContainer (Boolean isPhotoContainer) {
      this.setParam("is_photo_container", isPhotoContainer);
      return this;
    }
    public APIRequestCreateFeed setIsPhotoContainer (String isPhotoContainer) {
      this.setParam("is_photo_container", isPhotoContainer);
      return this;
    }

    public APIRequestCreateFeed setImplicitWithTags (List implicitWithTags) {
      this.setParam("implicit_with_tags", implicitWithTags);
      return this;
    }
    public APIRequestCreateFeed setImplicitWithTags (String implicitWithTags) {
      this.setParam("implicit_with_tags", implicitWithTags);
      return this;
    }

    public APIRequestCreateFeed setChildAttachments (List childAttachments) {
      this.setParam("child_attachments", childAttachments);
      return this;
    }
    public APIRequestCreateFeed setChildAttachments (String childAttachments) {
      this.setParam("child_attachments", childAttachments);
      return this;
    }

    public APIRequestCreateFeed setSuggestedPlaceId (Object suggestedPlaceId) {
      this.setParam("suggested_place_id", suggestedPlaceId);
      return this;
    }
    public APIRequestCreateFeed setSuggestedPlaceId (String suggestedPlaceId) {
      this.setParam("suggested_place_id", suggestedPlaceId);
      return this;
    }

    public APIRequestCreateFeed setAttachPlaceSuggestion (Boolean attachPlaceSuggestion) {
      this.setParam("attach_place_suggestion", attachPlaceSuggestion);
      return this;
    }
    public APIRequestCreateFeed setAttachPlaceSuggestion (String attachPlaceSuggestion) {
      this.setParam("attach_place_suggestion", attachPlaceSuggestion);
      return this;
    }

    public APIRequestCreateFeed setViewerCoordinates (Object viewerCoordinates) {
      this.setParam("viewer_coordinates", viewerCoordinates);
      return this;
    }
    public APIRequestCreateFeed setViewerCoordinates (String viewerCoordinates) {
      this.setParam("viewer_coordinates", viewerCoordinates);
      return this;
    }

    public APIRequestCreateFeed setAlbumId (String albumId) {
      this.setParam("album_id", albumId);
      return this;
    }

    public APIRequestCreateFeed setMultiShareOptimized (Boolean multiShareOptimized) {
      this.setParam("multi_share_optimized", multiShareOptimized);
      return this;
    }
    public APIRequestCreateFeed setMultiShareOptimized (String multiShareOptimized) {
      this.setParam("multi_share_optimized", multiShareOptimized);
      return this;
    }

    public APIRequestCreateFeed setMultiShareEndCard (Boolean multiShareEndCard) {
      this.setParam("multi_share_end_card", multiShareEndCard);
      return this;
    }
    public APIRequestCreateFeed setMultiShareEndCard (String multiShareEndCard) {
      this.setParam("multi_share_end_card", multiShareEndCard);
      return this;
    }

    public APIRequestCreateFeed setTitle (String title) {
      this.setParam("title", title);
      return this;
    }

    public APIRequestCreateFeed setAttachedMedia (List attachedMedia) {
      this.setParam("attached_media", attachedMedia);
      return this;
    }
    public APIRequestCreateFeed setAttachedMedia (String attachedMedia) {
      this.setParam("attached_media", attachedMedia);
      return this;
    }

    public APIRequestCreateFeed setHomeCheckinCityId (Object homeCheckinCityId) {
      this.setParam("home_checkin_city_id", homeCheckinCityId);
      return this;
    }
    public APIRequestCreateFeed setHomeCheckinCityId (String homeCheckinCityId) {
      this.setParam("home_checkin_city_id", homeCheckinCityId);
      return this;
    }

    public APIRequestCreateFeed setTextOnlyPlace (String textOnlyPlace) {
      this.setParam("text_only_place", textOnlyPlace);
      return this;
    }

    public APIRequestCreateFeed setConnectionClass (String connectionClass) {
      this.setParam("connection_class", connectionClass);
      return this;
    }

    public APIRequestCreateFeed setAssociatedId (String associatedId) {
      this.setParam("associated_id", associatedId);
      return this;
    }

    public APIRequestCreateFeed setPostingToRedspace (PagePost.EnumPostingToRedspace postingToRedspace) {
      this.setParam("posting_to_redspace", postingToRedspace);
      return this;
    }
    public APIRequestCreateFeed setPostingToRedspace (String postingToRedspace) {
      this.setParam("posting_to_redspace", postingToRedspace);
      return this;
    }

    public APIRequestCreateFeed setPlaceAttachmentSetting (PagePost.EnumPlaceAttachmentSetting placeAttachmentSetting) {
      this.setParam("place_attachment_setting", placeAttachmentSetting);
      return this;
    }
    public APIRequestCreateFeed setPlaceAttachmentSetting (String placeAttachmentSetting) {
      this.setParam("place_attachment_setting", placeAttachmentSetting);
      return this;
    }

    public APIRequestCreateFeed setCheckinEntryPoint (PagePost.EnumCheckinEntryPoint checkinEntryPoint) {
      this.setParam("checkin_entry_point", checkinEntryPoint);
      return this;
    }
    public APIRequestCreateFeed setCheckinEntryPoint (String checkinEntryPoint) {
      this.setParam("checkin_entry_point", checkinEntryPoint);
      return this;
    }

    public APIRequestCreateFeed setIsBackoutDraft (Boolean isBackoutDraft) {
      this.setParam("is_backout_draft", isBackoutDraft);
      return this;
    }
    public APIRequestCreateFeed setIsBackoutDraft (String isBackoutDraft) {
      this.setParam("is_backout_draft", isBackoutDraft);
      return this;
    }

    public APIRequestCreateFeed setSponsorId (String sponsorId) {
      this.setParam("sponsor_id", sponsorId);
      return this;
    }

    public APIRequestCreateFeed setDirectShareStatus (Long directShareStatus) {
      this.setParam("direct_share_status", directShareStatus);
      return this;
    }
    public APIRequestCreateFeed setDirectShareStatus (String directShareStatus) {
      this.setParam("direct_share_status", directShareStatus);
      return this;
    }

    public APIRequestCreateFeed setSponsorRelationship (Long sponsorRelationship) {
      this.setParam("sponsor_relationship", sponsorRelationship);
      return this;
    }
    public APIRequestCreateFeed setSponsorRelationship (String sponsorRelationship) {
      this.setParam("sponsor_relationship", sponsorRelationship);
      return this;
    }

    public APIRequestCreateFeed setReferenceableImageIds (List referenceableImageIds) {
      this.setParam("referenceable_image_ids", referenceableImageIds);
      return this;
    }
    public APIRequestCreateFeed setReferenceableImageIds (String referenceableImageIds) {
      this.setParam("referenceable_image_ids", referenceableImageIds);
      return this;
    }

    public APIRequestCreateFeed setPromptId (String promptId) {
      this.setParam("prompt_id", promptId);
      return this;
    }

    public APIRequestCreateFeed setPromptTrackingString (String promptTrackingString) {
      this.setParam("prompt_tracking_string", promptTrackingString);
      return this;
    }

    public APIRequestCreateFeed setPostSurfacesBlacklist (List postSurfacesBlacklist) {
      this.setParam("post_surfaces_blacklist", postSurfacesBlacklist);
      return this;
    }
    public APIRequestCreateFeed setPostSurfacesBlacklist (String postSurfacesBlacklist) {
      this.setParam("post_surfaces_blacklist", postSurfacesBlacklist);
      return this;
    }

    public APIRequestCreateFeed setTrackingInfo (String trackingInfo) {
      this.setParam("tracking_info", trackingInfo);
      return this;
    }

    public APIRequestCreateFeed setTextFormatPresetId (String textFormatPresetId) {
      this.setParam("text_format_preset_id", textFormatPresetId);
      return this;
    }

    public APIRequestCreateFeed setCtaLink (String ctaLink) {
      this.setParam("cta_link", ctaLink);
      return this;
    }

    public APIRequestCreateFeed setCtaType (String ctaType) {
      this.setParam("cta_type", ctaType);
      return this;
    }

    public APIRequestCreateFeed setPlaceListData (JsonArray placeListData) {
      this.setParam("place_list_data", placeListData);
      return this;
    }
    public APIRequestCreateFeed setPlaceListData (String placeListData) {
      this.setParam("place_list_data", placeListData);
      return this;
    }

    public APIRequestCreateFeed setFormatting (PagePost.EnumFormatting formatting) {
      this.setParam("formatting", formatting);
      return this;
    }
    public APIRequestCreateFeed setFormatting (String formatting) {
      this.setParam("formatting", formatting);
      return this;
    }

    public APIRequestCreateFeed setTargetSurface (PagePost.EnumTargetSurface targetSurface) {
      this.setParam("target_surface", targetSurface);
      return this;
    }
    public APIRequestCreateFeed setTargetSurface (String targetSurface) {
      this.setParam("target_surface", targetSurface);
      return this;
    }

    public APIRequestCreateFeed setAdaptiveType (String adaptiveType) {
      this.setParam("adaptive_type", adaptiveType);
      return this;
    }

    public APIRequestCreateFeed setAnimatedEffectId (Long animatedEffectId) {
      this.setParam("animated_effect_id", animatedEffectId);
      return this;
    }
    public APIRequestCreateFeed setAnimatedEffectId (String animatedEffectId) {
      this.setParam("animated_effect_id", animatedEffectId);
      return this;
    }

    public APIRequestCreateFeed setAskedFunFactPromptId (Long askedFunFactPromptId) {
      this.setParam("asked_fun_fact_prompt_id", askedFunFactPromptId);
      return this;
    }
    public APIRequestCreateFeed setAskedFunFactPromptId (String askedFunFactPromptId) {
      this.setParam("asked_fun_fact_prompt_id", askedFunFactPromptId);
      return this;
    }

    public APIRequestCreateFeed setAsset3dId (Long asset3dId) {
      this.setParam("asset3d_id", asset3dId);
      return this;
    }
    public APIRequestCreateFeed setAsset3dId (String asset3dId) {
      this.setParam("asset3d_id", asset3dId);
      return this;
    }

    public APIRequestCreateFeed setComposerEntryPicker (String composerEntryPicker) {
      this.setParam("composer_entry_picker", composerEntryPicker);
      return this;
    }

    public APIRequestCreateFeed setComposerEntryPoint (String composerEntryPoint) {
      this.setParam("composer_entry_point", composerEntryPoint);
      return this;
    }

    public APIRequestCreateFeed setComposerEntryTime (Long composerEntryTime) {
      this.setParam("composer_entry_time", composerEntryTime);
      return this;
    }
    public APIRequestCreateFeed setComposerEntryTime (String composerEntryTime) {
      this.setParam("composer_entry_time", composerEntryTime);
      return this;
    }

    public APIRequestCreateFeed setComposerSessionEventsLog (String composerSessionEventsLog) {
      this.setParam("composer_session_events_log", composerSessionEventsLog);
      return this;
    }

    public APIRequestCreateFeed setComposerSourceSurface (String composerSourceSurface) {
      this.setParam("composer_source_surface", composerSourceSurface);
      return this;
    }

    public APIRequestCreateFeed setComposerType (String composerType) {
      this.setParam("composer_type", composerType);
      return this;
    }

    public APIRequestCreateFeed setFunFactPromptId (Long funFactPromptId) {
      this.setParam("fun_fact_prompt_id", funFactPromptId);
      return this;
    }
    public APIRequestCreateFeed setFunFactPromptId (String funFactPromptId) {
      this.setParam("fun_fact_prompt_id", funFactPromptId);
      return this;
    }

    public APIRequestCreateFeed setFunFactToasteeId (Long funFactToasteeId) {
      this.setParam("fun_fact_toastee_id", funFactToasteeId);
      return this;
    }
    public APIRequestCreateFeed setFunFactToasteeId (String funFactToasteeId) {
      this.setParam("fun_fact_toastee_id", funFactToasteeId);
      return this;
    }

    public APIRequestCreateFeed setIsGroupLinkingPost (Boolean isGroupLinkingPost) {
      this.setParam("is_group_linking_post", isGroupLinkingPost);
      return this;
    }
    public APIRequestCreateFeed setIsGroupLinkingPost (String isGroupLinkingPost) {
      this.setParam("is_group_linking_post", isGroupLinkingPost);
      return this;
    }

    public APIRequestCreateFeed setHasNickname (Boolean hasNickname) {
      this.setParam("has_nickname", hasNickname);
      return this;
    }
    public APIRequestCreateFeed setHasNickname (String hasNickname) {
      this.setParam("has_nickname", hasNickname);
      return this;
    }

    public APIRequestCreateFeed setHolidayCard (String holidayCard) {
      this.setParam("holiday_card", holidayCard);
      return this;
    }

    public APIRequestCreateFeed setInstantGameEntryPointData (String instantGameEntryPointData) {
      this.setParam("instant_game_entry_point_data", instantGameEntryPointData);
      return this;
    }

    public APIRequestCreateFeed setIsBoostIntended (Boolean isBoostIntended) {
      this.setParam("is_boost_intended", isBoostIntended);
      return this;
    }
    public APIRequestCreateFeed setIsBoostIntended (String isBoostIntended) {
      this.setParam("is_boost_intended", isBoostIntended);
      return this;
    }

    public APIRequestCreateFeed setLocationSourceId (String locationSourceId) {
      this.setParam("location_source_id", locationSourceId);
      return this;
    }

    public APIRequestCreateFeed setMessage (String message) {
      this.setParam("message", message);
      return this;
    }

    public APIRequestCreateFeed setOfferLikePostId (Long offerLikePostId) {
      this.setParam("offer_like_post_id", offerLikePostId);
      return this;
    }
    public APIRequestCreateFeed setOfferLikePostId (String offerLikePostId) {
      this.setParam("offer_like_post_id", offerLikePostId);
      return this;
    }

    public APIRequestCreateFeed setPageRecommendation (String pageRecommendation) {
      this.setParam("page_recommendation", pageRecommendation);
      return this;
    }

    public APIRequestCreateFeed setPlaceList (String placeList) {
      this.setParam("place_list", placeList);
      return this;
    }

    public APIRequestCreateFeed setPublishEventId (Long publishEventId) {
      this.setParam("publish_event_id", publishEventId);
      return this;
    }
    public APIRequestCreateFeed setPublishEventId (String publishEventId) {
      this.setParam("publish_event_id", publishEventId);
      return this;
    }

    public APIRequestCreateFeed setReactModeMetadata (String reactModeMetadata) {
      this.setParam("react_mode_metadata", reactModeMetadata);
      return this;
    }

    public APIRequestCreateFeed setSalesPromoId (Long salesPromoId) {
      this.setParam("sales_promo_id", salesPromoId);
      return this;
    }
    public APIRequestCreateFeed setSalesPromoId (String salesPromoId) {
      this.setParam("sales_promo_id", salesPromoId);
      return this;
    }

    public APIRequestCreateFeed setTextFormatMetadata (String textFormatMetadata) {
      this.setParam("text_format_metadata", textFormatMetadata);
      return this;
    }

    public APIRequestCreateFeed setThrowbackCameraRollMedia (String throwbackCameraRollMedia) {
      this.setParam("throwback_camera_roll_media", throwbackCameraRollMedia);
      return this;
    }

    public APIRequestCreateFeed setVideoStartTimeMs (Long videoStartTimeMs) {
      this.setParam("video_start_time_ms", videoStartTimeMs);
      return this;
    }
    public APIRequestCreateFeed setVideoStartTimeMs (String videoStartTimeMs) {
      this.setParam("video_start_time_ms", videoStartTimeMs);
      return this;
    }

    public APIRequestCreateFeed setEnforceLinkOwnership (Boolean enforceLinkOwnership) {
      this.setParam("enforce_link_ownership", enforceLinkOwnership);
      return this;
    }
    public APIRequestCreateFeed setEnforceLinkOwnership (String enforceLinkOwnership) {
      this.setParam("enforce_link_ownership", enforceLinkOwnership);
      return this;
    }

    public APIRequestCreateFeed requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateFeed requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateFeed requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateFeed requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateFeed requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateFeed requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreateFlag extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "page_id",
      "page_ids",
      "flag",
      "value",
      "entry_point",
      "endpoint",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateFlag.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateFlag(String nodeId, APIContext context) {
      super(context, nodeId, "/flags", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateFlag setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateFlag setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateFlag setPageId (Long pageId) {
      this.setParam("page_id", pageId);
      return this;
    }
    public APIRequestCreateFlag setPageId (String pageId) {
      this.setParam("page_id", pageId);
      return this;
    }

    public APIRequestCreateFlag setPageIds (List pageIds) {
      this.setParam("page_ids", pageIds);
      return this;
    }
    public APIRequestCreateFlag setPageIds (String pageIds) {
      this.setParam("page_ids", pageIds);
      return this;
    }

    public APIRequestCreateFlag setFlag (String flag) {
      this.setParam("flag", flag);
      return this;
    }

    public APIRequestCreateFlag setValue (Boolean value) {
      this.setParam("value", value);
      return this;
    }
    public APIRequestCreateFlag setValue (String value) {
      this.setParam("value", value);
      return this;
    }

    public APIRequestCreateFlag setEntryPoint (String entryPoint) {
      this.setParam("entry_point", entryPoint);
      return this;
    }

    public APIRequestCreateFlag setEndpoint (String endpoint) {
      this.setParam("endpoint", endpoint);
      return this;
    }

    public APIRequestCreateFlag requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateFlag requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateFlag requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateFlag requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateFlag requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateFlag requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetGlobalBrandChildren extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "about",
      "access_token",
      "ad_campaign",
      "affiliation",
      "app_id",
      "app_links",
      "artists_we_like",
      "attire",
      "awards",
      "band_interests",
      "band_members",
      "best_page",
      "bio",
      "birthday",
      "booking_agent",
      "built",
      "business",
      "can_checkin",
      "can_post",
      "category",
      "category_list",
      "checkins",
      "company_overview",
      "connected_instagram_account",
      "contact_address",
      "context",
      "copyright_attribution_insights",
      "copyright_whitelisted_ig_partners",
      "country_page_likes",
      "cover",
      "culinary_team",
      "current_location",
      "description",
      "description_html",
      "directed_by",
      "display_subtext",
      "displayed_message_response_time",
      "emails",
      "engagement",
      "fan_count",
      "featured_video",
      "features",
      "food_styles",
      "founded",
      "general_info",
      "general_manager",
      "genre",
      "global_brand_page_name",
      "global_brand_root_id",
      "has_added_app",
      "has_whatsapp_business_number",
      "has_whatsapp_number",
      "hometown",
      "hours",
      "id",
      "impressum",
      "influences",
      "instagram_business_account",
      "instant_articles_review_status",
      "is_always_open",
      "is_chain",
      "is_community_page",
      "is_eligible_for_branded_content",
      "is_messenger_bot_get_started_enabled",
      "is_messenger_platform_bot",
      "is_owned",
      "is_permanently_closed",
      "is_published",
      "is_unclaimed",
      "is_verified",
      "is_webhooks_subscribed",
      "keywords",
      "leadgen_form_preview_details",
      "leadgen_has_crm_integration",
      "leadgen_has_fat_ping_crm_integration",
      "leadgen_tos_acceptance_time",
      "leadgen_tos_accepted",
      "leadgen_tos_accepting_user",
      "link",
      "location",
      "members",
      "merchant_id",
      "merchant_review_status",
      "messenger_ads_default_icebreakers",
      "messenger_ads_default_page_welcome_message",
      "messenger_ads_default_quick_replies",
      "messenger_ads_quick_replies_type",
      "mission",
      "mpg",
      "name",
      "name_with_location_descriptor",
      "network",
      "new_like_count",
      "offer_eligible",
      "overall_star_rating",
      "page_about_story",
      "page_token",
      "parent_page",
      "parking",
      "payment_options",
      "personal_info",
      "personal_interests",
      "pharma_safety_info",
      "phone",
      "place_type",
      "plot_outline",
      "preferred_audience",
      "press_contact",
      "price_range",
      "privacy_info_url",
      "produced_by",
      "products",
      "promotion_eligible",
      "promotion_ineligible_reason",
      "public_transit",
      "rating_count",
      "recipient",
      "record_label",
      "release_date",
      "restaurant_services",
      "restaurant_specialties",
      "schedule",
      "screenplay_by",
      "season",
      "single_line_address",
      "starring",
      "start_info",
      "store_code",
      "store_location_descriptor",
      "store_number",
      "studio",
      "supports_instant_articles",
      "talking_about_count",
      "unread_message_count",
      "unread_notif_count",
      "unseen_message_count",
      "username",
      "verification_status",
      "voip_info",
      "website",
      "were_here_count",
      "whatsapp_number",
      "written_by",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetGlobalBrandChildren.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetGlobalBrandChildren(String nodeId, APIContext context) {
      super(context, nodeId, "/global_brand_children", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetGlobalBrandChildren setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetGlobalBrandChildren setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetGlobalBrandChildren requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetGlobalBrandChildren requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetGlobalBrandChildren requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetGlobalBrandChildren requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetGlobalBrandChildren requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetGlobalBrandChildren requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetGlobalBrandChildren requestAboutField () {
      return this.requestAboutField(true);
    }
    public APIRequestGetGlobalBrandChildren requestAboutField (boolean value) {
      this.requestField("about", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestAccessTokenField () {
      return this.requestAccessTokenField(true);
    }
    public APIRequestGetGlobalBrandChildren requestAccessTokenField (boolean value) {
      this.requestField("access_token", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestAdCampaignField () {
      return this.requestAdCampaignField(true);
    }
    public APIRequestGetGlobalBrandChildren requestAdCampaignField (boolean value) {
      this.requestField("ad_campaign", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestAffiliationField () {
      return this.requestAffiliationField(true);
    }
    public APIRequestGetGlobalBrandChildren requestAffiliationField (boolean value) {
      this.requestField("affiliation", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestAppIdField () {
      return this.requestAppIdField(true);
    }
    public APIRequestGetGlobalBrandChildren requestAppIdField (boolean value) {
      this.requestField("app_id", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestAppLinksField () {
      return this.requestAppLinksField(true);
    }
    public APIRequestGetGlobalBrandChildren requestAppLinksField (boolean value) {
      this.requestField("app_links", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestArtistsWeLikeField () {
      return this.requestArtistsWeLikeField(true);
    }
    public APIRequestGetGlobalBrandChildren requestArtistsWeLikeField (boolean value) {
      this.requestField("artists_we_like", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestAttireField () {
      return this.requestAttireField(true);
    }
    public APIRequestGetGlobalBrandChildren requestAttireField (boolean value) {
      this.requestField("attire", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestAwardsField () {
      return this.requestAwardsField(true);
    }
    public APIRequestGetGlobalBrandChildren requestAwardsField (boolean value) {
      this.requestField("awards", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestBandInterestsField () {
      return this.requestBandInterestsField(true);
    }
    public APIRequestGetGlobalBrandChildren requestBandInterestsField (boolean value) {
      this.requestField("band_interests", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestBandMembersField () {
      return this.requestBandMembersField(true);
    }
    public APIRequestGetGlobalBrandChildren requestBandMembersField (boolean value) {
      this.requestField("band_members", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestBestPageField () {
      return this.requestBestPageField(true);
    }
    public APIRequestGetGlobalBrandChildren requestBestPageField (boolean value) {
      this.requestField("best_page", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestBioField () {
      return this.requestBioField(true);
    }
    public APIRequestGetGlobalBrandChildren requestBioField (boolean value) {
      this.requestField("bio", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestBirthdayField () {
      return this.requestBirthdayField(true);
    }
    public APIRequestGetGlobalBrandChildren requestBirthdayField (boolean value) {
      this.requestField("birthday", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestBookingAgentField () {
      return this.requestBookingAgentField(true);
    }
    public APIRequestGetGlobalBrandChildren requestBookingAgentField (boolean value) {
      this.requestField("booking_agent", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestBuiltField () {
      return this.requestBuiltField(true);
    }
    public APIRequestGetGlobalBrandChildren requestBuiltField (boolean value) {
      this.requestField("built", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestBusinessField () {
      return this.requestBusinessField(true);
    }
    public APIRequestGetGlobalBrandChildren requestBusinessField (boolean value) {
      this.requestField("business", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestCanCheckinField () {
      return this.requestCanCheckinField(true);
    }
    public APIRequestGetGlobalBrandChildren requestCanCheckinField (boolean value) {
      this.requestField("can_checkin", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestCanPostField () {
      return this.requestCanPostField(true);
    }
    public APIRequestGetGlobalBrandChildren requestCanPostField (boolean value) {
      this.requestField("can_post", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestCategoryField () {
      return this.requestCategoryField(true);
    }
    public APIRequestGetGlobalBrandChildren requestCategoryField (boolean value) {
      this.requestField("category", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestCategoryListField () {
      return this.requestCategoryListField(true);
    }
    public APIRequestGetGlobalBrandChildren requestCategoryListField (boolean value) {
      this.requestField("category_list", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestCheckinsField () {
      return this.requestCheckinsField(true);
    }
    public APIRequestGetGlobalBrandChildren requestCheckinsField (boolean value) {
      this.requestField("checkins", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestCompanyOverviewField () {
      return this.requestCompanyOverviewField(true);
    }
    public APIRequestGetGlobalBrandChildren requestCompanyOverviewField (boolean value) {
      this.requestField("company_overview", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestConnectedInstagramAccountField () {
      return this.requestConnectedInstagramAccountField(true);
    }
    public APIRequestGetGlobalBrandChildren requestConnectedInstagramAccountField (boolean value) {
      this.requestField("connected_instagram_account", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestContactAddressField () {
      return this.requestContactAddressField(true);
    }
    public APIRequestGetGlobalBrandChildren requestContactAddressField (boolean value) {
      this.requestField("contact_address", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestContextField () {
      return this.requestContextField(true);
    }
    public APIRequestGetGlobalBrandChildren requestContextField (boolean value) {
      this.requestField("context", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestCopyrightAttributionInsightsField () {
      return this.requestCopyrightAttributionInsightsField(true);
    }
    public APIRequestGetGlobalBrandChildren requestCopyrightAttributionInsightsField (boolean value) {
      this.requestField("copyright_attribution_insights", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestCopyrightWhitelistedIgPartnersField () {
      return this.requestCopyrightWhitelistedIgPartnersField(true);
    }
    public APIRequestGetGlobalBrandChildren requestCopyrightWhitelistedIgPartnersField (boolean value) {
      this.requestField("copyright_whitelisted_ig_partners", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestCountryPageLikesField () {
      return this.requestCountryPageLikesField(true);
    }
    public APIRequestGetGlobalBrandChildren requestCountryPageLikesField (boolean value) {
      this.requestField("country_page_likes", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestCoverField () {
      return this.requestCoverField(true);
    }
    public APIRequestGetGlobalBrandChildren requestCoverField (boolean value) {
      this.requestField("cover", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestCulinaryTeamField () {
      return this.requestCulinaryTeamField(true);
    }
    public APIRequestGetGlobalBrandChildren requestCulinaryTeamField (boolean value) {
      this.requestField("culinary_team", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestCurrentLocationField () {
      return this.requestCurrentLocationField(true);
    }
    public APIRequestGetGlobalBrandChildren requestCurrentLocationField (boolean value) {
      this.requestField("current_location", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetGlobalBrandChildren requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestDescriptionHtmlField () {
      return this.requestDescriptionHtmlField(true);
    }
    public APIRequestGetGlobalBrandChildren requestDescriptionHtmlField (boolean value) {
      this.requestField("description_html", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestDirectedByField () {
      return this.requestDirectedByField(true);
    }
    public APIRequestGetGlobalBrandChildren requestDirectedByField (boolean value) {
      this.requestField("directed_by", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestDisplaySubtextField () {
      return this.requestDisplaySubtextField(true);
    }
    public APIRequestGetGlobalBrandChildren requestDisplaySubtextField (boolean value) {
      this.requestField("display_subtext", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestDisplayedMessageResponseTimeField () {
      return this.requestDisplayedMessageResponseTimeField(true);
    }
    public APIRequestGetGlobalBrandChildren requestDisplayedMessageResponseTimeField (boolean value) {
      this.requestField("displayed_message_response_time", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestEmailsField () {
      return this.requestEmailsField(true);
    }
    public APIRequestGetGlobalBrandChildren requestEmailsField (boolean value) {
      this.requestField("emails", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestEngagementField () {
      return this.requestEngagementField(true);
    }
    public APIRequestGetGlobalBrandChildren requestEngagementField (boolean value) {
      this.requestField("engagement", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestFanCountField () {
      return this.requestFanCountField(true);
    }
    public APIRequestGetGlobalBrandChildren requestFanCountField (boolean value) {
      this.requestField("fan_count", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestFeaturedVideoField () {
      return this.requestFeaturedVideoField(true);
    }
    public APIRequestGetGlobalBrandChildren requestFeaturedVideoField (boolean value) {
      this.requestField("featured_video", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestFeaturesField () {
      return this.requestFeaturesField(true);
    }
    public APIRequestGetGlobalBrandChildren requestFeaturesField (boolean value) {
      this.requestField("features", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestFoodStylesField () {
      return this.requestFoodStylesField(true);
    }
    public APIRequestGetGlobalBrandChildren requestFoodStylesField (boolean value) {
      this.requestField("food_styles", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestFoundedField () {
      return this.requestFoundedField(true);
    }
    public APIRequestGetGlobalBrandChildren requestFoundedField (boolean value) {
      this.requestField("founded", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestGeneralInfoField () {
      return this.requestGeneralInfoField(true);
    }
    public APIRequestGetGlobalBrandChildren requestGeneralInfoField (boolean value) {
      this.requestField("general_info", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestGeneralManagerField () {
      return this.requestGeneralManagerField(true);
    }
    public APIRequestGetGlobalBrandChildren requestGeneralManagerField (boolean value) {
      this.requestField("general_manager", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestGenreField () {
      return this.requestGenreField(true);
    }
    public APIRequestGetGlobalBrandChildren requestGenreField (boolean value) {
      this.requestField("genre", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestGlobalBrandPageNameField () {
      return this.requestGlobalBrandPageNameField(true);
    }
    public APIRequestGetGlobalBrandChildren requestGlobalBrandPageNameField (boolean value) {
      this.requestField("global_brand_page_name", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestGlobalBrandRootIdField () {
      return this.requestGlobalBrandRootIdField(true);
    }
    public APIRequestGetGlobalBrandChildren requestGlobalBrandRootIdField (boolean value) {
      this.requestField("global_brand_root_id", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestHasAddedAppField () {
      return this.requestHasAddedAppField(true);
    }
    public APIRequestGetGlobalBrandChildren requestHasAddedAppField (boolean value) {
      this.requestField("has_added_app", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestHasWhatsappBusinessNumberField () {
      return this.requestHasWhatsappBusinessNumberField(true);
    }
    public APIRequestGetGlobalBrandChildren requestHasWhatsappBusinessNumberField (boolean value) {
      this.requestField("has_whatsapp_business_number", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestHasWhatsappNumberField () {
      return this.requestHasWhatsappNumberField(true);
    }
    public APIRequestGetGlobalBrandChildren requestHasWhatsappNumberField (boolean value) {
      this.requestField("has_whatsapp_number", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestHometownField () {
      return this.requestHometownField(true);
    }
    public APIRequestGetGlobalBrandChildren requestHometownField (boolean value) {
      this.requestField("hometown", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestHoursField () {
      return this.requestHoursField(true);
    }
    public APIRequestGetGlobalBrandChildren requestHoursField (boolean value) {
      this.requestField("hours", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetGlobalBrandChildren requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestImpressumField () {
      return this.requestImpressumField(true);
    }
    public APIRequestGetGlobalBrandChildren requestImpressumField (boolean value) {
      this.requestField("impressum", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestInfluencesField () {
      return this.requestInfluencesField(true);
    }
    public APIRequestGetGlobalBrandChildren requestInfluencesField (boolean value) {
      this.requestField("influences", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestInstagramBusinessAccountField () {
      return this.requestInstagramBusinessAccountField(true);
    }
    public APIRequestGetGlobalBrandChildren requestInstagramBusinessAccountField (boolean value) {
      this.requestField("instagram_business_account", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestInstantArticlesReviewStatusField () {
      return this.requestInstantArticlesReviewStatusField(true);
    }
    public APIRequestGetGlobalBrandChildren requestInstantArticlesReviewStatusField (boolean value) {
      this.requestField("instant_articles_review_status", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestIsAlwaysOpenField () {
      return this.requestIsAlwaysOpenField(true);
    }
    public APIRequestGetGlobalBrandChildren requestIsAlwaysOpenField (boolean value) {
      this.requestField("is_always_open", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestIsChainField () {
      return this.requestIsChainField(true);
    }
    public APIRequestGetGlobalBrandChildren requestIsChainField (boolean value) {
      this.requestField("is_chain", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestIsCommunityPageField () {
      return this.requestIsCommunityPageField(true);
    }
    public APIRequestGetGlobalBrandChildren requestIsCommunityPageField (boolean value) {
      this.requestField("is_community_page", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestIsEligibleForBrandedContentField () {
      return this.requestIsEligibleForBrandedContentField(true);
    }
    public APIRequestGetGlobalBrandChildren requestIsEligibleForBrandedContentField (boolean value) {
      this.requestField("is_eligible_for_branded_content", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestIsMessengerBotGetStartedEnabledField () {
      return this.requestIsMessengerBotGetStartedEnabledField(true);
    }
    public APIRequestGetGlobalBrandChildren requestIsMessengerBotGetStartedEnabledField (boolean value) {
      this.requestField("is_messenger_bot_get_started_enabled", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestIsMessengerPlatformBotField () {
      return this.requestIsMessengerPlatformBotField(true);
    }
    public APIRequestGetGlobalBrandChildren requestIsMessengerPlatformBotField (boolean value) {
      this.requestField("is_messenger_platform_bot", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestIsOwnedField () {
      return this.requestIsOwnedField(true);
    }
    public APIRequestGetGlobalBrandChildren requestIsOwnedField (boolean value) {
      this.requestField("is_owned", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestIsPermanentlyClosedField () {
      return this.requestIsPermanentlyClosedField(true);
    }
    public APIRequestGetGlobalBrandChildren requestIsPermanentlyClosedField (boolean value) {
      this.requestField("is_permanently_closed", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetGlobalBrandChildren requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestIsUnclaimedField () {
      return this.requestIsUnclaimedField(true);
    }
    public APIRequestGetGlobalBrandChildren requestIsUnclaimedField (boolean value) {
      this.requestField("is_unclaimed", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestIsVerifiedField () {
      return this.requestIsVerifiedField(true);
    }
    public APIRequestGetGlobalBrandChildren requestIsVerifiedField (boolean value) {
      this.requestField("is_verified", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestIsWebhooksSubscribedField () {
      return this.requestIsWebhooksSubscribedField(true);
    }
    public APIRequestGetGlobalBrandChildren requestIsWebhooksSubscribedField (boolean value) {
      this.requestField("is_webhooks_subscribed", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestKeywordsField () {
      return this.requestKeywordsField(true);
    }
    public APIRequestGetGlobalBrandChildren requestKeywordsField (boolean value) {
      this.requestField("keywords", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestLeadgenFormPreviewDetailsField () {
      return this.requestLeadgenFormPreviewDetailsField(true);
    }
    public APIRequestGetGlobalBrandChildren requestLeadgenFormPreviewDetailsField (boolean value) {
      this.requestField("leadgen_form_preview_details", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestLeadgenHasCrmIntegrationField () {
      return this.requestLeadgenHasCrmIntegrationField(true);
    }
    public APIRequestGetGlobalBrandChildren requestLeadgenHasCrmIntegrationField (boolean value) {
      this.requestField("leadgen_has_crm_integration", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestLeadgenHasFatPingCrmIntegrationField () {
      return this.requestLeadgenHasFatPingCrmIntegrationField(true);
    }
    public APIRequestGetGlobalBrandChildren requestLeadgenHasFatPingCrmIntegrationField (boolean value) {
      this.requestField("leadgen_has_fat_ping_crm_integration", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestLeadgenTosAcceptanceTimeField () {
      return this.requestLeadgenTosAcceptanceTimeField(true);
    }
    public APIRequestGetGlobalBrandChildren requestLeadgenTosAcceptanceTimeField (boolean value) {
      this.requestField("leadgen_tos_acceptance_time", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestLeadgenTosAcceptedField () {
      return this.requestLeadgenTosAcceptedField(true);
    }
    public APIRequestGetGlobalBrandChildren requestLeadgenTosAcceptedField (boolean value) {
      this.requestField("leadgen_tos_accepted", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestLeadgenTosAcceptingUserField () {
      return this.requestLeadgenTosAcceptingUserField(true);
    }
    public APIRequestGetGlobalBrandChildren requestLeadgenTosAcceptingUserField (boolean value) {
      this.requestField("leadgen_tos_accepting_user", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetGlobalBrandChildren requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestLocationField () {
      return this.requestLocationField(true);
    }
    public APIRequestGetGlobalBrandChildren requestLocationField (boolean value) {
      this.requestField("location", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestMembersField () {
      return this.requestMembersField(true);
    }
    public APIRequestGetGlobalBrandChildren requestMembersField (boolean value) {
      this.requestField("members", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestMerchantIdField () {
      return this.requestMerchantIdField(true);
    }
    public APIRequestGetGlobalBrandChildren requestMerchantIdField (boolean value) {
      this.requestField("merchant_id", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestMerchantReviewStatusField () {
      return this.requestMerchantReviewStatusField(true);
    }
    public APIRequestGetGlobalBrandChildren requestMerchantReviewStatusField (boolean value) {
      this.requestField("merchant_review_status", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestMessengerAdsDefaultIcebreakersField () {
      return this.requestMessengerAdsDefaultIcebreakersField(true);
    }
    public APIRequestGetGlobalBrandChildren requestMessengerAdsDefaultIcebreakersField (boolean value) {
      this.requestField("messenger_ads_default_icebreakers", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestMessengerAdsDefaultPageWelcomeMessageField () {
      return this.requestMessengerAdsDefaultPageWelcomeMessageField(true);
    }
    public APIRequestGetGlobalBrandChildren requestMessengerAdsDefaultPageWelcomeMessageField (boolean value) {
      this.requestField("messenger_ads_default_page_welcome_message", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestMessengerAdsDefaultQuickRepliesField () {
      return this.requestMessengerAdsDefaultQuickRepliesField(true);
    }
    public APIRequestGetGlobalBrandChildren requestMessengerAdsDefaultQuickRepliesField (boolean value) {
      this.requestField("messenger_ads_default_quick_replies", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestMessengerAdsQuickRepliesTypeField () {
      return this.requestMessengerAdsQuickRepliesTypeField(true);
    }
    public APIRequestGetGlobalBrandChildren requestMessengerAdsQuickRepliesTypeField (boolean value) {
      this.requestField("messenger_ads_quick_replies_type", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestMissionField () {
      return this.requestMissionField(true);
    }
    public APIRequestGetGlobalBrandChildren requestMissionField (boolean value) {
      this.requestField("mission", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestMpgField () {
      return this.requestMpgField(true);
    }
    public APIRequestGetGlobalBrandChildren requestMpgField (boolean value) {
      this.requestField("mpg", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetGlobalBrandChildren requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestNameWithLocationDescriptorField () {
      return this.requestNameWithLocationDescriptorField(true);
    }
    public APIRequestGetGlobalBrandChildren requestNameWithLocationDescriptorField (boolean value) {
      this.requestField("name_with_location_descriptor", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestNetworkField () {
      return this.requestNetworkField(true);
    }
    public APIRequestGetGlobalBrandChildren requestNetworkField (boolean value) {
      this.requestField("network", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestNewLikeCountField () {
      return this.requestNewLikeCountField(true);
    }
    public APIRequestGetGlobalBrandChildren requestNewLikeCountField (boolean value) {
      this.requestField("new_like_count", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestOfferEligibleField () {
      return this.requestOfferEligibleField(true);
    }
    public APIRequestGetGlobalBrandChildren requestOfferEligibleField (boolean value) {
      this.requestField("offer_eligible", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestOverallStarRatingField () {
      return this.requestOverallStarRatingField(true);
    }
    public APIRequestGetGlobalBrandChildren requestOverallStarRatingField (boolean value) {
      this.requestField("overall_star_rating", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPageAboutStoryField () {
      return this.requestPageAboutStoryField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPageAboutStoryField (boolean value) {
      this.requestField("page_about_story", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPageTokenField () {
      return this.requestPageTokenField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPageTokenField (boolean value) {
      this.requestField("page_token", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestParentPageField () {
      return this.requestParentPageField(true);
    }
    public APIRequestGetGlobalBrandChildren requestParentPageField (boolean value) {
      this.requestField("parent_page", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestParkingField () {
      return this.requestParkingField(true);
    }
    public APIRequestGetGlobalBrandChildren requestParkingField (boolean value) {
      this.requestField("parking", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPaymentOptionsField () {
      return this.requestPaymentOptionsField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPaymentOptionsField (boolean value) {
      this.requestField("payment_options", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPersonalInfoField () {
      return this.requestPersonalInfoField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPersonalInfoField (boolean value) {
      this.requestField("personal_info", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPersonalInterestsField () {
      return this.requestPersonalInterestsField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPersonalInterestsField (boolean value) {
      this.requestField("personal_interests", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPharmaSafetyInfoField () {
      return this.requestPharmaSafetyInfoField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPharmaSafetyInfoField (boolean value) {
      this.requestField("pharma_safety_info", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPhoneField () {
      return this.requestPhoneField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPhoneField (boolean value) {
      this.requestField("phone", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPlaceTypeField () {
      return this.requestPlaceTypeField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPlaceTypeField (boolean value) {
      this.requestField("place_type", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPlotOutlineField () {
      return this.requestPlotOutlineField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPlotOutlineField (boolean value) {
      this.requestField("plot_outline", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPreferredAudienceField () {
      return this.requestPreferredAudienceField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPreferredAudienceField (boolean value) {
      this.requestField("preferred_audience", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPressContactField () {
      return this.requestPressContactField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPressContactField (boolean value) {
      this.requestField("press_contact", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPriceRangeField () {
      return this.requestPriceRangeField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPriceRangeField (boolean value) {
      this.requestField("price_range", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPrivacyInfoUrlField () {
      return this.requestPrivacyInfoUrlField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPrivacyInfoUrlField (boolean value) {
      this.requestField("privacy_info_url", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestProducedByField () {
      return this.requestProducedByField(true);
    }
    public APIRequestGetGlobalBrandChildren requestProducedByField (boolean value) {
      this.requestField("produced_by", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestProductsField () {
      return this.requestProductsField(true);
    }
    public APIRequestGetGlobalBrandChildren requestProductsField (boolean value) {
      this.requestField("products", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPromotionEligibleField () {
      return this.requestPromotionEligibleField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPromotionEligibleField (boolean value) {
      this.requestField("promotion_eligible", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPromotionIneligibleReasonField () {
      return this.requestPromotionIneligibleReasonField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPromotionIneligibleReasonField (boolean value) {
      this.requestField("promotion_ineligible_reason", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestPublicTransitField () {
      return this.requestPublicTransitField(true);
    }
    public APIRequestGetGlobalBrandChildren requestPublicTransitField (boolean value) {
      this.requestField("public_transit", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestRatingCountField () {
      return this.requestRatingCountField(true);
    }
    public APIRequestGetGlobalBrandChildren requestRatingCountField (boolean value) {
      this.requestField("rating_count", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestRecipientField () {
      return this.requestRecipientField(true);
    }
    public APIRequestGetGlobalBrandChildren requestRecipientField (boolean value) {
      this.requestField("recipient", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestRecordLabelField () {
      return this.requestRecordLabelField(true);
    }
    public APIRequestGetGlobalBrandChildren requestRecordLabelField (boolean value) {
      this.requestField("record_label", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestReleaseDateField () {
      return this.requestReleaseDateField(true);
    }
    public APIRequestGetGlobalBrandChildren requestReleaseDateField (boolean value) {
      this.requestField("release_date", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestRestaurantServicesField () {
      return this.requestRestaurantServicesField(true);
    }
    public APIRequestGetGlobalBrandChildren requestRestaurantServicesField (boolean value) {
      this.requestField("restaurant_services", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestRestaurantSpecialtiesField () {
      return this.requestRestaurantSpecialtiesField(true);
    }
    public APIRequestGetGlobalBrandChildren requestRestaurantSpecialtiesField (boolean value) {
      this.requestField("restaurant_specialties", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestScheduleField () {
      return this.requestScheduleField(true);
    }
    public APIRequestGetGlobalBrandChildren requestScheduleField (boolean value) {
      this.requestField("schedule", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestScreenplayByField () {
      return this.requestScreenplayByField(true);
    }
    public APIRequestGetGlobalBrandChildren requestScreenplayByField (boolean value) {
      this.requestField("screenplay_by", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestSeasonField () {
      return this.requestSeasonField(true);
    }
    public APIRequestGetGlobalBrandChildren requestSeasonField (boolean value) {
      this.requestField("season", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestSingleLineAddressField () {
      return this.requestSingleLineAddressField(true);
    }
    public APIRequestGetGlobalBrandChildren requestSingleLineAddressField (boolean value) {
      this.requestField("single_line_address", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestStarringField () {
      return this.requestStarringField(true);
    }
    public APIRequestGetGlobalBrandChildren requestStarringField (boolean value) {
      this.requestField("starring", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestStartInfoField () {
      return this.requestStartInfoField(true);
    }
    public APIRequestGetGlobalBrandChildren requestStartInfoField (boolean value) {
      this.requestField("start_info", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestStoreCodeField () {
      return this.requestStoreCodeField(true);
    }
    public APIRequestGetGlobalBrandChildren requestStoreCodeField (boolean value) {
      this.requestField("store_code", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestStoreLocationDescriptorField () {
      return this.requestStoreLocationDescriptorField(true);
    }
    public APIRequestGetGlobalBrandChildren requestStoreLocationDescriptorField (boolean value) {
      this.requestField("store_location_descriptor", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestStoreNumberField () {
      return this.requestStoreNumberField(true);
    }
    public APIRequestGetGlobalBrandChildren requestStoreNumberField (boolean value) {
      this.requestField("store_number", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestStudioField () {
      return this.requestStudioField(true);
    }
    public APIRequestGetGlobalBrandChildren requestStudioField (boolean value) {
      this.requestField("studio", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestSupportsInstantArticlesField () {
      return this.requestSupportsInstantArticlesField(true);
    }
    public APIRequestGetGlobalBrandChildren requestSupportsInstantArticlesField (boolean value) {
      this.requestField("supports_instant_articles", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestTalkingAboutCountField () {
      return this.requestTalkingAboutCountField(true);
    }
    public APIRequestGetGlobalBrandChildren requestTalkingAboutCountField (boolean value) {
      this.requestField("talking_about_count", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestUnreadMessageCountField () {
      return this.requestUnreadMessageCountField(true);
    }
    public APIRequestGetGlobalBrandChildren requestUnreadMessageCountField (boolean value) {
      this.requestField("unread_message_count", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestUnreadNotifCountField () {
      return this.requestUnreadNotifCountField(true);
    }
    public APIRequestGetGlobalBrandChildren requestUnreadNotifCountField (boolean value) {
      this.requestField("unread_notif_count", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestUnseenMessageCountField () {
      return this.requestUnseenMessageCountField(true);
    }
    public APIRequestGetGlobalBrandChildren requestUnseenMessageCountField (boolean value) {
      this.requestField("unseen_message_count", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestUsernameField () {
      return this.requestUsernameField(true);
    }
    public APIRequestGetGlobalBrandChildren requestUsernameField (boolean value) {
      this.requestField("username", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestVerificationStatusField () {
      return this.requestVerificationStatusField(true);
    }
    public APIRequestGetGlobalBrandChildren requestVerificationStatusField (boolean value) {
      this.requestField("verification_status", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestVoipInfoField () {
      return this.requestVoipInfoField(true);
    }
    public APIRequestGetGlobalBrandChildren requestVoipInfoField (boolean value) {
      this.requestField("voip_info", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestWebsiteField () {
      return this.requestWebsiteField(true);
    }
    public APIRequestGetGlobalBrandChildren requestWebsiteField (boolean value) {
      this.requestField("website", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestWereHereCountField () {
      return this.requestWereHereCountField(true);
    }
    public APIRequestGetGlobalBrandChildren requestWereHereCountField (boolean value) {
      this.requestField("were_here_count", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestWhatsappNumberField () {
      return this.requestWhatsappNumberField(true);
    }
    public APIRequestGetGlobalBrandChildren requestWhatsappNumberField (boolean value) {
      this.requestField("whatsapp_number", value);
      return this;
    }
    public APIRequestGetGlobalBrandChildren requestWrittenByField () {
      return this.requestWrittenByField(true);
    }
    public APIRequestGetGlobalBrandChildren requestWrittenByField (boolean value) {
      this.requestField("written_by", value);
      return this;
    }
  }

  public static class APIRequestGetIndexedVideoCopyrights extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "content_category",
      "copyright_content_id",
      "creator",
      "id",
      "in_conflict",
      "monitoring_status",
      "monitoring_type",
      "ownership_countries",
      "reference_file",
      "reference_file_disabled",
      "reference_file_disabled_by_ops",
      "reference_file_expired",
      "reference_owner_id",
      "rule_ids",
      "whitelisted_ids",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return VideoCopyright.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetIndexedVideoCopyrights.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetIndexedVideoCopyrights(String nodeId, APIContext context) {
      super(context, nodeId, "/indexed_video_copyrights", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetIndexedVideoCopyrights setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetIndexedVideoCopyrights setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetIndexedVideoCopyrights requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetIndexedVideoCopyrights requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetIndexedVideoCopyrights requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetIndexedVideoCopyrights requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetIndexedVideoCopyrights requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetIndexedVideoCopyrights requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetIndexedVideoCopyrights requestContentCategoryField () {
      return this.requestContentCategoryField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestContentCategoryField (boolean value) {
      this.requestField("content_category", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestCopyrightContentIdField () {
      return this.requestCopyrightContentIdField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestCopyrightContentIdField (boolean value) {
      this.requestField("copyright_content_id", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestCreatorField () {
      return this.requestCreatorField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestCreatorField (boolean value) {
      this.requestField("creator", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestInConflictField () {
      return this.requestInConflictField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestInConflictField (boolean value) {
      this.requestField("in_conflict", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestMonitoringStatusField () {
      return this.requestMonitoringStatusField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestMonitoringStatusField (boolean value) {
      this.requestField("monitoring_status", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestMonitoringTypeField () {
      return this.requestMonitoringTypeField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestMonitoringTypeField (boolean value) {
      this.requestField("monitoring_type", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestOwnershipCountriesField () {
      return this.requestOwnershipCountriesField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestOwnershipCountriesField (boolean value) {
      this.requestField("ownership_countries", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestReferenceFileField () {
      return this.requestReferenceFileField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestReferenceFileField (boolean value) {
      this.requestField("reference_file", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestReferenceFileDisabledField () {
      return this.requestReferenceFileDisabledField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestReferenceFileDisabledField (boolean value) {
      this.requestField("reference_file_disabled", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestReferenceFileDisabledByOpsField () {
      return this.requestReferenceFileDisabledByOpsField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestReferenceFileDisabledByOpsField (boolean value) {
      this.requestField("reference_file_disabled_by_ops", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestReferenceFileExpiredField () {
      return this.requestReferenceFileExpiredField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestReferenceFileExpiredField (boolean value) {
      this.requestField("reference_file_expired", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestReferenceOwnerIdField () {
      return this.requestReferenceOwnerIdField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestReferenceOwnerIdField (boolean value) {
      this.requestField("reference_owner_id", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestRuleIdsField () {
      return this.requestRuleIdsField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestRuleIdsField (boolean value) {
      this.requestField("rule_ids", value);
      return this;
    }
    public APIRequestGetIndexedVideoCopyrights requestWhitelistedIdsField () {
      return this.requestWhitelistedIdsField(true);
    }
    public APIRequestGetIndexedVideoCopyrights requestWhitelistedIdsField (boolean value) {
      this.requestField("whitelisted_ids", value);
      return this;
    }
  }

  public static class APIRequestGetIndexedVideos extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "ad_breaks",
      "backdated_time",
      "backdated_time_granularity",
      "content_category",
      "content_tags",
      "created_time",
      "custom_labels",
      "description",
      "embed_html",
      "embeddable",
      "event",
      "expiration",
      "format",
      "from",
      "icon",
      "id",
      "is_crosspost_video",
      "is_crossposting_eligible",
      "is_episode",
      "is_instagram_eligible",
      "length",
      "live_audience_count",
      "live_status",
      "permalink_url",
      "picture",
      "place",
      "premiere_living_room_status",
      "privacy",
      "published",
      "scheduled_publish_time",
      "source",
      "spherical",
      "status",
      "title",
      "tv_banner_ad",
      "universal_video_id",
      "updated_time",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return AdVideo.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetIndexedVideos.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetIndexedVideos(String nodeId, APIContext context) {
      super(context, nodeId, "/indexed_videos", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetIndexedVideos setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetIndexedVideos setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetIndexedVideos requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetIndexedVideos requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetIndexedVideos requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetIndexedVideos requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetIndexedVideos requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetIndexedVideos requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetIndexedVideos requestAdBreaksField () {
      return this.requestAdBreaksField(true);
    }
    public APIRequestGetIndexedVideos requestAdBreaksField (boolean value) {
      this.requestField("ad_breaks", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestBackdatedTimeField () {
      return this.requestBackdatedTimeField(true);
    }
    public APIRequestGetIndexedVideos requestBackdatedTimeField (boolean value) {
      this.requestField("backdated_time", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestBackdatedTimeGranularityField () {
      return this.requestBackdatedTimeGranularityField(true);
    }
    public APIRequestGetIndexedVideos requestBackdatedTimeGranularityField (boolean value) {
      this.requestField("backdated_time_granularity", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestContentCategoryField () {
      return this.requestContentCategoryField(true);
    }
    public APIRequestGetIndexedVideos requestContentCategoryField (boolean value) {
      this.requestField("content_category", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestContentTagsField () {
      return this.requestContentTagsField(true);
    }
    public APIRequestGetIndexedVideos requestContentTagsField (boolean value) {
      this.requestField("content_tags", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetIndexedVideos requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestCustomLabelsField () {
      return this.requestCustomLabelsField(true);
    }
    public APIRequestGetIndexedVideos requestCustomLabelsField (boolean value) {
      this.requestField("custom_labels", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetIndexedVideos requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestEmbedHtmlField () {
      return this.requestEmbedHtmlField(true);
    }
    public APIRequestGetIndexedVideos requestEmbedHtmlField (boolean value) {
      this.requestField("embed_html", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestEmbeddableField () {
      return this.requestEmbeddableField(true);
    }
    public APIRequestGetIndexedVideos requestEmbeddableField (boolean value) {
      this.requestField("embeddable", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestEventField () {
      return this.requestEventField(true);
    }
    public APIRequestGetIndexedVideos requestEventField (boolean value) {
      this.requestField("event", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestExpirationField () {
      return this.requestExpirationField(true);
    }
    public APIRequestGetIndexedVideos requestExpirationField (boolean value) {
      this.requestField("expiration", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestFormatField () {
      return this.requestFormatField(true);
    }
    public APIRequestGetIndexedVideos requestFormatField (boolean value) {
      this.requestField("format", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetIndexedVideos requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestIconField () {
      return this.requestIconField(true);
    }
    public APIRequestGetIndexedVideos requestIconField (boolean value) {
      this.requestField("icon", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetIndexedVideos requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestIsCrosspostVideoField () {
      return this.requestIsCrosspostVideoField(true);
    }
    public APIRequestGetIndexedVideos requestIsCrosspostVideoField (boolean value) {
      this.requestField("is_crosspost_video", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestIsCrosspostingEligibleField () {
      return this.requestIsCrosspostingEligibleField(true);
    }
    public APIRequestGetIndexedVideos requestIsCrosspostingEligibleField (boolean value) {
      this.requestField("is_crossposting_eligible", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestIsEpisodeField () {
      return this.requestIsEpisodeField(true);
    }
    public APIRequestGetIndexedVideos requestIsEpisodeField (boolean value) {
      this.requestField("is_episode", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestIsInstagramEligibleField () {
      return this.requestIsInstagramEligibleField(true);
    }
    public APIRequestGetIndexedVideos requestIsInstagramEligibleField (boolean value) {
      this.requestField("is_instagram_eligible", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestLengthField () {
      return this.requestLengthField(true);
    }
    public APIRequestGetIndexedVideos requestLengthField (boolean value) {
      this.requestField("length", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestLiveAudienceCountField () {
      return this.requestLiveAudienceCountField(true);
    }
    public APIRequestGetIndexedVideos requestLiveAudienceCountField (boolean value) {
      this.requestField("live_audience_count", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestLiveStatusField () {
      return this.requestLiveStatusField(true);
    }
    public APIRequestGetIndexedVideos requestLiveStatusField (boolean value) {
      this.requestField("live_status", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetIndexedVideos requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestPictureField () {
      return this.requestPictureField(true);
    }
    public APIRequestGetIndexedVideos requestPictureField (boolean value) {
      this.requestField("picture", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetIndexedVideos requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestPremiereLivingRoomStatusField () {
      return this.requestPremiereLivingRoomStatusField(true);
    }
    public APIRequestGetIndexedVideos requestPremiereLivingRoomStatusField (boolean value) {
      this.requestField("premiere_living_room_status", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestPrivacyField () {
      return this.requestPrivacyField(true);
    }
    public APIRequestGetIndexedVideos requestPrivacyField (boolean value) {
      this.requestField("privacy", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestPublishedField () {
      return this.requestPublishedField(true);
    }
    public APIRequestGetIndexedVideos requestPublishedField (boolean value) {
      this.requestField("published", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestScheduledPublishTimeField () {
      return this.requestScheduledPublishTimeField(true);
    }
    public APIRequestGetIndexedVideos requestScheduledPublishTimeField (boolean value) {
      this.requestField("scheduled_publish_time", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestSourceField () {
      return this.requestSourceField(true);
    }
    public APIRequestGetIndexedVideos requestSourceField (boolean value) {
      this.requestField("source", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestSphericalField () {
      return this.requestSphericalField(true);
    }
    public APIRequestGetIndexedVideos requestSphericalField (boolean value) {
      this.requestField("spherical", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestStatusField () {
      return this.requestStatusField(true);
    }
    public APIRequestGetIndexedVideos requestStatusField (boolean value) {
      this.requestField("status", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetIndexedVideos requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestTvBannerAdField () {
      return this.requestTvBannerAdField(true);
    }
    public APIRequestGetIndexedVideos requestTvBannerAdField (boolean value) {
      this.requestField("tv_banner_ad", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestUniversalVideoIdField () {
      return this.requestUniversalVideoIdField(true);
    }
    public APIRequestGetIndexedVideos requestUniversalVideoIdField (boolean value) {
      this.requestField("universal_video_id", value);
      return this;
    }
    public APIRequestGetIndexedVideos requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetIndexedVideos requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
  }

  public static class APIRequestGetInsights extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "since",
      "until",
      "metric",
      "period",
      "show_description_from_api_doc",
      "date_preset",
    };

    public static final String[] FIELDS = {
      "description",
      "description_from_api_doc",
      "id",
      "name",
      "period",
      "title",
      "values",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return InsightsResult.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetInsights.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetInsights(String nodeId, APIContext context) {
      super(context, nodeId, "/insights", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetInsights setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetInsights setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetInsights setSince (String since) {
      this.setParam("since", since);
      return this;
    }

    public APIRequestGetInsights setUntil (String until) {
      this.setParam("until", until);
      return this;
    }

    public APIRequestGetInsights setMetric (List metric) {
      this.setParam("metric", metric);
      return this;
    }
    public APIRequestGetInsights setMetric (String metric) {
      this.setParam("metric", metric);
      return this;
    }

    public APIRequestGetInsights setPeriod (InsightsResult.EnumPeriod period) {
      this.setParam("period", period);
      return this;
    }
    public APIRequestGetInsights setPeriod (String period) {
      this.setParam("period", period);
      return this;
    }

    public APIRequestGetInsights setShowDescriptionFromApiDoc (Boolean showDescriptionFromApiDoc) {
      this.setParam("show_description_from_api_doc", showDescriptionFromApiDoc);
      return this;
    }
    public APIRequestGetInsights setShowDescriptionFromApiDoc (String showDescriptionFromApiDoc) {
      this.setParam("show_description_from_api_doc", showDescriptionFromApiDoc);
      return this;
    }

    public APIRequestGetInsights setDatePreset (InsightsResult.EnumDatePreset datePreset) {
      this.setParam("date_preset", datePreset);
      return this;
    }
    public APIRequestGetInsights setDatePreset (String datePreset) {
      this.setParam("date_preset", datePreset);
      return this;
    }

    public APIRequestGetInsights requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetInsights requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetInsights requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetInsights requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetInsights requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetInsights requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetInsights requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetInsights requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetInsights requestDescriptionFromApiDocField () {
      return this.requestDescriptionFromApiDocField(true);
    }
    public APIRequestGetInsights requestDescriptionFromApiDocField (boolean value) {
      this.requestField("description_from_api_doc", value);
      return this;
    }
    public APIRequestGetInsights requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetInsights requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetInsights requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetInsights requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetInsights requestPeriodField () {
      return this.requestPeriodField(true);
    }
    public APIRequestGetInsights requestPeriodField (boolean value) {
      this.requestField("period", value);
      return this;
    }
    public APIRequestGetInsights requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetInsights requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
    public APIRequestGetInsights requestValuesField () {
      return this.requestValuesField(true);
    }
    public APIRequestGetInsights requestValuesField (boolean value) {
      this.requestField("values", value);
      return this;
    }
  }

  public static class APIRequestGetInsightsExports extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "data_level",
      "from_creation_date",
    };

    public static final String[] FIELDS = {
      "data_level",
      "filters",
      "format",
      "gen_report_date",
      "id",
      "report_end_date",
      "report_start_date",
      "sorters",
      "status",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PageInsightsAsyncExportRun.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetInsightsExports.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetInsightsExports(String nodeId, APIContext context) {
      super(context, nodeId, "/insights_exports", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetInsightsExports setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetInsightsExports setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetInsightsExports setDataLevel (List dataLevel) {
      this.setParam("data_level", dataLevel);
      return this;
    }
    public APIRequestGetInsightsExports setDataLevel (String dataLevel) {
      this.setParam("data_level", dataLevel);
      return this;
    }

    public APIRequestGetInsightsExports setFromCreationDate (String fromCreationDate) {
      this.setParam("from_creation_date", fromCreationDate);
      return this;
    }

    public APIRequestGetInsightsExports requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetInsightsExports requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetInsightsExports requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetInsightsExports requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetInsightsExports requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetInsightsExports requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetInsightsExports requestDataLevelField () {
      return this.requestDataLevelField(true);
    }
    public APIRequestGetInsightsExports requestDataLevelField (boolean value) {
      this.requestField("data_level", value);
      return this;
    }
    public APIRequestGetInsightsExports requestFiltersField () {
      return this.requestFiltersField(true);
    }
    public APIRequestGetInsightsExports requestFiltersField (boolean value) {
      this.requestField("filters", value);
      return this;
    }
    public APIRequestGetInsightsExports requestFormatField () {
      return this.requestFormatField(true);
    }
    public APIRequestGetInsightsExports requestFormatField (boolean value) {
      this.requestField("format", value);
      return this;
    }
    public APIRequestGetInsightsExports requestGenReportDateField () {
      return this.requestGenReportDateField(true);
    }
    public APIRequestGetInsightsExports requestGenReportDateField (boolean value) {
      this.requestField("gen_report_date", value);
      return this;
    }
    public APIRequestGetInsightsExports requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetInsightsExports requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetInsightsExports requestReportEndDateField () {
      return this.requestReportEndDateField(true);
    }
    public APIRequestGetInsightsExports requestReportEndDateField (boolean value) {
      this.requestField("report_end_date", value);
      return this;
    }
    public APIRequestGetInsightsExports requestReportStartDateField () {
      return this.requestReportStartDateField(true);
    }
    public APIRequestGetInsightsExports requestReportStartDateField (boolean value) {
      this.requestField("report_start_date", value);
      return this;
    }
    public APIRequestGetInsightsExports requestSortersField () {
      return this.requestSortersField(true);
    }
    public APIRequestGetInsightsExports requestSortersField (boolean value) {
      this.requestField("sorters", value);
      return this;
    }
    public APIRequestGetInsightsExports requestStatusField () {
      return this.requestStatusField(true);
    }
    public APIRequestGetInsightsExports requestStatusField (boolean value) {
      this.requestField("status", value);
      return this;
    }
  }

  public static class APIRequestGetInstagramAccounts extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "follow_count",
      "followed_by_count",
      "has_profile_picture",
      "id",
      "is_private",
      "is_published",
      "media_count",
      "profile_pic",
      "username",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return InstagramUser.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetInstagramAccounts.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetInstagramAccounts(String nodeId, APIContext context) {
      super(context, nodeId, "/instagram_accounts", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetInstagramAccounts setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetInstagramAccounts setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetInstagramAccounts requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetInstagramAccounts requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetInstagramAccounts requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetInstagramAccounts requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetInstagramAccounts requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetInstagramAccounts requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetInstagramAccounts requestFollowCountField () {
      return this.requestFollowCountField(true);
    }
    public APIRequestGetInstagramAccounts requestFollowCountField (boolean value) {
      this.requestField("follow_count", value);
      return this;
    }
    public APIRequestGetInstagramAccounts requestFollowedByCountField () {
      return this.requestFollowedByCountField(true);
    }
    public APIRequestGetInstagramAccounts requestFollowedByCountField (boolean value) {
      this.requestField("followed_by_count", value);
      return this;
    }
    public APIRequestGetInstagramAccounts requestHasProfilePictureField () {
      return this.requestHasProfilePictureField(true);
    }
    public APIRequestGetInstagramAccounts requestHasProfilePictureField (boolean value) {
      this.requestField("has_profile_picture", value);
      return this;
    }
    public APIRequestGetInstagramAccounts requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetInstagramAccounts requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetInstagramAccounts requestIsPrivateField () {
      return this.requestIsPrivateField(true);
    }
    public APIRequestGetInstagramAccounts requestIsPrivateField (boolean value) {
      this.requestField("is_private", value);
      return this;
    }
    public APIRequestGetInstagramAccounts requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetInstagramAccounts requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetInstagramAccounts requestMediaCountField () {
      return this.requestMediaCountField(true);
    }
    public APIRequestGetInstagramAccounts requestMediaCountField (boolean value) {
      this.requestField("media_count", value);
      return this;
    }
    public APIRequestGetInstagramAccounts requestProfilePicField () {
      return this.requestProfilePicField(true);
    }
    public APIRequestGetInstagramAccounts requestProfilePicField (boolean value) {
      this.requestField("profile_pic", value);
      return this;
    }
    public APIRequestGetInstagramAccounts requestUsernameField () {
      return this.requestUsernameField(true);
    }
    public APIRequestGetInstagramAccounts requestUsernameField (boolean value) {
      this.requestField("username", value);
      return this;
    }
  }

  public static class APIRequestGetInstantArticles extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "development_mode",
    };

    public static final String[] FIELDS = {
      "canonical_url",
      "development_mode",
      "html_source",
      "id",
      "most_recent_import_status",
      "photos",
      "publish_status",
      "published",
      "videos",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return InstantArticle.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetInstantArticles.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetInstantArticles(String nodeId, APIContext context) {
      super(context, nodeId, "/instant_articles", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetInstantArticles setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetInstantArticles setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetInstantArticles setDevelopmentMode (Boolean developmentMode) {
      this.setParam("development_mode", developmentMode);
      return this;
    }
    public APIRequestGetInstantArticles setDevelopmentMode (String developmentMode) {
      this.setParam("development_mode", developmentMode);
      return this;
    }

    public APIRequestGetInstantArticles requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetInstantArticles requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetInstantArticles requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetInstantArticles requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetInstantArticles requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetInstantArticles requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetInstantArticles requestCanonicalUrlField () {
      return this.requestCanonicalUrlField(true);
    }
    public APIRequestGetInstantArticles requestCanonicalUrlField (boolean value) {
      this.requestField("canonical_url", value);
      return this;
    }
    public APIRequestGetInstantArticles requestDevelopmentModeField () {
      return this.requestDevelopmentModeField(true);
    }
    public APIRequestGetInstantArticles requestDevelopmentModeField (boolean value) {
      this.requestField("development_mode", value);
      return this;
    }
    public APIRequestGetInstantArticles requestHtmlSourceField () {
      return this.requestHtmlSourceField(true);
    }
    public APIRequestGetInstantArticles requestHtmlSourceField (boolean value) {
      this.requestField("html_source", value);
      return this;
    }
    public APIRequestGetInstantArticles requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetInstantArticles requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetInstantArticles requestMostRecentImportStatusField () {
      return this.requestMostRecentImportStatusField(true);
    }
    public APIRequestGetInstantArticles requestMostRecentImportStatusField (boolean value) {
      this.requestField("most_recent_import_status", value);
      return this;
    }
    public APIRequestGetInstantArticles requestPhotosField () {
      return this.requestPhotosField(true);
    }
    public APIRequestGetInstantArticles requestPhotosField (boolean value) {
      this.requestField("photos", value);
      return this;
    }
    public APIRequestGetInstantArticles requestPublishStatusField () {
      return this.requestPublishStatusField(true);
    }
    public APIRequestGetInstantArticles requestPublishStatusField (boolean value) {
      this.requestField("publish_status", value);
      return this;
    }
    public APIRequestGetInstantArticles requestPublishedField () {
      return this.requestPublishedField(true);
    }
    public APIRequestGetInstantArticles requestPublishedField (boolean value) {
      this.requestField("published", value);
      return this;
    }
    public APIRequestGetInstantArticles requestVideosField () {
      return this.requestVideosField(true);
    }
    public APIRequestGetInstantArticles requestVideosField (boolean value) {
      this.requestField("videos", value);
      return this;
    }
  }

  public static class APIRequestCreateInstantArticle extends APIRequest {

    InstantArticle lastResponse = null;
    @Override
    public InstantArticle getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "html_source",
      "development_mode",
      "take_live",
      "published",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public InstantArticle parseResponse(String response, String header) throws APIException {
      return InstantArticle.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public InstantArticle execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public InstantArticle execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public InstantArticle apply(ResponseWrapper result) {
             try {
               return APIRequestCreateInstantArticle.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateInstantArticle(String nodeId, APIContext context) {
      super(context, nodeId, "/instant_articles", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateInstantArticle setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateInstantArticle setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateInstantArticle setHtmlSource (String htmlSource) {
      this.setParam("html_source", htmlSource);
      return this;
    }

    public APIRequestCreateInstantArticle setDevelopmentMode (Boolean developmentMode) {
      this.setParam("development_mode", developmentMode);
      return this;
    }
    public APIRequestCreateInstantArticle setDevelopmentMode (String developmentMode) {
      this.setParam("development_mode", developmentMode);
      return this;
    }

    public APIRequestCreateInstantArticle setTakeLive (Boolean takeLive) {
      this.setParam("take_live", takeLive);
      return this;
    }
    public APIRequestCreateInstantArticle setTakeLive (String takeLive) {
      this.setParam("take_live", takeLive);
      return this;
    }

    public APIRequestCreateInstantArticle setPublished (Boolean published) {
      this.setParam("published", published);
      return this;
    }
    public APIRequestCreateInstantArticle setPublished (String published) {
      this.setParam("published", published);
      return this;
    }

    public APIRequestCreateInstantArticle requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateInstantArticle requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateInstantArticle requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateInstantArticle requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateInstantArticle requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateInstantArticle requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetInstantArticlesInsights extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "metric",
      "period",
      "since",
      "until",
      "breakdown",
    };

    public static final String[] FIELDS = {
      "breakdowns",
      "name",
      "time",
      "value",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return InstantArticleInsightsQueryResult.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetInstantArticlesInsights.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetInstantArticlesInsights(String nodeId, APIContext context) {
      super(context, nodeId, "/instant_articles_insights", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetInstantArticlesInsights setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetInstantArticlesInsights setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetInstantArticlesInsights setMetric (List metric) {
      this.setParam("metric", metric);
      return this;
    }
    public APIRequestGetInstantArticlesInsights setMetric (String metric) {
      this.setParam("metric", metric);
      return this;
    }

    public APIRequestGetInstantArticlesInsights setPeriod (InstantArticleInsightsQueryResult.EnumPeriod period) {
      this.setParam("period", period);
      return this;
    }
    public APIRequestGetInstantArticlesInsights setPeriod (String period) {
      this.setParam("period", period);
      return this;
    }

    public APIRequestGetInstantArticlesInsights setSince (String since) {
      this.setParam("since", since);
      return this;
    }

    public APIRequestGetInstantArticlesInsights setUntil (String until) {
      this.setParam("until", until);
      return this;
    }

    public APIRequestGetInstantArticlesInsights setBreakdown (InstantArticleInsightsQueryResult.EnumBreakdown breakdown) {
      this.setParam("breakdown", breakdown);
      return this;
    }
    public APIRequestGetInstantArticlesInsights setBreakdown (String breakdown) {
      this.setParam("breakdown", breakdown);
      return this;
    }

    public APIRequestGetInstantArticlesInsights requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetInstantArticlesInsights requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetInstantArticlesInsights requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetInstantArticlesInsights requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetInstantArticlesInsights requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetInstantArticlesInsights requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetInstantArticlesInsights requestBreakdownsField () {
      return this.requestBreakdownsField(true);
    }
    public APIRequestGetInstantArticlesInsights requestBreakdownsField (boolean value) {
      this.requestField("breakdowns", value);
      return this;
    }
    public APIRequestGetInstantArticlesInsights requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetInstantArticlesInsights requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetInstantArticlesInsights requestTimeField () {
      return this.requestTimeField(true);
    }
    public APIRequestGetInstantArticlesInsights requestTimeField (boolean value) {
      this.requestField("time", value);
      return this;
    }
    public APIRequestGetInstantArticlesInsights requestValueField () {
      return this.requestValueField(true);
    }
    public APIRequestGetInstantArticlesInsights requestValueField (boolean value) {
      this.requestField("value", value);
      return this;
    }
  }

  public static class APIRequestCreateInstantArticlesPublish extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "canonical_url",
      "publish_status",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateInstantArticlesPublish.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateInstantArticlesPublish(String nodeId, APIContext context) {
      super(context, nodeId, "/instant_articles_publish", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateInstantArticlesPublish setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateInstantArticlesPublish setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateInstantArticlesPublish setCanonicalUrl (String canonicalUrl) {
      this.setParam("canonical_url", canonicalUrl);
      return this;
    }

    public APIRequestCreateInstantArticlesPublish setPublishStatus (Page.EnumPublishStatus publishStatus) {
      this.setParam("publish_status", publishStatus);
      return this;
    }
    public APIRequestCreateInstantArticlesPublish setPublishStatus (String publishStatus) {
      this.setParam("publish_status", publishStatus);
      return this;
    }

    public APIRequestCreateInstantArticlesPublish requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateInstantArticlesPublish requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateInstantArticlesPublish requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateInstantArticlesPublish requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateInstantArticlesPublish requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateInstantArticlesPublish requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetLabels extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "creation_time",
      "creator_id",
      "from",
      "id",
      "name",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PageLabel.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetLabels.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetLabels(String nodeId, APIContext context) {
      super(context, nodeId, "/labels", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetLabels setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetLabels setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetLabels requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetLabels requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLabels requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetLabels requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLabels requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetLabels requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetLabels requestCreationTimeField () {
      return this.requestCreationTimeField(true);
    }
    public APIRequestGetLabels requestCreationTimeField (boolean value) {
      this.requestField("creation_time", value);
      return this;
    }
    public APIRequestGetLabels requestCreatorIdField () {
      return this.requestCreatorIdField(true);
    }
    public APIRequestGetLabels requestCreatorIdField (boolean value) {
      this.requestField("creator_id", value);
      return this;
    }
    public APIRequestGetLabels requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetLabels requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetLabels requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetLabels requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetLabels requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetLabels requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
  }

  public static class APIRequestCreateLabel extends APIRequest {

    PageLabel lastResponse = null;
    @Override
    public PageLabel getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "name",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public PageLabel parseResponse(String response, String header) throws APIException {
      return PageLabel.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public PageLabel execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public PageLabel execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public PageLabel apply(ResponseWrapper result) {
             try {
               return APIRequestCreateLabel.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateLabel(String nodeId, APIContext context) {
      super(context, nodeId, "/labels", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateLabel setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateLabel setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateLabel setName (String name) {
      this.setParam("name", name);
      return this;
    }

    public APIRequestCreateLabel requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateLabel requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLabel requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateLabel requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLabel requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateLabel requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetLeadGenConditionalQuestionsGroup extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "choices",
      "questions",
      "id",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return LeadGenConditionalQuestionsGroup.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetLeadGenConditionalQuestionsGroup.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetLeadGenConditionalQuestionsGroup(String nodeId, APIContext context) {
      super(context, nodeId, "/leadgen_conditional_questions_group", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetLeadGenConditionalQuestionsGroup setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetLeadGenConditionalQuestionsGroup setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetLeadGenConditionalQuestionsGroup requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetLeadGenConditionalQuestionsGroup requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLeadGenConditionalQuestionsGroup requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetLeadGenConditionalQuestionsGroup requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLeadGenConditionalQuestionsGroup requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetLeadGenConditionalQuestionsGroup requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetLeadGenConditionalQuestionsGroup requestChoicesField () {
      return this.requestChoicesField(true);
    }
    public APIRequestGetLeadGenConditionalQuestionsGroup requestChoicesField (boolean value) {
      this.requestField("choices", value);
      return this;
    }
    public APIRequestGetLeadGenConditionalQuestionsGroup requestQuestionsField () {
      return this.requestQuestionsField(true);
    }
    public APIRequestGetLeadGenConditionalQuestionsGroup requestQuestionsField (boolean value) {
      this.requestField("questions", value);
      return this;
    }
    public APIRequestGetLeadGenConditionalQuestionsGroup requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetLeadGenConditionalQuestionsGroup requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
  }

  public static class APIRequestCreateLeadGenConditionalQuestionsGroup extends APIRequest {

    LeadGenConditionalQuestionsGroup lastResponse = null;
    @Override
    public LeadGenConditionalQuestionsGroup getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "conditional_questions_group_csv",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public LeadGenConditionalQuestionsGroup parseResponse(String response, String header) throws APIException {
      return LeadGenConditionalQuestionsGroup.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public LeadGenConditionalQuestionsGroup execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public LeadGenConditionalQuestionsGroup execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public LeadGenConditionalQuestionsGroup apply(ResponseWrapper result) {
             try {
               return APIRequestCreateLeadGenConditionalQuestionsGroup.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateLeadGenConditionalQuestionsGroup(String nodeId, APIContext context) {
      super(context, nodeId, "/leadgen_conditional_questions_group", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateLeadGenConditionalQuestionsGroup setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateLeadGenConditionalQuestionsGroup setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateLeadGenConditionalQuestionsGroup setConditionalQuestionsGroupCsv (File conditionalQuestionsGroupCsv) {
      this.setParam("conditional_questions_group_csv", conditionalQuestionsGroupCsv);
      return this;
    }
    public APIRequestCreateLeadGenConditionalQuestionsGroup setConditionalQuestionsGroupCsv (String conditionalQuestionsGroupCsv) {
      this.setParam("conditional_questions_group_csv", conditionalQuestionsGroupCsv);
      return this;
    }

    public APIRequestCreateLeadGenConditionalQuestionsGroup requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateLeadGenConditionalQuestionsGroup requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLeadGenConditionalQuestionsGroup requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateLeadGenConditionalQuestionsGroup requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLeadGenConditionalQuestionsGroup requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateLeadGenConditionalQuestionsGroup requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetLeadGenContextCards extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "button_text",
      "canvas",
      "canvas_jump_to_form_button_text",
      "content",
      "cover_photo",
      "format",
      "id",
      "style",
      "title",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return LeadGenContextCard.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetLeadGenContextCards.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetLeadGenContextCards(String nodeId, APIContext context) {
      super(context, nodeId, "/leadgen_context_cards", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetLeadGenContextCards setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetLeadGenContextCards setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetLeadGenContextCards requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetLeadGenContextCards requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLeadGenContextCards requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetLeadGenContextCards requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLeadGenContextCards requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetLeadGenContextCards requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetLeadGenContextCards requestButtonTextField () {
      return this.requestButtonTextField(true);
    }
    public APIRequestGetLeadGenContextCards requestButtonTextField (boolean value) {
      this.requestField("button_text", value);
      return this;
    }
    public APIRequestGetLeadGenContextCards requestCanvasField () {
      return this.requestCanvasField(true);
    }
    public APIRequestGetLeadGenContextCards requestCanvasField (boolean value) {
      this.requestField("canvas", value);
      return this;
    }
    public APIRequestGetLeadGenContextCards requestCanvasJumpToFormButtonTextField () {
      return this.requestCanvasJumpToFormButtonTextField(true);
    }
    public APIRequestGetLeadGenContextCards requestCanvasJumpToFormButtonTextField (boolean value) {
      this.requestField("canvas_jump_to_form_button_text", value);
      return this;
    }
    public APIRequestGetLeadGenContextCards requestContentField () {
      return this.requestContentField(true);
    }
    public APIRequestGetLeadGenContextCards requestContentField (boolean value) {
      this.requestField("content", value);
      return this;
    }
    public APIRequestGetLeadGenContextCards requestCoverPhotoField () {
      return this.requestCoverPhotoField(true);
    }
    public APIRequestGetLeadGenContextCards requestCoverPhotoField (boolean value) {
      this.requestField("cover_photo", value);
      return this;
    }
    public APIRequestGetLeadGenContextCards requestFormatField () {
      return this.requestFormatField(true);
    }
    public APIRequestGetLeadGenContextCards requestFormatField (boolean value) {
      this.requestField("format", value);
      return this;
    }
    public APIRequestGetLeadGenContextCards requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetLeadGenContextCards requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetLeadGenContextCards requestStyleField () {
      return this.requestStyleField(true);
    }
    public APIRequestGetLeadGenContextCards requestStyleField (boolean value) {
      this.requestField("style", value);
      return this;
    }
    public APIRequestGetLeadGenContextCards requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetLeadGenContextCards requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
  }

  public static class APIRequestGetLeadGenDraftForms extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "block_display_for_non_targeted_viewer",
      "context_card",
      "created_time",
      "creator_id",
      "follow_up_action_url",
      "id",
      "is_optimized_for_quality",
      "legal_content",
      "locale",
      "name",
      "page",
      "question_page_custom_headline",
      "questions",
      "status",
      "thank_you_page",
      "tracking_parameters",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return LeadGenDataDraft.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetLeadGenDraftForms.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetLeadGenDraftForms(String nodeId, APIContext context) {
      super(context, nodeId, "/leadgen_draft_forms", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetLeadGenDraftForms setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetLeadGenDraftForms setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetLeadGenDraftForms requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetLeadGenDraftForms requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLeadGenDraftForms requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetLeadGenDraftForms requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLeadGenDraftForms requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetLeadGenDraftForms requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetLeadGenDraftForms requestBlockDisplayForNonTargetedViewerField () {
      return this.requestBlockDisplayForNonTargetedViewerField(true);
    }
    public APIRequestGetLeadGenDraftForms requestBlockDisplayForNonTargetedViewerField (boolean value) {
      this.requestField("block_display_for_non_targeted_viewer", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestContextCardField () {
      return this.requestContextCardField(true);
    }
    public APIRequestGetLeadGenDraftForms requestContextCardField (boolean value) {
      this.requestField("context_card", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetLeadGenDraftForms requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestCreatorIdField () {
      return this.requestCreatorIdField(true);
    }
    public APIRequestGetLeadGenDraftForms requestCreatorIdField (boolean value) {
      this.requestField("creator_id", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestFollowUpActionUrlField () {
      return this.requestFollowUpActionUrlField(true);
    }
    public APIRequestGetLeadGenDraftForms requestFollowUpActionUrlField (boolean value) {
      this.requestField("follow_up_action_url", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetLeadGenDraftForms requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestIsOptimizedForQualityField () {
      return this.requestIsOptimizedForQualityField(true);
    }
    public APIRequestGetLeadGenDraftForms requestIsOptimizedForQualityField (boolean value) {
      this.requestField("is_optimized_for_quality", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestLegalContentField () {
      return this.requestLegalContentField(true);
    }
    public APIRequestGetLeadGenDraftForms requestLegalContentField (boolean value) {
      this.requestField("legal_content", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestLocaleField () {
      return this.requestLocaleField(true);
    }
    public APIRequestGetLeadGenDraftForms requestLocaleField (boolean value) {
      this.requestField("locale", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetLeadGenDraftForms requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestPageField () {
      return this.requestPageField(true);
    }
    public APIRequestGetLeadGenDraftForms requestPageField (boolean value) {
      this.requestField("page", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestQuestionPageCustomHeadlineField () {
      return this.requestQuestionPageCustomHeadlineField(true);
    }
    public APIRequestGetLeadGenDraftForms requestQuestionPageCustomHeadlineField (boolean value) {
      this.requestField("question_page_custom_headline", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestQuestionsField () {
      return this.requestQuestionsField(true);
    }
    public APIRequestGetLeadGenDraftForms requestQuestionsField (boolean value) {
      this.requestField("questions", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestStatusField () {
      return this.requestStatusField(true);
    }
    public APIRequestGetLeadGenDraftForms requestStatusField (boolean value) {
      this.requestField("status", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestThankYouPageField () {
      return this.requestThankYouPageField(true);
    }
    public APIRequestGetLeadGenDraftForms requestThankYouPageField (boolean value) {
      this.requestField("thank_you_page", value);
      return this;
    }
    public APIRequestGetLeadGenDraftForms requestTrackingParametersField () {
      return this.requestTrackingParametersField(true);
    }
    public APIRequestGetLeadGenDraftForms requestTrackingParametersField (boolean value) {
      this.requestField("tracking_parameters", value);
      return this;
    }
  }

  public static class APIRequestCreateLeadGenDraftForm extends APIRequest {

    LeadGenDataDraft lastResponse = null;
    @Override
    public LeadGenDataDraft getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "name",
      "locale",
      "block_display_for_non_targeted_viewer",
      "follow_up_action_url",
      "legal_content_id",
      "context_card_id",
      "questions",
      "privacy_policy",
      "custom_disclaimer",
      "context_card",
      "thank_you_page",
      "tracking_parameters",
      "question_page_custom_headline",
      "is_optimized_for_quality",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public LeadGenDataDraft parseResponse(String response, String header) throws APIException {
      return LeadGenDataDraft.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public LeadGenDataDraft execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public LeadGenDataDraft execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public LeadGenDataDraft apply(ResponseWrapper result) {
             try {
               return APIRequestCreateLeadGenDraftForm.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateLeadGenDraftForm(String nodeId, APIContext context) {
      super(context, nodeId, "/leadgen_draft_forms", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateLeadGenDraftForm setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateLeadGenDraftForm setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateLeadGenDraftForm setName (String name) {
      this.setParam("name", name);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm setLocale (LeadGenDataDraft.EnumLocale locale) {
      this.setParam("locale", locale);
      return this;
    }
    public APIRequestCreateLeadGenDraftForm setLocale (String locale) {
      this.setParam("locale", locale);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm setBlockDisplayForNonTargetedViewer (Boolean blockDisplayForNonTargetedViewer) {
      this.setParam("block_display_for_non_targeted_viewer", blockDisplayForNonTargetedViewer);
      return this;
    }
    public APIRequestCreateLeadGenDraftForm setBlockDisplayForNonTargetedViewer (String blockDisplayForNonTargetedViewer) {
      this.setParam("block_display_for_non_targeted_viewer", blockDisplayForNonTargetedViewer);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm setFollowUpActionUrl (String followUpActionUrl) {
      this.setParam("follow_up_action_url", followUpActionUrl);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm setLegalContentId (String legalContentId) {
      this.setParam("legal_content_id", legalContentId);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm setContextCardId (String contextCardId) {
      this.setParam("context_card_id", contextCardId);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm setQuestions (List questions) {
      this.setParam("questions", questions);
      return this;
    }
    public APIRequestCreateLeadGenDraftForm setQuestions (String questions) {
      this.setParam("questions", questions);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm setPrivacyPolicy (Map privacyPolicy) {
      this.setParam("privacy_policy", privacyPolicy);
      return this;
    }
    public APIRequestCreateLeadGenDraftForm setPrivacyPolicy (String privacyPolicy) {
      this.setParam("privacy_policy", privacyPolicy);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm setCustomDisclaimer (Object customDisclaimer) {
      this.setParam("custom_disclaimer", customDisclaimer);
      return this;
    }
    public APIRequestCreateLeadGenDraftForm setCustomDisclaimer (String customDisclaimer) {
      this.setParam("custom_disclaimer", customDisclaimer);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm setContextCard (Object contextCard) {
      this.setParam("context_card", contextCard);
      return this;
    }
    public APIRequestCreateLeadGenDraftForm setContextCard (String contextCard) {
      this.setParam("context_card", contextCard);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm setThankYouPage (Map thankYouPage) {
      this.setParam("thank_you_page", thankYouPage);
      return this;
    }
    public APIRequestCreateLeadGenDraftForm setThankYouPage (String thankYouPage) {
      this.setParam("thank_you_page", thankYouPage);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm setTrackingParameters (Map trackingParameters) {
      this.setParam("tracking_parameters", trackingParameters);
      return this;
    }
    public APIRequestCreateLeadGenDraftForm setTrackingParameters (String trackingParameters) {
      this.setParam("tracking_parameters", trackingParameters);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm setQuestionPageCustomHeadline (String questionPageCustomHeadline) {
      this.setParam("question_page_custom_headline", questionPageCustomHeadline);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm setIsOptimizedForQuality (Boolean isOptimizedForQuality) {
      this.setParam("is_optimized_for_quality", isOptimizedForQuality);
      return this;
    }
    public APIRequestCreateLeadGenDraftForm setIsOptimizedForQuality (String isOptimizedForQuality) {
      this.setParam("is_optimized_for_quality", isOptimizedForQuality);
      return this;
    }

    public APIRequestCreateLeadGenDraftForm requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateLeadGenDraftForm requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLeadGenDraftForm requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateLeadGenDraftForm requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLeadGenDraftForm requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateLeadGenDraftForm requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetLeadGenForms extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "allow_organic_lead",
      "block_display_for_non_targeted_viewer",
      "context_card",
      "created_time",
      "creator",
      "creator_id",
      "cusomized_tcpa_content",
      "expired_leads_count",
      "extra_details",
      "follow_up_action_text",
      "follow_up_action_url",
      "id",
      "is_optimized_for_quality",
      "leadgen_export_csv_url",
      "leads_count",
      "legal_content",
      "locale",
      "messenger_welcome_message",
      "name",
      "organic_leads_count",
      "page",
      "page_id",
      "privacy_policy_url",
      "qualifiers",
      "question_page_custom_headline",
      "questions",
      "status",
      "tcpa_compliance",
      "thank_you_page",
      "tracking_parameters",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return LeadgenForm.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetLeadGenForms.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetLeadGenForms(String nodeId, APIContext context) {
      super(context, nodeId, "/leadgen_forms", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetLeadGenForms setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetLeadGenForms setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetLeadGenForms requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetLeadGenForms requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLeadGenForms requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetLeadGenForms requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLeadGenForms requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetLeadGenForms requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetLeadGenForms requestAllowOrganicLeadField () {
      return this.requestAllowOrganicLeadField(true);
    }
    public APIRequestGetLeadGenForms requestAllowOrganicLeadField (boolean value) {
      this.requestField("allow_organic_lead", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestBlockDisplayForNonTargetedViewerField () {
      return this.requestBlockDisplayForNonTargetedViewerField(true);
    }
    public APIRequestGetLeadGenForms requestBlockDisplayForNonTargetedViewerField (boolean value) {
      this.requestField("block_display_for_non_targeted_viewer", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestContextCardField () {
      return this.requestContextCardField(true);
    }
    public APIRequestGetLeadGenForms requestContextCardField (boolean value) {
      this.requestField("context_card", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetLeadGenForms requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestCreatorField () {
      return this.requestCreatorField(true);
    }
    public APIRequestGetLeadGenForms requestCreatorField (boolean value) {
      this.requestField("creator", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestCreatorIdField () {
      return this.requestCreatorIdField(true);
    }
    public APIRequestGetLeadGenForms requestCreatorIdField (boolean value) {
      this.requestField("creator_id", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestCusomizedTcpaContentField () {
      return this.requestCusomizedTcpaContentField(true);
    }
    public APIRequestGetLeadGenForms requestCusomizedTcpaContentField (boolean value) {
      this.requestField("cusomized_tcpa_content", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestExpiredLeadsCountField () {
      return this.requestExpiredLeadsCountField(true);
    }
    public APIRequestGetLeadGenForms requestExpiredLeadsCountField (boolean value) {
      this.requestField("expired_leads_count", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestExtraDetailsField () {
      return this.requestExtraDetailsField(true);
    }
    public APIRequestGetLeadGenForms requestExtraDetailsField (boolean value) {
      this.requestField("extra_details", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestFollowUpActionTextField () {
      return this.requestFollowUpActionTextField(true);
    }
    public APIRequestGetLeadGenForms requestFollowUpActionTextField (boolean value) {
      this.requestField("follow_up_action_text", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestFollowUpActionUrlField () {
      return this.requestFollowUpActionUrlField(true);
    }
    public APIRequestGetLeadGenForms requestFollowUpActionUrlField (boolean value) {
      this.requestField("follow_up_action_url", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetLeadGenForms requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestIsOptimizedForQualityField () {
      return this.requestIsOptimizedForQualityField(true);
    }
    public APIRequestGetLeadGenForms requestIsOptimizedForQualityField (boolean value) {
      this.requestField("is_optimized_for_quality", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestLeadgenExportCsvUrlField () {
      return this.requestLeadgenExportCsvUrlField(true);
    }
    public APIRequestGetLeadGenForms requestLeadgenExportCsvUrlField (boolean value) {
      this.requestField("leadgen_export_csv_url", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestLeadsCountField () {
      return this.requestLeadsCountField(true);
    }
    public APIRequestGetLeadGenForms requestLeadsCountField (boolean value) {
      this.requestField("leads_count", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestLegalContentField () {
      return this.requestLegalContentField(true);
    }
    public APIRequestGetLeadGenForms requestLegalContentField (boolean value) {
      this.requestField("legal_content", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestLocaleField () {
      return this.requestLocaleField(true);
    }
    public APIRequestGetLeadGenForms requestLocaleField (boolean value) {
      this.requestField("locale", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestMessengerWelcomeMessageField () {
      return this.requestMessengerWelcomeMessageField(true);
    }
    public APIRequestGetLeadGenForms requestMessengerWelcomeMessageField (boolean value) {
      this.requestField("messenger_welcome_message", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetLeadGenForms requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestOrganicLeadsCountField () {
      return this.requestOrganicLeadsCountField(true);
    }
    public APIRequestGetLeadGenForms requestOrganicLeadsCountField (boolean value) {
      this.requestField("organic_leads_count", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestPageField () {
      return this.requestPageField(true);
    }
    public APIRequestGetLeadGenForms requestPageField (boolean value) {
      this.requestField("page", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestPageIdField () {
      return this.requestPageIdField(true);
    }
    public APIRequestGetLeadGenForms requestPageIdField (boolean value) {
      this.requestField("page_id", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestPrivacyPolicyUrlField () {
      return this.requestPrivacyPolicyUrlField(true);
    }
    public APIRequestGetLeadGenForms requestPrivacyPolicyUrlField (boolean value) {
      this.requestField("privacy_policy_url", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestQualifiersField () {
      return this.requestQualifiersField(true);
    }
    public APIRequestGetLeadGenForms requestQualifiersField (boolean value) {
      this.requestField("qualifiers", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestQuestionPageCustomHeadlineField () {
      return this.requestQuestionPageCustomHeadlineField(true);
    }
    public APIRequestGetLeadGenForms requestQuestionPageCustomHeadlineField (boolean value) {
      this.requestField("question_page_custom_headline", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestQuestionsField () {
      return this.requestQuestionsField(true);
    }
    public APIRequestGetLeadGenForms requestQuestionsField (boolean value) {
      this.requestField("questions", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestStatusField () {
      return this.requestStatusField(true);
    }
    public APIRequestGetLeadGenForms requestStatusField (boolean value) {
      this.requestField("status", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestTcpaComplianceField () {
      return this.requestTcpaComplianceField(true);
    }
    public APIRequestGetLeadGenForms requestTcpaComplianceField (boolean value) {
      this.requestField("tcpa_compliance", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestThankYouPageField () {
      return this.requestThankYouPageField(true);
    }
    public APIRequestGetLeadGenForms requestThankYouPageField (boolean value) {
      this.requestField("thank_you_page", value);
      return this;
    }
    public APIRequestGetLeadGenForms requestTrackingParametersField () {
      return this.requestTrackingParametersField(true);
    }
    public APIRequestGetLeadGenForms requestTrackingParametersField (boolean value) {
      this.requestField("tracking_parameters", value);
      return this;
    }
  }

  public static class APIRequestCreateLeadGenForm extends APIRequest {

    LeadgenForm lastResponse = null;
    @Override
    public LeadgenForm getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "name",
      "locale",
      "allow_organic_lead_retrieval",
      "block_display_for_non_targeted_viewer",
      "follow_up_action_url",
      "legal_content_id",
      "context_card_id",
      "thank_you_page_id",
      "questions",
      "privacy_policy",
      "custom_disclaimer",
      "context_card",
      "thank_you_page",
      "tracking_parameters",
      "cover_photo",
      "question_page_custom_headline",
      "is_optimized_for_quality",
      "is_for_canvas",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public LeadgenForm parseResponse(String response, String header) throws APIException {
      return LeadgenForm.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public LeadgenForm execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public LeadgenForm execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public LeadgenForm apply(ResponseWrapper result) {
             try {
               return APIRequestCreateLeadGenForm.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateLeadGenForm(String nodeId, APIContext context) {
      super(context, nodeId, "/leadgen_forms", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateLeadGenForm setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateLeadGenForm setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateLeadGenForm setName (String name) {
      this.setParam("name", name);
      return this;
    }

    public APIRequestCreateLeadGenForm setLocale (LeadgenForm.EnumLocale locale) {
      this.setParam("locale", locale);
      return this;
    }
    public APIRequestCreateLeadGenForm setLocale (String locale) {
      this.setParam("locale", locale);
      return this;
    }

    public APIRequestCreateLeadGenForm setAllowOrganicLeadRetrieval (Boolean allowOrganicLeadRetrieval) {
      this.setParam("allow_organic_lead_retrieval", allowOrganicLeadRetrieval);
      return this;
    }
    public APIRequestCreateLeadGenForm setAllowOrganicLeadRetrieval (String allowOrganicLeadRetrieval) {
      this.setParam("allow_organic_lead_retrieval", allowOrganicLeadRetrieval);
      return this;
    }

    public APIRequestCreateLeadGenForm setBlockDisplayForNonTargetedViewer (Boolean blockDisplayForNonTargetedViewer) {
      this.setParam("block_display_for_non_targeted_viewer", blockDisplayForNonTargetedViewer);
      return this;
    }
    public APIRequestCreateLeadGenForm setBlockDisplayForNonTargetedViewer (String blockDisplayForNonTargetedViewer) {
      this.setParam("block_display_for_non_targeted_viewer", blockDisplayForNonTargetedViewer);
      return this;
    }

    public APIRequestCreateLeadGenForm setFollowUpActionUrl (String followUpActionUrl) {
      this.setParam("follow_up_action_url", followUpActionUrl);
      return this;
    }

    public APIRequestCreateLeadGenForm setLegalContentId (String legalContentId) {
      this.setParam("legal_content_id", legalContentId);
      return this;
    }

    public APIRequestCreateLeadGenForm setContextCardId (String contextCardId) {
      this.setParam("context_card_id", contextCardId);
      return this;
    }

    public APIRequestCreateLeadGenForm setThankYouPageId (String thankYouPageId) {
      this.setParam("thank_you_page_id", thankYouPageId);
      return this;
    }

    public APIRequestCreateLeadGenForm setQuestions (List questions) {
      this.setParam("questions", questions);
      return this;
    }
    public APIRequestCreateLeadGenForm setQuestions (String questions) {
      this.setParam("questions", questions);
      return this;
    }

    public APIRequestCreateLeadGenForm setPrivacyPolicy (Object privacyPolicy) {
      this.setParam("privacy_policy", privacyPolicy);
      return this;
    }
    public APIRequestCreateLeadGenForm setPrivacyPolicy (String privacyPolicy) {
      this.setParam("privacy_policy", privacyPolicy);
      return this;
    }

    public APIRequestCreateLeadGenForm setCustomDisclaimer (Object customDisclaimer) {
      this.setParam("custom_disclaimer", customDisclaimer);
      return this;
    }
    public APIRequestCreateLeadGenForm setCustomDisclaimer (String customDisclaimer) {
      this.setParam("custom_disclaimer", customDisclaimer);
      return this;
    }

    public APIRequestCreateLeadGenForm setContextCard (Object contextCard) {
      this.setParam("context_card", contextCard);
      return this;
    }
    public APIRequestCreateLeadGenForm setContextCard (String contextCard) {
      this.setParam("context_card", contextCard);
      return this;
    }

    public APIRequestCreateLeadGenForm setThankYouPage (Object thankYouPage) {
      this.setParam("thank_you_page", thankYouPage);
      return this;
    }
    public APIRequestCreateLeadGenForm setThankYouPage (String thankYouPage) {
      this.setParam("thank_you_page", thankYouPage);
      return this;
    }

    public APIRequestCreateLeadGenForm setTrackingParameters (Map trackingParameters) {
      this.setParam("tracking_parameters", trackingParameters);
      return this;
    }
    public APIRequestCreateLeadGenForm setTrackingParameters (String trackingParameters) {
      this.setParam("tracking_parameters", trackingParameters);
      return this;
    }

    public APIRequestCreateLeadGenForm setCoverPhoto (File coverPhoto) {
      this.setParam("cover_photo", coverPhoto);
      return this;
    }
    public APIRequestCreateLeadGenForm setCoverPhoto (String coverPhoto) {
      this.setParam("cover_photo", coverPhoto);
      return this;
    }

    public APIRequestCreateLeadGenForm setQuestionPageCustomHeadline (String questionPageCustomHeadline) {
      this.setParam("question_page_custom_headline", questionPageCustomHeadline);
      return this;
    }

    public APIRequestCreateLeadGenForm setIsOptimizedForQuality (Boolean isOptimizedForQuality) {
      this.setParam("is_optimized_for_quality", isOptimizedForQuality);
      return this;
    }
    public APIRequestCreateLeadGenForm setIsOptimizedForQuality (String isOptimizedForQuality) {
      this.setParam("is_optimized_for_quality", isOptimizedForQuality);
      return this;
    }

    public APIRequestCreateLeadGenForm setIsForCanvas (Boolean isForCanvas) {
      this.setParam("is_for_canvas", isForCanvas);
      return this;
    }
    public APIRequestCreateLeadGenForm setIsForCanvas (String isForCanvas) {
      this.setParam("is_for_canvas", isForCanvas);
      return this;
    }

    public APIRequestCreateLeadGenForm requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateLeadGenForm requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLeadGenForm requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateLeadGenForm requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLeadGenForm requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateLeadGenForm requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetLeadGenLegalContent extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "custom_disclaimer",
      "id",
      "privacy_policy",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return LeadGenLegalContent.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetLeadGenLegalContent.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetLeadGenLegalContent(String nodeId, APIContext context) {
      super(context, nodeId, "/leadgen_legal_content", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetLeadGenLegalContent setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetLeadGenLegalContent setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetLeadGenLegalContent requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetLeadGenLegalContent requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLeadGenLegalContent requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetLeadGenLegalContent requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLeadGenLegalContent requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetLeadGenLegalContent requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetLeadGenLegalContent requestCustomDisclaimerField () {
      return this.requestCustomDisclaimerField(true);
    }
    public APIRequestGetLeadGenLegalContent requestCustomDisclaimerField (boolean value) {
      this.requestField("custom_disclaimer", value);
      return this;
    }
    public APIRequestGetLeadGenLegalContent requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetLeadGenLegalContent requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetLeadGenLegalContent requestPrivacyPolicyField () {
      return this.requestPrivacyPolicyField(true);
    }
    public APIRequestGetLeadGenLegalContent requestPrivacyPolicyField (boolean value) {
      this.requestField("privacy_policy", value);
      return this;
    }
  }

  public static class APIRequestDeleteLeadGenWhitelistedUsers extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "user_id",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteLeadGenWhitelistedUsers.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteLeadGenWhitelistedUsers(String nodeId, APIContext context) {
      super(context, nodeId, "/leadgen_whitelisted_users", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteLeadGenWhitelistedUsers setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteLeadGenWhitelistedUsers setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteLeadGenWhitelistedUsers setUserId (String userId) {
      this.setParam("user_id", userId);
      return this;
    }

    public APIRequestDeleteLeadGenWhitelistedUsers requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteLeadGenWhitelistedUsers requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteLeadGenWhitelistedUsers requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteLeadGenWhitelistedUsers requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteLeadGenWhitelistedUsers requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteLeadGenWhitelistedUsers requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetLeadGenWhitelistedUsers extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "about",
      "address",
      "admin_notes",
      "age_range",
      "birthday",
      "can_review_measurement_request",
      "context",
      "cover",
      "currency",
      "devices",
      "education",
      "email",
      "employee_number",
      "favorite_athletes",
      "favorite_teams",
      "first_name",
      "gender",
      "hometown",
      "id",
      "inspirational_people",
      "install_type",
      "installed",
      "interested_in",
      "is_famedeeplinkinguser",
      "is_shared_login",
      "is_verified",
      "labels",
      "languages",
      "last_name",
      "link",
      "local_news_megaphone_dismiss_status",
      "local_news_subscription_status",
      "locale",
      "location",
      "meeting_for",
      "middle_name",
      "name",
      "name_format",
      "payment_pricepoints",
      "political",
      "profile_pic",
      "public_key",
      "quotes",
      "relationship_status",
      "religion",
      "security_settings",
      "shared_login_upgrade_required_by",
      "short_name",
      "significant_other",
      "sports",
      "test_group",
      "third_party_id",
      "timezone",
      "token_for_business",
      "updated_time",
      "verified",
      "video_upload_limits",
      "viewer_can_send_gift",
      "website",
      "work",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return User.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetLeadGenWhitelistedUsers.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetLeadGenWhitelistedUsers(String nodeId, APIContext context) {
      super(context, nodeId, "/leadgen_whitelisted_users", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetLeadGenWhitelistedUsers setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetLeadGenWhitelistedUsers setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetLeadGenWhitelistedUsers requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetLeadGenWhitelistedUsers requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLeadGenWhitelistedUsers requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetLeadGenWhitelistedUsers requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLeadGenWhitelistedUsers requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetLeadGenWhitelistedUsers requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetLeadGenWhitelistedUsers requestAboutField () {
      return this.requestAboutField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestAboutField (boolean value) {
      this.requestField("about", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestAddressField () {
      return this.requestAddressField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestAddressField (boolean value) {
      this.requestField("address", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestAdminNotesField () {
      return this.requestAdminNotesField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestAdminNotesField (boolean value) {
      this.requestField("admin_notes", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestAgeRangeField () {
      return this.requestAgeRangeField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestAgeRangeField (boolean value) {
      this.requestField("age_range", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestBirthdayField () {
      return this.requestBirthdayField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestBirthdayField (boolean value) {
      this.requestField("birthday", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestCanReviewMeasurementRequestField () {
      return this.requestCanReviewMeasurementRequestField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestCanReviewMeasurementRequestField (boolean value) {
      this.requestField("can_review_measurement_request", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestContextField () {
      return this.requestContextField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestContextField (boolean value) {
      this.requestField("context", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestCoverField () {
      return this.requestCoverField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestCoverField (boolean value) {
      this.requestField("cover", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestCurrencyField () {
      return this.requestCurrencyField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestCurrencyField (boolean value) {
      this.requestField("currency", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestDevicesField () {
      return this.requestDevicesField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestDevicesField (boolean value) {
      this.requestField("devices", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestEducationField () {
      return this.requestEducationField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestEducationField (boolean value) {
      this.requestField("education", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestEmailField () {
      return this.requestEmailField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestEmailField (boolean value) {
      this.requestField("email", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestEmployeeNumberField () {
      return this.requestEmployeeNumberField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestEmployeeNumberField (boolean value) {
      this.requestField("employee_number", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestFavoriteAthletesField () {
      return this.requestFavoriteAthletesField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestFavoriteAthletesField (boolean value) {
      this.requestField("favorite_athletes", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestFavoriteTeamsField () {
      return this.requestFavoriteTeamsField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestFavoriteTeamsField (boolean value) {
      this.requestField("favorite_teams", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestFirstNameField () {
      return this.requestFirstNameField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestFirstNameField (boolean value) {
      this.requestField("first_name", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestGenderField () {
      return this.requestGenderField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestGenderField (boolean value) {
      this.requestField("gender", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestHometownField () {
      return this.requestHometownField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestHometownField (boolean value) {
      this.requestField("hometown", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestInspirationalPeopleField () {
      return this.requestInspirationalPeopleField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestInspirationalPeopleField (boolean value) {
      this.requestField("inspirational_people", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestInstallTypeField () {
      return this.requestInstallTypeField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestInstallTypeField (boolean value) {
      this.requestField("install_type", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestInstalledField () {
      return this.requestInstalledField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestInstalledField (boolean value) {
      this.requestField("installed", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestInterestedInField () {
      return this.requestInterestedInField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestInterestedInField (boolean value) {
      this.requestField("interested_in", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestIsFamedeeplinkinguserField () {
      return this.requestIsFamedeeplinkinguserField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestIsFamedeeplinkinguserField (boolean value) {
      this.requestField("is_famedeeplinkinguser", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestIsSharedLoginField () {
      return this.requestIsSharedLoginField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestIsSharedLoginField (boolean value) {
      this.requestField("is_shared_login", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestIsVerifiedField () {
      return this.requestIsVerifiedField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestIsVerifiedField (boolean value) {
      this.requestField("is_verified", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLabelsField () {
      return this.requestLabelsField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLabelsField (boolean value) {
      this.requestField("labels", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLanguagesField () {
      return this.requestLanguagesField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLanguagesField (boolean value) {
      this.requestField("languages", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLastNameField () {
      return this.requestLastNameField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLastNameField (boolean value) {
      this.requestField("last_name", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLocalNewsMegaphoneDismissStatusField () {
      return this.requestLocalNewsMegaphoneDismissStatusField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLocalNewsMegaphoneDismissStatusField (boolean value) {
      this.requestField("local_news_megaphone_dismiss_status", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLocalNewsSubscriptionStatusField () {
      return this.requestLocalNewsSubscriptionStatusField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLocalNewsSubscriptionStatusField (boolean value) {
      this.requestField("local_news_subscription_status", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLocaleField () {
      return this.requestLocaleField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLocaleField (boolean value) {
      this.requestField("locale", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLocationField () {
      return this.requestLocationField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestLocationField (boolean value) {
      this.requestField("location", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestMeetingForField () {
      return this.requestMeetingForField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestMeetingForField (boolean value) {
      this.requestField("meeting_for", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestMiddleNameField () {
      return this.requestMiddleNameField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestMiddleNameField (boolean value) {
      this.requestField("middle_name", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestNameFormatField () {
      return this.requestNameFormatField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestNameFormatField (boolean value) {
      this.requestField("name_format", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestPaymentPricepointsField () {
      return this.requestPaymentPricepointsField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestPaymentPricepointsField (boolean value) {
      this.requestField("payment_pricepoints", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestPoliticalField () {
      return this.requestPoliticalField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestPoliticalField (boolean value) {
      this.requestField("political", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestProfilePicField () {
      return this.requestProfilePicField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestProfilePicField (boolean value) {
      this.requestField("profile_pic", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestPublicKeyField () {
      return this.requestPublicKeyField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestPublicKeyField (boolean value) {
      this.requestField("public_key", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestQuotesField () {
      return this.requestQuotesField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestQuotesField (boolean value) {
      this.requestField("quotes", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestRelationshipStatusField () {
      return this.requestRelationshipStatusField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestRelationshipStatusField (boolean value) {
      this.requestField("relationship_status", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestReligionField () {
      return this.requestReligionField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestReligionField (boolean value) {
      this.requestField("religion", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestSecuritySettingsField () {
      return this.requestSecuritySettingsField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestSecuritySettingsField (boolean value) {
      this.requestField("security_settings", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestSharedLoginUpgradeRequiredByField () {
      return this.requestSharedLoginUpgradeRequiredByField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestSharedLoginUpgradeRequiredByField (boolean value) {
      this.requestField("shared_login_upgrade_required_by", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestShortNameField () {
      return this.requestShortNameField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestShortNameField (boolean value) {
      this.requestField("short_name", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestSignificantOtherField () {
      return this.requestSignificantOtherField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestSignificantOtherField (boolean value) {
      this.requestField("significant_other", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestSportsField () {
      return this.requestSportsField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestSportsField (boolean value) {
      this.requestField("sports", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestTestGroupField () {
      return this.requestTestGroupField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestTestGroupField (boolean value) {
      this.requestField("test_group", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestThirdPartyIdField () {
      return this.requestThirdPartyIdField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestThirdPartyIdField (boolean value) {
      this.requestField("third_party_id", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestTimezoneField () {
      return this.requestTimezoneField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestTimezoneField (boolean value) {
      this.requestField("timezone", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestTokenForBusinessField () {
      return this.requestTokenForBusinessField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestTokenForBusinessField (boolean value) {
      this.requestField("token_for_business", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestVerifiedField () {
      return this.requestVerifiedField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestVerifiedField (boolean value) {
      this.requestField("verified", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestVideoUploadLimitsField () {
      return this.requestVideoUploadLimitsField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestVideoUploadLimitsField (boolean value) {
      this.requestField("video_upload_limits", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestViewerCanSendGiftField () {
      return this.requestViewerCanSendGiftField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestViewerCanSendGiftField (boolean value) {
      this.requestField("viewer_can_send_gift", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestWebsiteField () {
      return this.requestWebsiteField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestWebsiteField (boolean value) {
      this.requestField("website", value);
      return this;
    }
    public APIRequestGetLeadGenWhitelistedUsers requestWorkField () {
      return this.requestWorkField(true);
    }
    public APIRequestGetLeadGenWhitelistedUsers requestWorkField (boolean value) {
      this.requestField("work", value);
      return this;
    }
  }

  public static class APIRequestCreateLeadGenWhitelistedUser extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "user_id",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateLeadGenWhitelistedUser.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateLeadGenWhitelistedUser(String nodeId, APIContext context) {
      super(context, nodeId, "/leadgen_whitelisted_users", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateLeadGenWhitelistedUser setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateLeadGenWhitelistedUser setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateLeadGenWhitelistedUser setUserId (Long userId) {
      this.setParam("user_id", userId);
      return this;
    }
    public APIRequestCreateLeadGenWhitelistedUser setUserId (String userId) {
      this.setParam("user_id", userId);
      return this;
    }

    public APIRequestCreateLeadGenWhitelistedUser requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateLeadGenWhitelistedUser requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLeadGenWhitelistedUser requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateLeadGenWhitelistedUser requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLeadGenWhitelistedUser requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateLeadGenWhitelistedUser requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetLikes extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "target_id",
    };

    public static final String[] FIELDS = {
      "about",
      "access_token",
      "ad_campaign",
      "affiliation",
      "app_id",
      "app_links",
      "artists_we_like",
      "attire",
      "awards",
      "band_interests",
      "band_members",
      "best_page",
      "bio",
      "birthday",
      "booking_agent",
      "built",
      "business",
      "can_checkin",
      "can_post",
      "category",
      "category_list",
      "checkins",
      "company_overview",
      "connected_instagram_account",
      "contact_address",
      "context",
      "copyright_attribution_insights",
      "copyright_whitelisted_ig_partners",
      "country_page_likes",
      "cover",
      "culinary_team",
      "current_location",
      "description",
      "description_html",
      "directed_by",
      "display_subtext",
      "displayed_message_response_time",
      "emails",
      "engagement",
      "fan_count",
      "featured_video",
      "features",
      "food_styles",
      "founded",
      "general_info",
      "general_manager",
      "genre",
      "global_brand_page_name",
      "global_brand_root_id",
      "has_added_app",
      "has_whatsapp_business_number",
      "has_whatsapp_number",
      "hometown",
      "hours",
      "id",
      "impressum",
      "influences",
      "instagram_business_account",
      "instant_articles_review_status",
      "is_always_open",
      "is_chain",
      "is_community_page",
      "is_eligible_for_branded_content",
      "is_messenger_bot_get_started_enabled",
      "is_messenger_platform_bot",
      "is_owned",
      "is_permanently_closed",
      "is_published",
      "is_unclaimed",
      "is_verified",
      "is_webhooks_subscribed",
      "keywords",
      "leadgen_form_preview_details",
      "leadgen_has_crm_integration",
      "leadgen_has_fat_ping_crm_integration",
      "leadgen_tos_acceptance_time",
      "leadgen_tos_accepted",
      "leadgen_tos_accepting_user",
      "link",
      "location",
      "members",
      "merchant_id",
      "merchant_review_status",
      "messenger_ads_default_icebreakers",
      "messenger_ads_default_page_welcome_message",
      "messenger_ads_default_quick_replies",
      "messenger_ads_quick_replies_type",
      "mission",
      "mpg",
      "name",
      "name_with_location_descriptor",
      "network",
      "new_like_count",
      "offer_eligible",
      "overall_star_rating",
      "page_about_story",
      "page_token",
      "parent_page",
      "parking",
      "payment_options",
      "personal_info",
      "personal_interests",
      "pharma_safety_info",
      "phone",
      "place_type",
      "plot_outline",
      "preferred_audience",
      "press_contact",
      "price_range",
      "privacy_info_url",
      "produced_by",
      "products",
      "promotion_eligible",
      "promotion_ineligible_reason",
      "public_transit",
      "rating_count",
      "recipient",
      "record_label",
      "release_date",
      "restaurant_services",
      "restaurant_specialties",
      "schedule",
      "screenplay_by",
      "season",
      "single_line_address",
      "starring",
      "start_info",
      "store_code",
      "store_location_descriptor",
      "store_number",
      "studio",
      "supports_instant_articles",
      "talking_about_count",
      "unread_message_count",
      "unread_notif_count",
      "unseen_message_count",
      "username",
      "verification_status",
      "voip_info",
      "website",
      "were_here_count",
      "whatsapp_number",
      "written_by",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetLikes.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetLikes(String nodeId, APIContext context) {
      super(context, nodeId, "/likes", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetLikes setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetLikes setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetLikes setTargetId (String targetId) {
      this.setParam("target_id", targetId);
      return this;
    }

    public APIRequestGetLikes requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetLikes requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLikes requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetLikes requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLikes requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetLikes requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetLikes requestAboutField () {
      return this.requestAboutField(true);
    }
    public APIRequestGetLikes requestAboutField (boolean value) {
      this.requestField("about", value);
      return this;
    }
    public APIRequestGetLikes requestAccessTokenField () {
      return this.requestAccessTokenField(true);
    }
    public APIRequestGetLikes requestAccessTokenField (boolean value) {
      this.requestField("access_token", value);
      return this;
    }
    public APIRequestGetLikes requestAdCampaignField () {
      return this.requestAdCampaignField(true);
    }
    public APIRequestGetLikes requestAdCampaignField (boolean value) {
      this.requestField("ad_campaign", value);
      return this;
    }
    public APIRequestGetLikes requestAffiliationField () {
      return this.requestAffiliationField(true);
    }
    public APIRequestGetLikes requestAffiliationField (boolean value) {
      this.requestField("affiliation", value);
      return this;
    }
    public APIRequestGetLikes requestAppIdField () {
      return this.requestAppIdField(true);
    }
    public APIRequestGetLikes requestAppIdField (boolean value) {
      this.requestField("app_id", value);
      return this;
    }
    public APIRequestGetLikes requestAppLinksField () {
      return this.requestAppLinksField(true);
    }
    public APIRequestGetLikes requestAppLinksField (boolean value) {
      this.requestField("app_links", value);
      return this;
    }
    public APIRequestGetLikes requestArtistsWeLikeField () {
      return this.requestArtistsWeLikeField(true);
    }
    public APIRequestGetLikes requestArtistsWeLikeField (boolean value) {
      this.requestField("artists_we_like", value);
      return this;
    }
    public APIRequestGetLikes requestAttireField () {
      return this.requestAttireField(true);
    }
    public APIRequestGetLikes requestAttireField (boolean value) {
      this.requestField("attire", value);
      return this;
    }
    public APIRequestGetLikes requestAwardsField () {
      return this.requestAwardsField(true);
    }
    public APIRequestGetLikes requestAwardsField (boolean value) {
      this.requestField("awards", value);
      return this;
    }
    public APIRequestGetLikes requestBandInterestsField () {
      return this.requestBandInterestsField(true);
    }
    public APIRequestGetLikes requestBandInterestsField (boolean value) {
      this.requestField("band_interests", value);
      return this;
    }
    public APIRequestGetLikes requestBandMembersField () {
      return this.requestBandMembersField(true);
    }
    public APIRequestGetLikes requestBandMembersField (boolean value) {
      this.requestField("band_members", value);
      return this;
    }
    public APIRequestGetLikes requestBestPageField () {
      return this.requestBestPageField(true);
    }
    public APIRequestGetLikes requestBestPageField (boolean value) {
      this.requestField("best_page", value);
      return this;
    }
    public APIRequestGetLikes requestBioField () {
      return this.requestBioField(true);
    }
    public APIRequestGetLikes requestBioField (boolean value) {
      this.requestField("bio", value);
      return this;
    }
    public APIRequestGetLikes requestBirthdayField () {
      return this.requestBirthdayField(true);
    }
    public APIRequestGetLikes requestBirthdayField (boolean value) {
      this.requestField("birthday", value);
      return this;
    }
    public APIRequestGetLikes requestBookingAgentField () {
      return this.requestBookingAgentField(true);
    }
    public APIRequestGetLikes requestBookingAgentField (boolean value) {
      this.requestField("booking_agent", value);
      return this;
    }
    public APIRequestGetLikes requestBuiltField () {
      return this.requestBuiltField(true);
    }
    public APIRequestGetLikes requestBuiltField (boolean value) {
      this.requestField("built", value);
      return this;
    }
    public APIRequestGetLikes requestBusinessField () {
      return this.requestBusinessField(true);
    }
    public APIRequestGetLikes requestBusinessField (boolean value) {
      this.requestField("business", value);
      return this;
    }
    public APIRequestGetLikes requestCanCheckinField () {
      return this.requestCanCheckinField(true);
    }
    public APIRequestGetLikes requestCanCheckinField (boolean value) {
      this.requestField("can_checkin", value);
      return this;
    }
    public APIRequestGetLikes requestCanPostField () {
      return this.requestCanPostField(true);
    }
    public APIRequestGetLikes requestCanPostField (boolean value) {
      this.requestField("can_post", value);
      return this;
    }
    public APIRequestGetLikes requestCategoryField () {
      return this.requestCategoryField(true);
    }
    public APIRequestGetLikes requestCategoryField (boolean value) {
      this.requestField("category", value);
      return this;
    }
    public APIRequestGetLikes requestCategoryListField () {
      return this.requestCategoryListField(true);
    }
    public APIRequestGetLikes requestCategoryListField (boolean value) {
      this.requestField("category_list", value);
      return this;
    }
    public APIRequestGetLikes requestCheckinsField () {
      return this.requestCheckinsField(true);
    }
    public APIRequestGetLikes requestCheckinsField (boolean value) {
      this.requestField("checkins", value);
      return this;
    }
    public APIRequestGetLikes requestCompanyOverviewField () {
      return this.requestCompanyOverviewField(true);
    }
    public APIRequestGetLikes requestCompanyOverviewField (boolean value) {
      this.requestField("company_overview", value);
      return this;
    }
    public APIRequestGetLikes requestConnectedInstagramAccountField () {
      return this.requestConnectedInstagramAccountField(true);
    }
    public APIRequestGetLikes requestConnectedInstagramAccountField (boolean value) {
      this.requestField("connected_instagram_account", value);
      return this;
    }
    public APIRequestGetLikes requestContactAddressField () {
      return this.requestContactAddressField(true);
    }
    public APIRequestGetLikes requestContactAddressField (boolean value) {
      this.requestField("contact_address", value);
      return this;
    }
    public APIRequestGetLikes requestContextField () {
      return this.requestContextField(true);
    }
    public APIRequestGetLikes requestContextField (boolean value) {
      this.requestField("context", value);
      return this;
    }
    public APIRequestGetLikes requestCopyrightAttributionInsightsField () {
      return this.requestCopyrightAttributionInsightsField(true);
    }
    public APIRequestGetLikes requestCopyrightAttributionInsightsField (boolean value) {
      this.requestField("copyright_attribution_insights", value);
      return this;
    }
    public APIRequestGetLikes requestCopyrightWhitelistedIgPartnersField () {
      return this.requestCopyrightWhitelistedIgPartnersField(true);
    }
    public APIRequestGetLikes requestCopyrightWhitelistedIgPartnersField (boolean value) {
      this.requestField("copyright_whitelisted_ig_partners", value);
      return this;
    }
    public APIRequestGetLikes requestCountryPageLikesField () {
      return this.requestCountryPageLikesField(true);
    }
    public APIRequestGetLikes requestCountryPageLikesField (boolean value) {
      this.requestField("country_page_likes", value);
      return this;
    }
    public APIRequestGetLikes requestCoverField () {
      return this.requestCoverField(true);
    }
    public APIRequestGetLikes requestCoverField (boolean value) {
      this.requestField("cover", value);
      return this;
    }
    public APIRequestGetLikes requestCulinaryTeamField () {
      return this.requestCulinaryTeamField(true);
    }
    public APIRequestGetLikes requestCulinaryTeamField (boolean value) {
      this.requestField("culinary_team", value);
      return this;
    }
    public APIRequestGetLikes requestCurrentLocationField () {
      return this.requestCurrentLocationField(true);
    }
    public APIRequestGetLikes requestCurrentLocationField (boolean value) {
      this.requestField("current_location", value);
      return this;
    }
    public APIRequestGetLikes requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetLikes requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetLikes requestDescriptionHtmlField () {
      return this.requestDescriptionHtmlField(true);
    }
    public APIRequestGetLikes requestDescriptionHtmlField (boolean value) {
      this.requestField("description_html", value);
      return this;
    }
    public APIRequestGetLikes requestDirectedByField () {
      return this.requestDirectedByField(true);
    }
    public APIRequestGetLikes requestDirectedByField (boolean value) {
      this.requestField("directed_by", value);
      return this;
    }
    public APIRequestGetLikes requestDisplaySubtextField () {
      return this.requestDisplaySubtextField(true);
    }
    public APIRequestGetLikes requestDisplaySubtextField (boolean value) {
      this.requestField("display_subtext", value);
      return this;
    }
    public APIRequestGetLikes requestDisplayedMessageResponseTimeField () {
      return this.requestDisplayedMessageResponseTimeField(true);
    }
    public APIRequestGetLikes requestDisplayedMessageResponseTimeField (boolean value) {
      this.requestField("displayed_message_response_time", value);
      return this;
    }
    public APIRequestGetLikes requestEmailsField () {
      return this.requestEmailsField(true);
    }
    public APIRequestGetLikes requestEmailsField (boolean value) {
      this.requestField("emails", value);
      return this;
    }
    public APIRequestGetLikes requestEngagementField () {
      return this.requestEngagementField(true);
    }
    public APIRequestGetLikes requestEngagementField (boolean value) {
      this.requestField("engagement", value);
      return this;
    }
    public APIRequestGetLikes requestFanCountField () {
      return this.requestFanCountField(true);
    }
    public APIRequestGetLikes requestFanCountField (boolean value) {
      this.requestField("fan_count", value);
      return this;
    }
    public APIRequestGetLikes requestFeaturedVideoField () {
      return this.requestFeaturedVideoField(true);
    }
    public APIRequestGetLikes requestFeaturedVideoField (boolean value) {
      this.requestField("featured_video", value);
      return this;
    }
    public APIRequestGetLikes requestFeaturesField () {
      return this.requestFeaturesField(true);
    }
    public APIRequestGetLikes requestFeaturesField (boolean value) {
      this.requestField("features", value);
      return this;
    }
    public APIRequestGetLikes requestFoodStylesField () {
      return this.requestFoodStylesField(true);
    }
    public APIRequestGetLikes requestFoodStylesField (boolean value) {
      this.requestField("food_styles", value);
      return this;
    }
    public APIRequestGetLikes requestFoundedField () {
      return this.requestFoundedField(true);
    }
    public APIRequestGetLikes requestFoundedField (boolean value) {
      this.requestField("founded", value);
      return this;
    }
    public APIRequestGetLikes requestGeneralInfoField () {
      return this.requestGeneralInfoField(true);
    }
    public APIRequestGetLikes requestGeneralInfoField (boolean value) {
      this.requestField("general_info", value);
      return this;
    }
    public APIRequestGetLikes requestGeneralManagerField () {
      return this.requestGeneralManagerField(true);
    }
    public APIRequestGetLikes requestGeneralManagerField (boolean value) {
      this.requestField("general_manager", value);
      return this;
    }
    public APIRequestGetLikes requestGenreField () {
      return this.requestGenreField(true);
    }
    public APIRequestGetLikes requestGenreField (boolean value) {
      this.requestField("genre", value);
      return this;
    }
    public APIRequestGetLikes requestGlobalBrandPageNameField () {
      return this.requestGlobalBrandPageNameField(true);
    }
    public APIRequestGetLikes requestGlobalBrandPageNameField (boolean value) {
      this.requestField("global_brand_page_name", value);
      return this;
    }
    public APIRequestGetLikes requestGlobalBrandRootIdField () {
      return this.requestGlobalBrandRootIdField(true);
    }
    public APIRequestGetLikes requestGlobalBrandRootIdField (boolean value) {
      this.requestField("global_brand_root_id", value);
      return this;
    }
    public APIRequestGetLikes requestHasAddedAppField () {
      return this.requestHasAddedAppField(true);
    }
    public APIRequestGetLikes requestHasAddedAppField (boolean value) {
      this.requestField("has_added_app", value);
      return this;
    }
    public APIRequestGetLikes requestHasWhatsappBusinessNumberField () {
      return this.requestHasWhatsappBusinessNumberField(true);
    }
    public APIRequestGetLikes requestHasWhatsappBusinessNumberField (boolean value) {
      this.requestField("has_whatsapp_business_number", value);
      return this;
    }
    public APIRequestGetLikes requestHasWhatsappNumberField () {
      return this.requestHasWhatsappNumberField(true);
    }
    public APIRequestGetLikes requestHasWhatsappNumberField (boolean value) {
      this.requestField("has_whatsapp_number", value);
      return this;
    }
    public APIRequestGetLikes requestHometownField () {
      return this.requestHometownField(true);
    }
    public APIRequestGetLikes requestHometownField (boolean value) {
      this.requestField("hometown", value);
      return this;
    }
    public APIRequestGetLikes requestHoursField () {
      return this.requestHoursField(true);
    }
    public APIRequestGetLikes requestHoursField (boolean value) {
      this.requestField("hours", value);
      return this;
    }
    public APIRequestGetLikes requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetLikes requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetLikes requestImpressumField () {
      return this.requestImpressumField(true);
    }
    public APIRequestGetLikes requestImpressumField (boolean value) {
      this.requestField("impressum", value);
      return this;
    }
    public APIRequestGetLikes requestInfluencesField () {
      return this.requestInfluencesField(true);
    }
    public APIRequestGetLikes requestInfluencesField (boolean value) {
      this.requestField("influences", value);
      return this;
    }
    public APIRequestGetLikes requestInstagramBusinessAccountField () {
      return this.requestInstagramBusinessAccountField(true);
    }
    public APIRequestGetLikes requestInstagramBusinessAccountField (boolean value) {
      this.requestField("instagram_business_account", value);
      return this;
    }
    public APIRequestGetLikes requestInstantArticlesReviewStatusField () {
      return this.requestInstantArticlesReviewStatusField(true);
    }
    public APIRequestGetLikes requestInstantArticlesReviewStatusField (boolean value) {
      this.requestField("instant_articles_review_status", value);
      return this;
    }
    public APIRequestGetLikes requestIsAlwaysOpenField () {
      return this.requestIsAlwaysOpenField(true);
    }
    public APIRequestGetLikes requestIsAlwaysOpenField (boolean value) {
      this.requestField("is_always_open", value);
      return this;
    }
    public APIRequestGetLikes requestIsChainField () {
      return this.requestIsChainField(true);
    }
    public APIRequestGetLikes requestIsChainField (boolean value) {
      this.requestField("is_chain", value);
      return this;
    }
    public APIRequestGetLikes requestIsCommunityPageField () {
      return this.requestIsCommunityPageField(true);
    }
    public APIRequestGetLikes requestIsCommunityPageField (boolean value) {
      this.requestField("is_community_page", value);
      return this;
    }
    public APIRequestGetLikes requestIsEligibleForBrandedContentField () {
      return this.requestIsEligibleForBrandedContentField(true);
    }
    public APIRequestGetLikes requestIsEligibleForBrandedContentField (boolean value) {
      this.requestField("is_eligible_for_branded_content", value);
      return this;
    }
    public APIRequestGetLikes requestIsMessengerBotGetStartedEnabledField () {
      return this.requestIsMessengerBotGetStartedEnabledField(true);
    }
    public APIRequestGetLikes requestIsMessengerBotGetStartedEnabledField (boolean value) {
      this.requestField("is_messenger_bot_get_started_enabled", value);
      return this;
    }
    public APIRequestGetLikes requestIsMessengerPlatformBotField () {
      return this.requestIsMessengerPlatformBotField(true);
    }
    public APIRequestGetLikes requestIsMessengerPlatformBotField (boolean value) {
      this.requestField("is_messenger_platform_bot", value);
      return this;
    }
    public APIRequestGetLikes requestIsOwnedField () {
      return this.requestIsOwnedField(true);
    }
    public APIRequestGetLikes requestIsOwnedField (boolean value) {
      this.requestField("is_owned", value);
      return this;
    }
    public APIRequestGetLikes requestIsPermanentlyClosedField () {
      return this.requestIsPermanentlyClosedField(true);
    }
    public APIRequestGetLikes requestIsPermanentlyClosedField (boolean value) {
      this.requestField("is_permanently_closed", value);
      return this;
    }
    public APIRequestGetLikes requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetLikes requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetLikes requestIsUnclaimedField () {
      return this.requestIsUnclaimedField(true);
    }
    public APIRequestGetLikes requestIsUnclaimedField (boolean value) {
      this.requestField("is_unclaimed", value);
      return this;
    }
    public APIRequestGetLikes requestIsVerifiedField () {
      return this.requestIsVerifiedField(true);
    }
    public APIRequestGetLikes requestIsVerifiedField (boolean value) {
      this.requestField("is_verified", value);
      return this;
    }
    public APIRequestGetLikes requestIsWebhooksSubscribedField () {
      return this.requestIsWebhooksSubscribedField(true);
    }
    public APIRequestGetLikes requestIsWebhooksSubscribedField (boolean value) {
      this.requestField("is_webhooks_subscribed", value);
      return this;
    }
    public APIRequestGetLikes requestKeywordsField () {
      return this.requestKeywordsField(true);
    }
    public APIRequestGetLikes requestKeywordsField (boolean value) {
      this.requestField("keywords", value);
      return this;
    }
    public APIRequestGetLikes requestLeadgenFormPreviewDetailsField () {
      return this.requestLeadgenFormPreviewDetailsField(true);
    }
    public APIRequestGetLikes requestLeadgenFormPreviewDetailsField (boolean value) {
      this.requestField("leadgen_form_preview_details", value);
      return this;
    }
    public APIRequestGetLikes requestLeadgenHasCrmIntegrationField () {
      return this.requestLeadgenHasCrmIntegrationField(true);
    }
    public APIRequestGetLikes requestLeadgenHasCrmIntegrationField (boolean value) {
      this.requestField("leadgen_has_crm_integration", value);
      return this;
    }
    public APIRequestGetLikes requestLeadgenHasFatPingCrmIntegrationField () {
      return this.requestLeadgenHasFatPingCrmIntegrationField(true);
    }
    public APIRequestGetLikes requestLeadgenHasFatPingCrmIntegrationField (boolean value) {
      this.requestField("leadgen_has_fat_ping_crm_integration", value);
      return this;
    }
    public APIRequestGetLikes requestLeadgenTosAcceptanceTimeField () {
      return this.requestLeadgenTosAcceptanceTimeField(true);
    }
    public APIRequestGetLikes requestLeadgenTosAcceptanceTimeField (boolean value) {
      this.requestField("leadgen_tos_acceptance_time", value);
      return this;
    }
    public APIRequestGetLikes requestLeadgenTosAcceptedField () {
      return this.requestLeadgenTosAcceptedField(true);
    }
    public APIRequestGetLikes requestLeadgenTosAcceptedField (boolean value) {
      this.requestField("leadgen_tos_accepted", value);
      return this;
    }
    public APIRequestGetLikes requestLeadgenTosAcceptingUserField () {
      return this.requestLeadgenTosAcceptingUserField(true);
    }
    public APIRequestGetLikes requestLeadgenTosAcceptingUserField (boolean value) {
      this.requestField("leadgen_tos_accepting_user", value);
      return this;
    }
    public APIRequestGetLikes requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetLikes requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetLikes requestLocationField () {
      return this.requestLocationField(true);
    }
    public APIRequestGetLikes requestLocationField (boolean value) {
      this.requestField("location", value);
      return this;
    }
    public APIRequestGetLikes requestMembersField () {
      return this.requestMembersField(true);
    }
    public APIRequestGetLikes requestMembersField (boolean value) {
      this.requestField("members", value);
      return this;
    }
    public APIRequestGetLikes requestMerchantIdField () {
      return this.requestMerchantIdField(true);
    }
    public APIRequestGetLikes requestMerchantIdField (boolean value) {
      this.requestField("merchant_id", value);
      return this;
    }
    public APIRequestGetLikes requestMerchantReviewStatusField () {
      return this.requestMerchantReviewStatusField(true);
    }
    public APIRequestGetLikes requestMerchantReviewStatusField (boolean value) {
      this.requestField("merchant_review_status", value);
      return this;
    }
    public APIRequestGetLikes requestMessengerAdsDefaultIcebreakersField () {
      return this.requestMessengerAdsDefaultIcebreakersField(true);
    }
    public APIRequestGetLikes requestMessengerAdsDefaultIcebreakersField (boolean value) {
      this.requestField("messenger_ads_default_icebreakers", value);
      return this;
    }
    public APIRequestGetLikes requestMessengerAdsDefaultPageWelcomeMessageField () {
      return this.requestMessengerAdsDefaultPageWelcomeMessageField(true);
    }
    public APIRequestGetLikes requestMessengerAdsDefaultPageWelcomeMessageField (boolean value) {
      this.requestField("messenger_ads_default_page_welcome_message", value);
      return this;
    }
    public APIRequestGetLikes requestMessengerAdsDefaultQuickRepliesField () {
      return this.requestMessengerAdsDefaultQuickRepliesField(true);
    }
    public APIRequestGetLikes requestMessengerAdsDefaultQuickRepliesField (boolean value) {
      this.requestField("messenger_ads_default_quick_replies", value);
      return this;
    }
    public APIRequestGetLikes requestMessengerAdsQuickRepliesTypeField () {
      return this.requestMessengerAdsQuickRepliesTypeField(true);
    }
    public APIRequestGetLikes requestMessengerAdsQuickRepliesTypeField (boolean value) {
      this.requestField("messenger_ads_quick_replies_type", value);
      return this;
    }
    public APIRequestGetLikes requestMissionField () {
      return this.requestMissionField(true);
    }
    public APIRequestGetLikes requestMissionField (boolean value) {
      this.requestField("mission", value);
      return this;
    }
    public APIRequestGetLikes requestMpgField () {
      return this.requestMpgField(true);
    }
    public APIRequestGetLikes requestMpgField (boolean value) {
      this.requestField("mpg", value);
      return this;
    }
    public APIRequestGetLikes requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetLikes requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetLikes requestNameWithLocationDescriptorField () {
      return this.requestNameWithLocationDescriptorField(true);
    }
    public APIRequestGetLikes requestNameWithLocationDescriptorField (boolean value) {
      this.requestField("name_with_location_descriptor", value);
      return this;
    }
    public APIRequestGetLikes requestNetworkField () {
      return this.requestNetworkField(true);
    }
    public APIRequestGetLikes requestNetworkField (boolean value) {
      this.requestField("network", value);
      return this;
    }
    public APIRequestGetLikes requestNewLikeCountField () {
      return this.requestNewLikeCountField(true);
    }
    public APIRequestGetLikes requestNewLikeCountField (boolean value) {
      this.requestField("new_like_count", value);
      return this;
    }
    public APIRequestGetLikes requestOfferEligibleField () {
      return this.requestOfferEligibleField(true);
    }
    public APIRequestGetLikes requestOfferEligibleField (boolean value) {
      this.requestField("offer_eligible", value);
      return this;
    }
    public APIRequestGetLikes requestOverallStarRatingField () {
      return this.requestOverallStarRatingField(true);
    }
    public APIRequestGetLikes requestOverallStarRatingField (boolean value) {
      this.requestField("overall_star_rating", value);
      return this;
    }
    public APIRequestGetLikes requestPageAboutStoryField () {
      return this.requestPageAboutStoryField(true);
    }
    public APIRequestGetLikes requestPageAboutStoryField (boolean value) {
      this.requestField("page_about_story", value);
      return this;
    }
    public APIRequestGetLikes requestPageTokenField () {
      return this.requestPageTokenField(true);
    }
    public APIRequestGetLikes requestPageTokenField (boolean value) {
      this.requestField("page_token", value);
      return this;
    }
    public APIRequestGetLikes requestParentPageField () {
      return this.requestParentPageField(true);
    }
    public APIRequestGetLikes requestParentPageField (boolean value) {
      this.requestField("parent_page", value);
      return this;
    }
    public APIRequestGetLikes requestParkingField () {
      return this.requestParkingField(true);
    }
    public APIRequestGetLikes requestParkingField (boolean value) {
      this.requestField("parking", value);
      return this;
    }
    public APIRequestGetLikes requestPaymentOptionsField () {
      return this.requestPaymentOptionsField(true);
    }
    public APIRequestGetLikes requestPaymentOptionsField (boolean value) {
      this.requestField("payment_options", value);
      return this;
    }
    public APIRequestGetLikes requestPersonalInfoField () {
      return this.requestPersonalInfoField(true);
    }
    public APIRequestGetLikes requestPersonalInfoField (boolean value) {
      this.requestField("personal_info", value);
      return this;
    }
    public APIRequestGetLikes requestPersonalInterestsField () {
      return this.requestPersonalInterestsField(true);
    }
    public APIRequestGetLikes requestPersonalInterestsField (boolean value) {
      this.requestField("personal_interests", value);
      return this;
    }
    public APIRequestGetLikes requestPharmaSafetyInfoField () {
      return this.requestPharmaSafetyInfoField(true);
    }
    public APIRequestGetLikes requestPharmaSafetyInfoField (boolean value) {
      this.requestField("pharma_safety_info", value);
      return this;
    }
    public APIRequestGetLikes requestPhoneField () {
      return this.requestPhoneField(true);
    }
    public APIRequestGetLikes requestPhoneField (boolean value) {
      this.requestField("phone", value);
      return this;
    }
    public APIRequestGetLikes requestPlaceTypeField () {
      return this.requestPlaceTypeField(true);
    }
    public APIRequestGetLikes requestPlaceTypeField (boolean value) {
      this.requestField("place_type", value);
      return this;
    }
    public APIRequestGetLikes requestPlotOutlineField () {
      return this.requestPlotOutlineField(true);
    }
    public APIRequestGetLikes requestPlotOutlineField (boolean value) {
      this.requestField("plot_outline", value);
      return this;
    }
    public APIRequestGetLikes requestPreferredAudienceField () {
      return this.requestPreferredAudienceField(true);
    }
    public APIRequestGetLikes requestPreferredAudienceField (boolean value) {
      this.requestField("preferred_audience", value);
      return this;
    }
    public APIRequestGetLikes requestPressContactField () {
      return this.requestPressContactField(true);
    }
    public APIRequestGetLikes requestPressContactField (boolean value) {
      this.requestField("press_contact", value);
      return this;
    }
    public APIRequestGetLikes requestPriceRangeField () {
      return this.requestPriceRangeField(true);
    }
    public APIRequestGetLikes requestPriceRangeField (boolean value) {
      this.requestField("price_range", value);
      return this;
    }
    public APIRequestGetLikes requestPrivacyInfoUrlField () {
      return this.requestPrivacyInfoUrlField(true);
    }
    public APIRequestGetLikes requestPrivacyInfoUrlField (boolean value) {
      this.requestField("privacy_info_url", value);
      return this;
    }
    public APIRequestGetLikes requestProducedByField () {
      return this.requestProducedByField(true);
    }
    public APIRequestGetLikes requestProducedByField (boolean value) {
      this.requestField("produced_by", value);
      return this;
    }
    public APIRequestGetLikes requestProductsField () {
      return this.requestProductsField(true);
    }
    public APIRequestGetLikes requestProductsField (boolean value) {
      this.requestField("products", value);
      return this;
    }
    public APIRequestGetLikes requestPromotionEligibleField () {
      return this.requestPromotionEligibleField(true);
    }
    public APIRequestGetLikes requestPromotionEligibleField (boolean value) {
      this.requestField("promotion_eligible", value);
      return this;
    }
    public APIRequestGetLikes requestPromotionIneligibleReasonField () {
      return this.requestPromotionIneligibleReasonField(true);
    }
    public APIRequestGetLikes requestPromotionIneligibleReasonField (boolean value) {
      this.requestField("promotion_ineligible_reason", value);
      return this;
    }
    public APIRequestGetLikes requestPublicTransitField () {
      return this.requestPublicTransitField(true);
    }
    public APIRequestGetLikes requestPublicTransitField (boolean value) {
      this.requestField("public_transit", value);
      return this;
    }
    public APIRequestGetLikes requestRatingCountField () {
      return this.requestRatingCountField(true);
    }
    public APIRequestGetLikes requestRatingCountField (boolean value) {
      this.requestField("rating_count", value);
      return this;
    }
    public APIRequestGetLikes requestRecipientField () {
      return this.requestRecipientField(true);
    }
    public APIRequestGetLikes requestRecipientField (boolean value) {
      this.requestField("recipient", value);
      return this;
    }
    public APIRequestGetLikes requestRecordLabelField () {
      return this.requestRecordLabelField(true);
    }
    public APIRequestGetLikes requestRecordLabelField (boolean value) {
      this.requestField("record_label", value);
      return this;
    }
    public APIRequestGetLikes requestReleaseDateField () {
      return this.requestReleaseDateField(true);
    }
    public APIRequestGetLikes requestReleaseDateField (boolean value) {
      this.requestField("release_date", value);
      return this;
    }
    public APIRequestGetLikes requestRestaurantServicesField () {
      return this.requestRestaurantServicesField(true);
    }
    public APIRequestGetLikes requestRestaurantServicesField (boolean value) {
      this.requestField("restaurant_services", value);
      return this;
    }
    public APIRequestGetLikes requestRestaurantSpecialtiesField () {
      return this.requestRestaurantSpecialtiesField(true);
    }
    public APIRequestGetLikes requestRestaurantSpecialtiesField (boolean value) {
      this.requestField("restaurant_specialties", value);
      return this;
    }
    public APIRequestGetLikes requestScheduleField () {
      return this.requestScheduleField(true);
    }
    public APIRequestGetLikes requestScheduleField (boolean value) {
      this.requestField("schedule", value);
      return this;
    }
    public APIRequestGetLikes requestScreenplayByField () {
      return this.requestScreenplayByField(true);
    }
    public APIRequestGetLikes requestScreenplayByField (boolean value) {
      this.requestField("screenplay_by", value);
      return this;
    }
    public APIRequestGetLikes requestSeasonField () {
      return this.requestSeasonField(true);
    }
    public APIRequestGetLikes requestSeasonField (boolean value) {
      this.requestField("season", value);
      return this;
    }
    public APIRequestGetLikes requestSingleLineAddressField () {
      return this.requestSingleLineAddressField(true);
    }
    public APIRequestGetLikes requestSingleLineAddressField (boolean value) {
      this.requestField("single_line_address", value);
      return this;
    }
    public APIRequestGetLikes requestStarringField () {
      return this.requestStarringField(true);
    }
    public APIRequestGetLikes requestStarringField (boolean value) {
      this.requestField("starring", value);
      return this;
    }
    public APIRequestGetLikes requestStartInfoField () {
      return this.requestStartInfoField(true);
    }
    public APIRequestGetLikes requestStartInfoField (boolean value) {
      this.requestField("start_info", value);
      return this;
    }
    public APIRequestGetLikes requestStoreCodeField () {
      return this.requestStoreCodeField(true);
    }
    public APIRequestGetLikes requestStoreCodeField (boolean value) {
      this.requestField("store_code", value);
      return this;
    }
    public APIRequestGetLikes requestStoreLocationDescriptorField () {
      return this.requestStoreLocationDescriptorField(true);
    }
    public APIRequestGetLikes requestStoreLocationDescriptorField (boolean value) {
      this.requestField("store_location_descriptor", value);
      return this;
    }
    public APIRequestGetLikes requestStoreNumberField () {
      return this.requestStoreNumberField(true);
    }
    public APIRequestGetLikes requestStoreNumberField (boolean value) {
      this.requestField("store_number", value);
      return this;
    }
    public APIRequestGetLikes requestStudioField () {
      return this.requestStudioField(true);
    }
    public APIRequestGetLikes requestStudioField (boolean value) {
      this.requestField("studio", value);
      return this;
    }
    public APIRequestGetLikes requestSupportsInstantArticlesField () {
      return this.requestSupportsInstantArticlesField(true);
    }
    public APIRequestGetLikes requestSupportsInstantArticlesField (boolean value) {
      this.requestField("supports_instant_articles", value);
      return this;
    }
    public APIRequestGetLikes requestTalkingAboutCountField () {
      return this.requestTalkingAboutCountField(true);
    }
    public APIRequestGetLikes requestTalkingAboutCountField (boolean value) {
      this.requestField("talking_about_count", value);
      return this;
    }
    public APIRequestGetLikes requestUnreadMessageCountField () {
      return this.requestUnreadMessageCountField(true);
    }
    public APIRequestGetLikes requestUnreadMessageCountField (boolean value) {
      this.requestField("unread_message_count", value);
      return this;
    }
    public APIRequestGetLikes requestUnreadNotifCountField () {
      return this.requestUnreadNotifCountField(true);
    }
    public APIRequestGetLikes requestUnreadNotifCountField (boolean value) {
      this.requestField("unread_notif_count", value);
      return this;
    }
    public APIRequestGetLikes requestUnseenMessageCountField () {
      return this.requestUnseenMessageCountField(true);
    }
    public APIRequestGetLikes requestUnseenMessageCountField (boolean value) {
      this.requestField("unseen_message_count", value);
      return this;
    }
    public APIRequestGetLikes requestUsernameField () {
      return this.requestUsernameField(true);
    }
    public APIRequestGetLikes requestUsernameField (boolean value) {
      this.requestField("username", value);
      return this;
    }
    public APIRequestGetLikes requestVerificationStatusField () {
      return this.requestVerificationStatusField(true);
    }
    public APIRequestGetLikes requestVerificationStatusField (boolean value) {
      this.requestField("verification_status", value);
      return this;
    }
    public APIRequestGetLikes requestVoipInfoField () {
      return this.requestVoipInfoField(true);
    }
    public APIRequestGetLikes requestVoipInfoField (boolean value) {
      this.requestField("voip_info", value);
      return this;
    }
    public APIRequestGetLikes requestWebsiteField () {
      return this.requestWebsiteField(true);
    }
    public APIRequestGetLikes requestWebsiteField (boolean value) {
      this.requestField("website", value);
      return this;
    }
    public APIRequestGetLikes requestWereHereCountField () {
      return this.requestWereHereCountField(true);
    }
    public APIRequestGetLikes requestWereHereCountField (boolean value) {
      this.requestField("were_here_count", value);
      return this;
    }
    public APIRequestGetLikes requestWhatsappNumberField () {
      return this.requestWhatsappNumberField(true);
    }
    public APIRequestGetLikes requestWhatsappNumberField (boolean value) {
      this.requestField("whatsapp_number", value);
      return this;
    }
    public APIRequestGetLikes requestWrittenByField () {
      return this.requestWrittenByField(true);
    }
    public APIRequestGetLikes requestWrittenByField (boolean value) {
      this.requestField("written_by", value);
      return this;
    }
  }

  public static class APIRequestGetLiveEncoders extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "brand",
      "creation_time",
      "current_broadcast",
      "current_input_stream",
      "device_id",
      "id",
      "last_heartbeat_time",
      "model",
      "name",
      "status",
      "version",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return LiveEncoder.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetLiveEncoders.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetLiveEncoders(String nodeId, APIContext context) {
      super(context, nodeId, "/live_encoders", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetLiveEncoders setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetLiveEncoders setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetLiveEncoders requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetLiveEncoders requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLiveEncoders requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetLiveEncoders requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLiveEncoders requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetLiveEncoders requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetLiveEncoders requestBrandField () {
      return this.requestBrandField(true);
    }
    public APIRequestGetLiveEncoders requestBrandField (boolean value) {
      this.requestField("brand", value);
      return this;
    }
    public APIRequestGetLiveEncoders requestCreationTimeField () {
      return this.requestCreationTimeField(true);
    }
    public APIRequestGetLiveEncoders requestCreationTimeField (boolean value) {
      this.requestField("creation_time", value);
      return this;
    }
    public APIRequestGetLiveEncoders requestCurrentBroadcastField () {
      return this.requestCurrentBroadcastField(true);
    }
    public APIRequestGetLiveEncoders requestCurrentBroadcastField (boolean value) {
      this.requestField("current_broadcast", value);
      return this;
    }
    public APIRequestGetLiveEncoders requestCurrentInputStreamField () {
      return this.requestCurrentInputStreamField(true);
    }
    public APIRequestGetLiveEncoders requestCurrentInputStreamField (boolean value) {
      this.requestField("current_input_stream", value);
      return this;
    }
    public APIRequestGetLiveEncoders requestDeviceIdField () {
      return this.requestDeviceIdField(true);
    }
    public APIRequestGetLiveEncoders requestDeviceIdField (boolean value) {
      this.requestField("device_id", value);
      return this;
    }
    public APIRequestGetLiveEncoders requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetLiveEncoders requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetLiveEncoders requestLastHeartbeatTimeField () {
      return this.requestLastHeartbeatTimeField(true);
    }
    public APIRequestGetLiveEncoders requestLastHeartbeatTimeField (boolean value) {
      this.requestField("last_heartbeat_time", value);
      return this;
    }
    public APIRequestGetLiveEncoders requestModelField () {
      return this.requestModelField(true);
    }
    public APIRequestGetLiveEncoders requestModelField (boolean value) {
      this.requestField("model", value);
      return this;
    }
    public APIRequestGetLiveEncoders requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetLiveEncoders requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetLiveEncoders requestStatusField () {
      return this.requestStatusField(true);
    }
    public APIRequestGetLiveEncoders requestStatusField (boolean value) {
      this.requestField("status", value);
      return this;
    }
    public APIRequestGetLiveEncoders requestVersionField () {
      return this.requestVersionField(true);
    }
    public APIRequestGetLiveEncoders requestVersionField (boolean value) {
      this.requestField("version", value);
      return this;
    }
  }

  public static class APIRequestCreateLiveEncoder extends APIRequest {

    LiveEncoder lastResponse = null;
    @Override
    public LiveEncoder getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "device_id",
      "name",
      "brand",
      "model",
      "version",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public LiveEncoder parseResponse(String response, String header) throws APIException {
      return LiveEncoder.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public LiveEncoder execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public LiveEncoder execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public LiveEncoder apply(ResponseWrapper result) {
             try {
               return APIRequestCreateLiveEncoder.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateLiveEncoder(String nodeId, APIContext context) {
      super(context, nodeId, "/live_encoders", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateLiveEncoder setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateLiveEncoder setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateLiveEncoder setDeviceId (String deviceId) {
      this.setParam("device_id", deviceId);
      return this;
    }

    public APIRequestCreateLiveEncoder setName (String name) {
      this.setParam("name", name);
      return this;
    }

    public APIRequestCreateLiveEncoder setBrand (String brand) {
      this.setParam("brand", brand);
      return this;
    }

    public APIRequestCreateLiveEncoder setModel (String model) {
      this.setParam("model", model);
      return this;
    }

    public APIRequestCreateLiveEncoder setVersion (String version) {
      this.setParam("version", version);
      return this;
    }

    public APIRequestCreateLiveEncoder requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateLiveEncoder requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLiveEncoder requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateLiveEncoder requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLiveEncoder requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateLiveEncoder requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetLiveVideos extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "source",
      "broadcast_status",
    };

    public static final String[] FIELDS = {
      "ad_break_config",
      "ad_break_failure_reason",
      "broadcast_start_time",
      "copyright",
      "creation_time",
      "dash_ingest_url",
      "dash_preview_url",
      "description",
      "embed_html",
      "from",
      "id",
      "ingest_streams",
      "is_manual_mode",
      "is_reference_only",
      "live_encoders",
      "live_views",
      "permalink_url",
      "planned_start_time",
      "seconds_left",
      "secure_stream_url",
      "status",
      "stream_url",
      "targeting",
      "title",
      "total_views",
      "video",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return LiveVideo.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetLiveVideos.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetLiveVideos(String nodeId, APIContext context) {
      super(context, nodeId, "/live_videos", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetLiveVideos setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetLiveVideos setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetLiveVideos setSource (LiveVideo.EnumSource source) {
      this.setParam("source", source);
      return this;
    }
    public APIRequestGetLiveVideos setSource (String source) {
      this.setParam("source", source);
      return this;
    }

    public APIRequestGetLiveVideos setBroadcastStatus (List broadcastStatus) {
      this.setParam("broadcast_status", broadcastStatus);
      return this;
    }
    public APIRequestGetLiveVideos setBroadcastStatus (String broadcastStatus) {
      this.setParam("broadcast_status", broadcastStatus);
      return this;
    }

    public APIRequestGetLiveVideos requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetLiveVideos requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLiveVideos requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetLiveVideos requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLiveVideos requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetLiveVideos requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetLiveVideos requestAdBreakConfigField () {
      return this.requestAdBreakConfigField(true);
    }
    public APIRequestGetLiveVideos requestAdBreakConfigField (boolean value) {
      this.requestField("ad_break_config", value);
      return this;
    }
    public APIRequestGetLiveVideos requestAdBreakFailureReasonField () {
      return this.requestAdBreakFailureReasonField(true);
    }
    public APIRequestGetLiveVideos requestAdBreakFailureReasonField (boolean value) {
      this.requestField("ad_break_failure_reason", value);
      return this;
    }
    public APIRequestGetLiveVideos requestBroadcastStartTimeField () {
      return this.requestBroadcastStartTimeField(true);
    }
    public APIRequestGetLiveVideos requestBroadcastStartTimeField (boolean value) {
      this.requestField("broadcast_start_time", value);
      return this;
    }
    public APIRequestGetLiveVideos requestCopyrightField () {
      return this.requestCopyrightField(true);
    }
    public APIRequestGetLiveVideos requestCopyrightField (boolean value) {
      this.requestField("copyright", value);
      return this;
    }
    public APIRequestGetLiveVideos requestCreationTimeField () {
      return this.requestCreationTimeField(true);
    }
    public APIRequestGetLiveVideos requestCreationTimeField (boolean value) {
      this.requestField("creation_time", value);
      return this;
    }
    public APIRequestGetLiveVideos requestDashIngestUrlField () {
      return this.requestDashIngestUrlField(true);
    }
    public APIRequestGetLiveVideos requestDashIngestUrlField (boolean value) {
      this.requestField("dash_ingest_url", value);
      return this;
    }
    public APIRequestGetLiveVideos requestDashPreviewUrlField () {
      return this.requestDashPreviewUrlField(true);
    }
    public APIRequestGetLiveVideos requestDashPreviewUrlField (boolean value) {
      this.requestField("dash_preview_url", value);
      return this;
    }
    public APIRequestGetLiveVideos requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetLiveVideos requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetLiveVideos requestEmbedHtmlField () {
      return this.requestEmbedHtmlField(true);
    }
    public APIRequestGetLiveVideos requestEmbedHtmlField (boolean value) {
      this.requestField("embed_html", value);
      return this;
    }
    public APIRequestGetLiveVideos requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetLiveVideos requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetLiveVideos requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetLiveVideos requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetLiveVideos requestIngestStreamsField () {
      return this.requestIngestStreamsField(true);
    }
    public APIRequestGetLiveVideos requestIngestStreamsField (boolean value) {
      this.requestField("ingest_streams", value);
      return this;
    }
    public APIRequestGetLiveVideos requestIsManualModeField () {
      return this.requestIsManualModeField(true);
    }
    public APIRequestGetLiveVideos requestIsManualModeField (boolean value) {
      this.requestField("is_manual_mode", value);
      return this;
    }
    public APIRequestGetLiveVideos requestIsReferenceOnlyField () {
      return this.requestIsReferenceOnlyField(true);
    }
    public APIRequestGetLiveVideos requestIsReferenceOnlyField (boolean value) {
      this.requestField("is_reference_only", value);
      return this;
    }
    public APIRequestGetLiveVideos requestLiveEncodersField () {
      return this.requestLiveEncodersField(true);
    }
    public APIRequestGetLiveVideos requestLiveEncodersField (boolean value) {
      this.requestField("live_encoders", value);
      return this;
    }
    public APIRequestGetLiveVideos requestLiveViewsField () {
      return this.requestLiveViewsField(true);
    }
    public APIRequestGetLiveVideos requestLiveViewsField (boolean value) {
      this.requestField("live_views", value);
      return this;
    }
    public APIRequestGetLiveVideos requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetLiveVideos requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetLiveVideos requestPlannedStartTimeField () {
      return this.requestPlannedStartTimeField(true);
    }
    public APIRequestGetLiveVideos requestPlannedStartTimeField (boolean value) {
      this.requestField("planned_start_time", value);
      return this;
    }
    public APIRequestGetLiveVideos requestSecondsLeftField () {
      return this.requestSecondsLeftField(true);
    }
    public APIRequestGetLiveVideos requestSecondsLeftField (boolean value) {
      this.requestField("seconds_left", value);
      return this;
    }
    public APIRequestGetLiveVideos requestSecureStreamUrlField () {
      return this.requestSecureStreamUrlField(true);
    }
    public APIRequestGetLiveVideos requestSecureStreamUrlField (boolean value) {
      this.requestField("secure_stream_url", value);
      return this;
    }
    public APIRequestGetLiveVideos requestStatusField () {
      return this.requestStatusField(true);
    }
    public APIRequestGetLiveVideos requestStatusField (boolean value) {
      this.requestField("status", value);
      return this;
    }
    public APIRequestGetLiveVideos requestStreamUrlField () {
      return this.requestStreamUrlField(true);
    }
    public APIRequestGetLiveVideos requestStreamUrlField (boolean value) {
      this.requestField("stream_url", value);
      return this;
    }
    public APIRequestGetLiveVideos requestTargetingField () {
      return this.requestTargetingField(true);
    }
    public APIRequestGetLiveVideos requestTargetingField (boolean value) {
      this.requestField("targeting", value);
      return this;
    }
    public APIRequestGetLiveVideos requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetLiveVideos requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
    public APIRequestGetLiveVideos requestTotalViewsField () {
      return this.requestTotalViewsField(true);
    }
    public APIRequestGetLiveVideos requestTotalViewsField (boolean value) {
      this.requestField("total_views", value);
      return this;
    }
    public APIRequestGetLiveVideos requestVideoField () {
      return this.requestVideoField(true);
    }
    public APIRequestGetLiveVideos requestVideoField (boolean value) {
      this.requestField("video", value);
      return this;
    }
  }

  public static class APIRequestCreateLiveVideo extends APIRequest {

    LiveVideo lastResponse = null;
    @Override
    public LiveVideo getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "title",
      "description",
      "save_vod",
      "published",
      "status",
      "privacy",
      "stop_on_delete_stream",
      "stream_type",
      "content_tags",
      "is_spherical",
      "is_audio_only",
      "planned_start_time",
      "schedule_custom_profile_image",
      "projection",
      "spatial_audio_format",
      "encoding_settings",
      "live_encoders",
      "original_fov",
      "fisheye_video_cropped",
      "front_z_rotation",
      "attribution_app_id",
      "stereoscopic_mode",
      "custom_labels",
      "targeting",
      "product_items",
      "crossposting_actions",
      "game_show",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public LiveVideo parseResponse(String response, String header) throws APIException {
      return LiveVideo.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public LiveVideo execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public LiveVideo execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public LiveVideo apply(ResponseWrapper result) {
             try {
               return APIRequestCreateLiveVideo.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateLiveVideo(String nodeId, APIContext context) {
      super(context, nodeId, "/live_videos", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateLiveVideo setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateLiveVideo setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateLiveVideo setTitle (String title) {
      this.setParam("title", title);
      return this;
    }

    public APIRequestCreateLiveVideo setDescription (String description) {
      this.setParam("description", description);
      return this;
    }

    public APIRequestCreateLiveVideo setSaveVod (Boolean saveVod) {
      this.setParam("save_vod", saveVod);
      return this;
    }
    public APIRequestCreateLiveVideo setSaveVod (String saveVod) {
      this.setParam("save_vod", saveVod);
      return this;
    }

    public APIRequestCreateLiveVideo setPublished (Boolean published) {
      this.setParam("published", published);
      return this;
    }
    public APIRequestCreateLiveVideo setPublished (String published) {
      this.setParam("published", published);
      return this;
    }

    public APIRequestCreateLiveVideo setStatus (LiveVideo.EnumStatus status) {
      this.setParam("status", status);
      return this;
    }
    public APIRequestCreateLiveVideo setStatus (String status) {
      this.setParam("status", status);
      return this;
    }

    public APIRequestCreateLiveVideo setPrivacy (String privacy) {
      this.setParam("privacy", privacy);
      return this;
    }

    public APIRequestCreateLiveVideo setStopOnDeleteStream (Boolean stopOnDeleteStream) {
      this.setParam("stop_on_delete_stream", stopOnDeleteStream);
      return this;
    }
    public APIRequestCreateLiveVideo setStopOnDeleteStream (String stopOnDeleteStream) {
      this.setParam("stop_on_delete_stream", stopOnDeleteStream);
      return this;
    }

    public APIRequestCreateLiveVideo setStreamType (LiveVideo.EnumStreamType streamType) {
      this.setParam("stream_type", streamType);
      return this;
    }
    public APIRequestCreateLiveVideo setStreamType (String streamType) {
      this.setParam("stream_type", streamType);
      return this;
    }

    public APIRequestCreateLiveVideo setContentTags (List contentTags) {
      this.setParam("content_tags", contentTags);
      return this;
    }
    public APIRequestCreateLiveVideo setContentTags (String contentTags) {
      this.setParam("content_tags", contentTags);
      return this;
    }

    public APIRequestCreateLiveVideo setIsSpherical (Boolean isSpherical) {
      this.setParam("is_spherical", isSpherical);
      return this;
    }
    public APIRequestCreateLiveVideo setIsSpherical (String isSpherical) {
      this.setParam("is_spherical", isSpherical);
      return this;
    }

    public APIRequestCreateLiveVideo setIsAudioOnly (Boolean isAudioOnly) {
      this.setParam("is_audio_only", isAudioOnly);
      return this;
    }
    public APIRequestCreateLiveVideo setIsAudioOnly (String isAudioOnly) {
      this.setParam("is_audio_only", isAudioOnly);
      return this;
    }

    public APIRequestCreateLiveVideo setPlannedStartTime (Long plannedStartTime) {
      this.setParam("planned_start_time", plannedStartTime);
      return this;
    }
    public APIRequestCreateLiveVideo setPlannedStartTime (String plannedStartTime) {
      this.setParam("planned_start_time", plannedStartTime);
      return this;
    }

    public APIRequestCreateLiveVideo setScheduleCustomProfileImage (File scheduleCustomProfileImage) {
      this.setParam("schedule_custom_profile_image", scheduleCustomProfileImage);
      return this;
    }
    public APIRequestCreateLiveVideo setScheduleCustomProfileImage (String scheduleCustomProfileImage) {
      this.setParam("schedule_custom_profile_image", scheduleCustomProfileImage);
      return this;
    }

    public APIRequestCreateLiveVideo setProjection (LiveVideo.EnumProjection projection) {
      this.setParam("projection", projection);
      return this;
    }
    public APIRequestCreateLiveVideo setProjection (String projection) {
      this.setParam("projection", projection);
      return this;
    }

    public APIRequestCreateLiveVideo setSpatialAudioFormat (LiveVideo.EnumSpatialAudioFormat spatialAudioFormat) {
      this.setParam("spatial_audio_format", spatialAudioFormat);
      return this;
    }
    public APIRequestCreateLiveVideo setSpatialAudioFormat (String spatialAudioFormat) {
      this.setParam("spatial_audio_format", spatialAudioFormat);
      return this;
    }

    public APIRequestCreateLiveVideo setEncodingSettings (String encodingSettings) {
      this.setParam("encoding_settings", encodingSettings);
      return this;
    }

    public APIRequestCreateLiveVideo setLiveEncoders (List liveEncoders) {
      this.setParam("live_encoders", liveEncoders);
      return this;
    }
    public APIRequestCreateLiveVideo setLiveEncoders (String liveEncoders) {
      this.setParam("live_encoders", liveEncoders);
      return this;
    }

    public APIRequestCreateLiveVideo setOriginalFov (Long originalFov) {
      this.setParam("original_fov", originalFov);
      return this;
    }
    public APIRequestCreateLiveVideo setOriginalFov (String originalFov) {
      this.setParam("original_fov", originalFov);
      return this;
    }

    public APIRequestCreateLiveVideo setFisheyeVideoCropped (Boolean fisheyeVideoCropped) {
      this.setParam("fisheye_video_cropped", fisheyeVideoCropped);
      return this;
    }
    public APIRequestCreateLiveVideo setFisheyeVideoCropped (String fisheyeVideoCropped) {
      this.setParam("fisheye_video_cropped", fisheyeVideoCropped);
      return this;
    }

    public APIRequestCreateLiveVideo setFrontZRotation (Double frontZRotation) {
      this.setParam("front_z_rotation", frontZRotation);
      return this;
    }
    public APIRequestCreateLiveVideo setFrontZRotation (String frontZRotation) {
      this.setParam("front_z_rotation", frontZRotation);
      return this;
    }

    public APIRequestCreateLiveVideo setAttributionAppId (String attributionAppId) {
      this.setParam("attribution_app_id", attributionAppId);
      return this;
    }

    public APIRequestCreateLiveVideo setStereoscopicMode (LiveVideo.EnumStereoscopicMode stereoscopicMode) {
      this.setParam("stereoscopic_mode", stereoscopicMode);
      return this;
    }
    public APIRequestCreateLiveVideo setStereoscopicMode (String stereoscopicMode) {
      this.setParam("stereoscopic_mode", stereoscopicMode);
      return this;
    }

    public APIRequestCreateLiveVideo setCustomLabels (List customLabels) {
      this.setParam("custom_labels", customLabels);
      return this;
    }
    public APIRequestCreateLiveVideo setCustomLabels (String customLabels) {
      this.setParam("custom_labels", customLabels);
      return this;
    }

    public APIRequestCreateLiveVideo setTargeting (Object targeting) {
      this.setParam("targeting", targeting);
      return this;
    }
    public APIRequestCreateLiveVideo setTargeting (String targeting) {
      this.setParam("targeting", targeting);
      return this;
    }

    public APIRequestCreateLiveVideo setProductItems (List productItems) {
      this.setParam("product_items", productItems);
      return this;
    }
    public APIRequestCreateLiveVideo setProductItems (String productItems) {
      this.setParam("product_items", productItems);
      return this;
    }

    public APIRequestCreateLiveVideo setCrosspostingActions (List> crosspostingActions) {
      this.setParam("crossposting_actions", crosspostingActions);
      return this;
    }
    public APIRequestCreateLiveVideo setCrosspostingActions (String crosspostingActions) {
      this.setParam("crossposting_actions", crosspostingActions);
      return this;
    }

    public APIRequestCreateLiveVideo setGameShow (Map gameShow) {
      this.setParam("game_show", gameShow);
      return this;
    }
    public APIRequestCreateLiveVideo setGameShow (String gameShow) {
      this.setParam("game_show", gameShow);
      return this;
    }

    public APIRequestCreateLiveVideo requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateLiveVideo requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLiveVideo requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateLiveVideo requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLiveVideo requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateLiveVideo requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestDeleteLocations extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "location_page_id",
      "store_number",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteLocations.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteLocations(String nodeId, APIContext context) {
      super(context, nodeId, "/locations", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteLocations setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteLocations setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteLocations setLocationPageId (String locationPageId) {
      this.setParam("location_page_id", locationPageId);
      return this;
    }

    public APIRequestDeleteLocations setStoreNumber (Long storeNumber) {
      this.setParam("store_number", storeNumber);
      return this;
    }
    public APIRequestDeleteLocations setStoreNumber (String storeNumber) {
      this.setParam("store_number", storeNumber);
      return this;
    }

    public APIRequestDeleteLocations requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteLocations requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteLocations requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteLocations requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteLocations requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteLocations requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetLocations extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "about",
      "access_token",
      "ad_campaign",
      "affiliation",
      "app_id",
      "app_links",
      "artists_we_like",
      "attire",
      "awards",
      "band_interests",
      "band_members",
      "best_page",
      "bio",
      "birthday",
      "booking_agent",
      "built",
      "business",
      "can_checkin",
      "can_post",
      "category",
      "category_list",
      "checkins",
      "company_overview",
      "connected_instagram_account",
      "contact_address",
      "context",
      "copyright_attribution_insights",
      "copyright_whitelisted_ig_partners",
      "country_page_likes",
      "cover",
      "culinary_team",
      "current_location",
      "description",
      "description_html",
      "directed_by",
      "display_subtext",
      "displayed_message_response_time",
      "emails",
      "engagement",
      "fan_count",
      "featured_video",
      "features",
      "food_styles",
      "founded",
      "general_info",
      "general_manager",
      "genre",
      "global_brand_page_name",
      "global_brand_root_id",
      "has_added_app",
      "has_whatsapp_business_number",
      "has_whatsapp_number",
      "hometown",
      "hours",
      "id",
      "impressum",
      "influences",
      "instagram_business_account",
      "instant_articles_review_status",
      "is_always_open",
      "is_chain",
      "is_community_page",
      "is_eligible_for_branded_content",
      "is_messenger_bot_get_started_enabled",
      "is_messenger_platform_bot",
      "is_owned",
      "is_permanently_closed",
      "is_published",
      "is_unclaimed",
      "is_verified",
      "is_webhooks_subscribed",
      "keywords",
      "leadgen_form_preview_details",
      "leadgen_has_crm_integration",
      "leadgen_has_fat_ping_crm_integration",
      "leadgen_tos_acceptance_time",
      "leadgen_tos_accepted",
      "leadgen_tos_accepting_user",
      "link",
      "location",
      "members",
      "merchant_id",
      "merchant_review_status",
      "messenger_ads_default_icebreakers",
      "messenger_ads_default_page_welcome_message",
      "messenger_ads_default_quick_replies",
      "messenger_ads_quick_replies_type",
      "mission",
      "mpg",
      "name",
      "name_with_location_descriptor",
      "network",
      "new_like_count",
      "offer_eligible",
      "overall_star_rating",
      "page_about_story",
      "page_token",
      "parent_page",
      "parking",
      "payment_options",
      "personal_info",
      "personal_interests",
      "pharma_safety_info",
      "phone",
      "place_type",
      "plot_outline",
      "preferred_audience",
      "press_contact",
      "price_range",
      "privacy_info_url",
      "produced_by",
      "products",
      "promotion_eligible",
      "promotion_ineligible_reason",
      "public_transit",
      "rating_count",
      "recipient",
      "record_label",
      "release_date",
      "restaurant_services",
      "restaurant_specialties",
      "schedule",
      "screenplay_by",
      "season",
      "single_line_address",
      "starring",
      "start_info",
      "store_code",
      "store_location_descriptor",
      "store_number",
      "studio",
      "supports_instant_articles",
      "talking_about_count",
      "unread_message_count",
      "unread_notif_count",
      "unseen_message_count",
      "username",
      "verification_status",
      "voip_info",
      "website",
      "were_here_count",
      "whatsapp_number",
      "written_by",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetLocations.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetLocations(String nodeId, APIContext context) {
      super(context, nodeId, "/locations", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetLocations setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetLocations setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetLocations requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetLocations requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLocations requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetLocations requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetLocations requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetLocations requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetLocations requestAboutField () {
      return this.requestAboutField(true);
    }
    public APIRequestGetLocations requestAboutField (boolean value) {
      this.requestField("about", value);
      return this;
    }
    public APIRequestGetLocations requestAccessTokenField () {
      return this.requestAccessTokenField(true);
    }
    public APIRequestGetLocations requestAccessTokenField (boolean value) {
      this.requestField("access_token", value);
      return this;
    }
    public APIRequestGetLocations requestAdCampaignField () {
      return this.requestAdCampaignField(true);
    }
    public APIRequestGetLocations requestAdCampaignField (boolean value) {
      this.requestField("ad_campaign", value);
      return this;
    }
    public APIRequestGetLocations requestAffiliationField () {
      return this.requestAffiliationField(true);
    }
    public APIRequestGetLocations requestAffiliationField (boolean value) {
      this.requestField("affiliation", value);
      return this;
    }
    public APIRequestGetLocations requestAppIdField () {
      return this.requestAppIdField(true);
    }
    public APIRequestGetLocations requestAppIdField (boolean value) {
      this.requestField("app_id", value);
      return this;
    }
    public APIRequestGetLocations requestAppLinksField () {
      return this.requestAppLinksField(true);
    }
    public APIRequestGetLocations requestAppLinksField (boolean value) {
      this.requestField("app_links", value);
      return this;
    }
    public APIRequestGetLocations requestArtistsWeLikeField () {
      return this.requestArtistsWeLikeField(true);
    }
    public APIRequestGetLocations requestArtistsWeLikeField (boolean value) {
      this.requestField("artists_we_like", value);
      return this;
    }
    public APIRequestGetLocations requestAttireField () {
      return this.requestAttireField(true);
    }
    public APIRequestGetLocations requestAttireField (boolean value) {
      this.requestField("attire", value);
      return this;
    }
    public APIRequestGetLocations requestAwardsField () {
      return this.requestAwardsField(true);
    }
    public APIRequestGetLocations requestAwardsField (boolean value) {
      this.requestField("awards", value);
      return this;
    }
    public APIRequestGetLocations requestBandInterestsField () {
      return this.requestBandInterestsField(true);
    }
    public APIRequestGetLocations requestBandInterestsField (boolean value) {
      this.requestField("band_interests", value);
      return this;
    }
    public APIRequestGetLocations requestBandMembersField () {
      return this.requestBandMembersField(true);
    }
    public APIRequestGetLocations requestBandMembersField (boolean value) {
      this.requestField("band_members", value);
      return this;
    }
    public APIRequestGetLocations requestBestPageField () {
      return this.requestBestPageField(true);
    }
    public APIRequestGetLocations requestBestPageField (boolean value) {
      this.requestField("best_page", value);
      return this;
    }
    public APIRequestGetLocations requestBioField () {
      return this.requestBioField(true);
    }
    public APIRequestGetLocations requestBioField (boolean value) {
      this.requestField("bio", value);
      return this;
    }
    public APIRequestGetLocations requestBirthdayField () {
      return this.requestBirthdayField(true);
    }
    public APIRequestGetLocations requestBirthdayField (boolean value) {
      this.requestField("birthday", value);
      return this;
    }
    public APIRequestGetLocations requestBookingAgentField () {
      return this.requestBookingAgentField(true);
    }
    public APIRequestGetLocations requestBookingAgentField (boolean value) {
      this.requestField("booking_agent", value);
      return this;
    }
    public APIRequestGetLocations requestBuiltField () {
      return this.requestBuiltField(true);
    }
    public APIRequestGetLocations requestBuiltField (boolean value) {
      this.requestField("built", value);
      return this;
    }
    public APIRequestGetLocations requestBusinessField () {
      return this.requestBusinessField(true);
    }
    public APIRequestGetLocations requestBusinessField (boolean value) {
      this.requestField("business", value);
      return this;
    }
    public APIRequestGetLocations requestCanCheckinField () {
      return this.requestCanCheckinField(true);
    }
    public APIRequestGetLocations requestCanCheckinField (boolean value) {
      this.requestField("can_checkin", value);
      return this;
    }
    public APIRequestGetLocations requestCanPostField () {
      return this.requestCanPostField(true);
    }
    public APIRequestGetLocations requestCanPostField (boolean value) {
      this.requestField("can_post", value);
      return this;
    }
    public APIRequestGetLocations requestCategoryField () {
      return this.requestCategoryField(true);
    }
    public APIRequestGetLocations requestCategoryField (boolean value) {
      this.requestField("category", value);
      return this;
    }
    public APIRequestGetLocations requestCategoryListField () {
      return this.requestCategoryListField(true);
    }
    public APIRequestGetLocations requestCategoryListField (boolean value) {
      this.requestField("category_list", value);
      return this;
    }
    public APIRequestGetLocations requestCheckinsField () {
      return this.requestCheckinsField(true);
    }
    public APIRequestGetLocations requestCheckinsField (boolean value) {
      this.requestField("checkins", value);
      return this;
    }
    public APIRequestGetLocations requestCompanyOverviewField () {
      return this.requestCompanyOverviewField(true);
    }
    public APIRequestGetLocations requestCompanyOverviewField (boolean value) {
      this.requestField("company_overview", value);
      return this;
    }
    public APIRequestGetLocations requestConnectedInstagramAccountField () {
      return this.requestConnectedInstagramAccountField(true);
    }
    public APIRequestGetLocations requestConnectedInstagramAccountField (boolean value) {
      this.requestField("connected_instagram_account", value);
      return this;
    }
    public APIRequestGetLocations requestContactAddressField () {
      return this.requestContactAddressField(true);
    }
    public APIRequestGetLocations requestContactAddressField (boolean value) {
      this.requestField("contact_address", value);
      return this;
    }
    public APIRequestGetLocations requestContextField () {
      return this.requestContextField(true);
    }
    public APIRequestGetLocations requestContextField (boolean value) {
      this.requestField("context", value);
      return this;
    }
    public APIRequestGetLocations requestCopyrightAttributionInsightsField () {
      return this.requestCopyrightAttributionInsightsField(true);
    }
    public APIRequestGetLocations requestCopyrightAttributionInsightsField (boolean value) {
      this.requestField("copyright_attribution_insights", value);
      return this;
    }
    public APIRequestGetLocations requestCopyrightWhitelistedIgPartnersField () {
      return this.requestCopyrightWhitelistedIgPartnersField(true);
    }
    public APIRequestGetLocations requestCopyrightWhitelistedIgPartnersField (boolean value) {
      this.requestField("copyright_whitelisted_ig_partners", value);
      return this;
    }
    public APIRequestGetLocations requestCountryPageLikesField () {
      return this.requestCountryPageLikesField(true);
    }
    public APIRequestGetLocations requestCountryPageLikesField (boolean value) {
      this.requestField("country_page_likes", value);
      return this;
    }
    public APIRequestGetLocations requestCoverField () {
      return this.requestCoverField(true);
    }
    public APIRequestGetLocations requestCoverField (boolean value) {
      this.requestField("cover", value);
      return this;
    }
    public APIRequestGetLocations requestCulinaryTeamField () {
      return this.requestCulinaryTeamField(true);
    }
    public APIRequestGetLocations requestCulinaryTeamField (boolean value) {
      this.requestField("culinary_team", value);
      return this;
    }
    public APIRequestGetLocations requestCurrentLocationField () {
      return this.requestCurrentLocationField(true);
    }
    public APIRequestGetLocations requestCurrentLocationField (boolean value) {
      this.requestField("current_location", value);
      return this;
    }
    public APIRequestGetLocations requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetLocations requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetLocations requestDescriptionHtmlField () {
      return this.requestDescriptionHtmlField(true);
    }
    public APIRequestGetLocations requestDescriptionHtmlField (boolean value) {
      this.requestField("description_html", value);
      return this;
    }
    public APIRequestGetLocations requestDirectedByField () {
      return this.requestDirectedByField(true);
    }
    public APIRequestGetLocations requestDirectedByField (boolean value) {
      this.requestField("directed_by", value);
      return this;
    }
    public APIRequestGetLocations requestDisplaySubtextField () {
      return this.requestDisplaySubtextField(true);
    }
    public APIRequestGetLocations requestDisplaySubtextField (boolean value) {
      this.requestField("display_subtext", value);
      return this;
    }
    public APIRequestGetLocations requestDisplayedMessageResponseTimeField () {
      return this.requestDisplayedMessageResponseTimeField(true);
    }
    public APIRequestGetLocations requestDisplayedMessageResponseTimeField (boolean value) {
      this.requestField("displayed_message_response_time", value);
      return this;
    }
    public APIRequestGetLocations requestEmailsField () {
      return this.requestEmailsField(true);
    }
    public APIRequestGetLocations requestEmailsField (boolean value) {
      this.requestField("emails", value);
      return this;
    }
    public APIRequestGetLocations requestEngagementField () {
      return this.requestEngagementField(true);
    }
    public APIRequestGetLocations requestEngagementField (boolean value) {
      this.requestField("engagement", value);
      return this;
    }
    public APIRequestGetLocations requestFanCountField () {
      return this.requestFanCountField(true);
    }
    public APIRequestGetLocations requestFanCountField (boolean value) {
      this.requestField("fan_count", value);
      return this;
    }
    public APIRequestGetLocations requestFeaturedVideoField () {
      return this.requestFeaturedVideoField(true);
    }
    public APIRequestGetLocations requestFeaturedVideoField (boolean value) {
      this.requestField("featured_video", value);
      return this;
    }
    public APIRequestGetLocations requestFeaturesField () {
      return this.requestFeaturesField(true);
    }
    public APIRequestGetLocations requestFeaturesField (boolean value) {
      this.requestField("features", value);
      return this;
    }
    public APIRequestGetLocations requestFoodStylesField () {
      return this.requestFoodStylesField(true);
    }
    public APIRequestGetLocations requestFoodStylesField (boolean value) {
      this.requestField("food_styles", value);
      return this;
    }
    public APIRequestGetLocations requestFoundedField () {
      return this.requestFoundedField(true);
    }
    public APIRequestGetLocations requestFoundedField (boolean value) {
      this.requestField("founded", value);
      return this;
    }
    public APIRequestGetLocations requestGeneralInfoField () {
      return this.requestGeneralInfoField(true);
    }
    public APIRequestGetLocations requestGeneralInfoField (boolean value) {
      this.requestField("general_info", value);
      return this;
    }
    public APIRequestGetLocations requestGeneralManagerField () {
      return this.requestGeneralManagerField(true);
    }
    public APIRequestGetLocations requestGeneralManagerField (boolean value) {
      this.requestField("general_manager", value);
      return this;
    }
    public APIRequestGetLocations requestGenreField () {
      return this.requestGenreField(true);
    }
    public APIRequestGetLocations requestGenreField (boolean value) {
      this.requestField("genre", value);
      return this;
    }
    public APIRequestGetLocations requestGlobalBrandPageNameField () {
      return this.requestGlobalBrandPageNameField(true);
    }
    public APIRequestGetLocations requestGlobalBrandPageNameField (boolean value) {
      this.requestField("global_brand_page_name", value);
      return this;
    }
    public APIRequestGetLocations requestGlobalBrandRootIdField () {
      return this.requestGlobalBrandRootIdField(true);
    }
    public APIRequestGetLocations requestGlobalBrandRootIdField (boolean value) {
      this.requestField("global_brand_root_id", value);
      return this;
    }
    public APIRequestGetLocations requestHasAddedAppField () {
      return this.requestHasAddedAppField(true);
    }
    public APIRequestGetLocations requestHasAddedAppField (boolean value) {
      this.requestField("has_added_app", value);
      return this;
    }
    public APIRequestGetLocations requestHasWhatsappBusinessNumberField () {
      return this.requestHasWhatsappBusinessNumberField(true);
    }
    public APIRequestGetLocations requestHasWhatsappBusinessNumberField (boolean value) {
      this.requestField("has_whatsapp_business_number", value);
      return this;
    }
    public APIRequestGetLocations requestHasWhatsappNumberField () {
      return this.requestHasWhatsappNumberField(true);
    }
    public APIRequestGetLocations requestHasWhatsappNumberField (boolean value) {
      this.requestField("has_whatsapp_number", value);
      return this;
    }
    public APIRequestGetLocations requestHometownField () {
      return this.requestHometownField(true);
    }
    public APIRequestGetLocations requestHometownField (boolean value) {
      this.requestField("hometown", value);
      return this;
    }
    public APIRequestGetLocations requestHoursField () {
      return this.requestHoursField(true);
    }
    public APIRequestGetLocations requestHoursField (boolean value) {
      this.requestField("hours", value);
      return this;
    }
    public APIRequestGetLocations requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetLocations requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetLocations requestImpressumField () {
      return this.requestImpressumField(true);
    }
    public APIRequestGetLocations requestImpressumField (boolean value) {
      this.requestField("impressum", value);
      return this;
    }
    public APIRequestGetLocations requestInfluencesField () {
      return this.requestInfluencesField(true);
    }
    public APIRequestGetLocations requestInfluencesField (boolean value) {
      this.requestField("influences", value);
      return this;
    }
    public APIRequestGetLocations requestInstagramBusinessAccountField () {
      return this.requestInstagramBusinessAccountField(true);
    }
    public APIRequestGetLocations requestInstagramBusinessAccountField (boolean value) {
      this.requestField("instagram_business_account", value);
      return this;
    }
    public APIRequestGetLocations requestInstantArticlesReviewStatusField () {
      return this.requestInstantArticlesReviewStatusField(true);
    }
    public APIRequestGetLocations requestInstantArticlesReviewStatusField (boolean value) {
      this.requestField("instant_articles_review_status", value);
      return this;
    }
    public APIRequestGetLocations requestIsAlwaysOpenField () {
      return this.requestIsAlwaysOpenField(true);
    }
    public APIRequestGetLocations requestIsAlwaysOpenField (boolean value) {
      this.requestField("is_always_open", value);
      return this;
    }
    public APIRequestGetLocations requestIsChainField () {
      return this.requestIsChainField(true);
    }
    public APIRequestGetLocations requestIsChainField (boolean value) {
      this.requestField("is_chain", value);
      return this;
    }
    public APIRequestGetLocations requestIsCommunityPageField () {
      return this.requestIsCommunityPageField(true);
    }
    public APIRequestGetLocations requestIsCommunityPageField (boolean value) {
      this.requestField("is_community_page", value);
      return this;
    }
    public APIRequestGetLocations requestIsEligibleForBrandedContentField () {
      return this.requestIsEligibleForBrandedContentField(true);
    }
    public APIRequestGetLocations requestIsEligibleForBrandedContentField (boolean value) {
      this.requestField("is_eligible_for_branded_content", value);
      return this;
    }
    public APIRequestGetLocations requestIsMessengerBotGetStartedEnabledField () {
      return this.requestIsMessengerBotGetStartedEnabledField(true);
    }
    public APIRequestGetLocations requestIsMessengerBotGetStartedEnabledField (boolean value) {
      this.requestField("is_messenger_bot_get_started_enabled", value);
      return this;
    }
    public APIRequestGetLocations requestIsMessengerPlatformBotField () {
      return this.requestIsMessengerPlatformBotField(true);
    }
    public APIRequestGetLocations requestIsMessengerPlatformBotField (boolean value) {
      this.requestField("is_messenger_platform_bot", value);
      return this;
    }
    public APIRequestGetLocations requestIsOwnedField () {
      return this.requestIsOwnedField(true);
    }
    public APIRequestGetLocations requestIsOwnedField (boolean value) {
      this.requestField("is_owned", value);
      return this;
    }
    public APIRequestGetLocations requestIsPermanentlyClosedField () {
      return this.requestIsPermanentlyClosedField(true);
    }
    public APIRequestGetLocations requestIsPermanentlyClosedField (boolean value) {
      this.requestField("is_permanently_closed", value);
      return this;
    }
    public APIRequestGetLocations requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetLocations requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetLocations requestIsUnclaimedField () {
      return this.requestIsUnclaimedField(true);
    }
    public APIRequestGetLocations requestIsUnclaimedField (boolean value) {
      this.requestField("is_unclaimed", value);
      return this;
    }
    public APIRequestGetLocations requestIsVerifiedField () {
      return this.requestIsVerifiedField(true);
    }
    public APIRequestGetLocations requestIsVerifiedField (boolean value) {
      this.requestField("is_verified", value);
      return this;
    }
    public APIRequestGetLocations requestIsWebhooksSubscribedField () {
      return this.requestIsWebhooksSubscribedField(true);
    }
    public APIRequestGetLocations requestIsWebhooksSubscribedField (boolean value) {
      this.requestField("is_webhooks_subscribed", value);
      return this;
    }
    public APIRequestGetLocations requestKeywordsField () {
      return this.requestKeywordsField(true);
    }
    public APIRequestGetLocations requestKeywordsField (boolean value) {
      this.requestField("keywords", value);
      return this;
    }
    public APIRequestGetLocations requestLeadgenFormPreviewDetailsField () {
      return this.requestLeadgenFormPreviewDetailsField(true);
    }
    public APIRequestGetLocations requestLeadgenFormPreviewDetailsField (boolean value) {
      this.requestField("leadgen_form_preview_details", value);
      return this;
    }
    public APIRequestGetLocations requestLeadgenHasCrmIntegrationField () {
      return this.requestLeadgenHasCrmIntegrationField(true);
    }
    public APIRequestGetLocations requestLeadgenHasCrmIntegrationField (boolean value) {
      this.requestField("leadgen_has_crm_integration", value);
      return this;
    }
    public APIRequestGetLocations requestLeadgenHasFatPingCrmIntegrationField () {
      return this.requestLeadgenHasFatPingCrmIntegrationField(true);
    }
    public APIRequestGetLocations requestLeadgenHasFatPingCrmIntegrationField (boolean value) {
      this.requestField("leadgen_has_fat_ping_crm_integration", value);
      return this;
    }
    public APIRequestGetLocations requestLeadgenTosAcceptanceTimeField () {
      return this.requestLeadgenTosAcceptanceTimeField(true);
    }
    public APIRequestGetLocations requestLeadgenTosAcceptanceTimeField (boolean value) {
      this.requestField("leadgen_tos_acceptance_time", value);
      return this;
    }
    public APIRequestGetLocations requestLeadgenTosAcceptedField () {
      return this.requestLeadgenTosAcceptedField(true);
    }
    public APIRequestGetLocations requestLeadgenTosAcceptedField (boolean value) {
      this.requestField("leadgen_tos_accepted", value);
      return this;
    }
    public APIRequestGetLocations requestLeadgenTosAcceptingUserField () {
      return this.requestLeadgenTosAcceptingUserField(true);
    }
    public APIRequestGetLocations requestLeadgenTosAcceptingUserField (boolean value) {
      this.requestField("leadgen_tos_accepting_user", value);
      return this;
    }
    public APIRequestGetLocations requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetLocations requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetLocations requestLocationField () {
      return this.requestLocationField(true);
    }
    public APIRequestGetLocations requestLocationField (boolean value) {
      this.requestField("location", value);
      return this;
    }
    public APIRequestGetLocations requestMembersField () {
      return this.requestMembersField(true);
    }
    public APIRequestGetLocations requestMembersField (boolean value) {
      this.requestField("members", value);
      return this;
    }
    public APIRequestGetLocations requestMerchantIdField () {
      return this.requestMerchantIdField(true);
    }
    public APIRequestGetLocations requestMerchantIdField (boolean value) {
      this.requestField("merchant_id", value);
      return this;
    }
    public APIRequestGetLocations requestMerchantReviewStatusField () {
      return this.requestMerchantReviewStatusField(true);
    }
    public APIRequestGetLocations requestMerchantReviewStatusField (boolean value) {
      this.requestField("merchant_review_status", value);
      return this;
    }
    public APIRequestGetLocations requestMessengerAdsDefaultIcebreakersField () {
      return this.requestMessengerAdsDefaultIcebreakersField(true);
    }
    public APIRequestGetLocations requestMessengerAdsDefaultIcebreakersField (boolean value) {
      this.requestField("messenger_ads_default_icebreakers", value);
      return this;
    }
    public APIRequestGetLocations requestMessengerAdsDefaultPageWelcomeMessageField () {
      return this.requestMessengerAdsDefaultPageWelcomeMessageField(true);
    }
    public APIRequestGetLocations requestMessengerAdsDefaultPageWelcomeMessageField (boolean value) {
      this.requestField("messenger_ads_default_page_welcome_message", value);
      return this;
    }
    public APIRequestGetLocations requestMessengerAdsDefaultQuickRepliesField () {
      return this.requestMessengerAdsDefaultQuickRepliesField(true);
    }
    public APIRequestGetLocations requestMessengerAdsDefaultQuickRepliesField (boolean value) {
      this.requestField("messenger_ads_default_quick_replies", value);
      return this;
    }
    public APIRequestGetLocations requestMessengerAdsQuickRepliesTypeField () {
      return this.requestMessengerAdsQuickRepliesTypeField(true);
    }
    public APIRequestGetLocations requestMessengerAdsQuickRepliesTypeField (boolean value) {
      this.requestField("messenger_ads_quick_replies_type", value);
      return this;
    }
    public APIRequestGetLocations requestMissionField () {
      return this.requestMissionField(true);
    }
    public APIRequestGetLocations requestMissionField (boolean value) {
      this.requestField("mission", value);
      return this;
    }
    public APIRequestGetLocations requestMpgField () {
      return this.requestMpgField(true);
    }
    public APIRequestGetLocations requestMpgField (boolean value) {
      this.requestField("mpg", value);
      return this;
    }
    public APIRequestGetLocations requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetLocations requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetLocations requestNameWithLocationDescriptorField () {
      return this.requestNameWithLocationDescriptorField(true);
    }
    public APIRequestGetLocations requestNameWithLocationDescriptorField (boolean value) {
      this.requestField("name_with_location_descriptor", value);
      return this;
    }
    public APIRequestGetLocations requestNetworkField () {
      return this.requestNetworkField(true);
    }
    public APIRequestGetLocations requestNetworkField (boolean value) {
      this.requestField("network", value);
      return this;
    }
    public APIRequestGetLocations requestNewLikeCountField () {
      return this.requestNewLikeCountField(true);
    }
    public APIRequestGetLocations requestNewLikeCountField (boolean value) {
      this.requestField("new_like_count", value);
      return this;
    }
    public APIRequestGetLocations requestOfferEligibleField () {
      return this.requestOfferEligibleField(true);
    }
    public APIRequestGetLocations requestOfferEligibleField (boolean value) {
      this.requestField("offer_eligible", value);
      return this;
    }
    public APIRequestGetLocations requestOverallStarRatingField () {
      return this.requestOverallStarRatingField(true);
    }
    public APIRequestGetLocations requestOverallStarRatingField (boolean value) {
      this.requestField("overall_star_rating", value);
      return this;
    }
    public APIRequestGetLocations requestPageAboutStoryField () {
      return this.requestPageAboutStoryField(true);
    }
    public APIRequestGetLocations requestPageAboutStoryField (boolean value) {
      this.requestField("page_about_story", value);
      return this;
    }
    public APIRequestGetLocations requestPageTokenField () {
      return this.requestPageTokenField(true);
    }
    public APIRequestGetLocations requestPageTokenField (boolean value) {
      this.requestField("page_token", value);
      return this;
    }
    public APIRequestGetLocations requestParentPageField () {
      return this.requestParentPageField(true);
    }
    public APIRequestGetLocations requestParentPageField (boolean value) {
      this.requestField("parent_page", value);
      return this;
    }
    public APIRequestGetLocations requestParkingField () {
      return this.requestParkingField(true);
    }
    public APIRequestGetLocations requestParkingField (boolean value) {
      this.requestField("parking", value);
      return this;
    }
    public APIRequestGetLocations requestPaymentOptionsField () {
      return this.requestPaymentOptionsField(true);
    }
    public APIRequestGetLocations requestPaymentOptionsField (boolean value) {
      this.requestField("payment_options", value);
      return this;
    }
    public APIRequestGetLocations requestPersonalInfoField () {
      return this.requestPersonalInfoField(true);
    }
    public APIRequestGetLocations requestPersonalInfoField (boolean value) {
      this.requestField("personal_info", value);
      return this;
    }
    public APIRequestGetLocations requestPersonalInterestsField () {
      return this.requestPersonalInterestsField(true);
    }
    public APIRequestGetLocations requestPersonalInterestsField (boolean value) {
      this.requestField("personal_interests", value);
      return this;
    }
    public APIRequestGetLocations requestPharmaSafetyInfoField () {
      return this.requestPharmaSafetyInfoField(true);
    }
    public APIRequestGetLocations requestPharmaSafetyInfoField (boolean value) {
      this.requestField("pharma_safety_info", value);
      return this;
    }
    public APIRequestGetLocations requestPhoneField () {
      return this.requestPhoneField(true);
    }
    public APIRequestGetLocations requestPhoneField (boolean value) {
      this.requestField("phone", value);
      return this;
    }
    public APIRequestGetLocations requestPlaceTypeField () {
      return this.requestPlaceTypeField(true);
    }
    public APIRequestGetLocations requestPlaceTypeField (boolean value) {
      this.requestField("place_type", value);
      return this;
    }
    public APIRequestGetLocations requestPlotOutlineField () {
      return this.requestPlotOutlineField(true);
    }
    public APIRequestGetLocations requestPlotOutlineField (boolean value) {
      this.requestField("plot_outline", value);
      return this;
    }
    public APIRequestGetLocations requestPreferredAudienceField () {
      return this.requestPreferredAudienceField(true);
    }
    public APIRequestGetLocations requestPreferredAudienceField (boolean value) {
      this.requestField("preferred_audience", value);
      return this;
    }
    public APIRequestGetLocations requestPressContactField () {
      return this.requestPressContactField(true);
    }
    public APIRequestGetLocations requestPressContactField (boolean value) {
      this.requestField("press_contact", value);
      return this;
    }
    public APIRequestGetLocations requestPriceRangeField () {
      return this.requestPriceRangeField(true);
    }
    public APIRequestGetLocations requestPriceRangeField (boolean value) {
      this.requestField("price_range", value);
      return this;
    }
    public APIRequestGetLocations requestPrivacyInfoUrlField () {
      return this.requestPrivacyInfoUrlField(true);
    }
    public APIRequestGetLocations requestPrivacyInfoUrlField (boolean value) {
      this.requestField("privacy_info_url", value);
      return this;
    }
    public APIRequestGetLocations requestProducedByField () {
      return this.requestProducedByField(true);
    }
    public APIRequestGetLocations requestProducedByField (boolean value) {
      this.requestField("produced_by", value);
      return this;
    }
    public APIRequestGetLocations requestProductsField () {
      return this.requestProductsField(true);
    }
    public APIRequestGetLocations requestProductsField (boolean value) {
      this.requestField("products", value);
      return this;
    }
    public APIRequestGetLocations requestPromotionEligibleField () {
      return this.requestPromotionEligibleField(true);
    }
    public APIRequestGetLocations requestPromotionEligibleField (boolean value) {
      this.requestField("promotion_eligible", value);
      return this;
    }
    public APIRequestGetLocations requestPromotionIneligibleReasonField () {
      return this.requestPromotionIneligibleReasonField(true);
    }
    public APIRequestGetLocations requestPromotionIneligibleReasonField (boolean value) {
      this.requestField("promotion_ineligible_reason", value);
      return this;
    }
    public APIRequestGetLocations requestPublicTransitField () {
      return this.requestPublicTransitField(true);
    }
    public APIRequestGetLocations requestPublicTransitField (boolean value) {
      this.requestField("public_transit", value);
      return this;
    }
    public APIRequestGetLocations requestRatingCountField () {
      return this.requestRatingCountField(true);
    }
    public APIRequestGetLocations requestRatingCountField (boolean value) {
      this.requestField("rating_count", value);
      return this;
    }
    public APIRequestGetLocations requestRecipientField () {
      return this.requestRecipientField(true);
    }
    public APIRequestGetLocations requestRecipientField (boolean value) {
      this.requestField("recipient", value);
      return this;
    }
    public APIRequestGetLocations requestRecordLabelField () {
      return this.requestRecordLabelField(true);
    }
    public APIRequestGetLocations requestRecordLabelField (boolean value) {
      this.requestField("record_label", value);
      return this;
    }
    public APIRequestGetLocations requestReleaseDateField () {
      return this.requestReleaseDateField(true);
    }
    public APIRequestGetLocations requestReleaseDateField (boolean value) {
      this.requestField("release_date", value);
      return this;
    }
    public APIRequestGetLocations requestRestaurantServicesField () {
      return this.requestRestaurantServicesField(true);
    }
    public APIRequestGetLocations requestRestaurantServicesField (boolean value) {
      this.requestField("restaurant_services", value);
      return this;
    }
    public APIRequestGetLocations requestRestaurantSpecialtiesField () {
      return this.requestRestaurantSpecialtiesField(true);
    }
    public APIRequestGetLocations requestRestaurantSpecialtiesField (boolean value) {
      this.requestField("restaurant_specialties", value);
      return this;
    }
    public APIRequestGetLocations requestScheduleField () {
      return this.requestScheduleField(true);
    }
    public APIRequestGetLocations requestScheduleField (boolean value) {
      this.requestField("schedule", value);
      return this;
    }
    public APIRequestGetLocations requestScreenplayByField () {
      return this.requestScreenplayByField(true);
    }
    public APIRequestGetLocations requestScreenplayByField (boolean value) {
      this.requestField("screenplay_by", value);
      return this;
    }
    public APIRequestGetLocations requestSeasonField () {
      return this.requestSeasonField(true);
    }
    public APIRequestGetLocations requestSeasonField (boolean value) {
      this.requestField("season", value);
      return this;
    }
    public APIRequestGetLocations requestSingleLineAddressField () {
      return this.requestSingleLineAddressField(true);
    }
    public APIRequestGetLocations requestSingleLineAddressField (boolean value) {
      this.requestField("single_line_address", value);
      return this;
    }
    public APIRequestGetLocations requestStarringField () {
      return this.requestStarringField(true);
    }
    public APIRequestGetLocations requestStarringField (boolean value) {
      this.requestField("starring", value);
      return this;
    }
    public APIRequestGetLocations requestStartInfoField () {
      return this.requestStartInfoField(true);
    }
    public APIRequestGetLocations requestStartInfoField (boolean value) {
      this.requestField("start_info", value);
      return this;
    }
    public APIRequestGetLocations requestStoreCodeField () {
      return this.requestStoreCodeField(true);
    }
    public APIRequestGetLocations requestStoreCodeField (boolean value) {
      this.requestField("store_code", value);
      return this;
    }
    public APIRequestGetLocations requestStoreLocationDescriptorField () {
      return this.requestStoreLocationDescriptorField(true);
    }
    public APIRequestGetLocations requestStoreLocationDescriptorField (boolean value) {
      this.requestField("store_location_descriptor", value);
      return this;
    }
    public APIRequestGetLocations requestStoreNumberField () {
      return this.requestStoreNumberField(true);
    }
    public APIRequestGetLocations requestStoreNumberField (boolean value) {
      this.requestField("store_number", value);
      return this;
    }
    public APIRequestGetLocations requestStudioField () {
      return this.requestStudioField(true);
    }
    public APIRequestGetLocations requestStudioField (boolean value) {
      this.requestField("studio", value);
      return this;
    }
    public APIRequestGetLocations requestSupportsInstantArticlesField () {
      return this.requestSupportsInstantArticlesField(true);
    }
    public APIRequestGetLocations requestSupportsInstantArticlesField (boolean value) {
      this.requestField("supports_instant_articles", value);
      return this;
    }
    public APIRequestGetLocations requestTalkingAboutCountField () {
      return this.requestTalkingAboutCountField(true);
    }
    public APIRequestGetLocations requestTalkingAboutCountField (boolean value) {
      this.requestField("talking_about_count", value);
      return this;
    }
    public APIRequestGetLocations requestUnreadMessageCountField () {
      return this.requestUnreadMessageCountField(true);
    }
    public APIRequestGetLocations requestUnreadMessageCountField (boolean value) {
      this.requestField("unread_message_count", value);
      return this;
    }
    public APIRequestGetLocations requestUnreadNotifCountField () {
      return this.requestUnreadNotifCountField(true);
    }
    public APIRequestGetLocations requestUnreadNotifCountField (boolean value) {
      this.requestField("unread_notif_count", value);
      return this;
    }
    public APIRequestGetLocations requestUnseenMessageCountField () {
      return this.requestUnseenMessageCountField(true);
    }
    public APIRequestGetLocations requestUnseenMessageCountField (boolean value) {
      this.requestField("unseen_message_count", value);
      return this;
    }
    public APIRequestGetLocations requestUsernameField () {
      return this.requestUsernameField(true);
    }
    public APIRequestGetLocations requestUsernameField (boolean value) {
      this.requestField("username", value);
      return this;
    }
    public APIRequestGetLocations requestVerificationStatusField () {
      return this.requestVerificationStatusField(true);
    }
    public APIRequestGetLocations requestVerificationStatusField (boolean value) {
      this.requestField("verification_status", value);
      return this;
    }
    public APIRequestGetLocations requestVoipInfoField () {
      return this.requestVoipInfoField(true);
    }
    public APIRequestGetLocations requestVoipInfoField (boolean value) {
      this.requestField("voip_info", value);
      return this;
    }
    public APIRequestGetLocations requestWebsiteField () {
      return this.requestWebsiteField(true);
    }
    public APIRequestGetLocations requestWebsiteField (boolean value) {
      this.requestField("website", value);
      return this;
    }
    public APIRequestGetLocations requestWereHereCountField () {
      return this.requestWereHereCountField(true);
    }
    public APIRequestGetLocations requestWereHereCountField (boolean value) {
      this.requestField("were_here_count", value);
      return this;
    }
    public APIRequestGetLocations requestWhatsappNumberField () {
      return this.requestWhatsappNumberField(true);
    }
    public APIRequestGetLocations requestWhatsappNumberField (boolean value) {
      this.requestField("whatsapp_number", value);
      return this;
    }
    public APIRequestGetLocations requestWrittenByField () {
      return this.requestWrittenByField(true);
    }
    public APIRequestGetLocations requestWrittenByField (boolean value) {
      this.requestField("written_by", value);
      return this;
    }
  }

  public static class APIRequestCreateLocation extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "store_number",
      "location",
      "place_topics",
      "phone",
      "store_name",
      "hours",
      "page_username",
      "old_store_number",
      "permanently_closed",
      "price_range",
      "store_location_descriptor",
      "location_page_id",
      "ignore_warnings",
      "website",
      "always_open",
      "store_code",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateLocation.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateLocation(String nodeId, APIContext context) {
      super(context, nodeId, "/locations", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateLocation setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateLocation setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateLocation setStoreNumber (Long storeNumber) {
      this.setParam("store_number", storeNumber);
      return this;
    }
    public APIRequestCreateLocation setStoreNumber (String storeNumber) {
      this.setParam("store_number", storeNumber);
      return this;
    }

    public APIRequestCreateLocation setLocation (Object location) {
      this.setParam("location", location);
      return this;
    }
    public APIRequestCreateLocation setLocation (String location) {
      this.setParam("location", location);
      return this;
    }

    public APIRequestCreateLocation setPlaceTopics (List placeTopics) {
      this.setParam("place_topics", placeTopics);
      return this;
    }
    public APIRequestCreateLocation setPlaceTopics (String placeTopics) {
      this.setParam("place_topics", placeTopics);
      return this;
    }

    public APIRequestCreateLocation setPhone (String phone) {
      this.setParam("phone", phone);
      return this;
    }

    public APIRequestCreateLocation setStoreName (String storeName) {
      this.setParam("store_name", storeName);
      return this;
    }

    public APIRequestCreateLocation setHours (Map hours) {
      this.setParam("hours", hours);
      return this;
    }
    public APIRequestCreateLocation setHours (String hours) {
      this.setParam("hours", hours);
      return this;
    }

    public APIRequestCreateLocation setPageUsername (String pageUsername) {
      this.setParam("page_username", pageUsername);
      return this;
    }

    public APIRequestCreateLocation setOldStoreNumber (Long oldStoreNumber) {
      this.setParam("old_store_number", oldStoreNumber);
      return this;
    }
    public APIRequestCreateLocation setOldStoreNumber (String oldStoreNumber) {
      this.setParam("old_store_number", oldStoreNumber);
      return this;
    }

    public APIRequestCreateLocation setPermanentlyClosed (Boolean permanentlyClosed) {
      this.setParam("permanently_closed", permanentlyClosed);
      return this;
    }
    public APIRequestCreateLocation setPermanentlyClosed (String permanentlyClosed) {
      this.setParam("permanently_closed", permanentlyClosed);
      return this;
    }

    public APIRequestCreateLocation setPriceRange (String priceRange) {
      this.setParam("price_range", priceRange);
      return this;
    }

    public APIRequestCreateLocation setStoreLocationDescriptor (String storeLocationDescriptor) {
      this.setParam("store_location_descriptor", storeLocationDescriptor);
      return this;
    }

    public APIRequestCreateLocation setLocationPageId (String locationPageId) {
      this.setParam("location_page_id", locationPageId);
      return this;
    }

    public APIRequestCreateLocation setIgnoreWarnings (Boolean ignoreWarnings) {
      this.setParam("ignore_warnings", ignoreWarnings);
      return this;
    }
    public APIRequestCreateLocation setIgnoreWarnings (String ignoreWarnings) {
      this.setParam("ignore_warnings", ignoreWarnings);
      return this;
    }

    public APIRequestCreateLocation setWebsite (String website) {
      this.setParam("website", website);
      return this;
    }

    public APIRequestCreateLocation setAlwaysOpen (Boolean alwaysOpen) {
      this.setParam("always_open", alwaysOpen);
      return this;
    }
    public APIRequestCreateLocation setAlwaysOpen (String alwaysOpen) {
      this.setParam("always_open", alwaysOpen);
      return this;
    }

    public APIRequestCreateLocation setStoreCode (String storeCode) {
      this.setParam("store_code", storeCode);
      return this;
    }

    public APIRequestCreateLocation requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateLocation requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLocation requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateLocation requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateLocation requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateLocation requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetMediaFingerprints extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "universal_content_id",
      "fingerprint_validity",
    };

    public static final String[] FIELDS = {
      "duration_in_sec",
      "expiration_time",
      "fingerprint_content_type",
      "fingerprint_type",
      "fingerprint_validity",
      "id",
      "metadata",
      "title",
      "universal_content_id",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return MediaFingerprint.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetMediaFingerprints.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetMediaFingerprints(String nodeId, APIContext context) {
      super(context, nodeId, "/media_fingerprints", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetMediaFingerprints setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetMediaFingerprints setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetMediaFingerprints setUniversalContentId (String universalContentId) {
      this.setParam("universal_content_id", universalContentId);
      return this;
    }

    public APIRequestGetMediaFingerprints setFingerprintValidity (MediaFingerprint.EnumFingerprintValidity fingerprintValidity) {
      this.setParam("fingerprint_validity", fingerprintValidity);
      return this;
    }
    public APIRequestGetMediaFingerprints setFingerprintValidity (String fingerprintValidity) {
      this.setParam("fingerprint_validity", fingerprintValidity);
      return this;
    }

    public APIRequestGetMediaFingerprints requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetMediaFingerprints requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetMediaFingerprints requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetMediaFingerprints requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetMediaFingerprints requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetMediaFingerprints requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetMediaFingerprints requestDurationInSecField () {
      return this.requestDurationInSecField(true);
    }
    public APIRequestGetMediaFingerprints requestDurationInSecField (boolean value) {
      this.requestField("duration_in_sec", value);
      return this;
    }
    public APIRequestGetMediaFingerprints requestExpirationTimeField () {
      return this.requestExpirationTimeField(true);
    }
    public APIRequestGetMediaFingerprints requestExpirationTimeField (boolean value) {
      this.requestField("expiration_time", value);
      return this;
    }
    public APIRequestGetMediaFingerprints requestFingerprintContentTypeField () {
      return this.requestFingerprintContentTypeField(true);
    }
    public APIRequestGetMediaFingerprints requestFingerprintContentTypeField (boolean value) {
      this.requestField("fingerprint_content_type", value);
      return this;
    }
    public APIRequestGetMediaFingerprints requestFingerprintTypeField () {
      return this.requestFingerprintTypeField(true);
    }
    public APIRequestGetMediaFingerprints requestFingerprintTypeField (boolean value) {
      this.requestField("fingerprint_type", value);
      return this;
    }
    public APIRequestGetMediaFingerprints requestFingerprintValidityField () {
      return this.requestFingerprintValidityField(true);
    }
    public APIRequestGetMediaFingerprints requestFingerprintValidityField (boolean value) {
      this.requestField("fingerprint_validity", value);
      return this;
    }
    public APIRequestGetMediaFingerprints requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetMediaFingerprints requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetMediaFingerprints requestMetadataField () {
      return this.requestMetadataField(true);
    }
    public APIRequestGetMediaFingerprints requestMetadataField (boolean value) {
      this.requestField("metadata", value);
      return this;
    }
    public APIRequestGetMediaFingerprints requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetMediaFingerprints requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
    public APIRequestGetMediaFingerprints requestUniversalContentIdField () {
      return this.requestUniversalContentIdField(true);
    }
    public APIRequestGetMediaFingerprints requestUniversalContentIdField (boolean value) {
      this.requestField("universal_content_id", value);
      return this;
    }
  }

  public static class APIRequestCreateMediaFingerprint extends APIRequest {

    MediaFingerprint lastResponse = null;
    @Override
    public MediaFingerprint getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "fingerprint_content_type",
      "title",
      "metadata",
      "universal_content_id",
      "source",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public MediaFingerprint parseResponse(String response, String header) throws APIException {
      return MediaFingerprint.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public MediaFingerprint execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public MediaFingerprint execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public MediaFingerprint apply(ResponseWrapper result) {
             try {
               return APIRequestCreateMediaFingerprint.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateMediaFingerprint(String nodeId, APIContext context) {
      super(context, nodeId, "/media_fingerprints", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateMediaFingerprint setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateMediaFingerprint setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateMediaFingerprint setFingerprintContentType (MediaFingerprint.EnumFingerprintContentType fingerprintContentType) {
      this.setParam("fingerprint_content_type", fingerprintContentType);
      return this;
    }
    public APIRequestCreateMediaFingerprint setFingerprintContentType (String fingerprintContentType) {
      this.setParam("fingerprint_content_type", fingerprintContentType);
      return this;
    }

    public APIRequestCreateMediaFingerprint setTitle (String title) {
      this.setParam("title", title);
      return this;
    }

    public APIRequestCreateMediaFingerprint setMetadata (JsonArray metadata) {
      this.setParam("metadata", metadata);
      return this;
    }
    public APIRequestCreateMediaFingerprint setMetadata (String metadata) {
      this.setParam("metadata", metadata);
      return this;
    }

    public APIRequestCreateMediaFingerprint setUniversalContentId (String universalContentId) {
      this.setParam("universal_content_id", universalContentId);
      return this;
    }

    public APIRequestCreateMediaFingerprint setSource (String source) {
      this.setParam("source", source);
      return this;
    }

    public APIRequestCreateMediaFingerprint requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateMediaFingerprint requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMediaFingerprint requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateMediaFingerprint requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMediaFingerprint requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateMediaFingerprint requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreateMessageAttachment extends APIRequest {

    APINode lastResponse = null;
    @Override
    public APINode getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "message",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINode parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public APINode execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINode execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public APINode apply(ResponseWrapper result) {
             try {
               return APIRequestCreateMessageAttachment.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateMessageAttachment(String nodeId, APIContext context) {
      super(context, nodeId, "/message_attachments", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateMessageAttachment setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateMessageAttachment setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateMessageAttachment setMessage (Object message) {
      this.setParam("message", message);
      return this;
    }
    public APIRequestCreateMessageAttachment setMessage (String message) {
      this.setParam("message", message);
      return this;
    }

    public APIRequestCreateMessageAttachment requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateMessageAttachment requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMessageAttachment requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateMessageAttachment requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMessageAttachment requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateMessageAttachment requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreateMessageCreative extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "messages",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateMessageCreative.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateMessageCreative(String nodeId, APIContext context) {
      super(context, nodeId, "/message_creatives", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateMessageCreative setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateMessageCreative setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateMessageCreative setMessages (List messages) {
      this.setParam("messages", messages);
      return this;
    }
    public APIRequestCreateMessageCreative setMessages (String messages) {
      this.setParam("messages", messages);
      return this;
    }

    public APIRequestCreateMessageCreative requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateMessageCreative requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMessageCreative requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateMessageCreative requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMessageCreative requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateMessageCreative requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreateMessage extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "recipient",
      "message",
      "sender_action",
      "notification_type",
      "tag",
      "messaging_type",
      "persona_id",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateMessage.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateMessage(String nodeId, APIContext context) {
      super(context, nodeId, "/messages", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateMessage setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateMessage setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateMessage setRecipient (Object recipient) {
      this.setParam("recipient", recipient);
      return this;
    }
    public APIRequestCreateMessage setRecipient (String recipient) {
      this.setParam("recipient", recipient);
      return this;
    }

    public APIRequestCreateMessage setMessage (Object message) {
      this.setParam("message", message);
      return this;
    }
    public APIRequestCreateMessage setMessage (String message) {
      this.setParam("message", message);
      return this;
    }

    public APIRequestCreateMessage setSenderAction (Page.EnumSenderAction senderAction) {
      this.setParam("sender_action", senderAction);
      return this;
    }
    public APIRequestCreateMessage setSenderAction (String senderAction) {
      this.setParam("sender_action", senderAction);
      return this;
    }

    public APIRequestCreateMessage setNotificationType (Page.EnumNotificationType notificationType) {
      this.setParam("notification_type", notificationType);
      return this;
    }
    public APIRequestCreateMessage setNotificationType (String notificationType) {
      this.setParam("notification_type", notificationType);
      return this;
    }

    public APIRequestCreateMessage setTag (Object tag) {
      this.setParam("tag", tag);
      return this;
    }
    public APIRequestCreateMessage setTag (String tag) {
      this.setParam("tag", tag);
      return this;
    }

    public APIRequestCreateMessage setMessagingType (Page.EnumMessagingType messagingType) {
      this.setParam("messaging_type", messagingType);
      return this;
    }
    public APIRequestCreateMessage setMessagingType (String messagingType) {
      this.setParam("messaging_type", messagingType);
      return this;
    }

    public APIRequestCreateMessage setPersonaId (String personaId) {
      this.setParam("persona_id", personaId);
      return this;
    }

    public APIRequestCreateMessage requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateMessage requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMessage requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateMessage requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMessage requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateMessage requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetMessagingFeatureReview extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "feature",
      "status",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return MessagingFeatureReview.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetMessagingFeatureReview.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetMessagingFeatureReview(String nodeId, APIContext context) {
      super(context, nodeId, "/messaging_feature_review", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetMessagingFeatureReview setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetMessagingFeatureReview setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetMessagingFeatureReview requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetMessagingFeatureReview requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetMessagingFeatureReview requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetMessagingFeatureReview requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetMessagingFeatureReview requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetMessagingFeatureReview requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetMessagingFeatureReview requestFeatureField () {
      return this.requestFeatureField(true);
    }
    public APIRequestGetMessagingFeatureReview requestFeatureField (boolean value) {
      this.requestField("feature", value);
      return this;
    }
    public APIRequestGetMessagingFeatureReview requestStatusField () {
      return this.requestStatusField(true);
    }
    public APIRequestGetMessagingFeatureReview requestStatusField (boolean value) {
      this.requestField("status", value);
      return this;
    }
  }

  public static class APIRequestGetMessengerAdsPageWelcomeMessages extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "id",
      "page_welcome_message_body",
      "page_welcome_message_type",
      "template_name",
      "time_created",
      "time_last_used",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return MessengerDestinationPageWelcomeMessage.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetMessengerAdsPageWelcomeMessages.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetMessengerAdsPageWelcomeMessages(String nodeId, APIContext context) {
      super(context, nodeId, "/messenger_ads_page_welcome_messages", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetMessengerAdsPageWelcomeMessages setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetMessengerAdsPageWelcomeMessages setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetMessengerAdsPageWelcomeMessages requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetMessengerAdsPageWelcomeMessages requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetMessengerAdsPageWelcomeMessages requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetMessengerAdsPageWelcomeMessages requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetMessengerAdsPageWelcomeMessages requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetMessengerAdsPageWelcomeMessages requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetMessengerAdsPageWelcomeMessages requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetMessengerAdsPageWelcomeMessages requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetMessengerAdsPageWelcomeMessages requestPageWelcomeMessageBodyField () {
      return this.requestPageWelcomeMessageBodyField(true);
    }
    public APIRequestGetMessengerAdsPageWelcomeMessages requestPageWelcomeMessageBodyField (boolean value) {
      this.requestField("page_welcome_message_body", value);
      return this;
    }
    public APIRequestGetMessengerAdsPageWelcomeMessages requestPageWelcomeMessageTypeField () {
      return this.requestPageWelcomeMessageTypeField(true);
    }
    public APIRequestGetMessengerAdsPageWelcomeMessages requestPageWelcomeMessageTypeField (boolean value) {
      this.requestField("page_welcome_message_type", value);
      return this;
    }
    public APIRequestGetMessengerAdsPageWelcomeMessages requestTemplateNameField () {
      return this.requestTemplateNameField(true);
    }
    public APIRequestGetMessengerAdsPageWelcomeMessages requestTemplateNameField (boolean value) {
      this.requestField("template_name", value);
      return this;
    }
    public APIRequestGetMessengerAdsPageWelcomeMessages requestTimeCreatedField () {
      return this.requestTimeCreatedField(true);
    }
    public APIRequestGetMessengerAdsPageWelcomeMessages requestTimeCreatedField (boolean value) {
      this.requestField("time_created", value);
      return this;
    }
    public APIRequestGetMessengerAdsPageWelcomeMessages requestTimeLastUsedField () {
      return this.requestTimeLastUsedField(true);
    }
    public APIRequestGetMessengerAdsPageWelcomeMessages requestTimeLastUsedField (boolean value) {
      this.requestField("time_last_used", value);
      return this;
    }
  }

  public static class APIRequestCreateMessengerCode extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "type",
      "data",
      "image_size",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateMessengerCode.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateMessengerCode(String nodeId, APIContext context) {
      super(context, nodeId, "/messenger_codes", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateMessengerCode setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateMessengerCode setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateMessengerCode setType (Page.EnumType type) {
      this.setParam("type", type);
      return this;
    }
    public APIRequestCreateMessengerCode setType (String type) {
      this.setParam("type", type);
      return this;
    }

    public APIRequestCreateMessengerCode setData (String data) {
      this.setParam("data", data);
      return this;
    }

    public APIRequestCreateMessengerCode setImageSize (Long imageSize) {
      this.setParam("image_size", imageSize);
      return this;
    }
    public APIRequestCreateMessengerCode setImageSize (String imageSize) {
      this.setParam("image_size", imageSize);
      return this;
    }

    public APIRequestCreateMessengerCode requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateMessengerCode requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMessengerCode requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateMessengerCode requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMessengerCode requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateMessengerCode requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestDeleteMessengerProfile extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "fields",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteMessengerProfile.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteMessengerProfile(String nodeId, APIContext context) {
      super(context, nodeId, "/messenger_profile", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteMessengerProfile setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteMessengerProfile setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteMessengerProfile setFields (List fields) {
      this.setParam("fields", fields);
      return this;
    }
    public APIRequestDeleteMessengerProfile setFields (String fields) {
      this.setParam("fields", fields);
      return this;
    }

    public APIRequestDeleteMessengerProfile requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteMessengerProfile requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteMessengerProfile requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteMessengerProfile requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteMessengerProfile requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteMessengerProfile requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetMessengerProfile extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "account_linking_url",
      "get_started",
      "greeting",
      "home_url",
      "payment_settings",
      "persistent_menu",
      "target_audience",
      "whitelisted_domains",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return MessengerProfile.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetMessengerProfile.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetMessengerProfile(String nodeId, APIContext context) {
      super(context, nodeId, "/messenger_profile", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetMessengerProfile setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetMessengerProfile setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetMessengerProfile requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetMessengerProfile requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetMessengerProfile requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetMessengerProfile requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetMessengerProfile requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetMessengerProfile requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetMessengerProfile requestAccountLinkingUrlField () {
      return this.requestAccountLinkingUrlField(true);
    }
    public APIRequestGetMessengerProfile requestAccountLinkingUrlField (boolean value) {
      this.requestField("account_linking_url", value);
      return this;
    }
    public APIRequestGetMessengerProfile requestGetStartedField () {
      return this.requestGetStartedField(true);
    }
    public APIRequestGetMessengerProfile requestGetStartedField (boolean value) {
      this.requestField("get_started", value);
      return this;
    }
    public APIRequestGetMessengerProfile requestGreetingField () {
      return this.requestGreetingField(true);
    }
    public APIRequestGetMessengerProfile requestGreetingField (boolean value) {
      this.requestField("greeting", value);
      return this;
    }
    public APIRequestGetMessengerProfile requestHomeUrlField () {
      return this.requestHomeUrlField(true);
    }
    public APIRequestGetMessengerProfile requestHomeUrlField (boolean value) {
      this.requestField("home_url", value);
      return this;
    }
    public APIRequestGetMessengerProfile requestPaymentSettingsField () {
      return this.requestPaymentSettingsField(true);
    }
    public APIRequestGetMessengerProfile requestPaymentSettingsField (boolean value) {
      this.requestField("payment_settings", value);
      return this;
    }
    public APIRequestGetMessengerProfile requestPersistentMenuField () {
      return this.requestPersistentMenuField(true);
    }
    public APIRequestGetMessengerProfile requestPersistentMenuField (boolean value) {
      this.requestField("persistent_menu", value);
      return this;
    }
    public APIRequestGetMessengerProfile requestTargetAudienceField () {
      return this.requestTargetAudienceField(true);
    }
    public APIRequestGetMessengerProfile requestTargetAudienceField (boolean value) {
      this.requestField("target_audience", value);
      return this;
    }
    public APIRequestGetMessengerProfile requestWhitelistedDomainsField () {
      return this.requestWhitelistedDomainsField(true);
    }
    public APIRequestGetMessengerProfile requestWhitelistedDomainsField (boolean value) {
      this.requestField("whitelisted_domains", value);
      return this;
    }
  }

  public static class APIRequestCreateMessengerProfile extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "get_started",
      "persistent_menu",
      "target_audience",
      "whitelisted_domains",
      "greeting",
      "account_linking_url",
      "payment_settings",
      "home_url",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateMessengerProfile.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateMessengerProfile(String nodeId, APIContext context) {
      super(context, nodeId, "/messenger_profile", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateMessengerProfile setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateMessengerProfile setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateMessengerProfile setGetStarted (Object getStarted) {
      this.setParam("get_started", getStarted);
      return this;
    }
    public APIRequestCreateMessengerProfile setGetStarted (String getStarted) {
      this.setParam("get_started", getStarted);
      return this;
    }

    public APIRequestCreateMessengerProfile setPersistentMenu (List persistentMenu) {
      this.setParam("persistent_menu", persistentMenu);
      return this;
    }
    public APIRequestCreateMessengerProfile setPersistentMenu (String persistentMenu) {
      this.setParam("persistent_menu", persistentMenu);
      return this;
    }

    public APIRequestCreateMessengerProfile setTargetAudience (Object targetAudience) {
      this.setParam("target_audience", targetAudience);
      return this;
    }
    public APIRequestCreateMessengerProfile setTargetAudience (String targetAudience) {
      this.setParam("target_audience", targetAudience);
      return this;
    }

    public APIRequestCreateMessengerProfile setWhitelistedDomains (List whitelistedDomains) {
      this.setParam("whitelisted_domains", whitelistedDomains);
      return this;
    }
    public APIRequestCreateMessengerProfile setWhitelistedDomains (String whitelistedDomains) {
      this.setParam("whitelisted_domains", whitelistedDomains);
      return this;
    }

    public APIRequestCreateMessengerProfile setGreeting (List greeting) {
      this.setParam("greeting", greeting);
      return this;
    }
    public APIRequestCreateMessengerProfile setGreeting (String greeting) {
      this.setParam("greeting", greeting);
      return this;
    }

    public APIRequestCreateMessengerProfile setAccountLinkingUrl (String accountLinkingUrl) {
      this.setParam("account_linking_url", accountLinkingUrl);
      return this;
    }

    public APIRequestCreateMessengerProfile setPaymentSettings (Object paymentSettings) {
      this.setParam("payment_settings", paymentSettings);
      return this;
    }
    public APIRequestCreateMessengerProfile setPaymentSettings (String paymentSettings) {
      this.setParam("payment_settings", paymentSettings);
      return this;
    }

    public APIRequestCreateMessengerProfile setHomeUrl (Object homeUrl) {
      this.setParam("home_url", homeUrl);
      return this;
    }
    public APIRequestCreateMessengerProfile setHomeUrl (String homeUrl) {
      this.setParam("home_url", homeUrl);
      return this;
    }

    public APIRequestCreateMessengerProfile requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateMessengerProfile requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMessengerProfile requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateMessengerProfile requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMessengerProfile requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateMessengerProfile requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetMilestones extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "created_time",
      "description",
      "end_time",
      "from",
      "id",
      "is_hidden",
      "start_time",
      "title",
      "updated_time",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return LifeEvent.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetMilestones.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetMilestones(String nodeId, APIContext context) {
      super(context, nodeId, "/milestones", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetMilestones setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetMilestones setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetMilestones requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetMilestones requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetMilestones requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetMilestones requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetMilestones requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetMilestones requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetMilestones requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetMilestones requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetMilestones requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetMilestones requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetMilestones requestEndTimeField () {
      return this.requestEndTimeField(true);
    }
    public APIRequestGetMilestones requestEndTimeField (boolean value) {
      this.requestField("end_time", value);
      return this;
    }
    public APIRequestGetMilestones requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetMilestones requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetMilestones requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetMilestones requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetMilestones requestIsHiddenField () {
      return this.requestIsHiddenField(true);
    }
    public APIRequestGetMilestones requestIsHiddenField (boolean value) {
      this.requestField("is_hidden", value);
      return this;
    }
    public APIRequestGetMilestones requestStartTimeField () {
      return this.requestStartTimeField(true);
    }
    public APIRequestGetMilestones requestStartTimeField (boolean value) {
      this.requestField("start_time", value);
      return this;
    }
    public APIRequestGetMilestones requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetMilestones requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
    public APIRequestGetMilestones requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetMilestones requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
  }

  public static class APIRequestCreateMilestone extends APIRequest {

    LifeEvent lastResponse = null;
    @Override
    public LifeEvent getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "title",
      "description",
      "start_time",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public LifeEvent parseResponse(String response, String header) throws APIException {
      return LifeEvent.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public LifeEvent execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public LifeEvent execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public LifeEvent apply(ResponseWrapper result) {
             try {
               return APIRequestCreateMilestone.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateMilestone(String nodeId, APIContext context) {
      super(context, nodeId, "/milestones", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateMilestone setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateMilestone setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateMilestone setTitle (String title) {
      this.setParam("title", title);
      return this;
    }

    public APIRequestCreateMilestone setDescription (String description) {
      this.setParam("description", description);
      return this;
    }

    public APIRequestCreateMilestone setStartTime (String startTime) {
      this.setParam("start_time", startTime);
      return this;
    }

    public APIRequestCreateMilestone requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateMilestone requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMilestone requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateMilestone requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateMilestone requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateMilestone requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetMusicVideoMediaCopyrights extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "creation_time",
      "displayed_matches_count",
      "id",
      "in_conflict",
      "isrc",
      "match_rule",
      "ownership_countries",
      "reference_file_status",
      "ridge_monitoring_status",
      "update_time",
      "video_asset",
      "whitelisted_fb_users",
      "whitelisted_ig_users",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return MusicVideoCopyright.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetMusicVideoMediaCopyrights.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetMusicVideoMediaCopyrights(String nodeId, APIContext context) {
      super(context, nodeId, "/music_video_media_copyrights", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetMusicVideoMediaCopyrights setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetMusicVideoMediaCopyrights setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetMusicVideoMediaCopyrights requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetMusicVideoMediaCopyrights requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetMusicVideoMediaCopyrights requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetMusicVideoMediaCopyrights requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetMusicVideoMediaCopyrights requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetMusicVideoMediaCopyrights requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetMusicVideoMediaCopyrights requestCreationTimeField () {
      return this.requestCreationTimeField(true);
    }
    public APIRequestGetMusicVideoMediaCopyrights requestCreationTimeField (boolean value) {
      this.requestField("creation_time", value);
      return this;
    }
    public APIRequestGetMusicVideoMediaCopyrights requestDisplayedMatchesCountField () {
      return this.requestDisplayedMatchesCountField(true);
    }
    public APIRequestGetMusicVideoMediaCopyrights requestDisplayedMatchesCountField (boolean value) {
      this.requestField("displayed_matches_count", value);
      return this;
    }
    public APIRequestGetMusicVideoMediaCopyrights requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetMusicVideoMediaCopyrights requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetMusicVideoMediaCopyrights requestInConflictField () {
      return this.requestInConflictField(true);
    }
    public APIRequestGetMusicVideoMediaCopyrights requestInConflictField (boolean value) {
      this.requestField("in_conflict", value);
      return this;
    }
    public APIRequestGetMusicVideoMediaCopyrights requestIsrcField () {
      return this.requestIsrcField(true);
    }
    public APIRequestGetMusicVideoMediaCopyrights requestIsrcField (boolean value) {
      this.requestField("isrc", value);
      return this;
    }
    public APIRequestGetMusicVideoMediaCopyrights requestMatchRuleField () {
      return this.requestMatchRuleField(true);
    }
    public APIRequestGetMusicVideoMediaCopyrights requestMatchRuleField (boolean value) {
      this.requestField("match_rule", value);
      return this;
    }
    public APIRequestGetMusicVideoMediaCopyrights requestOwnershipCountriesField () {
      return this.requestOwnershipCountriesField(true);
    }
    public APIRequestGetMusicVideoMediaCopyrights requestOwnershipCountriesField (boolean value) {
      this.requestField("ownership_countries", value);
      return this;
    }
    public APIRequestGetMusicVideoMediaCopyrights requestReferenceFileStatusField () {
      return this.requestReferenceFileStatusField(true);
    }
    public APIRequestGetMusicVideoMediaCopyrights requestReferenceFileStatusField (boolean value) {
      this.requestField("reference_file_status", value);
      return this;
    }
    public APIRequestGetMusicVideoMediaCopyrights requestRidgeMonitoringStatusField () {
      return this.requestRidgeMonitoringStatusField(true);
    }
    public APIRequestGetMusicVideoMediaCopyrights requestRidgeMonitoringStatusField (boolean value) {
      this.requestField("ridge_monitoring_status", value);
      return this;
    }
    public APIRequestGetMusicVideoMediaCopyrights requestUpdateTimeField () {
      return this.requestUpdateTimeField(true);
    }
    public APIRequestGetMusicVideoMediaCopyrights requestUpdateTimeField (boolean value) {
      this.requestField("update_time", value);
      return this;
    }
    public APIRequestGetMusicVideoMediaCopyrights requestVideoAssetField () {
      return this.requestVideoAssetField(true);
    }
    public APIRequestGetMusicVideoMediaCopyrights requestVideoAssetField (boolean value) {
      this.requestField("video_asset", value);
      return this;
    }
    public APIRequestGetMusicVideoMediaCopyrights requestWhitelistedFbUsersField () {
      return this.requestWhitelistedFbUsersField(true);
    }
    public APIRequestGetMusicVideoMediaCopyrights requestWhitelistedFbUsersField (boolean value) {
      this.requestField("whitelisted_fb_users", value);
      return this;
    }
    public APIRequestGetMusicVideoMediaCopyrights requestWhitelistedIgUsersField () {
      return this.requestWhitelistedIgUsersField(true);
    }
    public APIRequestGetMusicVideoMediaCopyrights requestWhitelistedIgUsersField (boolean value) {
      this.requestField("whitelisted_ig_users", value);
      return this;
    }
  }

  public static class APIRequestGetNativeOffers extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "barcode_photo",
      "barcode_photo_uri",
      "barcode_type",
      "barcode_value",
      "block_reshares",
      "details",
      "disable_location",
      "discounts",
      "expiration_time",
      "id",
      "instore_code",
      "location_type",
      "max_save_count",
      "online_code",
      "page",
      "page_set_id",
      "redemption_code",
      "redemption_link",
      "save_count",
      "terms",
      "title",
      "total_unique_codes",
      "unique_codes",
      "unique_codes_file_code_type",
      "unique_codes_file_name",
      "unique_codes_file_upload_status",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return NativeOffer.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetNativeOffers.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetNativeOffers(String nodeId, APIContext context) {
      super(context, nodeId, "/nativeoffers", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetNativeOffers setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetNativeOffers setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetNativeOffers requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetNativeOffers requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetNativeOffers requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetNativeOffers requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetNativeOffers requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetNativeOffers requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetNativeOffers requestBarcodePhotoField () {
      return this.requestBarcodePhotoField(true);
    }
    public APIRequestGetNativeOffers requestBarcodePhotoField (boolean value) {
      this.requestField("barcode_photo", value);
      return this;
    }
    public APIRequestGetNativeOffers requestBarcodePhotoUriField () {
      return this.requestBarcodePhotoUriField(true);
    }
    public APIRequestGetNativeOffers requestBarcodePhotoUriField (boolean value) {
      this.requestField("barcode_photo_uri", value);
      return this;
    }
    public APIRequestGetNativeOffers requestBarcodeTypeField () {
      return this.requestBarcodeTypeField(true);
    }
    public APIRequestGetNativeOffers requestBarcodeTypeField (boolean value) {
      this.requestField("barcode_type", value);
      return this;
    }
    public APIRequestGetNativeOffers requestBarcodeValueField () {
      return this.requestBarcodeValueField(true);
    }
    public APIRequestGetNativeOffers requestBarcodeValueField (boolean value) {
      this.requestField("barcode_value", value);
      return this;
    }
    public APIRequestGetNativeOffers requestBlockResharesField () {
      return this.requestBlockResharesField(true);
    }
    public APIRequestGetNativeOffers requestBlockResharesField (boolean value) {
      this.requestField("block_reshares", value);
      return this;
    }
    public APIRequestGetNativeOffers requestDetailsField () {
      return this.requestDetailsField(true);
    }
    public APIRequestGetNativeOffers requestDetailsField (boolean value) {
      this.requestField("details", value);
      return this;
    }
    public APIRequestGetNativeOffers requestDisableLocationField () {
      return this.requestDisableLocationField(true);
    }
    public APIRequestGetNativeOffers requestDisableLocationField (boolean value) {
      this.requestField("disable_location", value);
      return this;
    }
    public APIRequestGetNativeOffers requestDiscountsField () {
      return this.requestDiscountsField(true);
    }
    public APIRequestGetNativeOffers requestDiscountsField (boolean value) {
      this.requestField("discounts", value);
      return this;
    }
    public APIRequestGetNativeOffers requestExpirationTimeField () {
      return this.requestExpirationTimeField(true);
    }
    public APIRequestGetNativeOffers requestExpirationTimeField (boolean value) {
      this.requestField("expiration_time", value);
      return this;
    }
    public APIRequestGetNativeOffers requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetNativeOffers requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetNativeOffers requestInstoreCodeField () {
      return this.requestInstoreCodeField(true);
    }
    public APIRequestGetNativeOffers requestInstoreCodeField (boolean value) {
      this.requestField("instore_code", value);
      return this;
    }
    public APIRequestGetNativeOffers requestLocationTypeField () {
      return this.requestLocationTypeField(true);
    }
    public APIRequestGetNativeOffers requestLocationTypeField (boolean value) {
      this.requestField("location_type", value);
      return this;
    }
    public APIRequestGetNativeOffers requestMaxSaveCountField () {
      return this.requestMaxSaveCountField(true);
    }
    public APIRequestGetNativeOffers requestMaxSaveCountField (boolean value) {
      this.requestField("max_save_count", value);
      return this;
    }
    public APIRequestGetNativeOffers requestOnlineCodeField () {
      return this.requestOnlineCodeField(true);
    }
    public APIRequestGetNativeOffers requestOnlineCodeField (boolean value) {
      this.requestField("online_code", value);
      return this;
    }
    public APIRequestGetNativeOffers requestPageField () {
      return this.requestPageField(true);
    }
    public APIRequestGetNativeOffers requestPageField (boolean value) {
      this.requestField("page", value);
      return this;
    }
    public APIRequestGetNativeOffers requestPageSetIdField () {
      return this.requestPageSetIdField(true);
    }
    public APIRequestGetNativeOffers requestPageSetIdField (boolean value) {
      this.requestField("page_set_id", value);
      return this;
    }
    public APIRequestGetNativeOffers requestRedemptionCodeField () {
      return this.requestRedemptionCodeField(true);
    }
    public APIRequestGetNativeOffers requestRedemptionCodeField (boolean value) {
      this.requestField("redemption_code", value);
      return this;
    }
    public APIRequestGetNativeOffers requestRedemptionLinkField () {
      return this.requestRedemptionLinkField(true);
    }
    public APIRequestGetNativeOffers requestRedemptionLinkField (boolean value) {
      this.requestField("redemption_link", value);
      return this;
    }
    public APIRequestGetNativeOffers requestSaveCountField () {
      return this.requestSaveCountField(true);
    }
    public APIRequestGetNativeOffers requestSaveCountField (boolean value) {
      this.requestField("save_count", value);
      return this;
    }
    public APIRequestGetNativeOffers requestTermsField () {
      return this.requestTermsField(true);
    }
    public APIRequestGetNativeOffers requestTermsField (boolean value) {
      this.requestField("terms", value);
      return this;
    }
    public APIRequestGetNativeOffers requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetNativeOffers requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
    public APIRequestGetNativeOffers requestTotalUniqueCodesField () {
      return this.requestTotalUniqueCodesField(true);
    }
    public APIRequestGetNativeOffers requestTotalUniqueCodesField (boolean value) {
      this.requestField("total_unique_codes", value);
      return this;
    }
    public APIRequestGetNativeOffers requestUniqueCodesField () {
      return this.requestUniqueCodesField(true);
    }
    public APIRequestGetNativeOffers requestUniqueCodesField (boolean value) {
      this.requestField("unique_codes", value);
      return this;
    }
    public APIRequestGetNativeOffers requestUniqueCodesFileCodeTypeField () {
      return this.requestUniqueCodesFileCodeTypeField(true);
    }
    public APIRequestGetNativeOffers requestUniqueCodesFileCodeTypeField (boolean value) {
      this.requestField("unique_codes_file_code_type", value);
      return this;
    }
    public APIRequestGetNativeOffers requestUniqueCodesFileNameField () {
      return this.requestUniqueCodesFileNameField(true);
    }
    public APIRequestGetNativeOffers requestUniqueCodesFileNameField (boolean value) {
      this.requestField("unique_codes_file_name", value);
      return this;
    }
    public APIRequestGetNativeOffers requestUniqueCodesFileUploadStatusField () {
      return this.requestUniqueCodesFileUploadStatusField(true);
    }
    public APIRequestGetNativeOffers requestUniqueCodesFileUploadStatusField (boolean value) {
      this.requestField("unique_codes_file_upload_status", value);
      return this;
    }
  }

  public static class APIRequestCreateNativeOffer extends APIRequest {

    NativeOffer lastResponse = null;
    @Override
    public NativeOffer getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "discounts",
      "details",
      "terms",
      "redemption_code",
      "redemption_link",
      "max_save_count",
      "online_code",
      "instore_code",
      "expiration_time",
      "location_type",
      "barcode_type",
      "barcode_value",
      "barcode_photo",
      "unique_codes",
      "unique_barcodes",
      "block_reshares",
      "disable_location",
      "commerce_store",
      "commerce_store_collection",
      "commerce_product_item",
      "page_set_id",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public NativeOffer parseResponse(String response, String header) throws APIException {
      return NativeOffer.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public NativeOffer execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public NativeOffer execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public NativeOffer apply(ResponseWrapper result) {
             try {
               return APIRequestCreateNativeOffer.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateNativeOffer(String nodeId, APIContext context) {
      super(context, nodeId, "/nativeoffers", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateNativeOffer setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateNativeOffer setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateNativeOffer setDiscounts (List discounts) {
      this.setParam("discounts", discounts);
      return this;
    }
    public APIRequestCreateNativeOffer setDiscounts (String discounts) {
      this.setParam("discounts", discounts);
      return this;
    }

    public APIRequestCreateNativeOffer setDetails (String details) {
      this.setParam("details", details);
      return this;
    }

    public APIRequestCreateNativeOffer setTerms (String terms) {
      this.setParam("terms", terms);
      return this;
    }

    public APIRequestCreateNativeOffer setRedemptionCode (String redemptionCode) {
      this.setParam("redemption_code", redemptionCode);
      return this;
    }

    public APIRequestCreateNativeOffer setRedemptionLink (String redemptionLink) {
      this.setParam("redemption_link", redemptionLink);
      return this;
    }

    public APIRequestCreateNativeOffer setMaxSaveCount (Long maxSaveCount) {
      this.setParam("max_save_count", maxSaveCount);
      return this;
    }
    public APIRequestCreateNativeOffer setMaxSaveCount (String maxSaveCount) {
      this.setParam("max_save_count", maxSaveCount);
      return this;
    }

    public APIRequestCreateNativeOffer setOnlineCode (String onlineCode) {
      this.setParam("online_code", onlineCode);
      return this;
    }

    public APIRequestCreateNativeOffer setInstoreCode (String instoreCode) {
      this.setParam("instore_code", instoreCode);
      return this;
    }

    public APIRequestCreateNativeOffer setExpirationTime (String expirationTime) {
      this.setParam("expiration_time", expirationTime);
      return this;
    }

    public APIRequestCreateNativeOffer setLocationType (NativeOffer.EnumLocationType locationType) {
      this.setParam("location_type", locationType);
      return this;
    }
    public APIRequestCreateNativeOffer setLocationType (String locationType) {
      this.setParam("location_type", locationType);
      return this;
    }

    public APIRequestCreateNativeOffer setBarcodeType (NativeOffer.EnumBarcodeType barcodeType) {
      this.setParam("barcode_type", barcodeType);
      return this;
    }
    public APIRequestCreateNativeOffer setBarcodeType (String barcodeType) {
      this.setParam("barcode_type", barcodeType);
      return this;
    }

    public APIRequestCreateNativeOffer setBarcodeValue (String barcodeValue) {
      this.setParam("barcode_value", barcodeValue);
      return this;
    }

    public APIRequestCreateNativeOffer setBarcodePhoto (Long barcodePhoto) {
      this.setParam("barcode_photo", barcodePhoto);
      return this;
    }
    public APIRequestCreateNativeOffer setBarcodePhoto (String barcodePhoto) {
      this.setParam("barcode_photo", barcodePhoto);
      return this;
    }

    public APIRequestCreateNativeOffer setUniqueCodes (Long uniqueCodes) {
      this.setParam("unique_codes", uniqueCodes);
      return this;
    }
    public APIRequestCreateNativeOffer setUniqueCodes (String uniqueCodes) {
      this.setParam("unique_codes", uniqueCodes);
      return this;
    }

    public APIRequestCreateNativeOffer setUniqueBarcodes (Long uniqueBarcodes) {
      this.setParam("unique_barcodes", uniqueBarcodes);
      return this;
    }
    public APIRequestCreateNativeOffer setUniqueBarcodes (String uniqueBarcodes) {
      this.setParam("unique_barcodes", uniqueBarcodes);
      return this;
    }

    public APIRequestCreateNativeOffer setBlockReshares (Boolean blockReshares) {
      this.setParam("block_reshares", blockReshares);
      return this;
    }
    public APIRequestCreateNativeOffer setBlockReshares (String blockReshares) {
      this.setParam("block_reshares", blockReshares);
      return this;
    }

    public APIRequestCreateNativeOffer setDisableLocation (Boolean disableLocation) {
      this.setParam("disable_location", disableLocation);
      return this;
    }
    public APIRequestCreateNativeOffer setDisableLocation (String disableLocation) {
      this.setParam("disable_location", disableLocation);
      return this;
    }

    public APIRequestCreateNativeOffer setCommerceStore (String commerceStore) {
      this.setParam("commerce_store", commerceStore);
      return this;
    }

    public APIRequestCreateNativeOffer setCommerceStoreCollection (String commerceStoreCollection) {
      this.setParam("commerce_store_collection", commerceStoreCollection);
      return this;
    }

    public APIRequestCreateNativeOffer setCommerceProductItem (String commerceProductItem) {
      this.setParam("commerce_product_item", commerceProductItem);
      return this;
    }

    public APIRequestCreateNativeOffer setPageSetId (String pageSetId) {
      this.setParam("page_set_id", pageSetId);
      return this;
    }

    public APIRequestCreateNativeOffer requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateNativeOffer requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateNativeOffer requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateNativeOffer requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateNativeOffer requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateNativeOffer requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreateNlpConfig extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "nlp_enabled",
      "model",
      "custom_token",
      "n_best",
      "verbose",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateNlpConfig.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateNlpConfig(String nodeId, APIContext context) {
      super(context, nodeId, "/nlp_configs", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateNlpConfig setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateNlpConfig setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateNlpConfig setNlpEnabled (Boolean nlpEnabled) {
      this.setParam("nlp_enabled", nlpEnabled);
      return this;
    }
    public APIRequestCreateNlpConfig setNlpEnabled (String nlpEnabled) {
      this.setParam("nlp_enabled", nlpEnabled);
      return this;
    }

    public APIRequestCreateNlpConfig setModel (Page.EnumModel model) {
      this.setParam("model", model);
      return this;
    }
    public APIRequestCreateNlpConfig setModel (String model) {
      this.setParam("model", model);
      return this;
    }

    public APIRequestCreateNlpConfig setCustomToken (String customToken) {
      this.setParam("custom_token", customToken);
      return this;
    }

    public APIRequestCreateNlpConfig setNBest (Long nBest) {
      this.setParam("n_best", nBest);
      return this;
    }
    public APIRequestCreateNlpConfig setNBest (String nBest) {
      this.setParam("n_best", nBest);
      return this;
    }

    public APIRequestCreateNlpConfig setVerbose (Boolean verbose) {
      this.setParam("verbose", verbose);
      return this;
    }
    public APIRequestCreateNlpConfig setVerbose (String verbose) {
      this.setParam("verbose", verbose);
      return this;
    }

    public APIRequestCreateNlpConfig requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateNlpConfig requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateNlpConfig requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateNlpConfig requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateNlpConfig requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateNlpConfig requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreateNotification extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "seen",
      "read",
      "notif_ids",
      "filtering",
      "template",
      "href",
      "ref",
      "type",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateNotification.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateNotification(String nodeId, APIContext context) {
      super(context, nodeId, "/notifications", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateNotification setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateNotification setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateNotification setSeen (Boolean seen) {
      this.setParam("seen", seen);
      return this;
    }
    public APIRequestCreateNotification setSeen (String seen) {
      this.setParam("seen", seen);
      return this;
    }

    public APIRequestCreateNotification setRead (Boolean read) {
      this.setParam("read", read);
      return this;
    }
    public APIRequestCreateNotification setRead (String read) {
      this.setParam("read", read);
      return this;
    }

    public APIRequestCreateNotification setNotifIds (List notifIds) {
      this.setParam("notif_ids", notifIds);
      return this;
    }
    public APIRequestCreateNotification setNotifIds (String notifIds) {
      this.setParam("notif_ids", notifIds);
      return this;
    }

    public APIRequestCreateNotification setFiltering (List filtering) {
      this.setParam("filtering", filtering);
      return this;
    }
    public APIRequestCreateNotification setFiltering (String filtering) {
      this.setParam("filtering", filtering);
      return this;
    }

    public APIRequestCreateNotification setTemplate (Object template) {
      this.setParam("template", template);
      return this;
    }
    public APIRequestCreateNotification setTemplate (String template) {
      this.setParam("template", template);
      return this;
    }

    public APIRequestCreateNotification setHref (Object href) {
      this.setParam("href", href);
      return this;
    }
    public APIRequestCreateNotification setHref (String href) {
      this.setParam("href", href);
      return this;
    }

    public APIRequestCreateNotification setRef (String ref) {
      this.setParam("ref", ref);
      return this;
    }

    public APIRequestCreateNotification setType (Page.EnumType type) {
      this.setParam("type", type);
      return this;
    }
    public APIRequestCreateNotification setType (String type) {
      this.setParam("type", type);
      return this;
    }

    public APIRequestCreateNotification requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateNotification requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateNotification requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateNotification requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateNotification requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateNotification requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreatePageAboutStory extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "is_published",
      "title",
      "cover_photo",
      "composed_text",
      "entity_map",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreatePageAboutStory.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreatePageAboutStory(String nodeId, APIContext context) {
      super(context, nodeId, "/page_about_story", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreatePageAboutStory setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreatePageAboutStory setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreatePageAboutStory setIsPublished (Boolean isPublished) {
      this.setParam("is_published", isPublished);
      return this;
    }
    public APIRequestCreatePageAboutStory setIsPublished (String isPublished) {
      this.setParam("is_published", isPublished);
      return this;
    }

    public APIRequestCreatePageAboutStory setTitle (String title) {
      this.setParam("title", title);
      return this;
    }

    public APIRequestCreatePageAboutStory setCoverPhoto (Map coverPhoto) {
      this.setParam("cover_photo", coverPhoto);
      return this;
    }
    public APIRequestCreatePageAboutStory setCoverPhoto (String coverPhoto) {
      this.setParam("cover_photo", coverPhoto);
      return this;
    }

    public APIRequestCreatePageAboutStory setComposedText (List> composedText) {
      this.setParam("composed_text", composedText);
      return this;
    }
    public APIRequestCreatePageAboutStory setComposedText (String composedText) {
      this.setParam("composed_text", composedText);
      return this;
    }

    public APIRequestCreatePageAboutStory setEntityMap (List> entityMap) {
      this.setParam("entity_map", entityMap);
      return this;
    }
    public APIRequestCreatePageAboutStory setEntityMap (String entityMap) {
      this.setParam("entity_map", entityMap);
      return this;
    }

    public APIRequestCreatePageAboutStory requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreatePageAboutStory requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePageAboutStory requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreatePageAboutStory requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePageAboutStory requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreatePageAboutStory requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetPageBackedInstagramAccounts extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "follow_count",
      "followed_by_count",
      "has_profile_picture",
      "id",
      "is_private",
      "is_published",
      "media_count",
      "profile_pic",
      "username",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return InstagramUser.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetPageBackedInstagramAccounts.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetPageBackedInstagramAccounts(String nodeId, APIContext context) {
      super(context, nodeId, "/page_backed_instagram_accounts", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetPageBackedInstagramAccounts setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetPageBackedInstagramAccounts setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetPageBackedInstagramAccounts requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetPageBackedInstagramAccounts requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPageBackedInstagramAccounts requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetPageBackedInstagramAccounts requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPageBackedInstagramAccounts requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetPageBackedInstagramAccounts requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetPageBackedInstagramAccounts requestFollowCountField () {
      return this.requestFollowCountField(true);
    }
    public APIRequestGetPageBackedInstagramAccounts requestFollowCountField (boolean value) {
      this.requestField("follow_count", value);
      return this;
    }
    public APIRequestGetPageBackedInstagramAccounts requestFollowedByCountField () {
      return this.requestFollowedByCountField(true);
    }
    public APIRequestGetPageBackedInstagramAccounts requestFollowedByCountField (boolean value) {
      this.requestField("followed_by_count", value);
      return this;
    }
    public APIRequestGetPageBackedInstagramAccounts requestHasProfilePictureField () {
      return this.requestHasProfilePictureField(true);
    }
    public APIRequestGetPageBackedInstagramAccounts requestHasProfilePictureField (boolean value) {
      this.requestField("has_profile_picture", value);
      return this;
    }
    public APIRequestGetPageBackedInstagramAccounts requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetPageBackedInstagramAccounts requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetPageBackedInstagramAccounts requestIsPrivateField () {
      return this.requestIsPrivateField(true);
    }
    public APIRequestGetPageBackedInstagramAccounts requestIsPrivateField (boolean value) {
      this.requestField("is_private", value);
      return this;
    }
    public APIRequestGetPageBackedInstagramAccounts requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetPageBackedInstagramAccounts requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetPageBackedInstagramAccounts requestMediaCountField () {
      return this.requestMediaCountField(true);
    }
    public APIRequestGetPageBackedInstagramAccounts requestMediaCountField (boolean value) {
      this.requestField("media_count", value);
      return this;
    }
    public APIRequestGetPageBackedInstagramAccounts requestProfilePicField () {
      return this.requestProfilePicField(true);
    }
    public APIRequestGetPageBackedInstagramAccounts requestProfilePicField (boolean value) {
      this.requestField("profile_pic", value);
      return this;
    }
    public APIRequestGetPageBackedInstagramAccounts requestUsernameField () {
      return this.requestUsernameField(true);
    }
    public APIRequestGetPageBackedInstagramAccounts requestUsernameField (boolean value) {
      this.requestField("username", value);
      return this;
    }
  }

  public static class APIRequestCreatePageBackedInstagramAccount extends APIRequest {

    InstagramUser lastResponse = null;
    @Override
    public InstagramUser getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
    };

    @Override
    public InstagramUser parseResponse(String response, String header) throws APIException {
      return InstagramUser.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public InstagramUser execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public InstagramUser execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public InstagramUser apply(ResponseWrapper result) {
             try {
               return APIRequestCreatePageBackedInstagramAccount.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreatePageBackedInstagramAccount(String nodeId, APIContext context) {
      super(context, nodeId, "/page_backed_instagram_accounts", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreatePageBackedInstagramAccount setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreatePageBackedInstagramAccount setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreatePageBackedInstagramAccount requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreatePageBackedInstagramAccount requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePageBackedInstagramAccount requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreatePageBackedInstagramAccount requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePageBackedInstagramAccount requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreatePageBackedInstagramAccount requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreatePassThreadControl extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "recipient",
      "target_app_id",
      "metadata",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreatePassThreadControl.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreatePassThreadControl(String nodeId, APIContext context) {
      super(context, nodeId, "/pass_thread_control", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreatePassThreadControl setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreatePassThreadControl setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreatePassThreadControl setRecipient (Object recipient) {
      this.setParam("recipient", recipient);
      return this;
    }
    public APIRequestCreatePassThreadControl setRecipient (String recipient) {
      this.setParam("recipient", recipient);
      return this;
    }

    public APIRequestCreatePassThreadControl setTargetAppId (Long targetAppId) {
      this.setParam("target_app_id", targetAppId);
      return this;
    }
    public APIRequestCreatePassThreadControl setTargetAppId (String targetAppId) {
      this.setParam("target_app_id", targetAppId);
      return this;
    }

    public APIRequestCreatePassThreadControl setMetadata (String metadata) {
      this.setParam("metadata", metadata);
      return this;
    }

    public APIRequestCreatePassThreadControl requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreatePassThreadControl requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePassThreadControl requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreatePassThreadControl requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePassThreadControl requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreatePassThreadControl requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetPersonas extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "id",
      "name",
      "profile_picture_url",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Persona.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetPersonas.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetPersonas(String nodeId, APIContext context) {
      super(context, nodeId, "/personas", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetPersonas setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetPersonas setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetPersonas requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetPersonas requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPersonas requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetPersonas requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPersonas requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetPersonas requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetPersonas requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetPersonas requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetPersonas requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetPersonas requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetPersonas requestProfilePictureUrlField () {
      return this.requestProfilePictureUrlField(true);
    }
    public APIRequestGetPersonas requestProfilePictureUrlField (boolean value) {
      this.requestField("profile_picture_url", value);
      return this;
    }
  }

  public static class APIRequestCreatePersona extends APIRequest {

    Persona lastResponse = null;
    @Override
    public Persona getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "name",
      "profile_picture_url",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Persona parseResponse(String response, String header) throws APIException {
      return Persona.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Persona execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Persona execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Persona apply(ResponseWrapper result) {
             try {
               return APIRequestCreatePersona.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreatePersona(String nodeId, APIContext context) {
      super(context, nodeId, "/personas", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreatePersona setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreatePersona setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreatePersona setName (String name) {
      this.setParam("name", name);
      return this;
    }

    public APIRequestCreatePersona setProfilePictureUrl (String profilePictureUrl) {
      this.setParam("profile_picture_url", profilePictureUrl);
      return this;
    }

    public APIRequestCreatePersona requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreatePersona requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePersona requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreatePersona requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePersona requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreatePersona requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetPhotos extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "type",
      "biz_tag_id",
      "business_id",
    };

    public static final String[] FIELDS = {
      "album",
      "backdated_time",
      "backdated_time_granularity",
      "can_backdate",
      "can_delete",
      "can_tag",
      "created_time",
      "event",
      "from",
      "height",
      "icon",
      "id",
      "images",
      "link",
      "name",
      "name_tags",
      "page_story_id",
      "picture",
      "place",
      "position",
      "source",
      "target",
      "updated_time",
      "webp_images",
      "width",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Photo.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetPhotos.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetPhotos(String nodeId, APIContext context) {
      super(context, nodeId, "/photos", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetPhotos setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetPhotos setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetPhotos setType (Photo.EnumType type) {
      this.setParam("type", type);
      return this;
    }
    public APIRequestGetPhotos setType (String type) {
      this.setParam("type", type);
      return this;
    }

    public APIRequestGetPhotos setBizTagId (Long bizTagId) {
      this.setParam("biz_tag_id", bizTagId);
      return this;
    }
    public APIRequestGetPhotos setBizTagId (String bizTagId) {
      this.setParam("biz_tag_id", bizTagId);
      return this;
    }

    public APIRequestGetPhotos setBusinessId (String businessId) {
      this.setParam("business_id", businessId);
      return this;
    }

    public APIRequestGetPhotos requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetPhotos requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPhotos requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetPhotos requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPhotos requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetPhotos requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetPhotos requestAlbumField () {
      return this.requestAlbumField(true);
    }
    public APIRequestGetPhotos requestAlbumField (boolean value) {
      this.requestField("album", value);
      return this;
    }
    public APIRequestGetPhotos requestBackdatedTimeField () {
      return this.requestBackdatedTimeField(true);
    }
    public APIRequestGetPhotos requestBackdatedTimeField (boolean value) {
      this.requestField("backdated_time", value);
      return this;
    }
    public APIRequestGetPhotos requestBackdatedTimeGranularityField () {
      return this.requestBackdatedTimeGranularityField(true);
    }
    public APIRequestGetPhotos requestBackdatedTimeGranularityField (boolean value) {
      this.requestField("backdated_time_granularity", value);
      return this;
    }
    public APIRequestGetPhotos requestCanBackdateField () {
      return this.requestCanBackdateField(true);
    }
    public APIRequestGetPhotos requestCanBackdateField (boolean value) {
      this.requestField("can_backdate", value);
      return this;
    }
    public APIRequestGetPhotos requestCanDeleteField () {
      return this.requestCanDeleteField(true);
    }
    public APIRequestGetPhotos requestCanDeleteField (boolean value) {
      this.requestField("can_delete", value);
      return this;
    }
    public APIRequestGetPhotos requestCanTagField () {
      return this.requestCanTagField(true);
    }
    public APIRequestGetPhotos requestCanTagField (boolean value) {
      this.requestField("can_tag", value);
      return this;
    }
    public APIRequestGetPhotos requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetPhotos requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetPhotos requestEventField () {
      return this.requestEventField(true);
    }
    public APIRequestGetPhotos requestEventField (boolean value) {
      this.requestField("event", value);
      return this;
    }
    public APIRequestGetPhotos requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetPhotos requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetPhotos requestHeightField () {
      return this.requestHeightField(true);
    }
    public APIRequestGetPhotos requestHeightField (boolean value) {
      this.requestField("height", value);
      return this;
    }
    public APIRequestGetPhotos requestIconField () {
      return this.requestIconField(true);
    }
    public APIRequestGetPhotos requestIconField (boolean value) {
      this.requestField("icon", value);
      return this;
    }
    public APIRequestGetPhotos requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetPhotos requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetPhotos requestImagesField () {
      return this.requestImagesField(true);
    }
    public APIRequestGetPhotos requestImagesField (boolean value) {
      this.requestField("images", value);
      return this;
    }
    public APIRequestGetPhotos requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetPhotos requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetPhotos requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetPhotos requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetPhotos requestNameTagsField () {
      return this.requestNameTagsField(true);
    }
    public APIRequestGetPhotos requestNameTagsField (boolean value) {
      this.requestField("name_tags", value);
      return this;
    }
    public APIRequestGetPhotos requestPageStoryIdField () {
      return this.requestPageStoryIdField(true);
    }
    public APIRequestGetPhotos requestPageStoryIdField (boolean value) {
      this.requestField("page_story_id", value);
      return this;
    }
    public APIRequestGetPhotos requestPictureField () {
      return this.requestPictureField(true);
    }
    public APIRequestGetPhotos requestPictureField (boolean value) {
      this.requestField("picture", value);
      return this;
    }
    public APIRequestGetPhotos requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetPhotos requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetPhotos requestPositionField () {
      return this.requestPositionField(true);
    }
    public APIRequestGetPhotos requestPositionField (boolean value) {
      this.requestField("position", value);
      return this;
    }
    public APIRequestGetPhotos requestSourceField () {
      return this.requestSourceField(true);
    }
    public APIRequestGetPhotos requestSourceField (boolean value) {
      this.requestField("source", value);
      return this;
    }
    public APIRequestGetPhotos requestTargetField () {
      return this.requestTargetField(true);
    }
    public APIRequestGetPhotos requestTargetField (boolean value) {
      this.requestField("target", value);
      return this;
    }
    public APIRequestGetPhotos requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetPhotos requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetPhotos requestWebpImagesField () {
      return this.requestWebpImagesField(true);
    }
    public APIRequestGetPhotos requestWebpImagesField (boolean value) {
      this.requestField("webp_images", value);
      return this;
    }
    public APIRequestGetPhotos requestWidthField () {
      return this.requestWidthField(true);
    }
    public APIRequestGetPhotos requestWidthField (boolean value) {
      this.requestField("width", value);
      return this;
    }
  }

  public static class APIRequestCreatePhoto extends APIRequest {

    Photo lastResponse = null;
    @Override
    public Photo getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "aid",
      "caption",
      "url",
      "uid",
      "profile_id",
      "target_id",
      "vault_image_id",
      "tags",
      "place",
      "is_explicit_place",
      "is_explicit_location",
      "og_action_type_id",
      "og_object_id",
      "og_phrase",
      "og_icon_id",
      "og_suggestion_mechanism",
      "og_set_profile_badge",
      "privacy",
      "targeting",
      "feed_targeting",
      "no_story",
      "published",
      "offline_id",
      "attempt",
      "backdated_time",
      "backdated_time_granularity",
      "time_since_original_post",
      "filter_type",
      "scheduled_publish_time",
      "unpublished_content_type",
      "nectar_module",
      "full_res_is_coming_later",
      "composer_session_id",
      "qn",
      "manual_privacy",
      "audience_exp",
      "proxied_app_id",
      "ios_bundle_id",
      "android_key_hash",
      "user_selected_tags",
      "allow_spherical_photo",
      "spherical_metadata",
      "initial_view_heading_override_degrees",
      "initial_view_pitch_override_degrees",
      "initial_view_vertical_fov_override_degrees",
      "sponsor_id",
      "direct_share_status",
      "sponsor_relationship",
      "application_id",
      "name",
      "message",
      "temporary",
      "location_source_id",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Photo parseResponse(String response, String header) throws APIException {
      return Photo.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Photo execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Photo execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Photo apply(ResponseWrapper result) {
             try {
               return APIRequestCreatePhoto.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreatePhoto(String nodeId, APIContext context) {
      super(context, nodeId, "/photos", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreatePhoto setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreatePhoto setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreatePhoto setAid (String aid) {
      this.setParam("aid", aid);
      return this;
    }

    public APIRequestCreatePhoto setCaption (String caption) {
      this.setParam("caption", caption);
      return this;
    }

    public APIRequestCreatePhoto setUrl (String url) {
      this.setParam("url", url);
      return this;
    }

    public APIRequestCreatePhoto setUid (Long uid) {
      this.setParam("uid", uid);
      return this;
    }
    public APIRequestCreatePhoto setUid (String uid) {
      this.setParam("uid", uid);
      return this;
    }

    public APIRequestCreatePhoto setProfileId (Long profileId) {
      this.setParam("profile_id", profileId);
      return this;
    }
    public APIRequestCreatePhoto setProfileId (String profileId) {
      this.setParam("profile_id", profileId);
      return this;
    }

    public APIRequestCreatePhoto setTargetId (Long targetId) {
      this.setParam("target_id", targetId);
      return this;
    }
    public APIRequestCreatePhoto setTargetId (String targetId) {
      this.setParam("target_id", targetId);
      return this;
    }

    public APIRequestCreatePhoto setVaultImageId (String vaultImageId) {
      this.setParam("vault_image_id", vaultImageId);
      return this;
    }

    public APIRequestCreatePhoto setTags (List tags) {
      this.setParam("tags", tags);
      return this;
    }
    public APIRequestCreatePhoto setTags (String tags) {
      this.setParam("tags", tags);
      return this;
    }

    public APIRequestCreatePhoto setPlace (Object place) {
      this.setParam("place", place);
      return this;
    }
    public APIRequestCreatePhoto setPlace (String place) {
      this.setParam("place", place);
      return this;
    }

    public APIRequestCreatePhoto setIsExplicitPlace (Boolean isExplicitPlace) {
      this.setParam("is_explicit_place", isExplicitPlace);
      return this;
    }
    public APIRequestCreatePhoto setIsExplicitPlace (String isExplicitPlace) {
      this.setParam("is_explicit_place", isExplicitPlace);
      return this;
    }

    public APIRequestCreatePhoto setIsExplicitLocation (Boolean isExplicitLocation) {
      this.setParam("is_explicit_location", isExplicitLocation);
      return this;
    }
    public APIRequestCreatePhoto setIsExplicitLocation (String isExplicitLocation) {
      this.setParam("is_explicit_location", isExplicitLocation);
      return this;
    }

    public APIRequestCreatePhoto setOgActionTypeId (String ogActionTypeId) {
      this.setParam("og_action_type_id", ogActionTypeId);
      return this;
    }

    public APIRequestCreatePhoto setOgObjectId (String ogObjectId) {
      this.setParam("og_object_id", ogObjectId);
      return this;
    }

    public APIRequestCreatePhoto setOgPhrase (String ogPhrase) {
      this.setParam("og_phrase", ogPhrase);
      return this;
    }

    public APIRequestCreatePhoto setOgIconId (String ogIconId) {
      this.setParam("og_icon_id", ogIconId);
      return this;
    }

    public APIRequestCreatePhoto setOgSuggestionMechanism (String ogSuggestionMechanism) {
      this.setParam("og_suggestion_mechanism", ogSuggestionMechanism);
      return this;
    }

    public APIRequestCreatePhoto setOgSetProfileBadge (Boolean ogSetProfileBadge) {
      this.setParam("og_set_profile_badge", ogSetProfileBadge);
      return this;
    }
    public APIRequestCreatePhoto setOgSetProfileBadge (String ogSetProfileBadge) {
      this.setParam("og_set_profile_badge", ogSetProfileBadge);
      return this;
    }

    public APIRequestCreatePhoto setPrivacy (String privacy) {
      this.setParam("privacy", privacy);
      return this;
    }

    public APIRequestCreatePhoto setTargeting (Object targeting) {
      this.setParam("targeting", targeting);
      return this;
    }
    public APIRequestCreatePhoto setTargeting (String targeting) {
      this.setParam("targeting", targeting);
      return this;
    }

    public APIRequestCreatePhoto setFeedTargeting (Object feedTargeting) {
      this.setParam("feed_targeting", feedTargeting);
      return this;
    }
    public APIRequestCreatePhoto setFeedTargeting (String feedTargeting) {
      this.setParam("feed_targeting", feedTargeting);
      return this;
    }

    public APIRequestCreatePhoto setNoStory (Boolean noStory) {
      this.setParam("no_story", noStory);
      return this;
    }
    public APIRequestCreatePhoto setNoStory (String noStory) {
      this.setParam("no_story", noStory);
      return this;
    }

    public APIRequestCreatePhoto setPublished (Boolean published) {
      this.setParam("published", published);
      return this;
    }
    public APIRequestCreatePhoto setPublished (String published) {
      this.setParam("published", published);
      return this;
    }

    public APIRequestCreatePhoto setOfflineId (Long offlineId) {
      this.setParam("offline_id", offlineId);
      return this;
    }
    public APIRequestCreatePhoto setOfflineId (String offlineId) {
      this.setParam("offline_id", offlineId);
      return this;
    }

    public APIRequestCreatePhoto setAttempt (Long attempt) {
      this.setParam("attempt", attempt);
      return this;
    }
    public APIRequestCreatePhoto setAttempt (String attempt) {
      this.setParam("attempt", attempt);
      return this;
    }

    public APIRequestCreatePhoto setBackdatedTime (String backdatedTime) {
      this.setParam("backdated_time", backdatedTime);
      return this;
    }

    public APIRequestCreatePhoto setBackdatedTimeGranularity (Photo.EnumBackdatedTimeGranularity backdatedTimeGranularity) {
      this.setParam("backdated_time_granularity", backdatedTimeGranularity);
      return this;
    }
    public APIRequestCreatePhoto setBackdatedTimeGranularity (String backdatedTimeGranularity) {
      this.setParam("backdated_time_granularity", backdatedTimeGranularity);
      return this;
    }

    public APIRequestCreatePhoto setTimeSinceOriginalPost (Long timeSinceOriginalPost) {
      this.setParam("time_since_original_post", timeSinceOriginalPost);
      return this;
    }
    public APIRequestCreatePhoto setTimeSinceOriginalPost (String timeSinceOriginalPost) {
      this.setParam("time_since_original_post", timeSinceOriginalPost);
      return this;
    }

    public APIRequestCreatePhoto setFilterType (Long filterType) {
      this.setParam("filter_type", filterType);
      return this;
    }
    public APIRequestCreatePhoto setFilterType (String filterType) {
      this.setParam("filter_type", filterType);
      return this;
    }

    public APIRequestCreatePhoto setScheduledPublishTime (Long scheduledPublishTime) {
      this.setParam("scheduled_publish_time", scheduledPublishTime);
      return this;
    }
    public APIRequestCreatePhoto setScheduledPublishTime (String scheduledPublishTime) {
      this.setParam("scheduled_publish_time", scheduledPublishTime);
      return this;
    }

    public APIRequestCreatePhoto setUnpublishedContentType (Photo.EnumUnpublishedContentType unpublishedContentType) {
      this.setParam("unpublished_content_type", unpublishedContentType);
      return this;
    }
    public APIRequestCreatePhoto setUnpublishedContentType (String unpublishedContentType) {
      this.setParam("unpublished_content_type", unpublishedContentType);
      return this;
    }

    public APIRequestCreatePhoto setNectarModule (String nectarModule) {
      this.setParam("nectar_module", nectarModule);
      return this;
    }

    public APIRequestCreatePhoto setFullResIsComingLater (Boolean fullResIsComingLater) {
      this.setParam("full_res_is_coming_later", fullResIsComingLater);
      return this;
    }
    public APIRequestCreatePhoto setFullResIsComingLater (String fullResIsComingLater) {
      this.setParam("full_res_is_coming_later", fullResIsComingLater);
      return this;
    }

    public APIRequestCreatePhoto setComposerSessionId (String composerSessionId) {
      this.setParam("composer_session_id", composerSessionId);
      return this;
    }

    public APIRequestCreatePhoto setQn (String qn) {
      this.setParam("qn", qn);
      return this;
    }

    public APIRequestCreatePhoto setManualPrivacy (Boolean manualPrivacy) {
      this.setParam("manual_privacy", manualPrivacy);
      return this;
    }
    public APIRequestCreatePhoto setManualPrivacy (String manualPrivacy) {
      this.setParam("manual_privacy", manualPrivacy);
      return this;
    }

    public APIRequestCreatePhoto setAudienceExp (Boolean audienceExp) {
      this.setParam("audience_exp", audienceExp);
      return this;
    }
    public APIRequestCreatePhoto setAudienceExp (String audienceExp) {
      this.setParam("audience_exp", audienceExp);
      return this;
    }

    public APIRequestCreatePhoto setProxiedAppId (String proxiedAppId) {
      this.setParam("proxied_app_id", proxiedAppId);
      return this;
    }

    public APIRequestCreatePhoto setIosBundleId (String iosBundleId) {
      this.setParam("ios_bundle_id", iosBundleId);
      return this;
    }

    public APIRequestCreatePhoto setAndroidKeyHash (String androidKeyHash) {
      this.setParam("android_key_hash", androidKeyHash);
      return this;
    }

    public APIRequestCreatePhoto setUserSelectedTags (Boolean userSelectedTags) {
      this.setParam("user_selected_tags", userSelectedTags);
      return this;
    }
    public APIRequestCreatePhoto setUserSelectedTags (String userSelectedTags) {
      this.setParam("user_selected_tags", userSelectedTags);
      return this;
    }

    public APIRequestCreatePhoto setAllowSphericalPhoto (Boolean allowSphericalPhoto) {
      this.setParam("allow_spherical_photo", allowSphericalPhoto);
      return this;
    }
    public APIRequestCreatePhoto setAllowSphericalPhoto (String allowSphericalPhoto) {
      this.setParam("allow_spherical_photo", allowSphericalPhoto);
      return this;
    }

    public APIRequestCreatePhoto setSphericalMetadata (Map sphericalMetadata) {
      this.setParam("spherical_metadata", sphericalMetadata);
      return this;
    }
    public APIRequestCreatePhoto setSphericalMetadata (String sphericalMetadata) {
      this.setParam("spherical_metadata", sphericalMetadata);
      return this;
    }

    public APIRequestCreatePhoto setInitialViewHeadingOverrideDegrees (Long initialViewHeadingOverrideDegrees) {
      this.setParam("initial_view_heading_override_degrees", initialViewHeadingOverrideDegrees);
      return this;
    }
    public APIRequestCreatePhoto setInitialViewHeadingOverrideDegrees (String initialViewHeadingOverrideDegrees) {
      this.setParam("initial_view_heading_override_degrees", initialViewHeadingOverrideDegrees);
      return this;
    }

    public APIRequestCreatePhoto setInitialViewPitchOverrideDegrees (Long initialViewPitchOverrideDegrees) {
      this.setParam("initial_view_pitch_override_degrees", initialViewPitchOverrideDegrees);
      return this;
    }
    public APIRequestCreatePhoto setInitialViewPitchOverrideDegrees (String initialViewPitchOverrideDegrees) {
      this.setParam("initial_view_pitch_override_degrees", initialViewPitchOverrideDegrees);
      return this;
    }

    public APIRequestCreatePhoto setInitialViewVerticalFovOverrideDegrees (Long initialViewVerticalFovOverrideDegrees) {
      this.setParam("initial_view_vertical_fov_override_degrees", initialViewVerticalFovOverrideDegrees);
      return this;
    }
    public APIRequestCreatePhoto setInitialViewVerticalFovOverrideDegrees (String initialViewVerticalFovOverrideDegrees) {
      this.setParam("initial_view_vertical_fov_override_degrees", initialViewVerticalFovOverrideDegrees);
      return this;
    }

    public APIRequestCreatePhoto setSponsorId (String sponsorId) {
      this.setParam("sponsor_id", sponsorId);
      return this;
    }

    public APIRequestCreatePhoto setDirectShareStatus (Long directShareStatus) {
      this.setParam("direct_share_status", directShareStatus);
      return this;
    }
    public APIRequestCreatePhoto setDirectShareStatus (String directShareStatus) {
      this.setParam("direct_share_status", directShareStatus);
      return this;
    }

    public APIRequestCreatePhoto setSponsorRelationship (Long sponsorRelationship) {
      this.setParam("sponsor_relationship", sponsorRelationship);
      return this;
    }
    public APIRequestCreatePhoto setSponsorRelationship (String sponsorRelationship) {
      this.setParam("sponsor_relationship", sponsorRelationship);
      return this;
    }

    public APIRequestCreatePhoto setApplicationId (String applicationId) {
      this.setParam("application_id", applicationId);
      return this;
    }

    public APIRequestCreatePhoto setName (String name) {
      this.setParam("name", name);
      return this;
    }

    public APIRequestCreatePhoto setMessage (String message) {
      this.setParam("message", message);
      return this;
    }

    public APIRequestCreatePhoto setTemporary (Boolean temporary) {
      this.setParam("temporary", temporary);
      return this;
    }
    public APIRequestCreatePhoto setTemporary (String temporary) {
      this.setParam("temporary", temporary);
      return this;
    }

    public APIRequestCreatePhoto setLocationSourceId (String locationSourceId) {
      this.setParam("location_source_id", locationSourceId);
      return this;
    }

    public APIRequestCreatePhoto requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreatePhoto requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePhoto requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreatePhoto requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePhoto requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreatePhoto requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetPicture extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "height",
      "width",
      "type",
      "redirect",
    };

    public static final String[] FIELDS = {
      "bottom",
      "cache_key",
      "height",
      "is_silhouette",
      "left",
      "right",
      "top",
      "url",
      "width",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return ProfilePictureSource.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetPicture.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetPicture(String nodeId, APIContext context) {
      super(context, nodeId, "/picture", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetPicture setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetPicture setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetPicture setHeight (Long height) {
      this.setParam("height", height);
      return this;
    }
    public APIRequestGetPicture setHeight (String height) {
      this.setParam("height", height);
      return this;
    }

    public APIRequestGetPicture setWidth (Long width) {
      this.setParam("width", width);
      return this;
    }
    public APIRequestGetPicture setWidth (String width) {
      this.setParam("width", width);
      return this;
    }

    public APIRequestGetPicture setType (ProfilePictureSource.EnumType type) {
      this.setParam("type", type);
      return this;
    }
    public APIRequestGetPicture setType (String type) {
      this.setParam("type", type);
      return this;
    }

    public APIRequestGetPicture setRedirect (Boolean redirect) {
      this.setParam("redirect", redirect);
      return this;
    }
    public APIRequestGetPicture setRedirect (String redirect) {
      this.setParam("redirect", redirect);
      return this;
    }

    public APIRequestGetPicture requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetPicture requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPicture requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetPicture requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPicture requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetPicture requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetPicture requestBottomField () {
      return this.requestBottomField(true);
    }
    public APIRequestGetPicture requestBottomField (boolean value) {
      this.requestField("bottom", value);
      return this;
    }
    public APIRequestGetPicture requestCacheKeyField () {
      return this.requestCacheKeyField(true);
    }
    public APIRequestGetPicture requestCacheKeyField (boolean value) {
      this.requestField("cache_key", value);
      return this;
    }
    public APIRequestGetPicture requestHeightField () {
      return this.requestHeightField(true);
    }
    public APIRequestGetPicture requestHeightField (boolean value) {
      this.requestField("height", value);
      return this;
    }
    public APIRequestGetPicture requestIsSilhouetteField () {
      return this.requestIsSilhouetteField(true);
    }
    public APIRequestGetPicture requestIsSilhouetteField (boolean value) {
      this.requestField("is_silhouette", value);
      return this;
    }
    public APIRequestGetPicture requestLeftField () {
      return this.requestLeftField(true);
    }
    public APIRequestGetPicture requestLeftField (boolean value) {
      this.requestField("left", value);
      return this;
    }
    public APIRequestGetPicture requestRightField () {
      return this.requestRightField(true);
    }
    public APIRequestGetPicture requestRightField (boolean value) {
      this.requestField("right", value);
      return this;
    }
    public APIRequestGetPicture requestTopField () {
      return this.requestTopField(true);
    }
    public APIRequestGetPicture requestTopField (boolean value) {
      this.requestField("top", value);
      return this;
    }
    public APIRequestGetPicture requestUrlField () {
      return this.requestUrlField(true);
    }
    public APIRequestGetPicture requestUrlField (boolean value) {
      this.requestField("url", value);
      return this;
    }
    public APIRequestGetPicture requestWidthField () {
      return this.requestWidthField(true);
    }
    public APIRequestGetPicture requestWidthField (boolean value) {
      this.requestField("width", value);
      return this;
    }
  }

  public static class APIRequestCreatePicture extends APIRequest {

    ProfilePictureSource lastResponse = null;
    @Override
    public ProfilePictureSource getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "composer_session_id",
      "qn",
      "photo",
      "reuse",
      "x",
      "y",
      "width",
      "height",
      "scaled_crop_rect",
      "profile_pic_source",
      "profile_pic_method",
      "sticker_id",
      "caption",
      "sticker_source_object_id",
      "msqrd_mask_id",
      "media_effect_ids",
      "media_effect_source_object_id",
      "set_profile_photo_shield",
      "has_umg",
      "android_key_hash",
      "ios_bundle_id",
      "proxied_app_id",
      "picture",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public ProfilePictureSource parseResponse(String response, String header) throws APIException {
      return ProfilePictureSource.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public ProfilePictureSource execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public ProfilePictureSource execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public ProfilePictureSource apply(ResponseWrapper result) {
             try {
               return APIRequestCreatePicture.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreatePicture(String nodeId, APIContext context) {
      super(context, nodeId, "/picture", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreatePicture setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreatePicture setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreatePicture setComposerSessionId (String composerSessionId) {
      this.setParam("composer_session_id", composerSessionId);
      return this;
    }

    public APIRequestCreatePicture setQn (String qn) {
      this.setParam("qn", qn);
      return this;
    }

    public APIRequestCreatePicture setPhoto (String photo) {
      this.setParam("photo", photo);
      return this;
    }

    public APIRequestCreatePicture setReuse (Boolean reuse) {
      this.setParam("reuse", reuse);
      return this;
    }
    public APIRequestCreatePicture setReuse (String reuse) {
      this.setParam("reuse", reuse);
      return this;
    }

    public APIRequestCreatePicture setX (Long x) {
      this.setParam("x", x);
      return this;
    }
    public APIRequestCreatePicture setX (String x) {
      this.setParam("x", x);
      return this;
    }

    public APIRequestCreatePicture setY (Long y) {
      this.setParam("y", y);
      return this;
    }
    public APIRequestCreatePicture setY (String y) {
      this.setParam("y", y);
      return this;
    }

    public APIRequestCreatePicture setWidth (Long width) {
      this.setParam("width", width);
      return this;
    }
    public APIRequestCreatePicture setWidth (String width) {
      this.setParam("width", width);
      return this;
    }

    public APIRequestCreatePicture setHeight (Long height) {
      this.setParam("height", height);
      return this;
    }
    public APIRequestCreatePicture setHeight (String height) {
      this.setParam("height", height);
      return this;
    }

    public APIRequestCreatePicture setScaledCropRect (Object scaledCropRect) {
      this.setParam("scaled_crop_rect", scaledCropRect);
      return this;
    }
    public APIRequestCreatePicture setScaledCropRect (String scaledCropRect) {
      this.setParam("scaled_crop_rect", scaledCropRect);
      return this;
    }

    public APIRequestCreatePicture setProfilePicSource (String profilePicSource) {
      this.setParam("profile_pic_source", profilePicSource);
      return this;
    }

    public APIRequestCreatePicture setProfilePicMethod (String profilePicMethod) {
      this.setParam("profile_pic_method", profilePicMethod);
      return this;
    }

    public APIRequestCreatePicture setStickerId (Long stickerId) {
      this.setParam("sticker_id", stickerId);
      return this;
    }
    public APIRequestCreatePicture setStickerId (String stickerId) {
      this.setParam("sticker_id", stickerId);
      return this;
    }

    public APIRequestCreatePicture setCaption (String caption) {
      this.setParam("caption", caption);
      return this;
    }

    public APIRequestCreatePicture setStickerSourceObjectId (Long stickerSourceObjectId) {
      this.setParam("sticker_source_object_id", stickerSourceObjectId);
      return this;
    }
    public APIRequestCreatePicture setStickerSourceObjectId (String stickerSourceObjectId) {
      this.setParam("sticker_source_object_id", stickerSourceObjectId);
      return this;
    }

    public APIRequestCreatePicture setMsqrdMaskId (String msqrdMaskId) {
      this.setParam("msqrd_mask_id", msqrdMaskId);
      return this;
    }

    public APIRequestCreatePicture setMediaEffectIds (List mediaEffectIds) {
      this.setParam("media_effect_ids", mediaEffectIds);
      return this;
    }
    public APIRequestCreatePicture setMediaEffectIds (String mediaEffectIds) {
      this.setParam("media_effect_ids", mediaEffectIds);
      return this;
    }

    public APIRequestCreatePicture setMediaEffectSourceObjectId (Long mediaEffectSourceObjectId) {
      this.setParam("media_effect_source_object_id", mediaEffectSourceObjectId);
      return this;
    }
    public APIRequestCreatePicture setMediaEffectSourceObjectId (String mediaEffectSourceObjectId) {
      this.setParam("media_effect_source_object_id", mediaEffectSourceObjectId);
      return this;
    }

    public APIRequestCreatePicture setSetProfilePhotoShield (String setProfilePhotoShield) {
      this.setParam("set_profile_photo_shield", setProfilePhotoShield);
      return this;
    }

    public APIRequestCreatePicture setHasUmg (Boolean hasUmg) {
      this.setParam("has_umg", hasUmg);
      return this;
    }
    public APIRequestCreatePicture setHasUmg (String hasUmg) {
      this.setParam("has_umg", hasUmg);
      return this;
    }

    public APIRequestCreatePicture setAndroidKeyHash (String androidKeyHash) {
      this.setParam("android_key_hash", androidKeyHash);
      return this;
    }

    public APIRequestCreatePicture setIosBundleId (String iosBundleId) {
      this.setParam("ios_bundle_id", iosBundleId);
      return this;
    }

    public APIRequestCreatePicture setProxiedAppId (Long proxiedAppId) {
      this.setParam("proxied_app_id", proxiedAppId);
      return this;
    }
    public APIRequestCreatePicture setProxiedAppId (String proxiedAppId) {
      this.setParam("proxied_app_id", proxiedAppId);
      return this;
    }

    public APIRequestCreatePicture setPicture (String picture) {
      this.setParam("picture", picture);
      return this;
    }

    public APIRequestCreatePicture requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreatePicture requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePicture requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreatePicture requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePicture requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreatePicture requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetPlaceTopics extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "count",
      "has_children",
      "icon_url",
      "id",
      "name",
      "parent_ids",
      "plural_name",
      "top_subtopic_names",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PlaceTopic.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetPlaceTopics.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetPlaceTopics(String nodeId, APIContext context) {
      super(context, nodeId, "/place_topics", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetPlaceTopics setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetPlaceTopics setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetPlaceTopics requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetPlaceTopics requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPlaceTopics requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetPlaceTopics requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPlaceTopics requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetPlaceTopics requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetPlaceTopics requestCountField () {
      return this.requestCountField(true);
    }
    public APIRequestGetPlaceTopics requestCountField (boolean value) {
      this.requestField("count", value);
      return this;
    }
    public APIRequestGetPlaceTopics requestHasChildrenField () {
      return this.requestHasChildrenField(true);
    }
    public APIRequestGetPlaceTopics requestHasChildrenField (boolean value) {
      this.requestField("has_children", value);
      return this;
    }
    public APIRequestGetPlaceTopics requestIconUrlField () {
      return this.requestIconUrlField(true);
    }
    public APIRequestGetPlaceTopics requestIconUrlField (boolean value) {
      this.requestField("icon_url", value);
      return this;
    }
    public APIRequestGetPlaceTopics requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetPlaceTopics requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetPlaceTopics requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetPlaceTopics requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetPlaceTopics requestParentIdsField () {
      return this.requestParentIdsField(true);
    }
    public APIRequestGetPlaceTopics requestParentIdsField (boolean value) {
      this.requestField("parent_ids", value);
      return this;
    }
    public APIRequestGetPlaceTopics requestPluralNameField () {
      return this.requestPluralNameField(true);
    }
    public APIRequestGetPlaceTopics requestPluralNameField (boolean value) {
      this.requestField("plural_name", value);
      return this;
    }
    public APIRequestGetPlaceTopics requestTopSubtopicNamesField () {
      return this.requestTopSubtopicNamesField(true);
    }
    public APIRequestGetPlaceTopics requestTopSubtopicNamesField (boolean value) {
      this.requestField("top_subtopic_names", value);
      return this;
    }
  }

  public static class APIRequestGetPosts extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "include_hidden",
      "with",
      "show_expired",
      "q",
    };

    public static final String[] FIELDS = {
      "actions",
      "admin_creator",
      "allowed_advertising_objectives",
      "application",
      "backdated_time",
      "call_to_action",
      "can_reply_privately",
      "caption",
      "child_attachments",
      "comments_mirroring_domain",
      "coordinates",
      "created_time",
      "description",
      "event",
      "expanded_height",
      "expanded_width",
      "feed_targeting",
      "from",
      "full_picture",
      "height",
      "icon",
      "id",
      "instagram_eligibility",
      "is_app_share",
      "is_expired",
      "is_hidden",
      "is_instagram_eligible",
      "is_popular",
      "is_published",
      "is_spherical",
      "link",
      "message",
      "message_tags",
      "multi_share_end_card",
      "multi_share_optimized",
      "name",
      "object_id",
      "parent_id",
      "permalink_url",
      "picture",
      "place",
      "privacy",
      "promotable_id",
      "promotion_status",
      "properties",
      "scheduled_publish_time",
      "shares",
      "source",
      "status_type",
      "story",
      "story_tags",
      "subscribed",
      "target",
      "targeting",
      "timeline_visibility",
      "type",
      "updated_time",
      "via",
      "video_buying_eligibility",
      "width",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PagePost.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetPosts.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetPosts(String nodeId, APIContext context) {
      super(context, nodeId, "/posts", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetPosts setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetPosts setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetPosts setIncludeHidden (Boolean includeHidden) {
      this.setParam("include_hidden", includeHidden);
      return this;
    }
    public APIRequestGetPosts setIncludeHidden (String includeHidden) {
      this.setParam("include_hidden", includeHidden);
      return this;
    }

    public APIRequestGetPosts setWith (PagePost.EnumWith with) {
      this.setParam("with", with);
      return this;
    }
    public APIRequestGetPosts setWith (String with) {
      this.setParam("with", with);
      return this;
    }

    public APIRequestGetPosts setShowExpired (Boolean showExpired) {
      this.setParam("show_expired", showExpired);
      return this;
    }
    public APIRequestGetPosts setShowExpired (String showExpired) {
      this.setParam("show_expired", showExpired);
      return this;
    }

    public APIRequestGetPosts setQ (String q) {
      this.setParam("q", q);
      return this;
    }

    public APIRequestGetPosts requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetPosts requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPosts requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetPosts requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPosts requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetPosts requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetPosts requestActionsField () {
      return this.requestActionsField(true);
    }
    public APIRequestGetPosts requestActionsField (boolean value) {
      this.requestField("actions", value);
      return this;
    }
    public APIRequestGetPosts requestAdminCreatorField () {
      return this.requestAdminCreatorField(true);
    }
    public APIRequestGetPosts requestAdminCreatorField (boolean value) {
      this.requestField("admin_creator", value);
      return this;
    }
    public APIRequestGetPosts requestAllowedAdvertisingObjectivesField () {
      return this.requestAllowedAdvertisingObjectivesField(true);
    }
    public APIRequestGetPosts requestAllowedAdvertisingObjectivesField (boolean value) {
      this.requestField("allowed_advertising_objectives", value);
      return this;
    }
    public APIRequestGetPosts requestApplicationField () {
      return this.requestApplicationField(true);
    }
    public APIRequestGetPosts requestApplicationField (boolean value) {
      this.requestField("application", value);
      return this;
    }
    public APIRequestGetPosts requestBackdatedTimeField () {
      return this.requestBackdatedTimeField(true);
    }
    public APIRequestGetPosts requestBackdatedTimeField (boolean value) {
      this.requestField("backdated_time", value);
      return this;
    }
    public APIRequestGetPosts requestCallToActionField () {
      return this.requestCallToActionField(true);
    }
    public APIRequestGetPosts requestCallToActionField (boolean value) {
      this.requestField("call_to_action", value);
      return this;
    }
    public APIRequestGetPosts requestCanReplyPrivatelyField () {
      return this.requestCanReplyPrivatelyField(true);
    }
    public APIRequestGetPosts requestCanReplyPrivatelyField (boolean value) {
      this.requestField("can_reply_privately", value);
      return this;
    }
    public APIRequestGetPosts requestCaptionField () {
      return this.requestCaptionField(true);
    }
    public APIRequestGetPosts requestCaptionField (boolean value) {
      this.requestField("caption", value);
      return this;
    }
    public APIRequestGetPosts requestChildAttachmentsField () {
      return this.requestChildAttachmentsField(true);
    }
    public APIRequestGetPosts requestChildAttachmentsField (boolean value) {
      this.requestField("child_attachments", value);
      return this;
    }
    public APIRequestGetPosts requestCommentsMirroringDomainField () {
      return this.requestCommentsMirroringDomainField(true);
    }
    public APIRequestGetPosts requestCommentsMirroringDomainField (boolean value) {
      this.requestField("comments_mirroring_domain", value);
      return this;
    }
    public APIRequestGetPosts requestCoordinatesField () {
      return this.requestCoordinatesField(true);
    }
    public APIRequestGetPosts requestCoordinatesField (boolean value) {
      this.requestField("coordinates", value);
      return this;
    }
    public APIRequestGetPosts requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetPosts requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetPosts requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetPosts requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetPosts requestEventField () {
      return this.requestEventField(true);
    }
    public APIRequestGetPosts requestEventField (boolean value) {
      this.requestField("event", value);
      return this;
    }
    public APIRequestGetPosts requestExpandedHeightField () {
      return this.requestExpandedHeightField(true);
    }
    public APIRequestGetPosts requestExpandedHeightField (boolean value) {
      this.requestField("expanded_height", value);
      return this;
    }
    public APIRequestGetPosts requestExpandedWidthField () {
      return this.requestExpandedWidthField(true);
    }
    public APIRequestGetPosts requestExpandedWidthField (boolean value) {
      this.requestField("expanded_width", value);
      return this;
    }
    public APIRequestGetPosts requestFeedTargetingField () {
      return this.requestFeedTargetingField(true);
    }
    public APIRequestGetPosts requestFeedTargetingField (boolean value) {
      this.requestField("feed_targeting", value);
      return this;
    }
    public APIRequestGetPosts requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetPosts requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetPosts requestFullPictureField () {
      return this.requestFullPictureField(true);
    }
    public APIRequestGetPosts requestFullPictureField (boolean value) {
      this.requestField("full_picture", value);
      return this;
    }
    public APIRequestGetPosts requestHeightField () {
      return this.requestHeightField(true);
    }
    public APIRequestGetPosts requestHeightField (boolean value) {
      this.requestField("height", value);
      return this;
    }
    public APIRequestGetPosts requestIconField () {
      return this.requestIconField(true);
    }
    public APIRequestGetPosts requestIconField (boolean value) {
      this.requestField("icon", value);
      return this;
    }
    public APIRequestGetPosts requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetPosts requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetPosts requestInstagramEligibilityField () {
      return this.requestInstagramEligibilityField(true);
    }
    public APIRequestGetPosts requestInstagramEligibilityField (boolean value) {
      this.requestField("instagram_eligibility", value);
      return this;
    }
    public APIRequestGetPosts requestIsAppShareField () {
      return this.requestIsAppShareField(true);
    }
    public APIRequestGetPosts requestIsAppShareField (boolean value) {
      this.requestField("is_app_share", value);
      return this;
    }
    public APIRequestGetPosts requestIsExpiredField () {
      return this.requestIsExpiredField(true);
    }
    public APIRequestGetPosts requestIsExpiredField (boolean value) {
      this.requestField("is_expired", value);
      return this;
    }
    public APIRequestGetPosts requestIsHiddenField () {
      return this.requestIsHiddenField(true);
    }
    public APIRequestGetPosts requestIsHiddenField (boolean value) {
      this.requestField("is_hidden", value);
      return this;
    }
    public APIRequestGetPosts requestIsInstagramEligibleField () {
      return this.requestIsInstagramEligibleField(true);
    }
    public APIRequestGetPosts requestIsInstagramEligibleField (boolean value) {
      this.requestField("is_instagram_eligible", value);
      return this;
    }
    public APIRequestGetPosts requestIsPopularField () {
      return this.requestIsPopularField(true);
    }
    public APIRequestGetPosts requestIsPopularField (boolean value) {
      this.requestField("is_popular", value);
      return this;
    }
    public APIRequestGetPosts requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetPosts requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetPosts requestIsSphericalField () {
      return this.requestIsSphericalField(true);
    }
    public APIRequestGetPosts requestIsSphericalField (boolean value) {
      this.requestField("is_spherical", value);
      return this;
    }
    public APIRequestGetPosts requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetPosts requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetPosts requestMessageField () {
      return this.requestMessageField(true);
    }
    public APIRequestGetPosts requestMessageField (boolean value) {
      this.requestField("message", value);
      return this;
    }
    public APIRequestGetPosts requestMessageTagsField () {
      return this.requestMessageTagsField(true);
    }
    public APIRequestGetPosts requestMessageTagsField (boolean value) {
      this.requestField("message_tags", value);
      return this;
    }
    public APIRequestGetPosts requestMultiShareEndCardField () {
      return this.requestMultiShareEndCardField(true);
    }
    public APIRequestGetPosts requestMultiShareEndCardField (boolean value) {
      this.requestField("multi_share_end_card", value);
      return this;
    }
    public APIRequestGetPosts requestMultiShareOptimizedField () {
      return this.requestMultiShareOptimizedField(true);
    }
    public APIRequestGetPosts requestMultiShareOptimizedField (boolean value) {
      this.requestField("multi_share_optimized", value);
      return this;
    }
    public APIRequestGetPosts requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetPosts requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetPosts requestObjectIdField () {
      return this.requestObjectIdField(true);
    }
    public APIRequestGetPosts requestObjectIdField (boolean value) {
      this.requestField("object_id", value);
      return this;
    }
    public APIRequestGetPosts requestParentIdField () {
      return this.requestParentIdField(true);
    }
    public APIRequestGetPosts requestParentIdField (boolean value) {
      this.requestField("parent_id", value);
      return this;
    }
    public APIRequestGetPosts requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetPosts requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetPosts requestPictureField () {
      return this.requestPictureField(true);
    }
    public APIRequestGetPosts requestPictureField (boolean value) {
      this.requestField("picture", value);
      return this;
    }
    public APIRequestGetPosts requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetPosts requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetPosts requestPrivacyField () {
      return this.requestPrivacyField(true);
    }
    public APIRequestGetPosts requestPrivacyField (boolean value) {
      this.requestField("privacy", value);
      return this;
    }
    public APIRequestGetPosts requestPromotableIdField () {
      return this.requestPromotableIdField(true);
    }
    public APIRequestGetPosts requestPromotableIdField (boolean value) {
      this.requestField("promotable_id", value);
      return this;
    }
    public APIRequestGetPosts requestPromotionStatusField () {
      return this.requestPromotionStatusField(true);
    }
    public APIRequestGetPosts requestPromotionStatusField (boolean value) {
      this.requestField("promotion_status", value);
      return this;
    }
    public APIRequestGetPosts requestPropertiesField () {
      return this.requestPropertiesField(true);
    }
    public APIRequestGetPosts requestPropertiesField (boolean value) {
      this.requestField("properties", value);
      return this;
    }
    public APIRequestGetPosts requestScheduledPublishTimeField () {
      return this.requestScheduledPublishTimeField(true);
    }
    public APIRequestGetPosts requestScheduledPublishTimeField (boolean value) {
      this.requestField("scheduled_publish_time", value);
      return this;
    }
    public APIRequestGetPosts requestSharesField () {
      return this.requestSharesField(true);
    }
    public APIRequestGetPosts requestSharesField (boolean value) {
      this.requestField("shares", value);
      return this;
    }
    public APIRequestGetPosts requestSourceField () {
      return this.requestSourceField(true);
    }
    public APIRequestGetPosts requestSourceField (boolean value) {
      this.requestField("source", value);
      return this;
    }
    public APIRequestGetPosts requestStatusTypeField () {
      return this.requestStatusTypeField(true);
    }
    public APIRequestGetPosts requestStatusTypeField (boolean value) {
      this.requestField("status_type", value);
      return this;
    }
    public APIRequestGetPosts requestStoryField () {
      return this.requestStoryField(true);
    }
    public APIRequestGetPosts requestStoryField (boolean value) {
      this.requestField("story", value);
      return this;
    }
    public APIRequestGetPosts requestStoryTagsField () {
      return this.requestStoryTagsField(true);
    }
    public APIRequestGetPosts requestStoryTagsField (boolean value) {
      this.requestField("story_tags", value);
      return this;
    }
    public APIRequestGetPosts requestSubscribedField () {
      return this.requestSubscribedField(true);
    }
    public APIRequestGetPosts requestSubscribedField (boolean value) {
      this.requestField("subscribed", value);
      return this;
    }
    public APIRequestGetPosts requestTargetField () {
      return this.requestTargetField(true);
    }
    public APIRequestGetPosts requestTargetField (boolean value) {
      this.requestField("target", value);
      return this;
    }
    public APIRequestGetPosts requestTargetingField () {
      return this.requestTargetingField(true);
    }
    public APIRequestGetPosts requestTargetingField (boolean value) {
      this.requestField("targeting", value);
      return this;
    }
    public APIRequestGetPosts requestTimelineVisibilityField () {
      return this.requestTimelineVisibilityField(true);
    }
    public APIRequestGetPosts requestTimelineVisibilityField (boolean value) {
      this.requestField("timeline_visibility", value);
      return this;
    }
    public APIRequestGetPosts requestTypeField () {
      return this.requestTypeField(true);
    }
    public APIRequestGetPosts requestTypeField (boolean value) {
      this.requestField("type", value);
      return this;
    }
    public APIRequestGetPosts requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetPosts requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetPosts requestViaField () {
      return this.requestViaField(true);
    }
    public APIRequestGetPosts requestViaField (boolean value) {
      this.requestField("via", value);
      return this;
    }
    public APIRequestGetPosts requestVideoBuyingEligibilityField () {
      return this.requestVideoBuyingEligibilityField(true);
    }
    public APIRequestGetPosts requestVideoBuyingEligibilityField (boolean value) {
      this.requestField("video_buying_eligibility", value);
      return this;
    }
    public APIRequestGetPosts requestWidthField () {
      return this.requestWidthField(true);
    }
    public APIRequestGetPosts requestWidthField (boolean value) {
      this.requestField("width", value);
      return this;
    }
  }

  public static class APIRequestGetProductCatalogs extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "business",
      "cpas_parent_catalog_settings",
      "da_display_settings",
      "default_image_url",
      "fallback_image_url",
      "feed_count",
      "flight_catalog_settings",
      "id",
      "name",
      "product_count",
      "qualified_product_count",
      "vertical",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return ProductCatalog.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetProductCatalogs.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetProductCatalogs(String nodeId, APIContext context) {
      super(context, nodeId, "/product_catalogs", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetProductCatalogs setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetProductCatalogs setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetProductCatalogs requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetProductCatalogs requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetProductCatalogs requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetProductCatalogs requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetProductCatalogs requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetProductCatalogs requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetProductCatalogs requestBusinessField () {
      return this.requestBusinessField(true);
    }
    public APIRequestGetProductCatalogs requestBusinessField (boolean value) {
      this.requestField("business", value);
      return this;
    }
    public APIRequestGetProductCatalogs requestCpasParentCatalogSettingsField () {
      return this.requestCpasParentCatalogSettingsField(true);
    }
    public APIRequestGetProductCatalogs requestCpasParentCatalogSettingsField (boolean value) {
      this.requestField("cpas_parent_catalog_settings", value);
      return this;
    }
    public APIRequestGetProductCatalogs requestDaDisplaySettingsField () {
      return this.requestDaDisplaySettingsField(true);
    }
    public APIRequestGetProductCatalogs requestDaDisplaySettingsField (boolean value) {
      this.requestField("da_display_settings", value);
      return this;
    }
    public APIRequestGetProductCatalogs requestDefaultImageUrlField () {
      return this.requestDefaultImageUrlField(true);
    }
    public APIRequestGetProductCatalogs requestDefaultImageUrlField (boolean value) {
      this.requestField("default_image_url", value);
      return this;
    }
    public APIRequestGetProductCatalogs requestFallbackImageUrlField () {
      return this.requestFallbackImageUrlField(true);
    }
    public APIRequestGetProductCatalogs requestFallbackImageUrlField (boolean value) {
      this.requestField("fallback_image_url", value);
      return this;
    }
    public APIRequestGetProductCatalogs requestFeedCountField () {
      return this.requestFeedCountField(true);
    }
    public APIRequestGetProductCatalogs requestFeedCountField (boolean value) {
      this.requestField("feed_count", value);
      return this;
    }
    public APIRequestGetProductCatalogs requestFlightCatalogSettingsField () {
      return this.requestFlightCatalogSettingsField(true);
    }
    public APIRequestGetProductCatalogs requestFlightCatalogSettingsField (boolean value) {
      this.requestField("flight_catalog_settings", value);
      return this;
    }
    public APIRequestGetProductCatalogs requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetProductCatalogs requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetProductCatalogs requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetProductCatalogs requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetProductCatalogs requestProductCountField () {
      return this.requestProductCountField(true);
    }
    public APIRequestGetProductCatalogs requestProductCountField (boolean value) {
      this.requestField("product_count", value);
      return this;
    }
    public APIRequestGetProductCatalogs requestQualifiedProductCountField () {
      return this.requestQualifiedProductCountField(true);
    }
    public APIRequestGetProductCatalogs requestQualifiedProductCountField (boolean value) {
      this.requestField("qualified_product_count", value);
      return this;
    }
    public APIRequestGetProductCatalogs requestVerticalField () {
      return this.requestVerticalField(true);
    }
    public APIRequestGetProductCatalogs requestVerticalField (boolean value) {
      this.requestField("vertical", value);
      return this;
    }
  }

  public static class APIRequestGetPromotablePosts extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "include_hidden",
      "with",
      "show_expired",
      "q",
      "is_published",
      "include_inline",
    };

    public static final String[] FIELDS = {
      "actions",
      "admin_creator",
      "allowed_advertising_objectives",
      "application",
      "backdated_time",
      "call_to_action",
      "can_reply_privately",
      "caption",
      "child_attachments",
      "comments_mirroring_domain",
      "coordinates",
      "created_time",
      "description",
      "event",
      "expanded_height",
      "expanded_width",
      "feed_targeting",
      "from",
      "full_picture",
      "height",
      "icon",
      "id",
      "instagram_eligibility",
      "is_app_share",
      "is_expired",
      "is_hidden",
      "is_instagram_eligible",
      "is_popular",
      "is_published",
      "is_spherical",
      "link",
      "message",
      "message_tags",
      "multi_share_end_card",
      "multi_share_optimized",
      "name",
      "object_id",
      "parent_id",
      "permalink_url",
      "picture",
      "place",
      "privacy",
      "promotable_id",
      "promotion_status",
      "properties",
      "scheduled_publish_time",
      "shares",
      "source",
      "status_type",
      "story",
      "story_tags",
      "subscribed",
      "target",
      "targeting",
      "timeline_visibility",
      "type",
      "updated_time",
      "via",
      "video_buying_eligibility",
      "width",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PagePost.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetPromotablePosts.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetPromotablePosts(String nodeId, APIContext context) {
      super(context, nodeId, "/promotable_posts", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetPromotablePosts setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetPromotablePosts setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetPromotablePosts setIncludeHidden (Boolean includeHidden) {
      this.setParam("include_hidden", includeHidden);
      return this;
    }
    public APIRequestGetPromotablePosts setIncludeHidden (String includeHidden) {
      this.setParam("include_hidden", includeHidden);
      return this;
    }

    public APIRequestGetPromotablePosts setWith (PagePost.EnumWith with) {
      this.setParam("with", with);
      return this;
    }
    public APIRequestGetPromotablePosts setWith (String with) {
      this.setParam("with", with);
      return this;
    }

    public APIRequestGetPromotablePosts setShowExpired (Boolean showExpired) {
      this.setParam("show_expired", showExpired);
      return this;
    }
    public APIRequestGetPromotablePosts setShowExpired (String showExpired) {
      this.setParam("show_expired", showExpired);
      return this;
    }

    public APIRequestGetPromotablePosts setQ (String q) {
      this.setParam("q", q);
      return this;
    }

    public APIRequestGetPromotablePosts setIsPublished (Boolean isPublished) {
      this.setParam("is_published", isPublished);
      return this;
    }
    public APIRequestGetPromotablePosts setIsPublished (String isPublished) {
      this.setParam("is_published", isPublished);
      return this;
    }

    public APIRequestGetPromotablePosts setIncludeInline (Boolean includeInline) {
      this.setParam("include_inline", includeInline);
      return this;
    }
    public APIRequestGetPromotablePosts setIncludeInline (String includeInline) {
      this.setParam("include_inline", includeInline);
      return this;
    }

    public APIRequestGetPromotablePosts requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetPromotablePosts requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPromotablePosts requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetPromotablePosts requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPromotablePosts requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetPromotablePosts requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetPromotablePosts requestActionsField () {
      return this.requestActionsField(true);
    }
    public APIRequestGetPromotablePosts requestActionsField (boolean value) {
      this.requestField("actions", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestAdminCreatorField () {
      return this.requestAdminCreatorField(true);
    }
    public APIRequestGetPromotablePosts requestAdminCreatorField (boolean value) {
      this.requestField("admin_creator", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestAllowedAdvertisingObjectivesField () {
      return this.requestAllowedAdvertisingObjectivesField(true);
    }
    public APIRequestGetPromotablePosts requestAllowedAdvertisingObjectivesField (boolean value) {
      this.requestField("allowed_advertising_objectives", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestApplicationField () {
      return this.requestApplicationField(true);
    }
    public APIRequestGetPromotablePosts requestApplicationField (boolean value) {
      this.requestField("application", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestBackdatedTimeField () {
      return this.requestBackdatedTimeField(true);
    }
    public APIRequestGetPromotablePosts requestBackdatedTimeField (boolean value) {
      this.requestField("backdated_time", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestCallToActionField () {
      return this.requestCallToActionField(true);
    }
    public APIRequestGetPromotablePosts requestCallToActionField (boolean value) {
      this.requestField("call_to_action", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestCanReplyPrivatelyField () {
      return this.requestCanReplyPrivatelyField(true);
    }
    public APIRequestGetPromotablePosts requestCanReplyPrivatelyField (boolean value) {
      this.requestField("can_reply_privately", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestCaptionField () {
      return this.requestCaptionField(true);
    }
    public APIRequestGetPromotablePosts requestCaptionField (boolean value) {
      this.requestField("caption", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestChildAttachmentsField () {
      return this.requestChildAttachmentsField(true);
    }
    public APIRequestGetPromotablePosts requestChildAttachmentsField (boolean value) {
      this.requestField("child_attachments", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestCommentsMirroringDomainField () {
      return this.requestCommentsMirroringDomainField(true);
    }
    public APIRequestGetPromotablePosts requestCommentsMirroringDomainField (boolean value) {
      this.requestField("comments_mirroring_domain", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestCoordinatesField () {
      return this.requestCoordinatesField(true);
    }
    public APIRequestGetPromotablePosts requestCoordinatesField (boolean value) {
      this.requestField("coordinates", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetPromotablePosts requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetPromotablePosts requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestEventField () {
      return this.requestEventField(true);
    }
    public APIRequestGetPromotablePosts requestEventField (boolean value) {
      this.requestField("event", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestExpandedHeightField () {
      return this.requestExpandedHeightField(true);
    }
    public APIRequestGetPromotablePosts requestExpandedHeightField (boolean value) {
      this.requestField("expanded_height", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestExpandedWidthField () {
      return this.requestExpandedWidthField(true);
    }
    public APIRequestGetPromotablePosts requestExpandedWidthField (boolean value) {
      this.requestField("expanded_width", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestFeedTargetingField () {
      return this.requestFeedTargetingField(true);
    }
    public APIRequestGetPromotablePosts requestFeedTargetingField (boolean value) {
      this.requestField("feed_targeting", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetPromotablePosts requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestFullPictureField () {
      return this.requestFullPictureField(true);
    }
    public APIRequestGetPromotablePosts requestFullPictureField (boolean value) {
      this.requestField("full_picture", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestHeightField () {
      return this.requestHeightField(true);
    }
    public APIRequestGetPromotablePosts requestHeightField (boolean value) {
      this.requestField("height", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestIconField () {
      return this.requestIconField(true);
    }
    public APIRequestGetPromotablePosts requestIconField (boolean value) {
      this.requestField("icon", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetPromotablePosts requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestInstagramEligibilityField () {
      return this.requestInstagramEligibilityField(true);
    }
    public APIRequestGetPromotablePosts requestInstagramEligibilityField (boolean value) {
      this.requestField("instagram_eligibility", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestIsAppShareField () {
      return this.requestIsAppShareField(true);
    }
    public APIRequestGetPromotablePosts requestIsAppShareField (boolean value) {
      this.requestField("is_app_share", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestIsExpiredField () {
      return this.requestIsExpiredField(true);
    }
    public APIRequestGetPromotablePosts requestIsExpiredField (boolean value) {
      this.requestField("is_expired", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestIsHiddenField () {
      return this.requestIsHiddenField(true);
    }
    public APIRequestGetPromotablePosts requestIsHiddenField (boolean value) {
      this.requestField("is_hidden", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestIsInstagramEligibleField () {
      return this.requestIsInstagramEligibleField(true);
    }
    public APIRequestGetPromotablePosts requestIsInstagramEligibleField (boolean value) {
      this.requestField("is_instagram_eligible", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestIsPopularField () {
      return this.requestIsPopularField(true);
    }
    public APIRequestGetPromotablePosts requestIsPopularField (boolean value) {
      this.requestField("is_popular", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetPromotablePosts requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestIsSphericalField () {
      return this.requestIsSphericalField(true);
    }
    public APIRequestGetPromotablePosts requestIsSphericalField (boolean value) {
      this.requestField("is_spherical", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetPromotablePosts requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestMessageField () {
      return this.requestMessageField(true);
    }
    public APIRequestGetPromotablePosts requestMessageField (boolean value) {
      this.requestField("message", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestMessageTagsField () {
      return this.requestMessageTagsField(true);
    }
    public APIRequestGetPromotablePosts requestMessageTagsField (boolean value) {
      this.requestField("message_tags", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestMultiShareEndCardField () {
      return this.requestMultiShareEndCardField(true);
    }
    public APIRequestGetPromotablePosts requestMultiShareEndCardField (boolean value) {
      this.requestField("multi_share_end_card", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestMultiShareOptimizedField () {
      return this.requestMultiShareOptimizedField(true);
    }
    public APIRequestGetPromotablePosts requestMultiShareOptimizedField (boolean value) {
      this.requestField("multi_share_optimized", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetPromotablePosts requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestObjectIdField () {
      return this.requestObjectIdField(true);
    }
    public APIRequestGetPromotablePosts requestObjectIdField (boolean value) {
      this.requestField("object_id", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestParentIdField () {
      return this.requestParentIdField(true);
    }
    public APIRequestGetPromotablePosts requestParentIdField (boolean value) {
      this.requestField("parent_id", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetPromotablePosts requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestPictureField () {
      return this.requestPictureField(true);
    }
    public APIRequestGetPromotablePosts requestPictureField (boolean value) {
      this.requestField("picture", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetPromotablePosts requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestPrivacyField () {
      return this.requestPrivacyField(true);
    }
    public APIRequestGetPromotablePosts requestPrivacyField (boolean value) {
      this.requestField("privacy", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestPromotableIdField () {
      return this.requestPromotableIdField(true);
    }
    public APIRequestGetPromotablePosts requestPromotableIdField (boolean value) {
      this.requestField("promotable_id", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestPromotionStatusField () {
      return this.requestPromotionStatusField(true);
    }
    public APIRequestGetPromotablePosts requestPromotionStatusField (boolean value) {
      this.requestField("promotion_status", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestPropertiesField () {
      return this.requestPropertiesField(true);
    }
    public APIRequestGetPromotablePosts requestPropertiesField (boolean value) {
      this.requestField("properties", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestScheduledPublishTimeField () {
      return this.requestScheduledPublishTimeField(true);
    }
    public APIRequestGetPromotablePosts requestScheduledPublishTimeField (boolean value) {
      this.requestField("scheduled_publish_time", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestSharesField () {
      return this.requestSharesField(true);
    }
    public APIRequestGetPromotablePosts requestSharesField (boolean value) {
      this.requestField("shares", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestSourceField () {
      return this.requestSourceField(true);
    }
    public APIRequestGetPromotablePosts requestSourceField (boolean value) {
      this.requestField("source", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestStatusTypeField () {
      return this.requestStatusTypeField(true);
    }
    public APIRequestGetPromotablePosts requestStatusTypeField (boolean value) {
      this.requestField("status_type", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestStoryField () {
      return this.requestStoryField(true);
    }
    public APIRequestGetPromotablePosts requestStoryField (boolean value) {
      this.requestField("story", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestStoryTagsField () {
      return this.requestStoryTagsField(true);
    }
    public APIRequestGetPromotablePosts requestStoryTagsField (boolean value) {
      this.requestField("story_tags", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestSubscribedField () {
      return this.requestSubscribedField(true);
    }
    public APIRequestGetPromotablePosts requestSubscribedField (boolean value) {
      this.requestField("subscribed", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestTargetField () {
      return this.requestTargetField(true);
    }
    public APIRequestGetPromotablePosts requestTargetField (boolean value) {
      this.requestField("target", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestTargetingField () {
      return this.requestTargetingField(true);
    }
    public APIRequestGetPromotablePosts requestTargetingField (boolean value) {
      this.requestField("targeting", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestTimelineVisibilityField () {
      return this.requestTimelineVisibilityField(true);
    }
    public APIRequestGetPromotablePosts requestTimelineVisibilityField (boolean value) {
      this.requestField("timeline_visibility", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestTypeField () {
      return this.requestTypeField(true);
    }
    public APIRequestGetPromotablePosts requestTypeField (boolean value) {
      this.requestField("type", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetPromotablePosts requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestViaField () {
      return this.requestViaField(true);
    }
    public APIRequestGetPromotablePosts requestViaField (boolean value) {
      this.requestField("via", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestVideoBuyingEligibilityField () {
      return this.requestVideoBuyingEligibilityField(true);
    }
    public APIRequestGetPromotablePosts requestVideoBuyingEligibilityField (boolean value) {
      this.requestField("video_buying_eligibility", value);
      return this;
    }
    public APIRequestGetPromotablePosts requestWidthField () {
      return this.requestWidthField(true);
    }
    public APIRequestGetPromotablePosts requestWidthField (boolean value) {
      this.requestField("width", value);
      return this;
    }
  }

  public static class APIRequestCreatePromotion extends APIRequest {

    APINode lastResponse = null;
    @Override
    public APINode getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "budget",
      "ad_account_id",
      "geo_level",
      "gender",
      "min_age",
      "max_age",
      "duration",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINode parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public APINode execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINode execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public APINode apply(ResponseWrapper result) {
             try {
               return APIRequestCreatePromotion.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreatePromotion(String nodeId, APIContext context) {
      super(context, nodeId, "/promotions", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreatePromotion setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreatePromotion setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreatePromotion setBudget (Long budget) {
      this.setParam("budget", budget);
      return this;
    }
    public APIRequestCreatePromotion setBudget (String budget) {
      this.setParam("budget", budget);
      return this;
    }

    public APIRequestCreatePromotion setAdAccountId (String adAccountId) {
      this.setParam("ad_account_id", adAccountId);
      return this;
    }

    public APIRequestCreatePromotion setGeoLevel (String geoLevel) {
      this.setParam("geo_level", geoLevel);
      return this;
    }

    public APIRequestCreatePromotion setGender (Long gender) {
      this.setParam("gender", gender);
      return this;
    }
    public APIRequestCreatePromotion setGender (String gender) {
      this.setParam("gender", gender);
      return this;
    }

    public APIRequestCreatePromotion setMinAge (Long minAge) {
      this.setParam("min_age", minAge);
      return this;
    }
    public APIRequestCreatePromotion setMinAge (String minAge) {
      this.setParam("min_age", minAge);
      return this;
    }

    public APIRequestCreatePromotion setMaxAge (Long maxAge) {
      this.setParam("max_age", maxAge);
      return this;
    }
    public APIRequestCreatePromotion setMaxAge (String maxAge) {
      this.setParam("max_age", maxAge);
      return this;
    }

    public APIRequestCreatePromotion setDuration (String duration) {
      this.setParam("duration", duration);
      return this;
    }

    public APIRequestCreatePromotion requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreatePromotion requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePromotion requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreatePromotion requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreatePromotion requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreatePromotion requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetPublishedPosts extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "since",
      "until",
    };

    public static final String[] FIELDS = {
      "actions",
      "admin_creator",
      "allowed_advertising_objectives",
      "application",
      "backdated_time",
      "call_to_action",
      "can_reply_privately",
      "caption",
      "child_attachments",
      "comments_mirroring_domain",
      "coordinates",
      "created_time",
      "description",
      "event",
      "expanded_height",
      "expanded_width",
      "feed_targeting",
      "from",
      "full_picture",
      "height",
      "icon",
      "id",
      "instagram_eligibility",
      "is_app_share",
      "is_expired",
      "is_hidden",
      "is_instagram_eligible",
      "is_popular",
      "is_published",
      "is_spherical",
      "link",
      "message",
      "message_tags",
      "multi_share_end_card",
      "multi_share_optimized",
      "name",
      "object_id",
      "parent_id",
      "permalink_url",
      "picture",
      "place",
      "privacy",
      "promotable_id",
      "promotion_status",
      "properties",
      "scheduled_publish_time",
      "shares",
      "source",
      "status_type",
      "story",
      "story_tags",
      "subscribed",
      "target",
      "targeting",
      "timeline_visibility",
      "type",
      "updated_time",
      "via",
      "video_buying_eligibility",
      "width",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PagePost.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetPublishedPosts.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetPublishedPosts(String nodeId, APIContext context) {
      super(context, nodeId, "/published_posts", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetPublishedPosts setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetPublishedPosts setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetPublishedPosts setSince (String since) {
      this.setParam("since", since);
      return this;
    }

    public APIRequestGetPublishedPosts setUntil (String until) {
      this.setParam("until", until);
      return this;
    }

    public APIRequestGetPublishedPosts requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetPublishedPosts requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPublishedPosts requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetPublishedPosts requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetPublishedPosts requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetPublishedPosts requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetPublishedPosts requestActionsField () {
      return this.requestActionsField(true);
    }
    public APIRequestGetPublishedPosts requestActionsField (boolean value) {
      this.requestField("actions", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestAdminCreatorField () {
      return this.requestAdminCreatorField(true);
    }
    public APIRequestGetPublishedPosts requestAdminCreatorField (boolean value) {
      this.requestField("admin_creator", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestAllowedAdvertisingObjectivesField () {
      return this.requestAllowedAdvertisingObjectivesField(true);
    }
    public APIRequestGetPublishedPosts requestAllowedAdvertisingObjectivesField (boolean value) {
      this.requestField("allowed_advertising_objectives", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestApplicationField () {
      return this.requestApplicationField(true);
    }
    public APIRequestGetPublishedPosts requestApplicationField (boolean value) {
      this.requestField("application", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestBackdatedTimeField () {
      return this.requestBackdatedTimeField(true);
    }
    public APIRequestGetPublishedPosts requestBackdatedTimeField (boolean value) {
      this.requestField("backdated_time", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestCallToActionField () {
      return this.requestCallToActionField(true);
    }
    public APIRequestGetPublishedPosts requestCallToActionField (boolean value) {
      this.requestField("call_to_action", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestCanReplyPrivatelyField () {
      return this.requestCanReplyPrivatelyField(true);
    }
    public APIRequestGetPublishedPosts requestCanReplyPrivatelyField (boolean value) {
      this.requestField("can_reply_privately", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestCaptionField () {
      return this.requestCaptionField(true);
    }
    public APIRequestGetPublishedPosts requestCaptionField (boolean value) {
      this.requestField("caption", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestChildAttachmentsField () {
      return this.requestChildAttachmentsField(true);
    }
    public APIRequestGetPublishedPosts requestChildAttachmentsField (boolean value) {
      this.requestField("child_attachments", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestCommentsMirroringDomainField () {
      return this.requestCommentsMirroringDomainField(true);
    }
    public APIRequestGetPublishedPosts requestCommentsMirroringDomainField (boolean value) {
      this.requestField("comments_mirroring_domain", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestCoordinatesField () {
      return this.requestCoordinatesField(true);
    }
    public APIRequestGetPublishedPosts requestCoordinatesField (boolean value) {
      this.requestField("coordinates", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetPublishedPosts requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetPublishedPosts requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestEventField () {
      return this.requestEventField(true);
    }
    public APIRequestGetPublishedPosts requestEventField (boolean value) {
      this.requestField("event", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestExpandedHeightField () {
      return this.requestExpandedHeightField(true);
    }
    public APIRequestGetPublishedPosts requestExpandedHeightField (boolean value) {
      this.requestField("expanded_height", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestExpandedWidthField () {
      return this.requestExpandedWidthField(true);
    }
    public APIRequestGetPublishedPosts requestExpandedWidthField (boolean value) {
      this.requestField("expanded_width", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestFeedTargetingField () {
      return this.requestFeedTargetingField(true);
    }
    public APIRequestGetPublishedPosts requestFeedTargetingField (boolean value) {
      this.requestField("feed_targeting", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetPublishedPosts requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestFullPictureField () {
      return this.requestFullPictureField(true);
    }
    public APIRequestGetPublishedPosts requestFullPictureField (boolean value) {
      this.requestField("full_picture", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestHeightField () {
      return this.requestHeightField(true);
    }
    public APIRequestGetPublishedPosts requestHeightField (boolean value) {
      this.requestField("height", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestIconField () {
      return this.requestIconField(true);
    }
    public APIRequestGetPublishedPosts requestIconField (boolean value) {
      this.requestField("icon", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetPublishedPosts requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestInstagramEligibilityField () {
      return this.requestInstagramEligibilityField(true);
    }
    public APIRequestGetPublishedPosts requestInstagramEligibilityField (boolean value) {
      this.requestField("instagram_eligibility", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestIsAppShareField () {
      return this.requestIsAppShareField(true);
    }
    public APIRequestGetPublishedPosts requestIsAppShareField (boolean value) {
      this.requestField("is_app_share", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestIsExpiredField () {
      return this.requestIsExpiredField(true);
    }
    public APIRequestGetPublishedPosts requestIsExpiredField (boolean value) {
      this.requestField("is_expired", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestIsHiddenField () {
      return this.requestIsHiddenField(true);
    }
    public APIRequestGetPublishedPosts requestIsHiddenField (boolean value) {
      this.requestField("is_hidden", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestIsInstagramEligibleField () {
      return this.requestIsInstagramEligibleField(true);
    }
    public APIRequestGetPublishedPosts requestIsInstagramEligibleField (boolean value) {
      this.requestField("is_instagram_eligible", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestIsPopularField () {
      return this.requestIsPopularField(true);
    }
    public APIRequestGetPublishedPosts requestIsPopularField (boolean value) {
      this.requestField("is_popular", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetPublishedPosts requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestIsSphericalField () {
      return this.requestIsSphericalField(true);
    }
    public APIRequestGetPublishedPosts requestIsSphericalField (boolean value) {
      this.requestField("is_spherical", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetPublishedPosts requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestMessageField () {
      return this.requestMessageField(true);
    }
    public APIRequestGetPublishedPosts requestMessageField (boolean value) {
      this.requestField("message", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestMessageTagsField () {
      return this.requestMessageTagsField(true);
    }
    public APIRequestGetPublishedPosts requestMessageTagsField (boolean value) {
      this.requestField("message_tags", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestMultiShareEndCardField () {
      return this.requestMultiShareEndCardField(true);
    }
    public APIRequestGetPublishedPosts requestMultiShareEndCardField (boolean value) {
      this.requestField("multi_share_end_card", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestMultiShareOptimizedField () {
      return this.requestMultiShareOptimizedField(true);
    }
    public APIRequestGetPublishedPosts requestMultiShareOptimizedField (boolean value) {
      this.requestField("multi_share_optimized", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetPublishedPosts requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestObjectIdField () {
      return this.requestObjectIdField(true);
    }
    public APIRequestGetPublishedPosts requestObjectIdField (boolean value) {
      this.requestField("object_id", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestParentIdField () {
      return this.requestParentIdField(true);
    }
    public APIRequestGetPublishedPosts requestParentIdField (boolean value) {
      this.requestField("parent_id", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetPublishedPosts requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestPictureField () {
      return this.requestPictureField(true);
    }
    public APIRequestGetPublishedPosts requestPictureField (boolean value) {
      this.requestField("picture", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetPublishedPosts requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestPrivacyField () {
      return this.requestPrivacyField(true);
    }
    public APIRequestGetPublishedPosts requestPrivacyField (boolean value) {
      this.requestField("privacy", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestPromotableIdField () {
      return this.requestPromotableIdField(true);
    }
    public APIRequestGetPublishedPosts requestPromotableIdField (boolean value) {
      this.requestField("promotable_id", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestPromotionStatusField () {
      return this.requestPromotionStatusField(true);
    }
    public APIRequestGetPublishedPosts requestPromotionStatusField (boolean value) {
      this.requestField("promotion_status", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestPropertiesField () {
      return this.requestPropertiesField(true);
    }
    public APIRequestGetPublishedPosts requestPropertiesField (boolean value) {
      this.requestField("properties", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestScheduledPublishTimeField () {
      return this.requestScheduledPublishTimeField(true);
    }
    public APIRequestGetPublishedPosts requestScheduledPublishTimeField (boolean value) {
      this.requestField("scheduled_publish_time", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestSharesField () {
      return this.requestSharesField(true);
    }
    public APIRequestGetPublishedPosts requestSharesField (boolean value) {
      this.requestField("shares", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestSourceField () {
      return this.requestSourceField(true);
    }
    public APIRequestGetPublishedPosts requestSourceField (boolean value) {
      this.requestField("source", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestStatusTypeField () {
      return this.requestStatusTypeField(true);
    }
    public APIRequestGetPublishedPosts requestStatusTypeField (boolean value) {
      this.requestField("status_type", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestStoryField () {
      return this.requestStoryField(true);
    }
    public APIRequestGetPublishedPosts requestStoryField (boolean value) {
      this.requestField("story", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestStoryTagsField () {
      return this.requestStoryTagsField(true);
    }
    public APIRequestGetPublishedPosts requestStoryTagsField (boolean value) {
      this.requestField("story_tags", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestSubscribedField () {
      return this.requestSubscribedField(true);
    }
    public APIRequestGetPublishedPosts requestSubscribedField (boolean value) {
      this.requestField("subscribed", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestTargetField () {
      return this.requestTargetField(true);
    }
    public APIRequestGetPublishedPosts requestTargetField (boolean value) {
      this.requestField("target", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestTargetingField () {
      return this.requestTargetingField(true);
    }
    public APIRequestGetPublishedPosts requestTargetingField (boolean value) {
      this.requestField("targeting", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestTimelineVisibilityField () {
      return this.requestTimelineVisibilityField(true);
    }
    public APIRequestGetPublishedPosts requestTimelineVisibilityField (boolean value) {
      this.requestField("timeline_visibility", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestTypeField () {
      return this.requestTypeField(true);
    }
    public APIRequestGetPublishedPosts requestTypeField (boolean value) {
      this.requestField("type", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetPublishedPosts requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestViaField () {
      return this.requestViaField(true);
    }
    public APIRequestGetPublishedPosts requestViaField (boolean value) {
      this.requestField("via", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestVideoBuyingEligibilityField () {
      return this.requestVideoBuyingEligibilityField(true);
    }
    public APIRequestGetPublishedPosts requestVideoBuyingEligibilityField (boolean value) {
      this.requestField("video_buying_eligibility", value);
      return this;
    }
    public APIRequestGetPublishedPosts requestWidthField () {
      return this.requestWidthField(true);
    }
    public APIRequestGetPublishedPosts requestWidthField (boolean value) {
      this.requestField("width", value);
      return this;
    }
  }

  public static class APIRequestGetRatings extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "created_time",
      "has_rating",
      "has_review",
      "open_graph_story",
      "rating",
      "recommendation_type",
      "review_text",
      "reviewer",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Recommendation.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetRatings.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetRatings(String nodeId, APIContext context) {
      super(context, nodeId, "/ratings", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetRatings setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetRatings setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetRatings requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetRatings requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetRatings requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetRatings requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetRatings requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetRatings requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetRatings requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetRatings requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetRatings requestHasRatingField () {
      return this.requestHasRatingField(true);
    }
    public APIRequestGetRatings requestHasRatingField (boolean value) {
      this.requestField("has_rating", value);
      return this;
    }
    public APIRequestGetRatings requestHasReviewField () {
      return this.requestHasReviewField(true);
    }
    public APIRequestGetRatings requestHasReviewField (boolean value) {
      this.requestField("has_review", value);
      return this;
    }
    public APIRequestGetRatings requestOpenGraphStoryField () {
      return this.requestOpenGraphStoryField(true);
    }
    public APIRequestGetRatings requestOpenGraphStoryField (boolean value) {
      this.requestField("open_graph_story", value);
      return this;
    }
    public APIRequestGetRatings requestRatingField () {
      return this.requestRatingField(true);
    }
    public APIRequestGetRatings requestRatingField (boolean value) {
      this.requestField("rating", value);
      return this;
    }
    public APIRequestGetRatings requestRecommendationTypeField () {
      return this.requestRecommendationTypeField(true);
    }
    public APIRequestGetRatings requestRecommendationTypeField (boolean value) {
      this.requestField("recommendation_type", value);
      return this;
    }
    public APIRequestGetRatings requestReviewTextField () {
      return this.requestReviewTextField(true);
    }
    public APIRequestGetRatings requestReviewTextField (boolean value) {
      this.requestField("review_text", value);
      return this;
    }
    public APIRequestGetRatings requestReviewerField () {
      return this.requestReviewerField(true);
    }
    public APIRequestGetRatings requestReviewerField (boolean value) {
      this.requestField("reviewer", value);
      return this;
    }
  }

  public static class APIRequestCreateRequestThreadControl extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "recipient",
      "metadata",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateRequestThreadControl.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateRequestThreadControl(String nodeId, APIContext context) {
      super(context, nodeId, "/request_thread_control", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateRequestThreadControl setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateRequestThreadControl setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateRequestThreadControl setRecipient (Object recipient) {
      this.setParam("recipient", recipient);
      return this;
    }
    public APIRequestCreateRequestThreadControl setRecipient (String recipient) {
      this.setParam("recipient", recipient);
      return this;
    }

    public APIRequestCreateRequestThreadControl setMetadata (String metadata) {
      this.setParam("metadata", metadata);
      return this;
    }

    public APIRequestCreateRequestThreadControl requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateRequestThreadControl requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateRequestThreadControl requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateRequestThreadControl requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateRequestThreadControl requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateRequestThreadControl requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetRestaurantOrders extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "admin_note",
      "creation_time",
      "customer_name",
      "customer_phone_number",
      "id",
      "note",
      "order_details",
      "state",
      "update_time",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return FoodDrinkOrder.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetRestaurantOrders.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetRestaurantOrders(String nodeId, APIContext context) {
      super(context, nodeId, "/restaurant_orders", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetRestaurantOrders setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetRestaurantOrders setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetRestaurantOrders requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetRestaurantOrders requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetRestaurantOrders requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetRestaurantOrders requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetRestaurantOrders requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetRestaurantOrders requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetRestaurantOrders requestAdminNoteField () {
      return this.requestAdminNoteField(true);
    }
    public APIRequestGetRestaurantOrders requestAdminNoteField (boolean value) {
      this.requestField("admin_note", value);
      return this;
    }
    public APIRequestGetRestaurantOrders requestCreationTimeField () {
      return this.requestCreationTimeField(true);
    }
    public APIRequestGetRestaurantOrders requestCreationTimeField (boolean value) {
      this.requestField("creation_time", value);
      return this;
    }
    public APIRequestGetRestaurantOrders requestCustomerNameField () {
      return this.requestCustomerNameField(true);
    }
    public APIRequestGetRestaurantOrders requestCustomerNameField (boolean value) {
      this.requestField("customer_name", value);
      return this;
    }
    public APIRequestGetRestaurantOrders requestCustomerPhoneNumberField () {
      return this.requestCustomerPhoneNumberField(true);
    }
    public APIRequestGetRestaurantOrders requestCustomerPhoneNumberField (boolean value) {
      this.requestField("customer_phone_number", value);
      return this;
    }
    public APIRequestGetRestaurantOrders requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetRestaurantOrders requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetRestaurantOrders requestNoteField () {
      return this.requestNoteField(true);
    }
    public APIRequestGetRestaurantOrders requestNoteField (boolean value) {
      this.requestField("note", value);
      return this;
    }
    public APIRequestGetRestaurantOrders requestOrderDetailsField () {
      return this.requestOrderDetailsField(true);
    }
    public APIRequestGetRestaurantOrders requestOrderDetailsField (boolean value) {
      this.requestField("order_details", value);
      return this;
    }
    public APIRequestGetRestaurantOrders requestStateField () {
      return this.requestStateField(true);
    }
    public APIRequestGetRestaurantOrders requestStateField (boolean value) {
      this.requestField("state", value);
      return this;
    }
    public APIRequestGetRestaurantOrders requestUpdateTimeField () {
      return this.requestUpdateTimeField(true);
    }
    public APIRequestGetRestaurantOrders requestUpdateTimeField (boolean value) {
      this.requestField("update_time", value);
      return this;
    }
  }

  public static class APIRequestGetRoles extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "uid",
      "include_deactivated",
    };

    public static final String[] FIELDS = {
      "about",
      "address",
      "admin_notes",
      "age_range",
      "birthday",
      "can_review_measurement_request",
      "context",
      "cover",
      "currency",
      "devices",
      "education",
      "email",
      "employee_number",
      "favorite_athletes",
      "favorite_teams",
      "first_name",
      "gender",
      "hometown",
      "id",
      "inspirational_people",
      "install_type",
      "installed",
      "interested_in",
      "is_famedeeplinkinguser",
      "is_shared_login",
      "is_verified",
      "labels",
      "languages",
      "last_name",
      "link",
      "local_news_megaphone_dismiss_status",
      "local_news_subscription_status",
      "locale",
      "location",
      "meeting_for",
      "middle_name",
      "name",
      "name_format",
      "payment_pricepoints",
      "political",
      "profile_pic",
      "public_key",
      "quotes",
      "relationship_status",
      "religion",
      "security_settings",
      "shared_login_upgrade_required_by",
      "short_name",
      "significant_other",
      "sports",
      "test_group",
      "third_party_id",
      "timezone",
      "token_for_business",
      "updated_time",
      "verified",
      "video_upload_limits",
      "viewer_can_send_gift",
      "website",
      "work",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return User.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetRoles.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetRoles(String nodeId, APIContext context) {
      super(context, nodeId, "/roles", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetRoles setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetRoles setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetRoles setUid (Object uid) {
      this.setParam("uid", uid);
      return this;
    }
    public APIRequestGetRoles setUid (String uid) {
      this.setParam("uid", uid);
      return this;
    }

    public APIRequestGetRoles setIncludeDeactivated (Boolean includeDeactivated) {
      this.setParam("include_deactivated", includeDeactivated);
      return this;
    }
    public APIRequestGetRoles setIncludeDeactivated (String includeDeactivated) {
      this.setParam("include_deactivated", includeDeactivated);
      return this;
    }

    public APIRequestGetRoles requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetRoles requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetRoles requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetRoles requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetRoles requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetRoles requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetRoles requestAboutField () {
      return this.requestAboutField(true);
    }
    public APIRequestGetRoles requestAboutField (boolean value) {
      this.requestField("about", value);
      return this;
    }
    public APIRequestGetRoles requestAddressField () {
      return this.requestAddressField(true);
    }
    public APIRequestGetRoles requestAddressField (boolean value) {
      this.requestField("address", value);
      return this;
    }
    public APIRequestGetRoles requestAdminNotesField () {
      return this.requestAdminNotesField(true);
    }
    public APIRequestGetRoles requestAdminNotesField (boolean value) {
      this.requestField("admin_notes", value);
      return this;
    }
    public APIRequestGetRoles requestAgeRangeField () {
      return this.requestAgeRangeField(true);
    }
    public APIRequestGetRoles requestAgeRangeField (boolean value) {
      this.requestField("age_range", value);
      return this;
    }
    public APIRequestGetRoles requestBirthdayField () {
      return this.requestBirthdayField(true);
    }
    public APIRequestGetRoles requestBirthdayField (boolean value) {
      this.requestField("birthday", value);
      return this;
    }
    public APIRequestGetRoles requestCanReviewMeasurementRequestField () {
      return this.requestCanReviewMeasurementRequestField(true);
    }
    public APIRequestGetRoles requestCanReviewMeasurementRequestField (boolean value) {
      this.requestField("can_review_measurement_request", value);
      return this;
    }
    public APIRequestGetRoles requestContextField () {
      return this.requestContextField(true);
    }
    public APIRequestGetRoles requestContextField (boolean value) {
      this.requestField("context", value);
      return this;
    }
    public APIRequestGetRoles requestCoverField () {
      return this.requestCoverField(true);
    }
    public APIRequestGetRoles requestCoverField (boolean value) {
      this.requestField("cover", value);
      return this;
    }
    public APIRequestGetRoles requestCurrencyField () {
      return this.requestCurrencyField(true);
    }
    public APIRequestGetRoles requestCurrencyField (boolean value) {
      this.requestField("currency", value);
      return this;
    }
    public APIRequestGetRoles requestDevicesField () {
      return this.requestDevicesField(true);
    }
    public APIRequestGetRoles requestDevicesField (boolean value) {
      this.requestField("devices", value);
      return this;
    }
    public APIRequestGetRoles requestEducationField () {
      return this.requestEducationField(true);
    }
    public APIRequestGetRoles requestEducationField (boolean value) {
      this.requestField("education", value);
      return this;
    }
    public APIRequestGetRoles requestEmailField () {
      return this.requestEmailField(true);
    }
    public APIRequestGetRoles requestEmailField (boolean value) {
      this.requestField("email", value);
      return this;
    }
    public APIRequestGetRoles requestEmployeeNumberField () {
      return this.requestEmployeeNumberField(true);
    }
    public APIRequestGetRoles requestEmployeeNumberField (boolean value) {
      this.requestField("employee_number", value);
      return this;
    }
    public APIRequestGetRoles requestFavoriteAthletesField () {
      return this.requestFavoriteAthletesField(true);
    }
    public APIRequestGetRoles requestFavoriteAthletesField (boolean value) {
      this.requestField("favorite_athletes", value);
      return this;
    }
    public APIRequestGetRoles requestFavoriteTeamsField () {
      return this.requestFavoriteTeamsField(true);
    }
    public APIRequestGetRoles requestFavoriteTeamsField (boolean value) {
      this.requestField("favorite_teams", value);
      return this;
    }
    public APIRequestGetRoles requestFirstNameField () {
      return this.requestFirstNameField(true);
    }
    public APIRequestGetRoles requestFirstNameField (boolean value) {
      this.requestField("first_name", value);
      return this;
    }
    public APIRequestGetRoles requestGenderField () {
      return this.requestGenderField(true);
    }
    public APIRequestGetRoles requestGenderField (boolean value) {
      this.requestField("gender", value);
      return this;
    }
    public APIRequestGetRoles requestHometownField () {
      return this.requestHometownField(true);
    }
    public APIRequestGetRoles requestHometownField (boolean value) {
      this.requestField("hometown", value);
      return this;
    }
    public APIRequestGetRoles requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetRoles requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetRoles requestInspirationalPeopleField () {
      return this.requestInspirationalPeopleField(true);
    }
    public APIRequestGetRoles requestInspirationalPeopleField (boolean value) {
      this.requestField("inspirational_people", value);
      return this;
    }
    public APIRequestGetRoles requestInstallTypeField () {
      return this.requestInstallTypeField(true);
    }
    public APIRequestGetRoles requestInstallTypeField (boolean value) {
      this.requestField("install_type", value);
      return this;
    }
    public APIRequestGetRoles requestInstalledField () {
      return this.requestInstalledField(true);
    }
    public APIRequestGetRoles requestInstalledField (boolean value) {
      this.requestField("installed", value);
      return this;
    }
    public APIRequestGetRoles requestInterestedInField () {
      return this.requestInterestedInField(true);
    }
    public APIRequestGetRoles requestInterestedInField (boolean value) {
      this.requestField("interested_in", value);
      return this;
    }
    public APIRequestGetRoles requestIsFamedeeplinkinguserField () {
      return this.requestIsFamedeeplinkinguserField(true);
    }
    public APIRequestGetRoles requestIsFamedeeplinkinguserField (boolean value) {
      this.requestField("is_famedeeplinkinguser", value);
      return this;
    }
    public APIRequestGetRoles requestIsSharedLoginField () {
      return this.requestIsSharedLoginField(true);
    }
    public APIRequestGetRoles requestIsSharedLoginField (boolean value) {
      this.requestField("is_shared_login", value);
      return this;
    }
    public APIRequestGetRoles requestIsVerifiedField () {
      return this.requestIsVerifiedField(true);
    }
    public APIRequestGetRoles requestIsVerifiedField (boolean value) {
      this.requestField("is_verified", value);
      return this;
    }
    public APIRequestGetRoles requestLabelsField () {
      return this.requestLabelsField(true);
    }
    public APIRequestGetRoles requestLabelsField (boolean value) {
      this.requestField("labels", value);
      return this;
    }
    public APIRequestGetRoles requestLanguagesField () {
      return this.requestLanguagesField(true);
    }
    public APIRequestGetRoles requestLanguagesField (boolean value) {
      this.requestField("languages", value);
      return this;
    }
    public APIRequestGetRoles requestLastNameField () {
      return this.requestLastNameField(true);
    }
    public APIRequestGetRoles requestLastNameField (boolean value) {
      this.requestField("last_name", value);
      return this;
    }
    public APIRequestGetRoles requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetRoles requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetRoles requestLocalNewsMegaphoneDismissStatusField () {
      return this.requestLocalNewsMegaphoneDismissStatusField(true);
    }
    public APIRequestGetRoles requestLocalNewsMegaphoneDismissStatusField (boolean value) {
      this.requestField("local_news_megaphone_dismiss_status", value);
      return this;
    }
    public APIRequestGetRoles requestLocalNewsSubscriptionStatusField () {
      return this.requestLocalNewsSubscriptionStatusField(true);
    }
    public APIRequestGetRoles requestLocalNewsSubscriptionStatusField (boolean value) {
      this.requestField("local_news_subscription_status", value);
      return this;
    }
    public APIRequestGetRoles requestLocaleField () {
      return this.requestLocaleField(true);
    }
    public APIRequestGetRoles requestLocaleField (boolean value) {
      this.requestField("locale", value);
      return this;
    }
    public APIRequestGetRoles requestLocationField () {
      return this.requestLocationField(true);
    }
    public APIRequestGetRoles requestLocationField (boolean value) {
      this.requestField("location", value);
      return this;
    }
    public APIRequestGetRoles requestMeetingForField () {
      return this.requestMeetingForField(true);
    }
    public APIRequestGetRoles requestMeetingForField (boolean value) {
      this.requestField("meeting_for", value);
      return this;
    }
    public APIRequestGetRoles requestMiddleNameField () {
      return this.requestMiddleNameField(true);
    }
    public APIRequestGetRoles requestMiddleNameField (boolean value) {
      this.requestField("middle_name", value);
      return this;
    }
    public APIRequestGetRoles requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetRoles requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetRoles requestNameFormatField () {
      return this.requestNameFormatField(true);
    }
    public APIRequestGetRoles requestNameFormatField (boolean value) {
      this.requestField("name_format", value);
      return this;
    }
    public APIRequestGetRoles requestPaymentPricepointsField () {
      return this.requestPaymentPricepointsField(true);
    }
    public APIRequestGetRoles requestPaymentPricepointsField (boolean value) {
      this.requestField("payment_pricepoints", value);
      return this;
    }
    public APIRequestGetRoles requestPoliticalField () {
      return this.requestPoliticalField(true);
    }
    public APIRequestGetRoles requestPoliticalField (boolean value) {
      this.requestField("political", value);
      return this;
    }
    public APIRequestGetRoles requestProfilePicField () {
      return this.requestProfilePicField(true);
    }
    public APIRequestGetRoles requestProfilePicField (boolean value) {
      this.requestField("profile_pic", value);
      return this;
    }
    public APIRequestGetRoles requestPublicKeyField () {
      return this.requestPublicKeyField(true);
    }
    public APIRequestGetRoles requestPublicKeyField (boolean value) {
      this.requestField("public_key", value);
      return this;
    }
    public APIRequestGetRoles requestQuotesField () {
      return this.requestQuotesField(true);
    }
    public APIRequestGetRoles requestQuotesField (boolean value) {
      this.requestField("quotes", value);
      return this;
    }
    public APIRequestGetRoles requestRelationshipStatusField () {
      return this.requestRelationshipStatusField(true);
    }
    public APIRequestGetRoles requestRelationshipStatusField (boolean value) {
      this.requestField("relationship_status", value);
      return this;
    }
    public APIRequestGetRoles requestReligionField () {
      return this.requestReligionField(true);
    }
    public APIRequestGetRoles requestReligionField (boolean value) {
      this.requestField("religion", value);
      return this;
    }
    public APIRequestGetRoles requestSecuritySettingsField () {
      return this.requestSecuritySettingsField(true);
    }
    public APIRequestGetRoles requestSecuritySettingsField (boolean value) {
      this.requestField("security_settings", value);
      return this;
    }
    public APIRequestGetRoles requestSharedLoginUpgradeRequiredByField () {
      return this.requestSharedLoginUpgradeRequiredByField(true);
    }
    public APIRequestGetRoles requestSharedLoginUpgradeRequiredByField (boolean value) {
      this.requestField("shared_login_upgrade_required_by", value);
      return this;
    }
    public APIRequestGetRoles requestShortNameField () {
      return this.requestShortNameField(true);
    }
    public APIRequestGetRoles requestShortNameField (boolean value) {
      this.requestField("short_name", value);
      return this;
    }
    public APIRequestGetRoles requestSignificantOtherField () {
      return this.requestSignificantOtherField(true);
    }
    public APIRequestGetRoles requestSignificantOtherField (boolean value) {
      this.requestField("significant_other", value);
      return this;
    }
    public APIRequestGetRoles requestSportsField () {
      return this.requestSportsField(true);
    }
    public APIRequestGetRoles requestSportsField (boolean value) {
      this.requestField("sports", value);
      return this;
    }
    public APIRequestGetRoles requestTestGroupField () {
      return this.requestTestGroupField(true);
    }
    public APIRequestGetRoles requestTestGroupField (boolean value) {
      this.requestField("test_group", value);
      return this;
    }
    public APIRequestGetRoles requestThirdPartyIdField () {
      return this.requestThirdPartyIdField(true);
    }
    public APIRequestGetRoles requestThirdPartyIdField (boolean value) {
      this.requestField("third_party_id", value);
      return this;
    }
    public APIRequestGetRoles requestTimezoneField () {
      return this.requestTimezoneField(true);
    }
    public APIRequestGetRoles requestTimezoneField (boolean value) {
      this.requestField("timezone", value);
      return this;
    }
    public APIRequestGetRoles requestTokenForBusinessField () {
      return this.requestTokenForBusinessField(true);
    }
    public APIRequestGetRoles requestTokenForBusinessField (boolean value) {
      this.requestField("token_for_business", value);
      return this;
    }
    public APIRequestGetRoles requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetRoles requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetRoles requestVerifiedField () {
      return this.requestVerifiedField(true);
    }
    public APIRequestGetRoles requestVerifiedField (boolean value) {
      this.requestField("verified", value);
      return this;
    }
    public APIRequestGetRoles requestVideoUploadLimitsField () {
      return this.requestVideoUploadLimitsField(true);
    }
    public APIRequestGetRoles requestVideoUploadLimitsField (boolean value) {
      this.requestField("video_upload_limits", value);
      return this;
    }
    public APIRequestGetRoles requestViewerCanSendGiftField () {
      return this.requestViewerCanSendGiftField(true);
    }
    public APIRequestGetRoles requestViewerCanSendGiftField (boolean value) {
      this.requestField("viewer_can_send_gift", value);
      return this;
    }
    public APIRequestGetRoles requestWebsiteField () {
      return this.requestWebsiteField(true);
    }
    public APIRequestGetRoles requestWebsiteField (boolean value) {
      this.requestField("website", value);
      return this;
    }
    public APIRequestGetRoles requestWorkField () {
      return this.requestWorkField(true);
    }
    public APIRequestGetRoles requestWorkField (boolean value) {
      this.requestField("work", value);
      return this;
    }
  }

  public static class APIRequestGetRtbDynamicPosts extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "child_attachments",
      "created",
      "description",
      "id",
      "image_url",
      "link",
      "message",
      "owner_id",
      "place_id",
      "product_id",
      "title",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return RTBDynamicPost.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetRtbDynamicPosts.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetRtbDynamicPosts(String nodeId, APIContext context) {
      super(context, nodeId, "/rtb_dynamic_posts", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetRtbDynamicPosts setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetRtbDynamicPosts setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetRtbDynamicPosts requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetRtbDynamicPosts requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetRtbDynamicPosts requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetRtbDynamicPosts requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetRtbDynamicPosts requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetRtbDynamicPosts requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetRtbDynamicPosts requestChildAttachmentsField () {
      return this.requestChildAttachmentsField(true);
    }
    public APIRequestGetRtbDynamicPosts requestChildAttachmentsField (boolean value) {
      this.requestField("child_attachments", value);
      return this;
    }
    public APIRequestGetRtbDynamicPosts requestCreatedField () {
      return this.requestCreatedField(true);
    }
    public APIRequestGetRtbDynamicPosts requestCreatedField (boolean value) {
      this.requestField("created", value);
      return this;
    }
    public APIRequestGetRtbDynamicPosts requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetRtbDynamicPosts requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetRtbDynamicPosts requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetRtbDynamicPosts requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetRtbDynamicPosts requestImageUrlField () {
      return this.requestImageUrlField(true);
    }
    public APIRequestGetRtbDynamicPosts requestImageUrlField (boolean value) {
      this.requestField("image_url", value);
      return this;
    }
    public APIRequestGetRtbDynamicPosts requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetRtbDynamicPosts requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetRtbDynamicPosts requestMessageField () {
      return this.requestMessageField(true);
    }
    public APIRequestGetRtbDynamicPosts requestMessageField (boolean value) {
      this.requestField("message", value);
      return this;
    }
    public APIRequestGetRtbDynamicPosts requestOwnerIdField () {
      return this.requestOwnerIdField(true);
    }
    public APIRequestGetRtbDynamicPosts requestOwnerIdField (boolean value) {
      this.requestField("owner_id", value);
      return this;
    }
    public APIRequestGetRtbDynamicPosts requestPlaceIdField () {
      return this.requestPlaceIdField(true);
    }
    public APIRequestGetRtbDynamicPosts requestPlaceIdField (boolean value) {
      this.requestField("place_id", value);
      return this;
    }
    public APIRequestGetRtbDynamicPosts requestProductIdField () {
      return this.requestProductIdField(true);
    }
    public APIRequestGetRtbDynamicPosts requestProductIdField (boolean value) {
      this.requestField("product_id", value);
      return this;
    }
    public APIRequestGetRtbDynamicPosts requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetRtbDynamicPosts requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
  }

  public static class APIRequestGetSavedFilters extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "section",
    };

    public static final String[] FIELDS = {
      "display_name",
      "filters",
      "id",
      "page_id",
      "section",
      "time_created",
      "time_updated",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PageSavedFilter.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetSavedFilters.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetSavedFilters(String nodeId, APIContext context) {
      super(context, nodeId, "/saved_filters", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetSavedFilters setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetSavedFilters setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetSavedFilters setSection (PageSavedFilter.EnumSection section) {
      this.setParam("section", section);
      return this;
    }
    public APIRequestGetSavedFilters setSection (String section) {
      this.setParam("section", section);
      return this;
    }

    public APIRequestGetSavedFilters requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetSavedFilters requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetSavedFilters requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetSavedFilters requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetSavedFilters requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetSavedFilters requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetSavedFilters requestDisplayNameField () {
      return this.requestDisplayNameField(true);
    }
    public APIRequestGetSavedFilters requestDisplayNameField (boolean value) {
      this.requestField("display_name", value);
      return this;
    }
    public APIRequestGetSavedFilters requestFiltersField () {
      return this.requestFiltersField(true);
    }
    public APIRequestGetSavedFilters requestFiltersField (boolean value) {
      this.requestField("filters", value);
      return this;
    }
    public APIRequestGetSavedFilters requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetSavedFilters requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetSavedFilters requestPageIdField () {
      return this.requestPageIdField(true);
    }
    public APIRequestGetSavedFilters requestPageIdField (boolean value) {
      this.requestField("page_id", value);
      return this;
    }
    public APIRequestGetSavedFilters requestSectionField () {
      return this.requestSectionField(true);
    }
    public APIRequestGetSavedFilters requestSectionField (boolean value) {
      this.requestField("section", value);
      return this;
    }
    public APIRequestGetSavedFilters requestTimeCreatedField () {
      return this.requestTimeCreatedField(true);
    }
    public APIRequestGetSavedFilters requestTimeCreatedField (boolean value) {
      this.requestField("time_created", value);
      return this;
    }
    public APIRequestGetSavedFilters requestTimeUpdatedField () {
      return this.requestTimeUpdatedField(true);
    }
    public APIRequestGetSavedFilters requestTimeUpdatedField (boolean value) {
      this.requestField("time_updated", value);
      return this;
    }
  }

  public static class APIRequestCreateSavedFilter extends APIRequest {

    PageSavedFilter lastResponse = null;
    @Override
    public PageSavedFilter getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "display_name",
      "section",
      "filters",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public PageSavedFilter parseResponse(String response, String header) throws APIException {
      return PageSavedFilter.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public PageSavedFilter execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public PageSavedFilter execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public PageSavedFilter apply(ResponseWrapper result) {
             try {
               return APIRequestCreateSavedFilter.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateSavedFilter(String nodeId, APIContext context) {
      super(context, nodeId, "/saved_filters", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateSavedFilter setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateSavedFilter setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateSavedFilter setDisplayName (String displayName) {
      this.setParam("display_name", displayName);
      return this;
    }

    public APIRequestCreateSavedFilter setSection (PageSavedFilter.EnumSection section) {
      this.setParam("section", section);
      return this;
    }
    public APIRequestCreateSavedFilter setSection (String section) {
      this.setParam("section", section);
      return this;
    }

    public APIRequestCreateSavedFilter setFilters (List filters) {
      this.setParam("filters", filters);
      return this;
    }
    public APIRequestCreateSavedFilter setFilters (String filters) {
      this.setParam("filters", filters);
      return this;
    }

    public APIRequestCreateSavedFilter requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateSavedFilter requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateSavedFilter requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateSavedFilter requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateSavedFilter requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateSavedFilter requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetSavedMessageResponses extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "category",
      "id",
      "image",
      "is_enabled",
      "message",
      "title",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return SavedMessageResponse.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetSavedMessageResponses.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetSavedMessageResponses(String nodeId, APIContext context) {
      super(context, nodeId, "/saved_message_responses", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetSavedMessageResponses setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetSavedMessageResponses setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetSavedMessageResponses requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetSavedMessageResponses requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetSavedMessageResponses requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetSavedMessageResponses requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetSavedMessageResponses requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetSavedMessageResponses requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetSavedMessageResponses requestCategoryField () {
      return this.requestCategoryField(true);
    }
    public APIRequestGetSavedMessageResponses requestCategoryField (boolean value) {
      this.requestField("category", value);
      return this;
    }
    public APIRequestGetSavedMessageResponses requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetSavedMessageResponses requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetSavedMessageResponses requestImageField () {
      return this.requestImageField(true);
    }
    public APIRequestGetSavedMessageResponses requestImageField (boolean value) {
      this.requestField("image", value);
      return this;
    }
    public APIRequestGetSavedMessageResponses requestIsEnabledField () {
      return this.requestIsEnabledField(true);
    }
    public APIRequestGetSavedMessageResponses requestIsEnabledField (boolean value) {
      this.requestField("is_enabled", value);
      return this;
    }
    public APIRequestGetSavedMessageResponses requestMessageField () {
      return this.requestMessageField(true);
    }
    public APIRequestGetSavedMessageResponses requestMessageField (boolean value) {
      this.requestField("message", value);
      return this;
    }
    public APIRequestGetSavedMessageResponses requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetSavedMessageResponses requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
  }

  public static class APIRequestCreateSavedMessageResponse extends APIRequest {

    SavedMessageResponse lastResponse = null;
    @Override
    public SavedMessageResponse getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "message",
      "category",
      "is_enabled",
      "title",
      "image",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public SavedMessageResponse parseResponse(String response, String header) throws APIException {
      return SavedMessageResponse.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public SavedMessageResponse execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public SavedMessageResponse execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public SavedMessageResponse apply(ResponseWrapper result) {
             try {
               return APIRequestCreateSavedMessageResponse.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateSavedMessageResponse(String nodeId, APIContext context) {
      super(context, nodeId, "/saved_message_responses", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateSavedMessageResponse setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateSavedMessageResponse setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateSavedMessageResponse setMessage (String message) {
      this.setParam("message", message);
      return this;
    }

    public APIRequestCreateSavedMessageResponse setCategory (SavedMessageResponse.EnumCategory category) {
      this.setParam("category", category);
      return this;
    }
    public APIRequestCreateSavedMessageResponse setCategory (String category) {
      this.setParam("category", category);
      return this;
    }

    public APIRequestCreateSavedMessageResponse setIsEnabled (Boolean isEnabled) {
      this.setParam("is_enabled", isEnabled);
      return this;
    }
    public APIRequestCreateSavedMessageResponse setIsEnabled (String isEnabled) {
      this.setParam("is_enabled", isEnabled);
      return this;
    }

    public APIRequestCreateSavedMessageResponse setTitle (String title) {
      this.setParam("title", title);
      return this;
    }

    public APIRequestCreateSavedMessageResponse setImage (String image) {
      this.setParam("image", image);
      return this;
    }

    public APIRequestCreateSavedMessageResponse requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateSavedMessageResponse requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateSavedMessageResponse requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateSavedMessageResponse requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateSavedMessageResponse requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateSavedMessageResponse requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetScheduledPosts extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "actions",
      "admin_creator",
      "allowed_advertising_objectives",
      "application",
      "backdated_time",
      "call_to_action",
      "can_reply_privately",
      "caption",
      "child_attachments",
      "comments_mirroring_domain",
      "coordinates",
      "created_time",
      "description",
      "event",
      "expanded_height",
      "expanded_width",
      "feed_targeting",
      "from",
      "full_picture",
      "height",
      "icon",
      "id",
      "instagram_eligibility",
      "is_app_share",
      "is_expired",
      "is_hidden",
      "is_instagram_eligible",
      "is_popular",
      "is_published",
      "is_spherical",
      "link",
      "message",
      "message_tags",
      "multi_share_end_card",
      "multi_share_optimized",
      "name",
      "object_id",
      "parent_id",
      "permalink_url",
      "picture",
      "place",
      "privacy",
      "promotable_id",
      "promotion_status",
      "properties",
      "scheduled_publish_time",
      "shares",
      "source",
      "status_type",
      "story",
      "story_tags",
      "subscribed",
      "target",
      "targeting",
      "timeline_visibility",
      "type",
      "updated_time",
      "via",
      "video_buying_eligibility",
      "width",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PagePost.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetScheduledPosts.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetScheduledPosts(String nodeId, APIContext context) {
      super(context, nodeId, "/scheduled_posts", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetScheduledPosts setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetScheduledPosts setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetScheduledPosts requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetScheduledPosts requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetScheduledPosts requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetScheduledPosts requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetScheduledPosts requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetScheduledPosts requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetScheduledPosts requestActionsField () {
      return this.requestActionsField(true);
    }
    public APIRequestGetScheduledPosts requestActionsField (boolean value) {
      this.requestField("actions", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestAdminCreatorField () {
      return this.requestAdminCreatorField(true);
    }
    public APIRequestGetScheduledPosts requestAdminCreatorField (boolean value) {
      this.requestField("admin_creator", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestAllowedAdvertisingObjectivesField () {
      return this.requestAllowedAdvertisingObjectivesField(true);
    }
    public APIRequestGetScheduledPosts requestAllowedAdvertisingObjectivesField (boolean value) {
      this.requestField("allowed_advertising_objectives", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestApplicationField () {
      return this.requestApplicationField(true);
    }
    public APIRequestGetScheduledPosts requestApplicationField (boolean value) {
      this.requestField("application", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestBackdatedTimeField () {
      return this.requestBackdatedTimeField(true);
    }
    public APIRequestGetScheduledPosts requestBackdatedTimeField (boolean value) {
      this.requestField("backdated_time", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestCallToActionField () {
      return this.requestCallToActionField(true);
    }
    public APIRequestGetScheduledPosts requestCallToActionField (boolean value) {
      this.requestField("call_to_action", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestCanReplyPrivatelyField () {
      return this.requestCanReplyPrivatelyField(true);
    }
    public APIRequestGetScheduledPosts requestCanReplyPrivatelyField (boolean value) {
      this.requestField("can_reply_privately", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestCaptionField () {
      return this.requestCaptionField(true);
    }
    public APIRequestGetScheduledPosts requestCaptionField (boolean value) {
      this.requestField("caption", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestChildAttachmentsField () {
      return this.requestChildAttachmentsField(true);
    }
    public APIRequestGetScheduledPosts requestChildAttachmentsField (boolean value) {
      this.requestField("child_attachments", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestCommentsMirroringDomainField () {
      return this.requestCommentsMirroringDomainField(true);
    }
    public APIRequestGetScheduledPosts requestCommentsMirroringDomainField (boolean value) {
      this.requestField("comments_mirroring_domain", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestCoordinatesField () {
      return this.requestCoordinatesField(true);
    }
    public APIRequestGetScheduledPosts requestCoordinatesField (boolean value) {
      this.requestField("coordinates", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetScheduledPosts requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetScheduledPosts requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestEventField () {
      return this.requestEventField(true);
    }
    public APIRequestGetScheduledPosts requestEventField (boolean value) {
      this.requestField("event", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestExpandedHeightField () {
      return this.requestExpandedHeightField(true);
    }
    public APIRequestGetScheduledPosts requestExpandedHeightField (boolean value) {
      this.requestField("expanded_height", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestExpandedWidthField () {
      return this.requestExpandedWidthField(true);
    }
    public APIRequestGetScheduledPosts requestExpandedWidthField (boolean value) {
      this.requestField("expanded_width", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestFeedTargetingField () {
      return this.requestFeedTargetingField(true);
    }
    public APIRequestGetScheduledPosts requestFeedTargetingField (boolean value) {
      this.requestField("feed_targeting", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetScheduledPosts requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestFullPictureField () {
      return this.requestFullPictureField(true);
    }
    public APIRequestGetScheduledPosts requestFullPictureField (boolean value) {
      this.requestField("full_picture", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestHeightField () {
      return this.requestHeightField(true);
    }
    public APIRequestGetScheduledPosts requestHeightField (boolean value) {
      this.requestField("height", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestIconField () {
      return this.requestIconField(true);
    }
    public APIRequestGetScheduledPosts requestIconField (boolean value) {
      this.requestField("icon", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetScheduledPosts requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestInstagramEligibilityField () {
      return this.requestInstagramEligibilityField(true);
    }
    public APIRequestGetScheduledPosts requestInstagramEligibilityField (boolean value) {
      this.requestField("instagram_eligibility", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestIsAppShareField () {
      return this.requestIsAppShareField(true);
    }
    public APIRequestGetScheduledPosts requestIsAppShareField (boolean value) {
      this.requestField("is_app_share", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestIsExpiredField () {
      return this.requestIsExpiredField(true);
    }
    public APIRequestGetScheduledPosts requestIsExpiredField (boolean value) {
      this.requestField("is_expired", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestIsHiddenField () {
      return this.requestIsHiddenField(true);
    }
    public APIRequestGetScheduledPosts requestIsHiddenField (boolean value) {
      this.requestField("is_hidden", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestIsInstagramEligibleField () {
      return this.requestIsInstagramEligibleField(true);
    }
    public APIRequestGetScheduledPosts requestIsInstagramEligibleField (boolean value) {
      this.requestField("is_instagram_eligible", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestIsPopularField () {
      return this.requestIsPopularField(true);
    }
    public APIRequestGetScheduledPosts requestIsPopularField (boolean value) {
      this.requestField("is_popular", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetScheduledPosts requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestIsSphericalField () {
      return this.requestIsSphericalField(true);
    }
    public APIRequestGetScheduledPosts requestIsSphericalField (boolean value) {
      this.requestField("is_spherical", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetScheduledPosts requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestMessageField () {
      return this.requestMessageField(true);
    }
    public APIRequestGetScheduledPosts requestMessageField (boolean value) {
      this.requestField("message", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestMessageTagsField () {
      return this.requestMessageTagsField(true);
    }
    public APIRequestGetScheduledPosts requestMessageTagsField (boolean value) {
      this.requestField("message_tags", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestMultiShareEndCardField () {
      return this.requestMultiShareEndCardField(true);
    }
    public APIRequestGetScheduledPosts requestMultiShareEndCardField (boolean value) {
      this.requestField("multi_share_end_card", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestMultiShareOptimizedField () {
      return this.requestMultiShareOptimizedField(true);
    }
    public APIRequestGetScheduledPosts requestMultiShareOptimizedField (boolean value) {
      this.requestField("multi_share_optimized", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetScheduledPosts requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestObjectIdField () {
      return this.requestObjectIdField(true);
    }
    public APIRequestGetScheduledPosts requestObjectIdField (boolean value) {
      this.requestField("object_id", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestParentIdField () {
      return this.requestParentIdField(true);
    }
    public APIRequestGetScheduledPosts requestParentIdField (boolean value) {
      this.requestField("parent_id", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetScheduledPosts requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestPictureField () {
      return this.requestPictureField(true);
    }
    public APIRequestGetScheduledPosts requestPictureField (boolean value) {
      this.requestField("picture", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetScheduledPosts requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestPrivacyField () {
      return this.requestPrivacyField(true);
    }
    public APIRequestGetScheduledPosts requestPrivacyField (boolean value) {
      this.requestField("privacy", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestPromotableIdField () {
      return this.requestPromotableIdField(true);
    }
    public APIRequestGetScheduledPosts requestPromotableIdField (boolean value) {
      this.requestField("promotable_id", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestPromotionStatusField () {
      return this.requestPromotionStatusField(true);
    }
    public APIRequestGetScheduledPosts requestPromotionStatusField (boolean value) {
      this.requestField("promotion_status", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestPropertiesField () {
      return this.requestPropertiesField(true);
    }
    public APIRequestGetScheduledPosts requestPropertiesField (boolean value) {
      this.requestField("properties", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestScheduledPublishTimeField () {
      return this.requestScheduledPublishTimeField(true);
    }
    public APIRequestGetScheduledPosts requestScheduledPublishTimeField (boolean value) {
      this.requestField("scheduled_publish_time", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestSharesField () {
      return this.requestSharesField(true);
    }
    public APIRequestGetScheduledPosts requestSharesField (boolean value) {
      this.requestField("shares", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestSourceField () {
      return this.requestSourceField(true);
    }
    public APIRequestGetScheduledPosts requestSourceField (boolean value) {
      this.requestField("source", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestStatusTypeField () {
      return this.requestStatusTypeField(true);
    }
    public APIRequestGetScheduledPosts requestStatusTypeField (boolean value) {
      this.requestField("status_type", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestStoryField () {
      return this.requestStoryField(true);
    }
    public APIRequestGetScheduledPosts requestStoryField (boolean value) {
      this.requestField("story", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestStoryTagsField () {
      return this.requestStoryTagsField(true);
    }
    public APIRequestGetScheduledPosts requestStoryTagsField (boolean value) {
      this.requestField("story_tags", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestSubscribedField () {
      return this.requestSubscribedField(true);
    }
    public APIRequestGetScheduledPosts requestSubscribedField (boolean value) {
      this.requestField("subscribed", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestTargetField () {
      return this.requestTargetField(true);
    }
    public APIRequestGetScheduledPosts requestTargetField (boolean value) {
      this.requestField("target", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestTargetingField () {
      return this.requestTargetingField(true);
    }
    public APIRequestGetScheduledPosts requestTargetingField (boolean value) {
      this.requestField("targeting", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestTimelineVisibilityField () {
      return this.requestTimelineVisibilityField(true);
    }
    public APIRequestGetScheduledPosts requestTimelineVisibilityField (boolean value) {
      this.requestField("timeline_visibility", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestTypeField () {
      return this.requestTypeField(true);
    }
    public APIRequestGetScheduledPosts requestTypeField (boolean value) {
      this.requestField("type", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetScheduledPosts requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestViaField () {
      return this.requestViaField(true);
    }
    public APIRequestGetScheduledPosts requestViaField (boolean value) {
      this.requestField("via", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestVideoBuyingEligibilityField () {
      return this.requestVideoBuyingEligibilityField(true);
    }
    public APIRequestGetScheduledPosts requestVideoBuyingEligibilityField (boolean value) {
      this.requestField("video_buying_eligibility", value);
      return this;
    }
    public APIRequestGetScheduledPosts requestWidthField () {
      return this.requestWidthField(true);
    }
    public APIRequestGetScheduledPosts requestWidthField (boolean value) {
      this.requestField("width", value);
      return this;
    }
  }

  public static class APIRequestGetScreenNames extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "service_name",
      "service_type",
      "value",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return ScreenName.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetScreenNames.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetScreenNames(String nodeId, APIContext context) {
      super(context, nodeId, "/screennames", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetScreenNames setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetScreenNames setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetScreenNames requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetScreenNames requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetScreenNames requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetScreenNames requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetScreenNames requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetScreenNames requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetScreenNames requestServiceNameField () {
      return this.requestServiceNameField(true);
    }
    public APIRequestGetScreenNames requestServiceNameField (boolean value) {
      this.requestField("service_name", value);
      return this;
    }
    public APIRequestGetScreenNames requestServiceTypeField () {
      return this.requestServiceTypeField(true);
    }
    public APIRequestGetScreenNames requestServiceTypeField (boolean value) {
      this.requestField("service_type", value);
      return this;
    }
    public APIRequestGetScreenNames requestValueField () {
      return this.requestValueField(true);
    }
    public APIRequestGetScreenNames requestValueField (boolean value) {
      this.requestField("value", value);
      return this;
    }
  }

  public static class APIRequestGetSeasons extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "creation_time",
      "description",
      "id",
      "last_modified",
      "owner",
      "season_number",
      "thumbnail",
      "title",
      "videos_count",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return VideoList.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetSeasons.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetSeasons(String nodeId, APIContext context) {
      super(context, nodeId, "/seasons", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetSeasons setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetSeasons setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetSeasons requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetSeasons requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetSeasons requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetSeasons requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetSeasons requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetSeasons requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetSeasons requestCreationTimeField () {
      return this.requestCreationTimeField(true);
    }
    public APIRequestGetSeasons requestCreationTimeField (boolean value) {
      this.requestField("creation_time", value);
      return this;
    }
    public APIRequestGetSeasons requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetSeasons requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetSeasons requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetSeasons requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetSeasons requestLastModifiedField () {
      return this.requestLastModifiedField(true);
    }
    public APIRequestGetSeasons requestLastModifiedField (boolean value) {
      this.requestField("last_modified", value);
      return this;
    }
    public APIRequestGetSeasons requestOwnerField () {
      return this.requestOwnerField(true);
    }
    public APIRequestGetSeasons requestOwnerField (boolean value) {
      this.requestField("owner", value);
      return this;
    }
    public APIRequestGetSeasons requestSeasonNumberField () {
      return this.requestSeasonNumberField(true);
    }
    public APIRequestGetSeasons requestSeasonNumberField (boolean value) {
      this.requestField("season_number", value);
      return this;
    }
    public APIRequestGetSeasons requestThumbnailField () {
      return this.requestThumbnailField(true);
    }
    public APIRequestGetSeasons requestThumbnailField (boolean value) {
      this.requestField("thumbnail", value);
      return this;
    }
    public APIRequestGetSeasons requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetSeasons requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
    public APIRequestGetSeasons requestVideosCountField () {
      return this.requestVideosCountField(true);
    }
    public APIRequestGetSeasons requestVideosCountField (boolean value) {
      this.requestField("videos_count", value);
      return this;
    }
  }

  public static class APIRequestGetSecondaryReceivers extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "an_ad_space_limit",
      "an_platforms",
      "android_key_hash",
      "android_sdk_error_categories",
      "app_domains",
      "app_events_feature_bitmask",
      "app_events_session_timeout",
      "app_install_tracked",
      "app_name",
      "app_signals_binding_ios",
      "app_type",
      "auth_dialog_data_help_url",
      "auth_dialog_headline",
      "auth_dialog_perms_explanation",
      "auth_referral_default_activity_privacy",
      "auth_referral_enabled",
      "auth_referral_extended_perms",
      "auth_referral_friend_perms",
      "auth_referral_response_type",
      "auth_referral_user_perms",
      "auto_event_mapping_android",
      "auto_event_mapping_ios",
      "auto_event_setup_enabled",
      "canvas_fluid_height",
      "canvas_fluid_width",
      "canvas_url",
      "category",
      "client_config",
      "company",
      "configured_ios_sso",
      "contact_email",
      "context",
      "created_time",
      "creator_uid",
      "daily_active_users",
      "daily_active_users_rank",
      "deauth_callback_url",
      "default_share_mode",
      "description",
      "financial_id",
      "gdpv4_chrome_custom_tabs_enabled",
      "gdpv4_enabled",
      "gdpv4_nux_content",
      "gdpv4_nux_enabled",
      "has_messenger_product",
      "hosting_url",
      "icon_url",
      "id",
      "ios_bundle_id",
      "ios_sdk_dialog_flows",
      "ios_sdk_error_categories",
      "ios_sfvc_attr",
      "ios_supports_native_proxy_auth_flow",
      "ios_supports_system_auth",
      "ipad_app_store_id",
      "iphone_app_store_id",
      "is_viewer_admin",
      "latest_sdk_version",
      "link",
      "logging_token",
      "login_secret",
      "logo_url",
      "migrations",
      "mobile_profile_section_url",
      "mobile_web_url",
      "monthly_active_users",
      "monthly_active_users_rank",
      "name",
      "namespace",
      "object_store_urls",
      "page_tab_default_name",
      "page_tab_url",
      "photo_url",
      "privacy_policy_url",
      "profile_section_url",
      "property_id",
      "real_time_mode_devices",
      "restrictions",
      "sdk_update_message",
      "seamless_login",
      "secure_canvas_url",
      "secure_page_tab_url",
      "server_ip_whitelist",
      "smart_login_bookmark_icon_url",
      "smart_login_menu_icon_url",
      "social_discovery",
      "subcategory",
      "supported_platforms",
      "supports_apprequests_fast_app_switch",
      "supports_attribution",
      "supports_implicit_sdk_logging",
      "suppress_native_ios_gdp",
      "terms_of_service_url",
      "url_scheme_suffix",
      "user_support_email",
      "user_support_url",
      "website_url",
      "weekly_active_users",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Application.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetSecondaryReceivers.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetSecondaryReceivers(String nodeId, APIContext context) {
      super(context, nodeId, "/secondary_receivers", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetSecondaryReceivers setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetSecondaryReceivers setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetSecondaryReceivers requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetSecondaryReceivers requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetSecondaryReceivers requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetSecondaryReceivers requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetSecondaryReceivers requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetSecondaryReceivers requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetSecondaryReceivers requestAnAdSpaceLimitField () {
      return this.requestAnAdSpaceLimitField(true);
    }
    public APIRequestGetSecondaryReceivers requestAnAdSpaceLimitField (boolean value) {
      this.requestField("an_ad_space_limit", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAnPlatformsField () {
      return this.requestAnPlatformsField(true);
    }
    public APIRequestGetSecondaryReceivers requestAnPlatformsField (boolean value) {
      this.requestField("an_platforms", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAndroidKeyHashField () {
      return this.requestAndroidKeyHashField(true);
    }
    public APIRequestGetSecondaryReceivers requestAndroidKeyHashField (boolean value) {
      this.requestField("android_key_hash", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAndroidSdkErrorCategoriesField () {
      return this.requestAndroidSdkErrorCategoriesField(true);
    }
    public APIRequestGetSecondaryReceivers requestAndroidSdkErrorCategoriesField (boolean value) {
      this.requestField("android_sdk_error_categories", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAppDomainsField () {
      return this.requestAppDomainsField(true);
    }
    public APIRequestGetSecondaryReceivers requestAppDomainsField (boolean value) {
      this.requestField("app_domains", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAppEventsFeatureBitmaskField () {
      return this.requestAppEventsFeatureBitmaskField(true);
    }
    public APIRequestGetSecondaryReceivers requestAppEventsFeatureBitmaskField (boolean value) {
      this.requestField("app_events_feature_bitmask", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAppEventsSessionTimeoutField () {
      return this.requestAppEventsSessionTimeoutField(true);
    }
    public APIRequestGetSecondaryReceivers requestAppEventsSessionTimeoutField (boolean value) {
      this.requestField("app_events_session_timeout", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAppInstallTrackedField () {
      return this.requestAppInstallTrackedField(true);
    }
    public APIRequestGetSecondaryReceivers requestAppInstallTrackedField (boolean value) {
      this.requestField("app_install_tracked", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAppNameField () {
      return this.requestAppNameField(true);
    }
    public APIRequestGetSecondaryReceivers requestAppNameField (boolean value) {
      this.requestField("app_name", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAppSignalsBindingIosField () {
      return this.requestAppSignalsBindingIosField(true);
    }
    public APIRequestGetSecondaryReceivers requestAppSignalsBindingIosField (boolean value) {
      this.requestField("app_signals_binding_ios", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAppTypeField () {
      return this.requestAppTypeField(true);
    }
    public APIRequestGetSecondaryReceivers requestAppTypeField (boolean value) {
      this.requestField("app_type", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAuthDialogDataHelpUrlField () {
      return this.requestAuthDialogDataHelpUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestAuthDialogDataHelpUrlField (boolean value) {
      this.requestField("auth_dialog_data_help_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAuthDialogHeadlineField () {
      return this.requestAuthDialogHeadlineField(true);
    }
    public APIRequestGetSecondaryReceivers requestAuthDialogHeadlineField (boolean value) {
      this.requestField("auth_dialog_headline", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAuthDialogPermsExplanationField () {
      return this.requestAuthDialogPermsExplanationField(true);
    }
    public APIRequestGetSecondaryReceivers requestAuthDialogPermsExplanationField (boolean value) {
      this.requestField("auth_dialog_perms_explanation", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAuthReferralDefaultActivityPrivacyField () {
      return this.requestAuthReferralDefaultActivityPrivacyField(true);
    }
    public APIRequestGetSecondaryReceivers requestAuthReferralDefaultActivityPrivacyField (boolean value) {
      this.requestField("auth_referral_default_activity_privacy", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAuthReferralEnabledField () {
      return this.requestAuthReferralEnabledField(true);
    }
    public APIRequestGetSecondaryReceivers requestAuthReferralEnabledField (boolean value) {
      this.requestField("auth_referral_enabled", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAuthReferralExtendedPermsField () {
      return this.requestAuthReferralExtendedPermsField(true);
    }
    public APIRequestGetSecondaryReceivers requestAuthReferralExtendedPermsField (boolean value) {
      this.requestField("auth_referral_extended_perms", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAuthReferralFriendPermsField () {
      return this.requestAuthReferralFriendPermsField(true);
    }
    public APIRequestGetSecondaryReceivers requestAuthReferralFriendPermsField (boolean value) {
      this.requestField("auth_referral_friend_perms", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAuthReferralResponseTypeField () {
      return this.requestAuthReferralResponseTypeField(true);
    }
    public APIRequestGetSecondaryReceivers requestAuthReferralResponseTypeField (boolean value) {
      this.requestField("auth_referral_response_type", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAuthReferralUserPermsField () {
      return this.requestAuthReferralUserPermsField(true);
    }
    public APIRequestGetSecondaryReceivers requestAuthReferralUserPermsField (boolean value) {
      this.requestField("auth_referral_user_perms", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAutoEventMappingAndroidField () {
      return this.requestAutoEventMappingAndroidField(true);
    }
    public APIRequestGetSecondaryReceivers requestAutoEventMappingAndroidField (boolean value) {
      this.requestField("auto_event_mapping_android", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAutoEventMappingIosField () {
      return this.requestAutoEventMappingIosField(true);
    }
    public APIRequestGetSecondaryReceivers requestAutoEventMappingIosField (boolean value) {
      this.requestField("auto_event_mapping_ios", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestAutoEventSetupEnabledField () {
      return this.requestAutoEventSetupEnabledField(true);
    }
    public APIRequestGetSecondaryReceivers requestAutoEventSetupEnabledField (boolean value) {
      this.requestField("auto_event_setup_enabled", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestCanvasFluidHeightField () {
      return this.requestCanvasFluidHeightField(true);
    }
    public APIRequestGetSecondaryReceivers requestCanvasFluidHeightField (boolean value) {
      this.requestField("canvas_fluid_height", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestCanvasFluidWidthField () {
      return this.requestCanvasFluidWidthField(true);
    }
    public APIRequestGetSecondaryReceivers requestCanvasFluidWidthField (boolean value) {
      this.requestField("canvas_fluid_width", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestCanvasUrlField () {
      return this.requestCanvasUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestCanvasUrlField (boolean value) {
      this.requestField("canvas_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestCategoryField () {
      return this.requestCategoryField(true);
    }
    public APIRequestGetSecondaryReceivers requestCategoryField (boolean value) {
      this.requestField("category", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestClientConfigField () {
      return this.requestClientConfigField(true);
    }
    public APIRequestGetSecondaryReceivers requestClientConfigField (boolean value) {
      this.requestField("client_config", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestCompanyField () {
      return this.requestCompanyField(true);
    }
    public APIRequestGetSecondaryReceivers requestCompanyField (boolean value) {
      this.requestField("company", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestConfiguredIosSsoField () {
      return this.requestConfiguredIosSsoField(true);
    }
    public APIRequestGetSecondaryReceivers requestConfiguredIosSsoField (boolean value) {
      this.requestField("configured_ios_sso", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestContactEmailField () {
      return this.requestContactEmailField(true);
    }
    public APIRequestGetSecondaryReceivers requestContactEmailField (boolean value) {
      this.requestField("contact_email", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestContextField () {
      return this.requestContextField(true);
    }
    public APIRequestGetSecondaryReceivers requestContextField (boolean value) {
      this.requestField("context", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetSecondaryReceivers requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestCreatorUidField () {
      return this.requestCreatorUidField(true);
    }
    public APIRequestGetSecondaryReceivers requestCreatorUidField (boolean value) {
      this.requestField("creator_uid", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestDailyActiveUsersField () {
      return this.requestDailyActiveUsersField(true);
    }
    public APIRequestGetSecondaryReceivers requestDailyActiveUsersField (boolean value) {
      this.requestField("daily_active_users", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestDailyActiveUsersRankField () {
      return this.requestDailyActiveUsersRankField(true);
    }
    public APIRequestGetSecondaryReceivers requestDailyActiveUsersRankField (boolean value) {
      this.requestField("daily_active_users_rank", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestDeauthCallbackUrlField () {
      return this.requestDeauthCallbackUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestDeauthCallbackUrlField (boolean value) {
      this.requestField("deauth_callback_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestDefaultShareModeField () {
      return this.requestDefaultShareModeField(true);
    }
    public APIRequestGetSecondaryReceivers requestDefaultShareModeField (boolean value) {
      this.requestField("default_share_mode", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetSecondaryReceivers requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestFinancialIdField () {
      return this.requestFinancialIdField(true);
    }
    public APIRequestGetSecondaryReceivers requestFinancialIdField (boolean value) {
      this.requestField("financial_id", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestGdpv4ChromeCustomTabsEnabledField () {
      return this.requestGdpv4ChromeCustomTabsEnabledField(true);
    }
    public APIRequestGetSecondaryReceivers requestGdpv4ChromeCustomTabsEnabledField (boolean value) {
      this.requestField("gdpv4_chrome_custom_tabs_enabled", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestGdpv4EnabledField () {
      return this.requestGdpv4EnabledField(true);
    }
    public APIRequestGetSecondaryReceivers requestGdpv4EnabledField (boolean value) {
      this.requestField("gdpv4_enabled", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestGdpv4NuxContentField () {
      return this.requestGdpv4NuxContentField(true);
    }
    public APIRequestGetSecondaryReceivers requestGdpv4NuxContentField (boolean value) {
      this.requestField("gdpv4_nux_content", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestGdpv4NuxEnabledField () {
      return this.requestGdpv4NuxEnabledField(true);
    }
    public APIRequestGetSecondaryReceivers requestGdpv4NuxEnabledField (boolean value) {
      this.requestField("gdpv4_nux_enabled", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestHasMessengerProductField () {
      return this.requestHasMessengerProductField(true);
    }
    public APIRequestGetSecondaryReceivers requestHasMessengerProductField (boolean value) {
      this.requestField("has_messenger_product", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestHostingUrlField () {
      return this.requestHostingUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestHostingUrlField (boolean value) {
      this.requestField("hosting_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestIconUrlField () {
      return this.requestIconUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestIconUrlField (boolean value) {
      this.requestField("icon_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetSecondaryReceivers requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestIosBundleIdField () {
      return this.requestIosBundleIdField(true);
    }
    public APIRequestGetSecondaryReceivers requestIosBundleIdField (boolean value) {
      this.requestField("ios_bundle_id", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestIosSdkDialogFlowsField () {
      return this.requestIosSdkDialogFlowsField(true);
    }
    public APIRequestGetSecondaryReceivers requestIosSdkDialogFlowsField (boolean value) {
      this.requestField("ios_sdk_dialog_flows", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestIosSdkErrorCategoriesField () {
      return this.requestIosSdkErrorCategoriesField(true);
    }
    public APIRequestGetSecondaryReceivers requestIosSdkErrorCategoriesField (boolean value) {
      this.requestField("ios_sdk_error_categories", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestIosSfvcAttrField () {
      return this.requestIosSfvcAttrField(true);
    }
    public APIRequestGetSecondaryReceivers requestIosSfvcAttrField (boolean value) {
      this.requestField("ios_sfvc_attr", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestIosSupportsNativeProxyAuthFlowField () {
      return this.requestIosSupportsNativeProxyAuthFlowField(true);
    }
    public APIRequestGetSecondaryReceivers requestIosSupportsNativeProxyAuthFlowField (boolean value) {
      this.requestField("ios_supports_native_proxy_auth_flow", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestIosSupportsSystemAuthField () {
      return this.requestIosSupportsSystemAuthField(true);
    }
    public APIRequestGetSecondaryReceivers requestIosSupportsSystemAuthField (boolean value) {
      this.requestField("ios_supports_system_auth", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestIpadAppStoreIdField () {
      return this.requestIpadAppStoreIdField(true);
    }
    public APIRequestGetSecondaryReceivers requestIpadAppStoreIdField (boolean value) {
      this.requestField("ipad_app_store_id", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestIphoneAppStoreIdField () {
      return this.requestIphoneAppStoreIdField(true);
    }
    public APIRequestGetSecondaryReceivers requestIphoneAppStoreIdField (boolean value) {
      this.requestField("iphone_app_store_id", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestIsViewerAdminField () {
      return this.requestIsViewerAdminField(true);
    }
    public APIRequestGetSecondaryReceivers requestIsViewerAdminField (boolean value) {
      this.requestField("is_viewer_admin", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestLatestSdkVersionField () {
      return this.requestLatestSdkVersionField(true);
    }
    public APIRequestGetSecondaryReceivers requestLatestSdkVersionField (boolean value) {
      this.requestField("latest_sdk_version", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetSecondaryReceivers requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestLoggingTokenField () {
      return this.requestLoggingTokenField(true);
    }
    public APIRequestGetSecondaryReceivers requestLoggingTokenField (boolean value) {
      this.requestField("logging_token", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestLoginSecretField () {
      return this.requestLoginSecretField(true);
    }
    public APIRequestGetSecondaryReceivers requestLoginSecretField (boolean value) {
      this.requestField("login_secret", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestLogoUrlField () {
      return this.requestLogoUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestLogoUrlField (boolean value) {
      this.requestField("logo_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestMigrationsField () {
      return this.requestMigrationsField(true);
    }
    public APIRequestGetSecondaryReceivers requestMigrationsField (boolean value) {
      this.requestField("migrations", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestMobileProfileSectionUrlField () {
      return this.requestMobileProfileSectionUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestMobileProfileSectionUrlField (boolean value) {
      this.requestField("mobile_profile_section_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestMobileWebUrlField () {
      return this.requestMobileWebUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestMobileWebUrlField (boolean value) {
      this.requestField("mobile_web_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestMonthlyActiveUsersField () {
      return this.requestMonthlyActiveUsersField(true);
    }
    public APIRequestGetSecondaryReceivers requestMonthlyActiveUsersField (boolean value) {
      this.requestField("monthly_active_users", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestMonthlyActiveUsersRankField () {
      return this.requestMonthlyActiveUsersRankField(true);
    }
    public APIRequestGetSecondaryReceivers requestMonthlyActiveUsersRankField (boolean value) {
      this.requestField("monthly_active_users_rank", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetSecondaryReceivers requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestNamespaceField () {
      return this.requestNamespaceField(true);
    }
    public APIRequestGetSecondaryReceivers requestNamespaceField (boolean value) {
      this.requestField("namespace", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestObjectStoreUrlsField () {
      return this.requestObjectStoreUrlsField(true);
    }
    public APIRequestGetSecondaryReceivers requestObjectStoreUrlsField (boolean value) {
      this.requestField("object_store_urls", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestPageTabDefaultNameField () {
      return this.requestPageTabDefaultNameField(true);
    }
    public APIRequestGetSecondaryReceivers requestPageTabDefaultNameField (boolean value) {
      this.requestField("page_tab_default_name", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestPageTabUrlField () {
      return this.requestPageTabUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestPageTabUrlField (boolean value) {
      this.requestField("page_tab_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestPhotoUrlField () {
      return this.requestPhotoUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestPhotoUrlField (boolean value) {
      this.requestField("photo_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestPrivacyPolicyUrlField () {
      return this.requestPrivacyPolicyUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestPrivacyPolicyUrlField (boolean value) {
      this.requestField("privacy_policy_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestProfileSectionUrlField () {
      return this.requestProfileSectionUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestProfileSectionUrlField (boolean value) {
      this.requestField("profile_section_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestPropertyIdField () {
      return this.requestPropertyIdField(true);
    }
    public APIRequestGetSecondaryReceivers requestPropertyIdField (boolean value) {
      this.requestField("property_id", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestRealTimeModeDevicesField () {
      return this.requestRealTimeModeDevicesField(true);
    }
    public APIRequestGetSecondaryReceivers requestRealTimeModeDevicesField (boolean value) {
      this.requestField("real_time_mode_devices", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestRestrictionsField () {
      return this.requestRestrictionsField(true);
    }
    public APIRequestGetSecondaryReceivers requestRestrictionsField (boolean value) {
      this.requestField("restrictions", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestSdkUpdateMessageField () {
      return this.requestSdkUpdateMessageField(true);
    }
    public APIRequestGetSecondaryReceivers requestSdkUpdateMessageField (boolean value) {
      this.requestField("sdk_update_message", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestSeamlessLoginField () {
      return this.requestSeamlessLoginField(true);
    }
    public APIRequestGetSecondaryReceivers requestSeamlessLoginField (boolean value) {
      this.requestField("seamless_login", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestSecureCanvasUrlField () {
      return this.requestSecureCanvasUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestSecureCanvasUrlField (boolean value) {
      this.requestField("secure_canvas_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestSecurePageTabUrlField () {
      return this.requestSecurePageTabUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestSecurePageTabUrlField (boolean value) {
      this.requestField("secure_page_tab_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestServerIpWhitelistField () {
      return this.requestServerIpWhitelistField(true);
    }
    public APIRequestGetSecondaryReceivers requestServerIpWhitelistField (boolean value) {
      this.requestField("server_ip_whitelist", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestSmartLoginBookmarkIconUrlField () {
      return this.requestSmartLoginBookmarkIconUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestSmartLoginBookmarkIconUrlField (boolean value) {
      this.requestField("smart_login_bookmark_icon_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestSmartLoginMenuIconUrlField () {
      return this.requestSmartLoginMenuIconUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestSmartLoginMenuIconUrlField (boolean value) {
      this.requestField("smart_login_menu_icon_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestSocialDiscoveryField () {
      return this.requestSocialDiscoveryField(true);
    }
    public APIRequestGetSecondaryReceivers requestSocialDiscoveryField (boolean value) {
      this.requestField("social_discovery", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestSubcategoryField () {
      return this.requestSubcategoryField(true);
    }
    public APIRequestGetSecondaryReceivers requestSubcategoryField (boolean value) {
      this.requestField("subcategory", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestSupportedPlatformsField () {
      return this.requestSupportedPlatformsField(true);
    }
    public APIRequestGetSecondaryReceivers requestSupportedPlatformsField (boolean value) {
      this.requestField("supported_platforms", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestSupportsApprequestsFastAppSwitchField () {
      return this.requestSupportsApprequestsFastAppSwitchField(true);
    }
    public APIRequestGetSecondaryReceivers requestSupportsApprequestsFastAppSwitchField (boolean value) {
      this.requestField("supports_apprequests_fast_app_switch", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestSupportsAttributionField () {
      return this.requestSupportsAttributionField(true);
    }
    public APIRequestGetSecondaryReceivers requestSupportsAttributionField (boolean value) {
      this.requestField("supports_attribution", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestSupportsImplicitSdkLoggingField () {
      return this.requestSupportsImplicitSdkLoggingField(true);
    }
    public APIRequestGetSecondaryReceivers requestSupportsImplicitSdkLoggingField (boolean value) {
      this.requestField("supports_implicit_sdk_logging", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestSuppressNativeIosGdpField () {
      return this.requestSuppressNativeIosGdpField(true);
    }
    public APIRequestGetSecondaryReceivers requestSuppressNativeIosGdpField (boolean value) {
      this.requestField("suppress_native_ios_gdp", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestTermsOfServiceUrlField () {
      return this.requestTermsOfServiceUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestTermsOfServiceUrlField (boolean value) {
      this.requestField("terms_of_service_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestUrlSchemeSuffixField () {
      return this.requestUrlSchemeSuffixField(true);
    }
    public APIRequestGetSecondaryReceivers requestUrlSchemeSuffixField (boolean value) {
      this.requestField("url_scheme_suffix", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestUserSupportEmailField () {
      return this.requestUserSupportEmailField(true);
    }
    public APIRequestGetSecondaryReceivers requestUserSupportEmailField (boolean value) {
      this.requestField("user_support_email", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestUserSupportUrlField () {
      return this.requestUserSupportUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestUserSupportUrlField (boolean value) {
      this.requestField("user_support_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestWebsiteUrlField () {
      return this.requestWebsiteUrlField(true);
    }
    public APIRequestGetSecondaryReceivers requestWebsiteUrlField (boolean value) {
      this.requestField("website_url", value);
      return this;
    }
    public APIRequestGetSecondaryReceivers requestWeeklyActiveUsersField () {
      return this.requestWeeklyActiveUsersField(true);
    }
    public APIRequestGetSecondaryReceivers requestWeeklyActiveUsersField (boolean value) {
      this.requestField("weekly_active_users", value);
      return this;
    }
  }

  public static class APIRequestGetSettings extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "setting",
      "value",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PageSettings.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetSettings.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetSettings(String nodeId, APIContext context) {
      super(context, nodeId, "/settings", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetSettings setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetSettings setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetSettings requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetSettings requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetSettings requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetSettings requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetSettings requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetSettings requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetSettings requestSettingField () {
      return this.requestSettingField(true);
    }
    public APIRequestGetSettings requestSettingField (boolean value) {
      this.requestField("setting", value);
      return this;
    }
    public APIRequestGetSettings requestValueField () {
      return this.requestValueField(true);
    }
    public APIRequestGetSettings requestValueField (boolean value) {
      this.requestField("value", value);
      return this;
    }
  }

  public static class APIRequestCreateSetting extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "option",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateSetting.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateSetting(String nodeId, APIContext context) {
      super(context, nodeId, "/settings", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateSetting setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateSetting setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateSetting setOption (Object option) {
      this.setParam("option", option);
      return this;
    }
    public APIRequestCreateSetting setOption (String option) {
      this.setParam("option", option);
      return this;
    }

    public APIRequestCreateSetting requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateSetting requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateSetting requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateSetting requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateSetting requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateSetting requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetShowPlaylists extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "creation_time",
      "description",
      "id",
      "last_modified",
      "owner",
      "season_number",
      "thumbnail",
      "title",
      "videos_count",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return VideoList.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetShowPlaylists.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetShowPlaylists(String nodeId, APIContext context) {
      super(context, nodeId, "/show_playlists", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetShowPlaylists setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetShowPlaylists setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetShowPlaylists requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetShowPlaylists requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetShowPlaylists requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetShowPlaylists requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetShowPlaylists requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetShowPlaylists requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetShowPlaylists requestCreationTimeField () {
      return this.requestCreationTimeField(true);
    }
    public APIRequestGetShowPlaylists requestCreationTimeField (boolean value) {
      this.requestField("creation_time", value);
      return this;
    }
    public APIRequestGetShowPlaylists requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetShowPlaylists requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetShowPlaylists requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetShowPlaylists requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetShowPlaylists requestLastModifiedField () {
      return this.requestLastModifiedField(true);
    }
    public APIRequestGetShowPlaylists requestLastModifiedField (boolean value) {
      this.requestField("last_modified", value);
      return this;
    }
    public APIRequestGetShowPlaylists requestOwnerField () {
      return this.requestOwnerField(true);
    }
    public APIRequestGetShowPlaylists requestOwnerField (boolean value) {
      this.requestField("owner", value);
      return this;
    }
    public APIRequestGetShowPlaylists requestSeasonNumberField () {
      return this.requestSeasonNumberField(true);
    }
    public APIRequestGetShowPlaylists requestSeasonNumberField (boolean value) {
      this.requestField("season_number", value);
      return this;
    }
    public APIRequestGetShowPlaylists requestThumbnailField () {
      return this.requestThumbnailField(true);
    }
    public APIRequestGetShowPlaylists requestThumbnailField (boolean value) {
      this.requestField("thumbnail", value);
      return this;
    }
    public APIRequestGetShowPlaylists requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetShowPlaylists requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
    public APIRequestGetShowPlaylists requestVideosCountField () {
      return this.requestVideosCountField(true);
    }
    public APIRequestGetShowPlaylists requestVideosCountField (boolean value) {
      this.requestField("videos_count", value);
      return this;
    }
  }

  public static class APIRequestDeleteSubscribedApps extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteSubscribedApps.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteSubscribedApps(String nodeId, APIContext context) {
      super(context, nodeId, "/subscribed_apps", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteSubscribedApps setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteSubscribedApps setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteSubscribedApps requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteSubscribedApps requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteSubscribedApps requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteSubscribedApps requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteSubscribedApps requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteSubscribedApps requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetSubscribedApps extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "an_ad_space_limit",
      "an_platforms",
      "android_key_hash",
      "android_sdk_error_categories",
      "app_domains",
      "app_events_feature_bitmask",
      "app_events_session_timeout",
      "app_install_tracked",
      "app_name",
      "app_signals_binding_ios",
      "app_type",
      "auth_dialog_data_help_url",
      "auth_dialog_headline",
      "auth_dialog_perms_explanation",
      "auth_referral_default_activity_privacy",
      "auth_referral_enabled",
      "auth_referral_extended_perms",
      "auth_referral_friend_perms",
      "auth_referral_response_type",
      "auth_referral_user_perms",
      "auto_event_mapping_android",
      "auto_event_mapping_ios",
      "auto_event_setup_enabled",
      "canvas_fluid_height",
      "canvas_fluid_width",
      "canvas_url",
      "category",
      "client_config",
      "company",
      "configured_ios_sso",
      "contact_email",
      "context",
      "created_time",
      "creator_uid",
      "daily_active_users",
      "daily_active_users_rank",
      "deauth_callback_url",
      "default_share_mode",
      "description",
      "financial_id",
      "gdpv4_chrome_custom_tabs_enabled",
      "gdpv4_enabled",
      "gdpv4_nux_content",
      "gdpv4_nux_enabled",
      "has_messenger_product",
      "hosting_url",
      "icon_url",
      "id",
      "ios_bundle_id",
      "ios_sdk_dialog_flows",
      "ios_sdk_error_categories",
      "ios_sfvc_attr",
      "ios_supports_native_proxy_auth_flow",
      "ios_supports_system_auth",
      "ipad_app_store_id",
      "iphone_app_store_id",
      "is_viewer_admin",
      "latest_sdk_version",
      "link",
      "logging_token",
      "login_secret",
      "logo_url",
      "migrations",
      "mobile_profile_section_url",
      "mobile_web_url",
      "monthly_active_users",
      "monthly_active_users_rank",
      "name",
      "namespace",
      "object_store_urls",
      "page_tab_default_name",
      "page_tab_url",
      "photo_url",
      "privacy_policy_url",
      "profile_section_url",
      "property_id",
      "real_time_mode_devices",
      "restrictions",
      "sdk_update_message",
      "seamless_login",
      "secure_canvas_url",
      "secure_page_tab_url",
      "server_ip_whitelist",
      "smart_login_bookmark_icon_url",
      "smart_login_menu_icon_url",
      "social_discovery",
      "subcategory",
      "supported_platforms",
      "supports_apprequests_fast_app_switch",
      "supports_attribution",
      "supports_implicit_sdk_logging",
      "suppress_native_ios_gdp",
      "terms_of_service_url",
      "url_scheme_suffix",
      "user_support_email",
      "user_support_url",
      "website_url",
      "weekly_active_users",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Application.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetSubscribedApps.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetSubscribedApps(String nodeId, APIContext context) {
      super(context, nodeId, "/subscribed_apps", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetSubscribedApps setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetSubscribedApps setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetSubscribedApps requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetSubscribedApps requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetSubscribedApps requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetSubscribedApps requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetSubscribedApps requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetSubscribedApps requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetSubscribedApps requestAnAdSpaceLimitField () {
      return this.requestAnAdSpaceLimitField(true);
    }
    public APIRequestGetSubscribedApps requestAnAdSpaceLimitField (boolean value) {
      this.requestField("an_ad_space_limit", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAnPlatformsField () {
      return this.requestAnPlatformsField(true);
    }
    public APIRequestGetSubscribedApps requestAnPlatformsField (boolean value) {
      this.requestField("an_platforms", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAndroidKeyHashField () {
      return this.requestAndroidKeyHashField(true);
    }
    public APIRequestGetSubscribedApps requestAndroidKeyHashField (boolean value) {
      this.requestField("android_key_hash", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAndroidSdkErrorCategoriesField () {
      return this.requestAndroidSdkErrorCategoriesField(true);
    }
    public APIRequestGetSubscribedApps requestAndroidSdkErrorCategoriesField (boolean value) {
      this.requestField("android_sdk_error_categories", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAppDomainsField () {
      return this.requestAppDomainsField(true);
    }
    public APIRequestGetSubscribedApps requestAppDomainsField (boolean value) {
      this.requestField("app_domains", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAppEventsFeatureBitmaskField () {
      return this.requestAppEventsFeatureBitmaskField(true);
    }
    public APIRequestGetSubscribedApps requestAppEventsFeatureBitmaskField (boolean value) {
      this.requestField("app_events_feature_bitmask", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAppEventsSessionTimeoutField () {
      return this.requestAppEventsSessionTimeoutField(true);
    }
    public APIRequestGetSubscribedApps requestAppEventsSessionTimeoutField (boolean value) {
      this.requestField("app_events_session_timeout", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAppInstallTrackedField () {
      return this.requestAppInstallTrackedField(true);
    }
    public APIRequestGetSubscribedApps requestAppInstallTrackedField (boolean value) {
      this.requestField("app_install_tracked", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAppNameField () {
      return this.requestAppNameField(true);
    }
    public APIRequestGetSubscribedApps requestAppNameField (boolean value) {
      this.requestField("app_name", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAppSignalsBindingIosField () {
      return this.requestAppSignalsBindingIosField(true);
    }
    public APIRequestGetSubscribedApps requestAppSignalsBindingIosField (boolean value) {
      this.requestField("app_signals_binding_ios", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAppTypeField () {
      return this.requestAppTypeField(true);
    }
    public APIRequestGetSubscribedApps requestAppTypeField (boolean value) {
      this.requestField("app_type", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAuthDialogDataHelpUrlField () {
      return this.requestAuthDialogDataHelpUrlField(true);
    }
    public APIRequestGetSubscribedApps requestAuthDialogDataHelpUrlField (boolean value) {
      this.requestField("auth_dialog_data_help_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAuthDialogHeadlineField () {
      return this.requestAuthDialogHeadlineField(true);
    }
    public APIRequestGetSubscribedApps requestAuthDialogHeadlineField (boolean value) {
      this.requestField("auth_dialog_headline", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAuthDialogPermsExplanationField () {
      return this.requestAuthDialogPermsExplanationField(true);
    }
    public APIRequestGetSubscribedApps requestAuthDialogPermsExplanationField (boolean value) {
      this.requestField("auth_dialog_perms_explanation", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAuthReferralDefaultActivityPrivacyField () {
      return this.requestAuthReferralDefaultActivityPrivacyField(true);
    }
    public APIRequestGetSubscribedApps requestAuthReferralDefaultActivityPrivacyField (boolean value) {
      this.requestField("auth_referral_default_activity_privacy", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAuthReferralEnabledField () {
      return this.requestAuthReferralEnabledField(true);
    }
    public APIRequestGetSubscribedApps requestAuthReferralEnabledField (boolean value) {
      this.requestField("auth_referral_enabled", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAuthReferralExtendedPermsField () {
      return this.requestAuthReferralExtendedPermsField(true);
    }
    public APIRequestGetSubscribedApps requestAuthReferralExtendedPermsField (boolean value) {
      this.requestField("auth_referral_extended_perms", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAuthReferralFriendPermsField () {
      return this.requestAuthReferralFriendPermsField(true);
    }
    public APIRequestGetSubscribedApps requestAuthReferralFriendPermsField (boolean value) {
      this.requestField("auth_referral_friend_perms", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAuthReferralResponseTypeField () {
      return this.requestAuthReferralResponseTypeField(true);
    }
    public APIRequestGetSubscribedApps requestAuthReferralResponseTypeField (boolean value) {
      this.requestField("auth_referral_response_type", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAuthReferralUserPermsField () {
      return this.requestAuthReferralUserPermsField(true);
    }
    public APIRequestGetSubscribedApps requestAuthReferralUserPermsField (boolean value) {
      this.requestField("auth_referral_user_perms", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAutoEventMappingAndroidField () {
      return this.requestAutoEventMappingAndroidField(true);
    }
    public APIRequestGetSubscribedApps requestAutoEventMappingAndroidField (boolean value) {
      this.requestField("auto_event_mapping_android", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAutoEventMappingIosField () {
      return this.requestAutoEventMappingIosField(true);
    }
    public APIRequestGetSubscribedApps requestAutoEventMappingIosField (boolean value) {
      this.requestField("auto_event_mapping_ios", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestAutoEventSetupEnabledField () {
      return this.requestAutoEventSetupEnabledField(true);
    }
    public APIRequestGetSubscribedApps requestAutoEventSetupEnabledField (boolean value) {
      this.requestField("auto_event_setup_enabled", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestCanvasFluidHeightField () {
      return this.requestCanvasFluidHeightField(true);
    }
    public APIRequestGetSubscribedApps requestCanvasFluidHeightField (boolean value) {
      this.requestField("canvas_fluid_height", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestCanvasFluidWidthField () {
      return this.requestCanvasFluidWidthField(true);
    }
    public APIRequestGetSubscribedApps requestCanvasFluidWidthField (boolean value) {
      this.requestField("canvas_fluid_width", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestCanvasUrlField () {
      return this.requestCanvasUrlField(true);
    }
    public APIRequestGetSubscribedApps requestCanvasUrlField (boolean value) {
      this.requestField("canvas_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestCategoryField () {
      return this.requestCategoryField(true);
    }
    public APIRequestGetSubscribedApps requestCategoryField (boolean value) {
      this.requestField("category", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestClientConfigField () {
      return this.requestClientConfigField(true);
    }
    public APIRequestGetSubscribedApps requestClientConfigField (boolean value) {
      this.requestField("client_config", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestCompanyField () {
      return this.requestCompanyField(true);
    }
    public APIRequestGetSubscribedApps requestCompanyField (boolean value) {
      this.requestField("company", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestConfiguredIosSsoField () {
      return this.requestConfiguredIosSsoField(true);
    }
    public APIRequestGetSubscribedApps requestConfiguredIosSsoField (boolean value) {
      this.requestField("configured_ios_sso", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestContactEmailField () {
      return this.requestContactEmailField(true);
    }
    public APIRequestGetSubscribedApps requestContactEmailField (boolean value) {
      this.requestField("contact_email", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestContextField () {
      return this.requestContextField(true);
    }
    public APIRequestGetSubscribedApps requestContextField (boolean value) {
      this.requestField("context", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetSubscribedApps requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestCreatorUidField () {
      return this.requestCreatorUidField(true);
    }
    public APIRequestGetSubscribedApps requestCreatorUidField (boolean value) {
      this.requestField("creator_uid", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestDailyActiveUsersField () {
      return this.requestDailyActiveUsersField(true);
    }
    public APIRequestGetSubscribedApps requestDailyActiveUsersField (boolean value) {
      this.requestField("daily_active_users", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestDailyActiveUsersRankField () {
      return this.requestDailyActiveUsersRankField(true);
    }
    public APIRequestGetSubscribedApps requestDailyActiveUsersRankField (boolean value) {
      this.requestField("daily_active_users_rank", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestDeauthCallbackUrlField () {
      return this.requestDeauthCallbackUrlField(true);
    }
    public APIRequestGetSubscribedApps requestDeauthCallbackUrlField (boolean value) {
      this.requestField("deauth_callback_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestDefaultShareModeField () {
      return this.requestDefaultShareModeField(true);
    }
    public APIRequestGetSubscribedApps requestDefaultShareModeField (boolean value) {
      this.requestField("default_share_mode", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetSubscribedApps requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestFinancialIdField () {
      return this.requestFinancialIdField(true);
    }
    public APIRequestGetSubscribedApps requestFinancialIdField (boolean value) {
      this.requestField("financial_id", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestGdpv4ChromeCustomTabsEnabledField () {
      return this.requestGdpv4ChromeCustomTabsEnabledField(true);
    }
    public APIRequestGetSubscribedApps requestGdpv4ChromeCustomTabsEnabledField (boolean value) {
      this.requestField("gdpv4_chrome_custom_tabs_enabled", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestGdpv4EnabledField () {
      return this.requestGdpv4EnabledField(true);
    }
    public APIRequestGetSubscribedApps requestGdpv4EnabledField (boolean value) {
      this.requestField("gdpv4_enabled", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestGdpv4NuxContentField () {
      return this.requestGdpv4NuxContentField(true);
    }
    public APIRequestGetSubscribedApps requestGdpv4NuxContentField (boolean value) {
      this.requestField("gdpv4_nux_content", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestGdpv4NuxEnabledField () {
      return this.requestGdpv4NuxEnabledField(true);
    }
    public APIRequestGetSubscribedApps requestGdpv4NuxEnabledField (boolean value) {
      this.requestField("gdpv4_nux_enabled", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestHasMessengerProductField () {
      return this.requestHasMessengerProductField(true);
    }
    public APIRequestGetSubscribedApps requestHasMessengerProductField (boolean value) {
      this.requestField("has_messenger_product", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestHostingUrlField () {
      return this.requestHostingUrlField(true);
    }
    public APIRequestGetSubscribedApps requestHostingUrlField (boolean value) {
      this.requestField("hosting_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestIconUrlField () {
      return this.requestIconUrlField(true);
    }
    public APIRequestGetSubscribedApps requestIconUrlField (boolean value) {
      this.requestField("icon_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetSubscribedApps requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestIosBundleIdField () {
      return this.requestIosBundleIdField(true);
    }
    public APIRequestGetSubscribedApps requestIosBundleIdField (boolean value) {
      this.requestField("ios_bundle_id", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestIosSdkDialogFlowsField () {
      return this.requestIosSdkDialogFlowsField(true);
    }
    public APIRequestGetSubscribedApps requestIosSdkDialogFlowsField (boolean value) {
      this.requestField("ios_sdk_dialog_flows", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestIosSdkErrorCategoriesField () {
      return this.requestIosSdkErrorCategoriesField(true);
    }
    public APIRequestGetSubscribedApps requestIosSdkErrorCategoriesField (boolean value) {
      this.requestField("ios_sdk_error_categories", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestIosSfvcAttrField () {
      return this.requestIosSfvcAttrField(true);
    }
    public APIRequestGetSubscribedApps requestIosSfvcAttrField (boolean value) {
      this.requestField("ios_sfvc_attr", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestIosSupportsNativeProxyAuthFlowField () {
      return this.requestIosSupportsNativeProxyAuthFlowField(true);
    }
    public APIRequestGetSubscribedApps requestIosSupportsNativeProxyAuthFlowField (boolean value) {
      this.requestField("ios_supports_native_proxy_auth_flow", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestIosSupportsSystemAuthField () {
      return this.requestIosSupportsSystemAuthField(true);
    }
    public APIRequestGetSubscribedApps requestIosSupportsSystemAuthField (boolean value) {
      this.requestField("ios_supports_system_auth", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestIpadAppStoreIdField () {
      return this.requestIpadAppStoreIdField(true);
    }
    public APIRequestGetSubscribedApps requestIpadAppStoreIdField (boolean value) {
      this.requestField("ipad_app_store_id", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestIphoneAppStoreIdField () {
      return this.requestIphoneAppStoreIdField(true);
    }
    public APIRequestGetSubscribedApps requestIphoneAppStoreIdField (boolean value) {
      this.requestField("iphone_app_store_id", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestIsViewerAdminField () {
      return this.requestIsViewerAdminField(true);
    }
    public APIRequestGetSubscribedApps requestIsViewerAdminField (boolean value) {
      this.requestField("is_viewer_admin", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestLatestSdkVersionField () {
      return this.requestLatestSdkVersionField(true);
    }
    public APIRequestGetSubscribedApps requestLatestSdkVersionField (boolean value) {
      this.requestField("latest_sdk_version", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetSubscribedApps requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestLoggingTokenField () {
      return this.requestLoggingTokenField(true);
    }
    public APIRequestGetSubscribedApps requestLoggingTokenField (boolean value) {
      this.requestField("logging_token", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestLoginSecretField () {
      return this.requestLoginSecretField(true);
    }
    public APIRequestGetSubscribedApps requestLoginSecretField (boolean value) {
      this.requestField("login_secret", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestLogoUrlField () {
      return this.requestLogoUrlField(true);
    }
    public APIRequestGetSubscribedApps requestLogoUrlField (boolean value) {
      this.requestField("logo_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestMigrationsField () {
      return this.requestMigrationsField(true);
    }
    public APIRequestGetSubscribedApps requestMigrationsField (boolean value) {
      this.requestField("migrations", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestMobileProfileSectionUrlField () {
      return this.requestMobileProfileSectionUrlField(true);
    }
    public APIRequestGetSubscribedApps requestMobileProfileSectionUrlField (boolean value) {
      this.requestField("mobile_profile_section_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestMobileWebUrlField () {
      return this.requestMobileWebUrlField(true);
    }
    public APIRequestGetSubscribedApps requestMobileWebUrlField (boolean value) {
      this.requestField("mobile_web_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestMonthlyActiveUsersField () {
      return this.requestMonthlyActiveUsersField(true);
    }
    public APIRequestGetSubscribedApps requestMonthlyActiveUsersField (boolean value) {
      this.requestField("monthly_active_users", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestMonthlyActiveUsersRankField () {
      return this.requestMonthlyActiveUsersRankField(true);
    }
    public APIRequestGetSubscribedApps requestMonthlyActiveUsersRankField (boolean value) {
      this.requestField("monthly_active_users_rank", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetSubscribedApps requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestNamespaceField () {
      return this.requestNamespaceField(true);
    }
    public APIRequestGetSubscribedApps requestNamespaceField (boolean value) {
      this.requestField("namespace", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestObjectStoreUrlsField () {
      return this.requestObjectStoreUrlsField(true);
    }
    public APIRequestGetSubscribedApps requestObjectStoreUrlsField (boolean value) {
      this.requestField("object_store_urls", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestPageTabDefaultNameField () {
      return this.requestPageTabDefaultNameField(true);
    }
    public APIRequestGetSubscribedApps requestPageTabDefaultNameField (boolean value) {
      this.requestField("page_tab_default_name", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestPageTabUrlField () {
      return this.requestPageTabUrlField(true);
    }
    public APIRequestGetSubscribedApps requestPageTabUrlField (boolean value) {
      this.requestField("page_tab_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestPhotoUrlField () {
      return this.requestPhotoUrlField(true);
    }
    public APIRequestGetSubscribedApps requestPhotoUrlField (boolean value) {
      this.requestField("photo_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestPrivacyPolicyUrlField () {
      return this.requestPrivacyPolicyUrlField(true);
    }
    public APIRequestGetSubscribedApps requestPrivacyPolicyUrlField (boolean value) {
      this.requestField("privacy_policy_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestProfileSectionUrlField () {
      return this.requestProfileSectionUrlField(true);
    }
    public APIRequestGetSubscribedApps requestProfileSectionUrlField (boolean value) {
      this.requestField("profile_section_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestPropertyIdField () {
      return this.requestPropertyIdField(true);
    }
    public APIRequestGetSubscribedApps requestPropertyIdField (boolean value) {
      this.requestField("property_id", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestRealTimeModeDevicesField () {
      return this.requestRealTimeModeDevicesField(true);
    }
    public APIRequestGetSubscribedApps requestRealTimeModeDevicesField (boolean value) {
      this.requestField("real_time_mode_devices", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestRestrictionsField () {
      return this.requestRestrictionsField(true);
    }
    public APIRequestGetSubscribedApps requestRestrictionsField (boolean value) {
      this.requestField("restrictions", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestSdkUpdateMessageField () {
      return this.requestSdkUpdateMessageField(true);
    }
    public APIRequestGetSubscribedApps requestSdkUpdateMessageField (boolean value) {
      this.requestField("sdk_update_message", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestSeamlessLoginField () {
      return this.requestSeamlessLoginField(true);
    }
    public APIRequestGetSubscribedApps requestSeamlessLoginField (boolean value) {
      this.requestField("seamless_login", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestSecureCanvasUrlField () {
      return this.requestSecureCanvasUrlField(true);
    }
    public APIRequestGetSubscribedApps requestSecureCanvasUrlField (boolean value) {
      this.requestField("secure_canvas_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestSecurePageTabUrlField () {
      return this.requestSecurePageTabUrlField(true);
    }
    public APIRequestGetSubscribedApps requestSecurePageTabUrlField (boolean value) {
      this.requestField("secure_page_tab_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestServerIpWhitelistField () {
      return this.requestServerIpWhitelistField(true);
    }
    public APIRequestGetSubscribedApps requestServerIpWhitelistField (boolean value) {
      this.requestField("server_ip_whitelist", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestSmartLoginBookmarkIconUrlField () {
      return this.requestSmartLoginBookmarkIconUrlField(true);
    }
    public APIRequestGetSubscribedApps requestSmartLoginBookmarkIconUrlField (boolean value) {
      this.requestField("smart_login_bookmark_icon_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestSmartLoginMenuIconUrlField () {
      return this.requestSmartLoginMenuIconUrlField(true);
    }
    public APIRequestGetSubscribedApps requestSmartLoginMenuIconUrlField (boolean value) {
      this.requestField("smart_login_menu_icon_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestSocialDiscoveryField () {
      return this.requestSocialDiscoveryField(true);
    }
    public APIRequestGetSubscribedApps requestSocialDiscoveryField (boolean value) {
      this.requestField("social_discovery", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestSubcategoryField () {
      return this.requestSubcategoryField(true);
    }
    public APIRequestGetSubscribedApps requestSubcategoryField (boolean value) {
      this.requestField("subcategory", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestSupportedPlatformsField () {
      return this.requestSupportedPlatformsField(true);
    }
    public APIRequestGetSubscribedApps requestSupportedPlatformsField (boolean value) {
      this.requestField("supported_platforms", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestSupportsApprequestsFastAppSwitchField () {
      return this.requestSupportsApprequestsFastAppSwitchField(true);
    }
    public APIRequestGetSubscribedApps requestSupportsApprequestsFastAppSwitchField (boolean value) {
      this.requestField("supports_apprequests_fast_app_switch", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestSupportsAttributionField () {
      return this.requestSupportsAttributionField(true);
    }
    public APIRequestGetSubscribedApps requestSupportsAttributionField (boolean value) {
      this.requestField("supports_attribution", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestSupportsImplicitSdkLoggingField () {
      return this.requestSupportsImplicitSdkLoggingField(true);
    }
    public APIRequestGetSubscribedApps requestSupportsImplicitSdkLoggingField (boolean value) {
      this.requestField("supports_implicit_sdk_logging", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestSuppressNativeIosGdpField () {
      return this.requestSuppressNativeIosGdpField(true);
    }
    public APIRequestGetSubscribedApps requestSuppressNativeIosGdpField (boolean value) {
      this.requestField("suppress_native_ios_gdp", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestTermsOfServiceUrlField () {
      return this.requestTermsOfServiceUrlField(true);
    }
    public APIRequestGetSubscribedApps requestTermsOfServiceUrlField (boolean value) {
      this.requestField("terms_of_service_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestUrlSchemeSuffixField () {
      return this.requestUrlSchemeSuffixField(true);
    }
    public APIRequestGetSubscribedApps requestUrlSchemeSuffixField (boolean value) {
      this.requestField("url_scheme_suffix", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestUserSupportEmailField () {
      return this.requestUserSupportEmailField(true);
    }
    public APIRequestGetSubscribedApps requestUserSupportEmailField (boolean value) {
      this.requestField("user_support_email", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestUserSupportUrlField () {
      return this.requestUserSupportUrlField(true);
    }
    public APIRequestGetSubscribedApps requestUserSupportUrlField (boolean value) {
      this.requestField("user_support_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestWebsiteUrlField () {
      return this.requestWebsiteUrlField(true);
    }
    public APIRequestGetSubscribedApps requestWebsiteUrlField (boolean value) {
      this.requestField("website_url", value);
      return this;
    }
    public APIRequestGetSubscribedApps requestWeeklyActiveUsersField () {
      return this.requestWeeklyActiveUsersField(true);
    }
    public APIRequestGetSubscribedApps requestWeeklyActiveUsersField (boolean value) {
      this.requestField("weekly_active_users", value);
      return this;
    }
  }

  public static class APIRequestCreateSubscribedApp extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "subscribed_fields",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateSubscribedApp.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateSubscribedApp(String nodeId, APIContext context) {
      super(context, nodeId, "/subscribed_apps", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateSubscribedApp setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateSubscribedApp setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateSubscribedApp setSubscribedFields (List subscribedFields) {
      this.setParam("subscribed_fields", subscribedFields);
      return this;
    }
    public APIRequestCreateSubscribedApp setSubscribedFields (String subscribedFields) {
      this.setParam("subscribed_fields", subscribedFields);
      return this;
    }

    public APIRequestCreateSubscribedApp requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateSubscribedApp requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateSubscribedApp requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateSubscribedApp requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateSubscribedApp requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateSubscribedApp requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestCreateSubscription extends APIRequest {

    APINode lastResponse = null;
    @Override
    public APINode getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "object",
      "fields",
      "callback_url",
      "verify_token",
      "include_values",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINode parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public APINode execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINode execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public APINode apply(ResponseWrapper result) {
             try {
               return APIRequestCreateSubscription.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateSubscription(String nodeId, APIContext context) {
      super(context, nodeId, "/subscriptions", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateSubscription setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateSubscription setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateSubscription setObject (String object) {
      this.setParam("object", object);
      return this;
    }

    public APIRequestCreateSubscription setFields (List fields) {
      this.setParam("fields", fields);
      return this;
    }
    public APIRequestCreateSubscription setFields (String fields) {
      this.setParam("fields", fields);
      return this;
    }

    public APIRequestCreateSubscription setCallbackUrl (String callbackUrl) {
      this.setParam("callback_url", callbackUrl);
      return this;
    }

    public APIRequestCreateSubscription setVerifyToken (String verifyToken) {
      this.setParam("verify_token", verifyToken);
      return this;
    }

    public APIRequestCreateSubscription setIncludeValues (Boolean includeValues) {
      this.setParam("include_values", includeValues);
      return this;
    }
    public APIRequestCreateSubscription setIncludeValues (String includeValues) {
      this.setParam("include_values", includeValues);
      return this;
    }

    public APIRequestCreateSubscription requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateSubscription requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateSubscription requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateSubscription requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateSubscription requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateSubscription requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestDeleteTabs extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "tab",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteTabs.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteTabs(String nodeId, APIContext context) {
      super(context, nodeId, "/tabs", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteTabs setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteTabs setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteTabs setTab (String tab) {
      this.setParam("tab", tab);
      return this;
    }

    public APIRequestDeleteTabs requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteTabs requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteTabs requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteTabs requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteTabs requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteTabs requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetTabs extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "tab",
    };

    public static final String[] FIELDS = {
      "application",
      "custom_image_url",
      "custom_name",
      "id",
      "image_url",
      "is_non_connection_landing_tab",
      "is_permanent",
      "link",
      "name",
      "position",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return Tab.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetTabs.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetTabs(String nodeId, APIContext context) {
      super(context, nodeId, "/tabs", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetTabs setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetTabs setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetTabs setTab (List tab) {
      this.setParam("tab", tab);
      return this;
    }
    public APIRequestGetTabs setTab (String tab) {
      this.setParam("tab", tab);
      return this;
    }

    public APIRequestGetTabs requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetTabs requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetTabs requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetTabs requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetTabs requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetTabs requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetTabs requestApplicationField () {
      return this.requestApplicationField(true);
    }
    public APIRequestGetTabs requestApplicationField (boolean value) {
      this.requestField("application", value);
      return this;
    }
    public APIRequestGetTabs requestCustomImageUrlField () {
      return this.requestCustomImageUrlField(true);
    }
    public APIRequestGetTabs requestCustomImageUrlField (boolean value) {
      this.requestField("custom_image_url", value);
      return this;
    }
    public APIRequestGetTabs requestCustomNameField () {
      return this.requestCustomNameField(true);
    }
    public APIRequestGetTabs requestCustomNameField (boolean value) {
      this.requestField("custom_name", value);
      return this;
    }
    public APIRequestGetTabs requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetTabs requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetTabs requestImageUrlField () {
      return this.requestImageUrlField(true);
    }
    public APIRequestGetTabs requestImageUrlField (boolean value) {
      this.requestField("image_url", value);
      return this;
    }
    public APIRequestGetTabs requestIsNonConnectionLandingTabField () {
      return this.requestIsNonConnectionLandingTabField(true);
    }
    public APIRequestGetTabs requestIsNonConnectionLandingTabField (boolean value) {
      this.requestField("is_non_connection_landing_tab", value);
      return this;
    }
    public APIRequestGetTabs requestIsPermanentField () {
      return this.requestIsPermanentField(true);
    }
    public APIRequestGetTabs requestIsPermanentField (boolean value) {
      this.requestField("is_permanent", value);
      return this;
    }
    public APIRequestGetTabs requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetTabs requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetTabs requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetTabs requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetTabs requestPositionField () {
      return this.requestPositionField(true);
    }
    public APIRequestGetTabs requestPositionField (boolean value) {
      this.requestField("position", value);
      return this;
    }
  }

  public static class APIRequestCreateTab extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "app_id",
      "tab",
      "position",
      "custom_name",
      "custom_image_url",
      "is_non_connection_landing_tab",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateTab.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateTab(String nodeId, APIContext context) {
      super(context, nodeId, "/tabs", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateTab setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateTab setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateTab setAppId (Long appId) {
      this.setParam("app_id", appId);
      return this;
    }
    public APIRequestCreateTab setAppId (String appId) {
      this.setParam("app_id", appId);
      return this;
    }

    public APIRequestCreateTab setTab (String tab) {
      this.setParam("tab", tab);
      return this;
    }

    public APIRequestCreateTab setPosition (Long position) {
      this.setParam("position", position);
      return this;
    }
    public APIRequestCreateTab setPosition (String position) {
      this.setParam("position", position);
      return this;
    }

    public APIRequestCreateTab setCustomName (String customName) {
      this.setParam("custom_name", customName);
      return this;
    }

    public APIRequestCreateTab setCustomImageUrl (String customImageUrl) {
      this.setParam("custom_image_url", customImageUrl);
      return this;
    }

    public APIRequestCreateTab setIsNonConnectionLandingTab (Boolean isNonConnectionLandingTab) {
      this.setParam("is_non_connection_landing_tab", isNonConnectionLandingTab);
      return this;
    }
    public APIRequestCreateTab setIsNonConnectionLandingTab (String isNonConnectionLandingTab) {
      this.setParam("is_non_connection_landing_tab", isNonConnectionLandingTab);
      return this;
    }

    public APIRequestCreateTab requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateTab requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateTab requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateTab requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateTab requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateTab requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetTagged extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "actions",
      "admin_creator",
      "allowed_advertising_objectives",
      "application",
      "backdated_time",
      "call_to_action",
      "can_reply_privately",
      "caption",
      "child_attachments",
      "comments_mirroring_domain",
      "coordinates",
      "created_time",
      "description",
      "event",
      "expanded_height",
      "expanded_width",
      "feed_targeting",
      "from",
      "full_picture",
      "height",
      "icon",
      "id",
      "instagram_eligibility",
      "is_app_share",
      "is_expired",
      "is_hidden",
      "is_instagram_eligible",
      "is_popular",
      "is_published",
      "is_spherical",
      "link",
      "message",
      "message_tags",
      "multi_share_end_card",
      "multi_share_optimized",
      "name",
      "object_id",
      "parent_id",
      "permalink_url",
      "picture",
      "place",
      "privacy",
      "promotable_id",
      "promotion_status",
      "properties",
      "scheduled_publish_time",
      "shares",
      "source",
      "status_type",
      "story",
      "story_tags",
      "subscribed",
      "target",
      "targeting",
      "timeline_visibility",
      "type",
      "updated_time",
      "via",
      "video_buying_eligibility",
      "width",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PagePost.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetTagged.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetTagged(String nodeId, APIContext context) {
      super(context, nodeId, "/tagged", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetTagged setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetTagged setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetTagged requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetTagged requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetTagged requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetTagged requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetTagged requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetTagged requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetTagged requestActionsField () {
      return this.requestActionsField(true);
    }
    public APIRequestGetTagged requestActionsField (boolean value) {
      this.requestField("actions", value);
      return this;
    }
    public APIRequestGetTagged requestAdminCreatorField () {
      return this.requestAdminCreatorField(true);
    }
    public APIRequestGetTagged requestAdminCreatorField (boolean value) {
      this.requestField("admin_creator", value);
      return this;
    }
    public APIRequestGetTagged requestAllowedAdvertisingObjectivesField () {
      return this.requestAllowedAdvertisingObjectivesField(true);
    }
    public APIRequestGetTagged requestAllowedAdvertisingObjectivesField (boolean value) {
      this.requestField("allowed_advertising_objectives", value);
      return this;
    }
    public APIRequestGetTagged requestApplicationField () {
      return this.requestApplicationField(true);
    }
    public APIRequestGetTagged requestApplicationField (boolean value) {
      this.requestField("application", value);
      return this;
    }
    public APIRequestGetTagged requestBackdatedTimeField () {
      return this.requestBackdatedTimeField(true);
    }
    public APIRequestGetTagged requestBackdatedTimeField (boolean value) {
      this.requestField("backdated_time", value);
      return this;
    }
    public APIRequestGetTagged requestCallToActionField () {
      return this.requestCallToActionField(true);
    }
    public APIRequestGetTagged requestCallToActionField (boolean value) {
      this.requestField("call_to_action", value);
      return this;
    }
    public APIRequestGetTagged requestCanReplyPrivatelyField () {
      return this.requestCanReplyPrivatelyField(true);
    }
    public APIRequestGetTagged requestCanReplyPrivatelyField (boolean value) {
      this.requestField("can_reply_privately", value);
      return this;
    }
    public APIRequestGetTagged requestCaptionField () {
      return this.requestCaptionField(true);
    }
    public APIRequestGetTagged requestCaptionField (boolean value) {
      this.requestField("caption", value);
      return this;
    }
    public APIRequestGetTagged requestChildAttachmentsField () {
      return this.requestChildAttachmentsField(true);
    }
    public APIRequestGetTagged requestChildAttachmentsField (boolean value) {
      this.requestField("child_attachments", value);
      return this;
    }
    public APIRequestGetTagged requestCommentsMirroringDomainField () {
      return this.requestCommentsMirroringDomainField(true);
    }
    public APIRequestGetTagged requestCommentsMirroringDomainField (boolean value) {
      this.requestField("comments_mirroring_domain", value);
      return this;
    }
    public APIRequestGetTagged requestCoordinatesField () {
      return this.requestCoordinatesField(true);
    }
    public APIRequestGetTagged requestCoordinatesField (boolean value) {
      this.requestField("coordinates", value);
      return this;
    }
    public APIRequestGetTagged requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetTagged requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetTagged requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetTagged requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetTagged requestEventField () {
      return this.requestEventField(true);
    }
    public APIRequestGetTagged requestEventField (boolean value) {
      this.requestField("event", value);
      return this;
    }
    public APIRequestGetTagged requestExpandedHeightField () {
      return this.requestExpandedHeightField(true);
    }
    public APIRequestGetTagged requestExpandedHeightField (boolean value) {
      this.requestField("expanded_height", value);
      return this;
    }
    public APIRequestGetTagged requestExpandedWidthField () {
      return this.requestExpandedWidthField(true);
    }
    public APIRequestGetTagged requestExpandedWidthField (boolean value) {
      this.requestField("expanded_width", value);
      return this;
    }
    public APIRequestGetTagged requestFeedTargetingField () {
      return this.requestFeedTargetingField(true);
    }
    public APIRequestGetTagged requestFeedTargetingField (boolean value) {
      this.requestField("feed_targeting", value);
      return this;
    }
    public APIRequestGetTagged requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetTagged requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetTagged requestFullPictureField () {
      return this.requestFullPictureField(true);
    }
    public APIRequestGetTagged requestFullPictureField (boolean value) {
      this.requestField("full_picture", value);
      return this;
    }
    public APIRequestGetTagged requestHeightField () {
      return this.requestHeightField(true);
    }
    public APIRequestGetTagged requestHeightField (boolean value) {
      this.requestField("height", value);
      return this;
    }
    public APIRequestGetTagged requestIconField () {
      return this.requestIconField(true);
    }
    public APIRequestGetTagged requestIconField (boolean value) {
      this.requestField("icon", value);
      return this;
    }
    public APIRequestGetTagged requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetTagged requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetTagged requestInstagramEligibilityField () {
      return this.requestInstagramEligibilityField(true);
    }
    public APIRequestGetTagged requestInstagramEligibilityField (boolean value) {
      this.requestField("instagram_eligibility", value);
      return this;
    }
    public APIRequestGetTagged requestIsAppShareField () {
      return this.requestIsAppShareField(true);
    }
    public APIRequestGetTagged requestIsAppShareField (boolean value) {
      this.requestField("is_app_share", value);
      return this;
    }
    public APIRequestGetTagged requestIsExpiredField () {
      return this.requestIsExpiredField(true);
    }
    public APIRequestGetTagged requestIsExpiredField (boolean value) {
      this.requestField("is_expired", value);
      return this;
    }
    public APIRequestGetTagged requestIsHiddenField () {
      return this.requestIsHiddenField(true);
    }
    public APIRequestGetTagged requestIsHiddenField (boolean value) {
      this.requestField("is_hidden", value);
      return this;
    }
    public APIRequestGetTagged requestIsInstagramEligibleField () {
      return this.requestIsInstagramEligibleField(true);
    }
    public APIRequestGetTagged requestIsInstagramEligibleField (boolean value) {
      this.requestField("is_instagram_eligible", value);
      return this;
    }
    public APIRequestGetTagged requestIsPopularField () {
      return this.requestIsPopularField(true);
    }
    public APIRequestGetTagged requestIsPopularField (boolean value) {
      this.requestField("is_popular", value);
      return this;
    }
    public APIRequestGetTagged requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetTagged requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetTagged requestIsSphericalField () {
      return this.requestIsSphericalField(true);
    }
    public APIRequestGetTagged requestIsSphericalField (boolean value) {
      this.requestField("is_spherical", value);
      return this;
    }
    public APIRequestGetTagged requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetTagged requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetTagged requestMessageField () {
      return this.requestMessageField(true);
    }
    public APIRequestGetTagged requestMessageField (boolean value) {
      this.requestField("message", value);
      return this;
    }
    public APIRequestGetTagged requestMessageTagsField () {
      return this.requestMessageTagsField(true);
    }
    public APIRequestGetTagged requestMessageTagsField (boolean value) {
      this.requestField("message_tags", value);
      return this;
    }
    public APIRequestGetTagged requestMultiShareEndCardField () {
      return this.requestMultiShareEndCardField(true);
    }
    public APIRequestGetTagged requestMultiShareEndCardField (boolean value) {
      this.requestField("multi_share_end_card", value);
      return this;
    }
    public APIRequestGetTagged requestMultiShareOptimizedField () {
      return this.requestMultiShareOptimizedField(true);
    }
    public APIRequestGetTagged requestMultiShareOptimizedField (boolean value) {
      this.requestField("multi_share_optimized", value);
      return this;
    }
    public APIRequestGetTagged requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetTagged requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetTagged requestObjectIdField () {
      return this.requestObjectIdField(true);
    }
    public APIRequestGetTagged requestObjectIdField (boolean value) {
      this.requestField("object_id", value);
      return this;
    }
    public APIRequestGetTagged requestParentIdField () {
      return this.requestParentIdField(true);
    }
    public APIRequestGetTagged requestParentIdField (boolean value) {
      this.requestField("parent_id", value);
      return this;
    }
    public APIRequestGetTagged requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetTagged requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetTagged requestPictureField () {
      return this.requestPictureField(true);
    }
    public APIRequestGetTagged requestPictureField (boolean value) {
      this.requestField("picture", value);
      return this;
    }
    public APIRequestGetTagged requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetTagged requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetTagged requestPrivacyField () {
      return this.requestPrivacyField(true);
    }
    public APIRequestGetTagged requestPrivacyField (boolean value) {
      this.requestField("privacy", value);
      return this;
    }
    public APIRequestGetTagged requestPromotableIdField () {
      return this.requestPromotableIdField(true);
    }
    public APIRequestGetTagged requestPromotableIdField (boolean value) {
      this.requestField("promotable_id", value);
      return this;
    }
    public APIRequestGetTagged requestPromotionStatusField () {
      return this.requestPromotionStatusField(true);
    }
    public APIRequestGetTagged requestPromotionStatusField (boolean value) {
      this.requestField("promotion_status", value);
      return this;
    }
    public APIRequestGetTagged requestPropertiesField () {
      return this.requestPropertiesField(true);
    }
    public APIRequestGetTagged requestPropertiesField (boolean value) {
      this.requestField("properties", value);
      return this;
    }
    public APIRequestGetTagged requestScheduledPublishTimeField () {
      return this.requestScheduledPublishTimeField(true);
    }
    public APIRequestGetTagged requestScheduledPublishTimeField (boolean value) {
      this.requestField("scheduled_publish_time", value);
      return this;
    }
    public APIRequestGetTagged requestSharesField () {
      return this.requestSharesField(true);
    }
    public APIRequestGetTagged requestSharesField (boolean value) {
      this.requestField("shares", value);
      return this;
    }
    public APIRequestGetTagged requestSourceField () {
      return this.requestSourceField(true);
    }
    public APIRequestGetTagged requestSourceField (boolean value) {
      this.requestField("source", value);
      return this;
    }
    public APIRequestGetTagged requestStatusTypeField () {
      return this.requestStatusTypeField(true);
    }
    public APIRequestGetTagged requestStatusTypeField (boolean value) {
      this.requestField("status_type", value);
      return this;
    }
    public APIRequestGetTagged requestStoryField () {
      return this.requestStoryField(true);
    }
    public APIRequestGetTagged requestStoryField (boolean value) {
      this.requestField("story", value);
      return this;
    }
    public APIRequestGetTagged requestStoryTagsField () {
      return this.requestStoryTagsField(true);
    }
    public APIRequestGetTagged requestStoryTagsField (boolean value) {
      this.requestField("story_tags", value);
      return this;
    }
    public APIRequestGetTagged requestSubscribedField () {
      return this.requestSubscribedField(true);
    }
    public APIRequestGetTagged requestSubscribedField (boolean value) {
      this.requestField("subscribed", value);
      return this;
    }
    public APIRequestGetTagged requestTargetField () {
      return this.requestTargetField(true);
    }
    public APIRequestGetTagged requestTargetField (boolean value) {
      this.requestField("target", value);
      return this;
    }
    public APIRequestGetTagged requestTargetingField () {
      return this.requestTargetingField(true);
    }
    public APIRequestGetTagged requestTargetingField (boolean value) {
      this.requestField("targeting", value);
      return this;
    }
    public APIRequestGetTagged requestTimelineVisibilityField () {
      return this.requestTimelineVisibilityField(true);
    }
    public APIRequestGetTagged requestTimelineVisibilityField (boolean value) {
      this.requestField("timeline_visibility", value);
      return this;
    }
    public APIRequestGetTagged requestTypeField () {
      return this.requestTypeField(true);
    }
    public APIRequestGetTagged requestTypeField (boolean value) {
      this.requestField("type", value);
      return this;
    }
    public APIRequestGetTagged requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetTagged requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetTagged requestViaField () {
      return this.requestViaField(true);
    }
    public APIRequestGetTagged requestViaField (boolean value) {
      this.requestField("via", value);
      return this;
    }
    public APIRequestGetTagged requestVideoBuyingEligibilityField () {
      return this.requestVideoBuyingEligibilityField(true);
    }
    public APIRequestGetTagged requestVideoBuyingEligibilityField (boolean value) {
      this.requestField("video_buying_eligibility", value);
      return this;
    }
    public APIRequestGetTagged requestWidthField () {
      return this.requestWidthField(true);
    }
    public APIRequestGetTagged requestWidthField (boolean value) {
      this.requestField("width", value);
      return this;
    }
  }

  public static class APIRequestCreateTakeThreadControl extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "recipient",
      "metadata",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateTakeThreadControl.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateTakeThreadControl(String nodeId, APIContext context) {
      super(context, nodeId, "/take_thread_control", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateTakeThreadControl setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateTakeThreadControl setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateTakeThreadControl setRecipient (Object recipient) {
      this.setParam("recipient", recipient);
      return this;
    }
    public APIRequestCreateTakeThreadControl setRecipient (String recipient) {
      this.setParam("recipient", recipient);
      return this;
    }

    public APIRequestCreateTakeThreadControl setMetadata (String metadata) {
      this.setParam("metadata", metadata);
      return this;
    }

    public APIRequestCreateTakeThreadControl requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateTakeThreadControl requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateTakeThreadControl requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateTakeThreadControl requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateTakeThreadControl requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateTakeThreadControl requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetThreadOwner extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "recipient",
    };

    public static final String[] FIELDS = {
      "thread_owner",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PageThreadOwner.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetThreadOwner.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetThreadOwner(String nodeId, APIContext context) {
      super(context, nodeId, "/thread_owner", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetThreadOwner setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetThreadOwner setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetThreadOwner setRecipient (String recipient) {
      this.setParam("recipient", recipient);
      return this;
    }

    public APIRequestGetThreadOwner requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetThreadOwner requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetThreadOwner requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetThreadOwner requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetThreadOwner requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetThreadOwner requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetThreadOwner requestThreadOwnerField () {
      return this.requestThreadOwnerField(true);
    }
    public APIRequestGetThreadOwner requestThreadOwnerField (boolean value) {
      this.requestField("thread_owner", value);
      return this;
    }
  }

  public static class APIRequestDeleteThreadSettings extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "setting_type",
      "thread_state",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteThreadSettings.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteThreadSettings(String nodeId, APIContext context) {
      super(context, nodeId, "/thread_settings", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteThreadSettings setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteThreadSettings setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteThreadSettings setSettingType (Page.EnumSettingType settingType) {
      this.setParam("setting_type", settingType);
      return this;
    }
    public APIRequestDeleteThreadSettings setSettingType (String settingType) {
      this.setParam("setting_type", settingType);
      return this;
    }

    public APIRequestDeleteThreadSettings setThreadState (Page.EnumThreadState threadState) {
      this.setParam("thread_state", threadState);
      return this;
    }
    public APIRequestDeleteThreadSettings setThreadState (String threadState) {
      this.setParam("thread_state", threadState);
      return this;
    }

    public APIRequestDeleteThreadSettings requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteThreadSettings requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteThreadSettings requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteThreadSettings requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteThreadSettings requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteThreadSettings requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetThreadSettings extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "id",
      "payment_privacy_url",
      "whitelisted_domains",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return ThreadSetting.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetThreadSettings.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetThreadSettings(String nodeId, APIContext context) {
      super(context, nodeId, "/thread_settings", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetThreadSettings setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetThreadSettings setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetThreadSettings requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetThreadSettings requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetThreadSettings requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetThreadSettings requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetThreadSettings requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetThreadSettings requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetThreadSettings requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetThreadSettings requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetThreadSettings requestPaymentPrivacyUrlField () {
      return this.requestPaymentPrivacyUrlField(true);
    }
    public APIRequestGetThreadSettings requestPaymentPrivacyUrlField (boolean value) {
      this.requestField("payment_privacy_url", value);
      return this;
    }
    public APIRequestGetThreadSettings requestWhitelistedDomainsField () {
      return this.requestWhitelistedDomainsField(true);
    }
    public APIRequestGetThreadSettings requestWhitelistedDomainsField (boolean value) {
      this.requestField("whitelisted_domains", value);
      return this;
    }
  }

  public static class APIRequestCreateThreadSetting extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "setting_type",
      "thread_state",
      "call_to_actions",
      "greeting",
      "account_linking_url",
      "payment_privacy_url",
      "whitelisted_domains",
      "domain_action_type",
      "payment_public_key",
      "payment_dev_mode_action",
      "payment_testers",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateThreadSetting.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateThreadSetting(String nodeId, APIContext context) {
      super(context, nodeId, "/thread_settings", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateThreadSetting setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateThreadSetting setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateThreadSetting setSettingType (Page.EnumSettingType settingType) {
      this.setParam("setting_type", settingType);
      return this;
    }
    public APIRequestCreateThreadSetting setSettingType (String settingType) {
      this.setParam("setting_type", settingType);
      return this;
    }

    public APIRequestCreateThreadSetting setThreadState (Page.EnumThreadState threadState) {
      this.setParam("thread_state", threadState);
      return this;
    }
    public APIRequestCreateThreadSetting setThreadState (String threadState) {
      this.setParam("thread_state", threadState);
      return this;
    }

    public APIRequestCreateThreadSetting setCallToActions (List callToActions) {
      this.setParam("call_to_actions", callToActions);
      return this;
    }
    public APIRequestCreateThreadSetting setCallToActions (String callToActions) {
      this.setParam("call_to_actions", callToActions);
      return this;
    }

    public APIRequestCreateThreadSetting setGreeting (Object greeting) {
      this.setParam("greeting", greeting);
      return this;
    }
    public APIRequestCreateThreadSetting setGreeting (String greeting) {
      this.setParam("greeting", greeting);
      return this;
    }

    public APIRequestCreateThreadSetting setAccountLinkingUrl (String accountLinkingUrl) {
      this.setParam("account_linking_url", accountLinkingUrl);
      return this;
    }

    public APIRequestCreateThreadSetting setPaymentPrivacyUrl (String paymentPrivacyUrl) {
      this.setParam("payment_privacy_url", paymentPrivacyUrl);
      return this;
    }

    public APIRequestCreateThreadSetting setWhitelistedDomains (List whitelistedDomains) {
      this.setParam("whitelisted_domains", whitelistedDomains);
      return this;
    }
    public APIRequestCreateThreadSetting setWhitelistedDomains (String whitelistedDomains) {
      this.setParam("whitelisted_domains", whitelistedDomains);
      return this;
    }

    public APIRequestCreateThreadSetting setDomainActionType (Page.EnumDomainActionType domainActionType) {
      this.setParam("domain_action_type", domainActionType);
      return this;
    }
    public APIRequestCreateThreadSetting setDomainActionType (String domainActionType) {
      this.setParam("domain_action_type", domainActionType);
      return this;
    }

    public APIRequestCreateThreadSetting setPaymentPublicKey (String paymentPublicKey) {
      this.setParam("payment_public_key", paymentPublicKey);
      return this;
    }

    public APIRequestCreateThreadSetting setPaymentDevModeAction (Page.EnumPaymentDevModeAction paymentDevModeAction) {
      this.setParam("payment_dev_mode_action", paymentDevModeAction);
      return this;
    }
    public APIRequestCreateThreadSetting setPaymentDevModeAction (String paymentDevModeAction) {
      this.setParam("payment_dev_mode_action", paymentDevModeAction);
      return this;
    }

    public APIRequestCreateThreadSetting setPaymentTesters (List paymentTesters) {
      this.setParam("payment_testers", paymentTesters);
      return this;
    }
    public APIRequestCreateThreadSetting setPaymentTesters (String paymentTesters) {
      this.setParam("payment_testers", paymentTesters);
      return this;
    }

    public APIRequestCreateThreadSetting requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateThreadSetting requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateThreadSetting requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateThreadSetting requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateThreadSetting requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateThreadSetting requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetThreads extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "tags",
      "folder",
      "user_id",
    };

    public static final String[] FIELDS = {
      "can_reply",
      "former_participants",
      "id",
      "is_subscribed",
      "link",
      "message_count",
      "name",
      "participants",
      "scoped_thread_key",
      "senders",
      "snippet",
      "subject",
      "unread_count",
      "updated_time",
      "wallpaper",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return UnifiedThread.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetThreads.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetThreads(String nodeId, APIContext context) {
      super(context, nodeId, "/threads", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetThreads setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetThreads setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetThreads setTags (List tags) {
      this.setParam("tags", tags);
      return this;
    }
    public APIRequestGetThreads setTags (String tags) {
      this.setParam("tags", tags);
      return this;
    }

    public APIRequestGetThreads setFolder (String folder) {
      this.setParam("folder", folder);
      return this;
    }

    public APIRequestGetThreads setUserId (String userId) {
      this.setParam("user_id", userId);
      return this;
    }

    public APIRequestGetThreads requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetThreads requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetThreads requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetThreads requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetThreads requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetThreads requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetThreads requestCanReplyField () {
      return this.requestCanReplyField(true);
    }
    public APIRequestGetThreads requestCanReplyField (boolean value) {
      this.requestField("can_reply", value);
      return this;
    }
    public APIRequestGetThreads requestFormerParticipantsField () {
      return this.requestFormerParticipantsField(true);
    }
    public APIRequestGetThreads requestFormerParticipantsField (boolean value) {
      this.requestField("former_participants", value);
      return this;
    }
    public APIRequestGetThreads requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetThreads requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetThreads requestIsSubscribedField () {
      return this.requestIsSubscribedField(true);
    }
    public APIRequestGetThreads requestIsSubscribedField (boolean value) {
      this.requestField("is_subscribed", value);
      return this;
    }
    public APIRequestGetThreads requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetThreads requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetThreads requestMessageCountField () {
      return this.requestMessageCountField(true);
    }
    public APIRequestGetThreads requestMessageCountField (boolean value) {
      this.requestField("message_count", value);
      return this;
    }
    public APIRequestGetThreads requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetThreads requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetThreads requestParticipantsField () {
      return this.requestParticipantsField(true);
    }
    public APIRequestGetThreads requestParticipantsField (boolean value) {
      this.requestField("participants", value);
      return this;
    }
    public APIRequestGetThreads requestScopedThreadKeyField () {
      return this.requestScopedThreadKeyField(true);
    }
    public APIRequestGetThreads requestScopedThreadKeyField (boolean value) {
      this.requestField("scoped_thread_key", value);
      return this;
    }
    public APIRequestGetThreads requestSendersField () {
      return this.requestSendersField(true);
    }
    public APIRequestGetThreads requestSendersField (boolean value) {
      this.requestField("senders", value);
      return this;
    }
    public APIRequestGetThreads requestSnippetField () {
      return this.requestSnippetField(true);
    }
    public APIRequestGetThreads requestSnippetField (boolean value) {
      this.requestField("snippet", value);
      return this;
    }
    public APIRequestGetThreads requestSubjectField () {
      return this.requestSubjectField(true);
    }
    public APIRequestGetThreads requestSubjectField (boolean value) {
      this.requestField("subject", value);
      return this;
    }
    public APIRequestGetThreads requestUnreadCountField () {
      return this.requestUnreadCountField(true);
    }
    public APIRequestGetThreads requestUnreadCountField (boolean value) {
      this.requestField("unread_count", value);
      return this;
    }
    public APIRequestGetThreads requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetThreads requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetThreads requestWallpaperField () {
      return this.requestWallpaperField(true);
    }
    public APIRequestGetThreads requestWallpaperField (boolean value) {
      this.requestField("wallpaper", value);
      return this;
    }
  }

  public static class APIRequestGetTours extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "description",
      "dominant_color",
      "end_time",
      "id",
      "is_past",
      "last_event_timestamp",
      "name",
      "num_events",
      "photo",
      "publishing_state",
      "scheduled_publish_timestamp",
      "start_time",
      "ticketing_uri",
      "video",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return EventTour.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetTours.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetTours(String nodeId, APIContext context) {
      super(context, nodeId, "/tours", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetTours setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetTours setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetTours requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetTours requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetTours requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetTours requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetTours requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetTours requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetTours requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetTours requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetTours requestDominantColorField () {
      return this.requestDominantColorField(true);
    }
    public APIRequestGetTours requestDominantColorField (boolean value) {
      this.requestField("dominant_color", value);
      return this;
    }
    public APIRequestGetTours requestEndTimeField () {
      return this.requestEndTimeField(true);
    }
    public APIRequestGetTours requestEndTimeField (boolean value) {
      this.requestField("end_time", value);
      return this;
    }
    public APIRequestGetTours requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetTours requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetTours requestIsPastField () {
      return this.requestIsPastField(true);
    }
    public APIRequestGetTours requestIsPastField (boolean value) {
      this.requestField("is_past", value);
      return this;
    }
    public APIRequestGetTours requestLastEventTimestampField () {
      return this.requestLastEventTimestampField(true);
    }
    public APIRequestGetTours requestLastEventTimestampField (boolean value) {
      this.requestField("last_event_timestamp", value);
      return this;
    }
    public APIRequestGetTours requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetTours requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetTours requestNumEventsField () {
      return this.requestNumEventsField(true);
    }
    public APIRequestGetTours requestNumEventsField (boolean value) {
      this.requestField("num_events", value);
      return this;
    }
    public APIRequestGetTours requestPhotoField () {
      return this.requestPhotoField(true);
    }
    public APIRequestGetTours requestPhotoField (boolean value) {
      this.requestField("photo", value);
      return this;
    }
    public APIRequestGetTours requestPublishingStateField () {
      return this.requestPublishingStateField(true);
    }
    public APIRequestGetTours requestPublishingStateField (boolean value) {
      this.requestField("publishing_state", value);
      return this;
    }
    public APIRequestGetTours requestScheduledPublishTimestampField () {
      return this.requestScheduledPublishTimestampField(true);
    }
    public APIRequestGetTours requestScheduledPublishTimestampField (boolean value) {
      this.requestField("scheduled_publish_timestamp", value);
      return this;
    }
    public APIRequestGetTours requestStartTimeField () {
      return this.requestStartTimeField(true);
    }
    public APIRequestGetTours requestStartTimeField (boolean value) {
      this.requestField("start_time", value);
      return this;
    }
    public APIRequestGetTours requestTicketingUriField () {
      return this.requestTicketingUriField(true);
    }
    public APIRequestGetTours requestTicketingUriField (boolean value) {
      this.requestField("ticketing_uri", value);
      return this;
    }
    public APIRequestGetTours requestVideoField () {
      return this.requestVideoField(true);
    }
    public APIRequestGetTours requestVideoField (boolean value) {
      this.requestField("video", value);
      return this;
    }
  }

  public static class APIRequestCreateUnlinkAccount extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "psid",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateUnlinkAccount.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateUnlinkAccount(String nodeId, APIContext context) {
      super(context, nodeId, "/unlink_accounts", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateUnlinkAccount setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateUnlinkAccount setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateUnlinkAccount setPsid (String psid) {
      this.setParam("psid", psid);
      return this;
    }

    public APIRequestCreateUnlinkAccount requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateUnlinkAccount requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateUnlinkAccount requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateUnlinkAccount requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateUnlinkAccount requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateUnlinkAccount requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetVideoBroadcasts extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "ad_break_config",
      "ad_break_failure_reason",
      "broadcast_start_time",
      "copyright",
      "creation_time",
      "dash_ingest_url",
      "dash_preview_url",
      "description",
      "embed_html",
      "from",
      "id",
      "ingest_streams",
      "is_manual_mode",
      "is_reference_only",
      "live_encoders",
      "live_views",
      "permalink_url",
      "planned_start_time",
      "seconds_left",
      "secure_stream_url",
      "status",
      "stream_url",
      "targeting",
      "title",
      "total_views",
      "video",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return LiveVideo.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetVideoBroadcasts.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetVideoBroadcasts(String nodeId, APIContext context) {
      super(context, nodeId, "/video_broadcasts", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetVideoBroadcasts setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetVideoBroadcasts setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetVideoBroadcasts requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetVideoBroadcasts requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideoBroadcasts requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetVideoBroadcasts requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideoBroadcasts requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetVideoBroadcasts requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetVideoBroadcasts requestAdBreakConfigField () {
      return this.requestAdBreakConfigField(true);
    }
    public APIRequestGetVideoBroadcasts requestAdBreakConfigField (boolean value) {
      this.requestField("ad_break_config", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestAdBreakFailureReasonField () {
      return this.requestAdBreakFailureReasonField(true);
    }
    public APIRequestGetVideoBroadcasts requestAdBreakFailureReasonField (boolean value) {
      this.requestField("ad_break_failure_reason", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestBroadcastStartTimeField () {
      return this.requestBroadcastStartTimeField(true);
    }
    public APIRequestGetVideoBroadcasts requestBroadcastStartTimeField (boolean value) {
      this.requestField("broadcast_start_time", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestCopyrightField () {
      return this.requestCopyrightField(true);
    }
    public APIRequestGetVideoBroadcasts requestCopyrightField (boolean value) {
      this.requestField("copyright", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestCreationTimeField () {
      return this.requestCreationTimeField(true);
    }
    public APIRequestGetVideoBroadcasts requestCreationTimeField (boolean value) {
      this.requestField("creation_time", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestDashIngestUrlField () {
      return this.requestDashIngestUrlField(true);
    }
    public APIRequestGetVideoBroadcasts requestDashIngestUrlField (boolean value) {
      this.requestField("dash_ingest_url", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestDashPreviewUrlField () {
      return this.requestDashPreviewUrlField(true);
    }
    public APIRequestGetVideoBroadcasts requestDashPreviewUrlField (boolean value) {
      this.requestField("dash_preview_url", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetVideoBroadcasts requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestEmbedHtmlField () {
      return this.requestEmbedHtmlField(true);
    }
    public APIRequestGetVideoBroadcasts requestEmbedHtmlField (boolean value) {
      this.requestField("embed_html", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetVideoBroadcasts requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetVideoBroadcasts requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestIngestStreamsField () {
      return this.requestIngestStreamsField(true);
    }
    public APIRequestGetVideoBroadcasts requestIngestStreamsField (boolean value) {
      this.requestField("ingest_streams", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestIsManualModeField () {
      return this.requestIsManualModeField(true);
    }
    public APIRequestGetVideoBroadcasts requestIsManualModeField (boolean value) {
      this.requestField("is_manual_mode", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestIsReferenceOnlyField () {
      return this.requestIsReferenceOnlyField(true);
    }
    public APIRequestGetVideoBroadcasts requestIsReferenceOnlyField (boolean value) {
      this.requestField("is_reference_only", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestLiveEncodersField () {
      return this.requestLiveEncodersField(true);
    }
    public APIRequestGetVideoBroadcasts requestLiveEncodersField (boolean value) {
      this.requestField("live_encoders", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestLiveViewsField () {
      return this.requestLiveViewsField(true);
    }
    public APIRequestGetVideoBroadcasts requestLiveViewsField (boolean value) {
      this.requestField("live_views", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetVideoBroadcasts requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestPlannedStartTimeField () {
      return this.requestPlannedStartTimeField(true);
    }
    public APIRequestGetVideoBroadcasts requestPlannedStartTimeField (boolean value) {
      this.requestField("planned_start_time", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestSecondsLeftField () {
      return this.requestSecondsLeftField(true);
    }
    public APIRequestGetVideoBroadcasts requestSecondsLeftField (boolean value) {
      this.requestField("seconds_left", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestSecureStreamUrlField () {
      return this.requestSecureStreamUrlField(true);
    }
    public APIRequestGetVideoBroadcasts requestSecureStreamUrlField (boolean value) {
      this.requestField("secure_stream_url", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestStatusField () {
      return this.requestStatusField(true);
    }
    public APIRequestGetVideoBroadcasts requestStatusField (boolean value) {
      this.requestField("status", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestStreamUrlField () {
      return this.requestStreamUrlField(true);
    }
    public APIRequestGetVideoBroadcasts requestStreamUrlField (boolean value) {
      this.requestField("stream_url", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestTargetingField () {
      return this.requestTargetingField(true);
    }
    public APIRequestGetVideoBroadcasts requestTargetingField (boolean value) {
      this.requestField("targeting", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetVideoBroadcasts requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestTotalViewsField () {
      return this.requestTotalViewsField(true);
    }
    public APIRequestGetVideoBroadcasts requestTotalViewsField (boolean value) {
      this.requestField("total_views", value);
      return this;
    }
    public APIRequestGetVideoBroadcasts requestVideoField () {
      return this.requestVideoField(true);
    }
    public APIRequestGetVideoBroadcasts requestVideoField (boolean value) {
      this.requestField("video", value);
      return this;
    }
  }

  public static class APIRequestGetVideoCopyrightRules extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "source",
      "selected_rule_id",
    };

    public static final String[] FIELDS = {
      "condition_groups",
      "copyrights",
      "created_date",
      "creator",
      "id",
      "is_in_migration",
      "name",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return VideoCopyrightRule.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetVideoCopyrightRules.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetVideoCopyrightRules(String nodeId, APIContext context) {
      super(context, nodeId, "/video_copyright_rules", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetVideoCopyrightRules setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetVideoCopyrightRules setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetVideoCopyrightRules setSource (VideoCopyrightRule.EnumSource source) {
      this.setParam("source", source);
      return this;
    }
    public APIRequestGetVideoCopyrightRules setSource (String source) {
      this.setParam("source", source);
      return this;
    }

    public APIRequestGetVideoCopyrightRules setSelectedRuleId (String selectedRuleId) {
      this.setParam("selected_rule_id", selectedRuleId);
      return this;
    }

    public APIRequestGetVideoCopyrightRules requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetVideoCopyrightRules requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideoCopyrightRules requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetVideoCopyrightRules requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideoCopyrightRules requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetVideoCopyrightRules requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetVideoCopyrightRules requestConditionGroupsField () {
      return this.requestConditionGroupsField(true);
    }
    public APIRequestGetVideoCopyrightRules requestConditionGroupsField (boolean value) {
      this.requestField("condition_groups", value);
      return this;
    }
    public APIRequestGetVideoCopyrightRules requestCopyrightsField () {
      return this.requestCopyrightsField(true);
    }
    public APIRequestGetVideoCopyrightRules requestCopyrightsField (boolean value) {
      this.requestField("copyrights", value);
      return this;
    }
    public APIRequestGetVideoCopyrightRules requestCreatedDateField () {
      return this.requestCreatedDateField(true);
    }
    public APIRequestGetVideoCopyrightRules requestCreatedDateField (boolean value) {
      this.requestField("created_date", value);
      return this;
    }
    public APIRequestGetVideoCopyrightRules requestCreatorField () {
      return this.requestCreatorField(true);
    }
    public APIRequestGetVideoCopyrightRules requestCreatorField (boolean value) {
      this.requestField("creator", value);
      return this;
    }
    public APIRequestGetVideoCopyrightRules requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetVideoCopyrightRules requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetVideoCopyrightRules requestIsInMigrationField () {
      return this.requestIsInMigrationField(true);
    }
    public APIRequestGetVideoCopyrightRules requestIsInMigrationField (boolean value) {
      this.requestField("is_in_migration", value);
      return this;
    }
    public APIRequestGetVideoCopyrightRules requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetVideoCopyrightRules requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
  }

  public static class APIRequestCreateVideoCopyrightRule extends APIRequest {

    VideoCopyrightRule lastResponse = null;
    @Override
    public VideoCopyrightRule getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "name",
      "condition_groups",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public VideoCopyrightRule parseResponse(String response, String header) throws APIException {
      return VideoCopyrightRule.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public VideoCopyrightRule execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public VideoCopyrightRule execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public VideoCopyrightRule apply(ResponseWrapper result) {
             try {
               return APIRequestCreateVideoCopyrightRule.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateVideoCopyrightRule(String nodeId, APIContext context) {
      super(context, nodeId, "/video_copyright_rules", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateVideoCopyrightRule setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateVideoCopyrightRule setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateVideoCopyrightRule setName (String name) {
      this.setParam("name", name);
      return this;
    }

    public APIRequestCreateVideoCopyrightRule setConditionGroups (List conditionGroups) {
      this.setParam("condition_groups", conditionGroups);
      return this;
    }
    public APIRequestCreateVideoCopyrightRule setConditionGroups (String conditionGroups) {
      this.setParam("condition_groups", conditionGroups);
      return this;
    }

    public APIRequestCreateVideoCopyrightRule requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateVideoCopyrightRule requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateVideoCopyrightRule requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateVideoCopyrightRule requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateVideoCopyrightRule requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateVideoCopyrightRule requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetVideoCopyrights extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "content_category",
      "copyright_content_id",
      "creator",
      "id",
      "in_conflict",
      "monitoring_status",
      "monitoring_type",
      "ownership_countries",
      "reference_file",
      "reference_file_disabled",
      "reference_file_disabled_by_ops",
      "reference_file_expired",
      "reference_owner_id",
      "rule_ids",
      "whitelisted_ids",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return VideoCopyright.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetVideoCopyrights.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetVideoCopyrights(String nodeId, APIContext context) {
      super(context, nodeId, "/video_copyrights", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetVideoCopyrights setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetVideoCopyrights setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetVideoCopyrights requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetVideoCopyrights requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideoCopyrights requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetVideoCopyrights requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideoCopyrights requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetVideoCopyrights requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetVideoCopyrights requestContentCategoryField () {
      return this.requestContentCategoryField(true);
    }
    public APIRequestGetVideoCopyrights requestContentCategoryField (boolean value) {
      this.requestField("content_category", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestCopyrightContentIdField () {
      return this.requestCopyrightContentIdField(true);
    }
    public APIRequestGetVideoCopyrights requestCopyrightContentIdField (boolean value) {
      this.requestField("copyright_content_id", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestCreatorField () {
      return this.requestCreatorField(true);
    }
    public APIRequestGetVideoCopyrights requestCreatorField (boolean value) {
      this.requestField("creator", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetVideoCopyrights requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestInConflictField () {
      return this.requestInConflictField(true);
    }
    public APIRequestGetVideoCopyrights requestInConflictField (boolean value) {
      this.requestField("in_conflict", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestMonitoringStatusField () {
      return this.requestMonitoringStatusField(true);
    }
    public APIRequestGetVideoCopyrights requestMonitoringStatusField (boolean value) {
      this.requestField("monitoring_status", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestMonitoringTypeField () {
      return this.requestMonitoringTypeField(true);
    }
    public APIRequestGetVideoCopyrights requestMonitoringTypeField (boolean value) {
      this.requestField("monitoring_type", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestOwnershipCountriesField () {
      return this.requestOwnershipCountriesField(true);
    }
    public APIRequestGetVideoCopyrights requestOwnershipCountriesField (boolean value) {
      this.requestField("ownership_countries", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestReferenceFileField () {
      return this.requestReferenceFileField(true);
    }
    public APIRequestGetVideoCopyrights requestReferenceFileField (boolean value) {
      this.requestField("reference_file", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestReferenceFileDisabledField () {
      return this.requestReferenceFileDisabledField(true);
    }
    public APIRequestGetVideoCopyrights requestReferenceFileDisabledField (boolean value) {
      this.requestField("reference_file_disabled", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestReferenceFileDisabledByOpsField () {
      return this.requestReferenceFileDisabledByOpsField(true);
    }
    public APIRequestGetVideoCopyrights requestReferenceFileDisabledByOpsField (boolean value) {
      this.requestField("reference_file_disabled_by_ops", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestReferenceFileExpiredField () {
      return this.requestReferenceFileExpiredField(true);
    }
    public APIRequestGetVideoCopyrights requestReferenceFileExpiredField (boolean value) {
      this.requestField("reference_file_expired", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestReferenceOwnerIdField () {
      return this.requestReferenceOwnerIdField(true);
    }
    public APIRequestGetVideoCopyrights requestReferenceOwnerIdField (boolean value) {
      this.requestField("reference_owner_id", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestRuleIdsField () {
      return this.requestRuleIdsField(true);
    }
    public APIRequestGetVideoCopyrights requestRuleIdsField (boolean value) {
      this.requestField("rule_ids", value);
      return this;
    }
    public APIRequestGetVideoCopyrights requestWhitelistedIdsField () {
      return this.requestWhitelistedIdsField(true);
    }
    public APIRequestGetVideoCopyrights requestWhitelistedIdsField (boolean value) {
      this.requestField("whitelisted_ids", value);
      return this;
    }
  }

  public static class APIRequestCreateVideoCopyright extends APIRequest {

    VideoCopyright lastResponse = null;
    @Override
    public VideoCopyright getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "monitoring_type",
      "rule_id",
      "whitelisted_ids",
      "whitelisted_ig_user_ids",
      "ownership_countries",
      "excluded_ownership_countries",
      "excluded_ownership_segments",
      "is_reference_disabled",
      "content_category",
      "attribution_id",
      "copyright_content_id",
      "is_reference_video",
      "fingerprint_id",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public VideoCopyright parseResponse(String response, String header) throws APIException {
      return VideoCopyright.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public VideoCopyright execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public VideoCopyright execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public VideoCopyright apply(ResponseWrapper result) {
             try {
               return APIRequestCreateVideoCopyright.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateVideoCopyright(String nodeId, APIContext context) {
      super(context, nodeId, "/video_copyrights", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateVideoCopyright setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateVideoCopyright setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateVideoCopyright setMonitoringType (VideoCopyright.EnumMonitoringType monitoringType) {
      this.setParam("monitoring_type", monitoringType);
      return this;
    }
    public APIRequestCreateVideoCopyright setMonitoringType (String monitoringType) {
      this.setParam("monitoring_type", monitoringType);
      return this;
    }

    public APIRequestCreateVideoCopyright setRuleId (String ruleId) {
      this.setParam("rule_id", ruleId);
      return this;
    }

    public APIRequestCreateVideoCopyright setWhitelistedIds (List whitelistedIds) {
      this.setParam("whitelisted_ids", whitelistedIds);
      return this;
    }
    public APIRequestCreateVideoCopyright setWhitelistedIds (String whitelistedIds) {
      this.setParam("whitelisted_ids", whitelistedIds);
      return this;
    }

    public APIRequestCreateVideoCopyright setWhitelistedIgUserIds (List whitelistedIgUserIds) {
      this.setParam("whitelisted_ig_user_ids", whitelistedIgUserIds);
      return this;
    }
    public APIRequestCreateVideoCopyright setWhitelistedIgUserIds (String whitelistedIgUserIds) {
      this.setParam("whitelisted_ig_user_ids", whitelistedIgUserIds);
      return this;
    }

    public APIRequestCreateVideoCopyright setOwnershipCountries (List ownershipCountries) {
      this.setParam("ownership_countries", ownershipCountries);
      return this;
    }
    public APIRequestCreateVideoCopyright setOwnershipCountries (String ownershipCountries) {
      this.setParam("ownership_countries", ownershipCountries);
      return this;
    }

    public APIRequestCreateVideoCopyright setExcludedOwnershipCountries (List excludedOwnershipCountries) {
      this.setParam("excluded_ownership_countries", excludedOwnershipCountries);
      return this;
    }
    public APIRequestCreateVideoCopyright setExcludedOwnershipCountries (String excludedOwnershipCountries) {
      this.setParam("excluded_ownership_countries", excludedOwnershipCountries);
      return this;
    }

    public APIRequestCreateVideoCopyright setExcludedOwnershipSegments (List excludedOwnershipSegments) {
      this.setParam("excluded_ownership_segments", excludedOwnershipSegments);
      return this;
    }
    public APIRequestCreateVideoCopyright setExcludedOwnershipSegments (String excludedOwnershipSegments) {
      this.setParam("excluded_ownership_segments", excludedOwnershipSegments);
      return this;
    }

    public APIRequestCreateVideoCopyright setIsReferenceDisabled (Boolean isReferenceDisabled) {
      this.setParam("is_reference_disabled", isReferenceDisabled);
      return this;
    }
    public APIRequestCreateVideoCopyright setIsReferenceDisabled (String isReferenceDisabled) {
      this.setParam("is_reference_disabled", isReferenceDisabled);
      return this;
    }

    public APIRequestCreateVideoCopyright setContentCategory (VideoCopyright.EnumContentCategory contentCategory) {
      this.setParam("content_category", contentCategory);
      return this;
    }
    public APIRequestCreateVideoCopyright setContentCategory (String contentCategory) {
      this.setParam("content_category", contentCategory);
      return this;
    }

    public APIRequestCreateVideoCopyright setAttributionId (String attributionId) {
      this.setParam("attribution_id", attributionId);
      return this;
    }

    public APIRequestCreateVideoCopyright setCopyrightContentId (String copyrightContentId) {
      this.setParam("copyright_content_id", copyrightContentId);
      return this;
    }

    public APIRequestCreateVideoCopyright setIsReferenceVideo (Boolean isReferenceVideo) {
      this.setParam("is_reference_video", isReferenceVideo);
      return this;
    }
    public APIRequestCreateVideoCopyright setIsReferenceVideo (String isReferenceVideo) {
      this.setParam("is_reference_video", isReferenceVideo);
      return this;
    }

    public APIRequestCreateVideoCopyright setFingerprintId (String fingerprintId) {
      this.setParam("fingerprint_id", fingerprintId);
      return this;
    }

    public APIRequestCreateVideoCopyright requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateVideoCopyright requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateVideoCopyright requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateVideoCopyright requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateVideoCopyright requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateVideoCopyright requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestDeleteVideoLists extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "video_list_id",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return APINode.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestDeleteVideoLists.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestDeleteVideoLists(String nodeId, APIContext context) {
      super(context, nodeId, "/video_lists", "DELETE", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestDeleteVideoLists setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestDeleteVideoLists setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestDeleteVideoLists setVideoListId (String videoListId) {
      this.setParam("video_list_id", videoListId);
      return this;
    }

    public APIRequestDeleteVideoLists requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestDeleteVideoLists requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteVideoLists requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestDeleteVideoLists requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestDeleteVideoLists requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestDeleteVideoLists requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetVideoLists extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "creation_time",
      "description",
      "id",
      "last_modified",
      "owner",
      "season_number",
      "thumbnail",
      "title",
      "videos_count",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return VideoList.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetVideoLists.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetVideoLists(String nodeId, APIContext context) {
      super(context, nodeId, "/video_lists", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetVideoLists setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetVideoLists setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetVideoLists requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetVideoLists requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideoLists requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetVideoLists requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideoLists requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetVideoLists requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetVideoLists requestCreationTimeField () {
      return this.requestCreationTimeField(true);
    }
    public APIRequestGetVideoLists requestCreationTimeField (boolean value) {
      this.requestField("creation_time", value);
      return this;
    }
    public APIRequestGetVideoLists requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetVideoLists requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetVideoLists requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetVideoLists requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetVideoLists requestLastModifiedField () {
      return this.requestLastModifiedField(true);
    }
    public APIRequestGetVideoLists requestLastModifiedField (boolean value) {
      this.requestField("last_modified", value);
      return this;
    }
    public APIRequestGetVideoLists requestOwnerField () {
      return this.requestOwnerField(true);
    }
    public APIRequestGetVideoLists requestOwnerField (boolean value) {
      this.requestField("owner", value);
      return this;
    }
    public APIRequestGetVideoLists requestSeasonNumberField () {
      return this.requestSeasonNumberField(true);
    }
    public APIRequestGetVideoLists requestSeasonNumberField (boolean value) {
      this.requestField("season_number", value);
      return this;
    }
    public APIRequestGetVideoLists requestThumbnailField () {
      return this.requestThumbnailField(true);
    }
    public APIRequestGetVideoLists requestThumbnailField (boolean value) {
      this.requestField("thumbnail", value);
      return this;
    }
    public APIRequestGetVideoLists requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetVideoLists requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
    public APIRequestGetVideoLists requestVideosCountField () {
      return this.requestVideosCountField(true);
    }
    public APIRequestGetVideoLists requestVideosCountField (boolean value) {
      this.requestField("videos_count", value);
      return this;
    }
  }

  public static class APIRequestCreateVideoList extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "title",
      "description",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestCreateVideoList.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateVideoList(String nodeId, APIContext context) {
      super(context, nodeId, "/video_lists", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateVideoList setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateVideoList setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateVideoList setTitle (String title) {
      this.setParam("title", title);
      return this;
    }

    public APIRequestCreateVideoList setDescription (String description) {
      this.setParam("description", description);
      return this;
    }

    public APIRequestCreateVideoList requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateVideoList requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateVideoList requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateVideoList requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateVideoList requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateVideoList requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetVideoMediaCopyrights extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "content_category",
      "copyright_content_id",
      "creator",
      "id",
      "in_conflict",
      "monitoring_status",
      "monitoring_type",
      "ownership_countries",
      "reference_file",
      "reference_file_disabled",
      "reference_file_disabled_by_ops",
      "reference_file_expired",
      "reference_owner_id",
      "rule_ids",
      "whitelisted_ids",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return VideoCopyright.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetVideoMediaCopyrights.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetVideoMediaCopyrights(String nodeId, APIContext context) {
      super(context, nodeId, "/video_media_copyrights", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetVideoMediaCopyrights setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetVideoMediaCopyrights setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetVideoMediaCopyrights requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetVideoMediaCopyrights requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideoMediaCopyrights requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetVideoMediaCopyrights requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideoMediaCopyrights requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetVideoMediaCopyrights requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetVideoMediaCopyrights requestContentCategoryField () {
      return this.requestContentCategoryField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestContentCategoryField (boolean value) {
      this.requestField("content_category", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestCopyrightContentIdField () {
      return this.requestCopyrightContentIdField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestCopyrightContentIdField (boolean value) {
      this.requestField("copyright_content_id", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestCreatorField () {
      return this.requestCreatorField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestCreatorField (boolean value) {
      this.requestField("creator", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestInConflictField () {
      return this.requestInConflictField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestInConflictField (boolean value) {
      this.requestField("in_conflict", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestMonitoringStatusField () {
      return this.requestMonitoringStatusField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestMonitoringStatusField (boolean value) {
      this.requestField("monitoring_status", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestMonitoringTypeField () {
      return this.requestMonitoringTypeField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestMonitoringTypeField (boolean value) {
      this.requestField("monitoring_type", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestOwnershipCountriesField () {
      return this.requestOwnershipCountriesField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestOwnershipCountriesField (boolean value) {
      this.requestField("ownership_countries", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestReferenceFileField () {
      return this.requestReferenceFileField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestReferenceFileField (boolean value) {
      this.requestField("reference_file", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestReferenceFileDisabledField () {
      return this.requestReferenceFileDisabledField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestReferenceFileDisabledField (boolean value) {
      this.requestField("reference_file_disabled", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestReferenceFileDisabledByOpsField () {
      return this.requestReferenceFileDisabledByOpsField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestReferenceFileDisabledByOpsField (boolean value) {
      this.requestField("reference_file_disabled_by_ops", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestReferenceFileExpiredField () {
      return this.requestReferenceFileExpiredField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestReferenceFileExpiredField (boolean value) {
      this.requestField("reference_file_expired", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestReferenceOwnerIdField () {
      return this.requestReferenceOwnerIdField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestReferenceOwnerIdField (boolean value) {
      this.requestField("reference_owner_id", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestRuleIdsField () {
      return this.requestRuleIdsField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestRuleIdsField (boolean value) {
      this.requestField("rule_ids", value);
      return this;
    }
    public APIRequestGetVideoMediaCopyrights requestWhitelistedIdsField () {
      return this.requestWhitelistedIdsField(true);
    }
    public APIRequestGetVideoMediaCopyrights requestWhitelistedIdsField (boolean value) {
      this.requestField("whitelisted_ids", value);
      return this;
    }
  }

  public static class APIRequestGetVideos extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "type",
    };

    public static final String[] FIELDS = {
      "ad_breaks",
      "backdated_time",
      "backdated_time_granularity",
      "content_category",
      "content_tags",
      "created_time",
      "custom_labels",
      "description",
      "embed_html",
      "embeddable",
      "event",
      "expiration",
      "format",
      "from",
      "icon",
      "id",
      "is_crosspost_video",
      "is_crossposting_eligible",
      "is_episode",
      "is_instagram_eligible",
      "length",
      "live_audience_count",
      "live_status",
      "permalink_url",
      "picture",
      "place",
      "premiere_living_room_status",
      "privacy",
      "published",
      "scheduled_publish_time",
      "source",
      "spherical",
      "status",
      "title",
      "tv_banner_ad",
      "universal_video_id",
      "updated_time",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return AdVideo.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetVideos.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetVideos(String nodeId, APIContext context) {
      super(context, nodeId, "/videos", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetVideos setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetVideos setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetVideos setType (AdVideo.EnumType type) {
      this.setParam("type", type);
      return this;
    }
    public APIRequestGetVideos setType (String type) {
      this.setParam("type", type);
      return this;
    }

    public APIRequestGetVideos requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetVideos requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideos requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetVideos requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideos requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetVideos requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetVideos requestAdBreaksField () {
      return this.requestAdBreaksField(true);
    }
    public APIRequestGetVideos requestAdBreaksField (boolean value) {
      this.requestField("ad_breaks", value);
      return this;
    }
    public APIRequestGetVideos requestBackdatedTimeField () {
      return this.requestBackdatedTimeField(true);
    }
    public APIRequestGetVideos requestBackdatedTimeField (boolean value) {
      this.requestField("backdated_time", value);
      return this;
    }
    public APIRequestGetVideos requestBackdatedTimeGranularityField () {
      return this.requestBackdatedTimeGranularityField(true);
    }
    public APIRequestGetVideos requestBackdatedTimeGranularityField (boolean value) {
      this.requestField("backdated_time_granularity", value);
      return this;
    }
    public APIRequestGetVideos requestContentCategoryField () {
      return this.requestContentCategoryField(true);
    }
    public APIRequestGetVideos requestContentCategoryField (boolean value) {
      this.requestField("content_category", value);
      return this;
    }
    public APIRequestGetVideos requestContentTagsField () {
      return this.requestContentTagsField(true);
    }
    public APIRequestGetVideos requestContentTagsField (boolean value) {
      this.requestField("content_tags", value);
      return this;
    }
    public APIRequestGetVideos requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetVideos requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetVideos requestCustomLabelsField () {
      return this.requestCustomLabelsField(true);
    }
    public APIRequestGetVideos requestCustomLabelsField (boolean value) {
      this.requestField("custom_labels", value);
      return this;
    }
    public APIRequestGetVideos requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetVideos requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetVideos requestEmbedHtmlField () {
      return this.requestEmbedHtmlField(true);
    }
    public APIRequestGetVideos requestEmbedHtmlField (boolean value) {
      this.requestField("embed_html", value);
      return this;
    }
    public APIRequestGetVideos requestEmbeddableField () {
      return this.requestEmbeddableField(true);
    }
    public APIRequestGetVideos requestEmbeddableField (boolean value) {
      this.requestField("embeddable", value);
      return this;
    }
    public APIRequestGetVideos requestEventField () {
      return this.requestEventField(true);
    }
    public APIRequestGetVideos requestEventField (boolean value) {
      this.requestField("event", value);
      return this;
    }
    public APIRequestGetVideos requestExpirationField () {
      return this.requestExpirationField(true);
    }
    public APIRequestGetVideos requestExpirationField (boolean value) {
      this.requestField("expiration", value);
      return this;
    }
    public APIRequestGetVideos requestFormatField () {
      return this.requestFormatField(true);
    }
    public APIRequestGetVideos requestFormatField (boolean value) {
      this.requestField("format", value);
      return this;
    }
    public APIRequestGetVideos requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetVideos requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetVideos requestIconField () {
      return this.requestIconField(true);
    }
    public APIRequestGetVideos requestIconField (boolean value) {
      this.requestField("icon", value);
      return this;
    }
    public APIRequestGetVideos requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetVideos requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetVideos requestIsCrosspostVideoField () {
      return this.requestIsCrosspostVideoField(true);
    }
    public APIRequestGetVideos requestIsCrosspostVideoField (boolean value) {
      this.requestField("is_crosspost_video", value);
      return this;
    }
    public APIRequestGetVideos requestIsCrosspostingEligibleField () {
      return this.requestIsCrosspostingEligibleField(true);
    }
    public APIRequestGetVideos requestIsCrosspostingEligibleField (boolean value) {
      this.requestField("is_crossposting_eligible", value);
      return this;
    }
    public APIRequestGetVideos requestIsEpisodeField () {
      return this.requestIsEpisodeField(true);
    }
    public APIRequestGetVideos requestIsEpisodeField (boolean value) {
      this.requestField("is_episode", value);
      return this;
    }
    public APIRequestGetVideos requestIsInstagramEligibleField () {
      return this.requestIsInstagramEligibleField(true);
    }
    public APIRequestGetVideos requestIsInstagramEligibleField (boolean value) {
      this.requestField("is_instagram_eligible", value);
      return this;
    }
    public APIRequestGetVideos requestLengthField () {
      return this.requestLengthField(true);
    }
    public APIRequestGetVideos requestLengthField (boolean value) {
      this.requestField("length", value);
      return this;
    }
    public APIRequestGetVideos requestLiveAudienceCountField () {
      return this.requestLiveAudienceCountField(true);
    }
    public APIRequestGetVideos requestLiveAudienceCountField (boolean value) {
      this.requestField("live_audience_count", value);
      return this;
    }
    public APIRequestGetVideos requestLiveStatusField () {
      return this.requestLiveStatusField(true);
    }
    public APIRequestGetVideos requestLiveStatusField (boolean value) {
      this.requestField("live_status", value);
      return this;
    }
    public APIRequestGetVideos requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetVideos requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetVideos requestPictureField () {
      return this.requestPictureField(true);
    }
    public APIRequestGetVideos requestPictureField (boolean value) {
      this.requestField("picture", value);
      return this;
    }
    public APIRequestGetVideos requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetVideos requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetVideos requestPremiereLivingRoomStatusField () {
      return this.requestPremiereLivingRoomStatusField(true);
    }
    public APIRequestGetVideos requestPremiereLivingRoomStatusField (boolean value) {
      this.requestField("premiere_living_room_status", value);
      return this;
    }
    public APIRequestGetVideos requestPrivacyField () {
      return this.requestPrivacyField(true);
    }
    public APIRequestGetVideos requestPrivacyField (boolean value) {
      this.requestField("privacy", value);
      return this;
    }
    public APIRequestGetVideos requestPublishedField () {
      return this.requestPublishedField(true);
    }
    public APIRequestGetVideos requestPublishedField (boolean value) {
      this.requestField("published", value);
      return this;
    }
    public APIRequestGetVideos requestScheduledPublishTimeField () {
      return this.requestScheduledPublishTimeField(true);
    }
    public APIRequestGetVideos requestScheduledPublishTimeField (boolean value) {
      this.requestField("scheduled_publish_time", value);
      return this;
    }
    public APIRequestGetVideos requestSourceField () {
      return this.requestSourceField(true);
    }
    public APIRequestGetVideos requestSourceField (boolean value) {
      this.requestField("source", value);
      return this;
    }
    public APIRequestGetVideos requestSphericalField () {
      return this.requestSphericalField(true);
    }
    public APIRequestGetVideos requestSphericalField (boolean value) {
      this.requestField("spherical", value);
      return this;
    }
    public APIRequestGetVideos requestStatusField () {
      return this.requestStatusField(true);
    }
    public APIRequestGetVideos requestStatusField (boolean value) {
      this.requestField("status", value);
      return this;
    }
    public APIRequestGetVideos requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetVideos requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
    public APIRequestGetVideos requestTvBannerAdField () {
      return this.requestTvBannerAdField(true);
    }
    public APIRequestGetVideos requestTvBannerAdField (boolean value) {
      this.requestField("tv_banner_ad", value);
      return this;
    }
    public APIRequestGetVideos requestUniversalVideoIdField () {
      return this.requestUniversalVideoIdField(true);
    }
    public APIRequestGetVideos requestUniversalVideoIdField (boolean value) {
      this.requestField("universal_video_id", value);
      return this;
    }
    public APIRequestGetVideos requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetVideos requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
  }

  public static class APIRequestCreateVideo extends APIRequest {

    AdVideo lastResponse = null;
    @Override
    public AdVideo getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "title",
      "source",
      "unpublished_content_type",
      "time_since_original_post",
      "file_url",
      "composer_session_id",
      "waterfall_id",
      "og_action_type_id",
      "og_object_id",
      "og_phrase",
      "og_icon_id",
      "og_suggestion_mechanism",
      "thumb",
      "spherical",
      "original_projection_type",
      "initial_heading",
      "initial_pitch",
      "fov",
      "original_fov",
      "fisheye_video_cropped",
      "front_z_rotation",
      "guide_enabled",
      "guide",
      "audio_story_wave_animation_handle",
      "manual_privacy",
      "is_explicit_share",
      "adaptive_type",
      "animated_effect_id",
      "asked_fun_fact_prompt_id",
      "composer_entry_picker",
      "composer_entry_point",
      "composer_entry_time",
      "composer_session_events_log",
      "composer_source_surface",
      "composer_type",
      "formatting",
      "fun_fact_prompt_id",
      "fun_fact_toastee_id",
      "is_group_linking_post",
      "has_nickname",
      "holiday_card",
      "instant_game_entry_point_data",
      "is_boost_intended",
      "location_source_id",
      "description",
      "offer_like_post_id",
      "publish_event_id",
      "react_mode_metadata",
      "sales_promo_id",
      "text_format_metadata",
      "throwback_camera_roll_media",
      "video_start_time_ms",
      "application_id",
      "upload_phase",
      "file_size",
      "start_offset",
      "end_offset",
      "video_file_chunk",
      "fbuploader_video_file_chunk",
      "upload_session_id",
      "is_voice_clip",
      "attribution_app_id",
      "content_category",
      "embeddable",
      "slideshow_spec",
      "upload_setting_properties",
      "transcode_setting_properties",
      "container_type",
      "referenced_sticker_id",
      "replace_video_id",
      "swap_mode",
      "ad_breaks",
      "backdated_post",
      "custom_labels",
      "call_to_action",
      "expiration",
      "feed_targeting",
      "published",
      "scheduled_publish_time",
      "targeting",
      "no_story",
      "secret",
      "social_actions",
      "sponsor_id",
      "direct_share_status",
      "sponsor_relationship",
      "content_tags",
      "reference_only",
      "video_asset_id",
      "universal_video_id",
      "multilingual_data",
      "specified_dialect",
      "crossposted_video_id",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public AdVideo parseResponse(String response, String header) throws APIException {
      return AdVideo.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public AdVideo execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public AdVideo execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public AdVideo apply(ResponseWrapper result) {
             try {
               return APIRequestCreateVideo.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestCreateVideo(String nodeId, APIContext context) {
      super(context, nodeId, "/videos", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestCreateVideo setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestCreateVideo setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestCreateVideo setTitle (String title) {
      this.setParam("title", title);
      return this;
    }

    public APIRequestCreateVideo setSource (String source) {
      this.setParam("source", source);
      return this;
    }

    public APIRequestCreateVideo setUnpublishedContentType (AdVideo.EnumUnpublishedContentType unpublishedContentType) {
      this.setParam("unpublished_content_type", unpublishedContentType);
      return this;
    }
    public APIRequestCreateVideo setUnpublishedContentType (String unpublishedContentType) {
      this.setParam("unpublished_content_type", unpublishedContentType);
      return this;
    }

    public APIRequestCreateVideo setTimeSinceOriginalPost (Long timeSinceOriginalPost) {
      this.setParam("time_since_original_post", timeSinceOriginalPost);
      return this;
    }
    public APIRequestCreateVideo setTimeSinceOriginalPost (String timeSinceOriginalPost) {
      this.setParam("time_since_original_post", timeSinceOriginalPost);
      return this;
    }

    public APIRequestCreateVideo setFileUrl (String fileUrl) {
      this.setParam("file_url", fileUrl);
      return this;
    }

    public APIRequestCreateVideo setComposerSessionId (String composerSessionId) {
      this.setParam("composer_session_id", composerSessionId);
      return this;
    }

    public APIRequestCreateVideo setWaterfallId (String waterfallId) {
      this.setParam("waterfall_id", waterfallId);
      return this;
    }

    public APIRequestCreateVideo setOgActionTypeId (String ogActionTypeId) {
      this.setParam("og_action_type_id", ogActionTypeId);
      return this;
    }

    public APIRequestCreateVideo setOgObjectId (String ogObjectId) {
      this.setParam("og_object_id", ogObjectId);
      return this;
    }

    public APIRequestCreateVideo setOgPhrase (String ogPhrase) {
      this.setParam("og_phrase", ogPhrase);
      return this;
    }

    public APIRequestCreateVideo setOgIconId (String ogIconId) {
      this.setParam("og_icon_id", ogIconId);
      return this;
    }

    public APIRequestCreateVideo setOgSuggestionMechanism (String ogSuggestionMechanism) {
      this.setParam("og_suggestion_mechanism", ogSuggestionMechanism);
      return this;
    }

    public APIRequestCreateVideo setThumb (File thumb) {
      this.setParam("thumb", thumb);
      return this;
    }
    public APIRequestCreateVideo setThumb (String thumb) {
      this.setParam("thumb", thumb);
      return this;
    }

    public APIRequestCreateVideo setSpherical (Boolean spherical) {
      this.setParam("spherical", spherical);
      return this;
    }
    public APIRequestCreateVideo setSpherical (String spherical) {
      this.setParam("spherical", spherical);
      return this;
    }

    public APIRequestCreateVideo setOriginalProjectionType (AdVideo.EnumOriginalProjectionType originalProjectionType) {
      this.setParam("original_projection_type", originalProjectionType);
      return this;
    }
    public APIRequestCreateVideo setOriginalProjectionType (String originalProjectionType) {
      this.setParam("original_projection_type", originalProjectionType);
      return this;
    }

    public APIRequestCreateVideo setInitialHeading (Long initialHeading) {
      this.setParam("initial_heading", initialHeading);
      return this;
    }
    public APIRequestCreateVideo setInitialHeading (String initialHeading) {
      this.setParam("initial_heading", initialHeading);
      return this;
    }

    public APIRequestCreateVideo setInitialPitch (Long initialPitch) {
      this.setParam("initial_pitch", initialPitch);
      return this;
    }
    public APIRequestCreateVideo setInitialPitch (String initialPitch) {
      this.setParam("initial_pitch", initialPitch);
      return this;
    }

    public APIRequestCreateVideo setFov (Long fov) {
      this.setParam("fov", fov);
      return this;
    }
    public APIRequestCreateVideo setFov (String fov) {
      this.setParam("fov", fov);
      return this;
    }

    public APIRequestCreateVideo setOriginalFov (Long originalFov) {
      this.setParam("original_fov", originalFov);
      return this;
    }
    public APIRequestCreateVideo setOriginalFov (String originalFov) {
      this.setParam("original_fov", originalFov);
      return this;
    }

    public APIRequestCreateVideo setFisheyeVideoCropped (Boolean fisheyeVideoCropped) {
      this.setParam("fisheye_video_cropped", fisheyeVideoCropped);
      return this;
    }
    public APIRequestCreateVideo setFisheyeVideoCropped (String fisheyeVideoCropped) {
      this.setParam("fisheye_video_cropped", fisheyeVideoCropped);
      return this;
    }

    public APIRequestCreateVideo setFrontZRotation (Double frontZRotation) {
      this.setParam("front_z_rotation", frontZRotation);
      return this;
    }
    public APIRequestCreateVideo setFrontZRotation (String frontZRotation) {
      this.setParam("front_z_rotation", frontZRotation);
      return this;
    }

    public APIRequestCreateVideo setGuideEnabled (Boolean guideEnabled) {
      this.setParam("guide_enabled", guideEnabled);
      return this;
    }
    public APIRequestCreateVideo setGuideEnabled (String guideEnabled) {
      this.setParam("guide_enabled", guideEnabled);
      return this;
    }

    public APIRequestCreateVideo setGuide (List> guide) {
      this.setParam("guide", guide);
      return this;
    }
    public APIRequestCreateVideo setGuide (String guide) {
      this.setParam("guide", guide);
      return this;
    }

    public APIRequestCreateVideo setAudioStoryWaveAnimationHandle (String audioStoryWaveAnimationHandle) {
      this.setParam("audio_story_wave_animation_handle", audioStoryWaveAnimationHandle);
      return this;
    }

    public APIRequestCreateVideo setManualPrivacy (Boolean manualPrivacy) {
      this.setParam("manual_privacy", manualPrivacy);
      return this;
    }
    public APIRequestCreateVideo setManualPrivacy (String manualPrivacy) {
      this.setParam("manual_privacy", manualPrivacy);
      return this;
    }

    public APIRequestCreateVideo setIsExplicitShare (Boolean isExplicitShare) {
      this.setParam("is_explicit_share", isExplicitShare);
      return this;
    }
    public APIRequestCreateVideo setIsExplicitShare (String isExplicitShare) {
      this.setParam("is_explicit_share", isExplicitShare);
      return this;
    }

    public APIRequestCreateVideo setAdaptiveType (String adaptiveType) {
      this.setParam("adaptive_type", adaptiveType);
      return this;
    }

    public APIRequestCreateVideo setAnimatedEffectId (Long animatedEffectId) {
      this.setParam("animated_effect_id", animatedEffectId);
      return this;
    }
    public APIRequestCreateVideo setAnimatedEffectId (String animatedEffectId) {
      this.setParam("animated_effect_id", animatedEffectId);
      return this;
    }

    public APIRequestCreateVideo setAskedFunFactPromptId (Long askedFunFactPromptId) {
      this.setParam("asked_fun_fact_prompt_id", askedFunFactPromptId);
      return this;
    }
    public APIRequestCreateVideo setAskedFunFactPromptId (String askedFunFactPromptId) {
      this.setParam("asked_fun_fact_prompt_id", askedFunFactPromptId);
      return this;
    }

    public APIRequestCreateVideo setComposerEntryPicker (String composerEntryPicker) {
      this.setParam("composer_entry_picker", composerEntryPicker);
      return this;
    }

    public APIRequestCreateVideo setComposerEntryPoint (String composerEntryPoint) {
      this.setParam("composer_entry_point", composerEntryPoint);
      return this;
    }

    public APIRequestCreateVideo setComposerEntryTime (Long composerEntryTime) {
      this.setParam("composer_entry_time", composerEntryTime);
      return this;
    }
    public APIRequestCreateVideo setComposerEntryTime (String composerEntryTime) {
      this.setParam("composer_entry_time", composerEntryTime);
      return this;
    }

    public APIRequestCreateVideo setComposerSessionEventsLog (String composerSessionEventsLog) {
      this.setParam("composer_session_events_log", composerSessionEventsLog);
      return this;
    }

    public APIRequestCreateVideo setComposerSourceSurface (String composerSourceSurface) {
      this.setParam("composer_source_surface", composerSourceSurface);
      return this;
    }

    public APIRequestCreateVideo setComposerType (String composerType) {
      this.setParam("composer_type", composerType);
      return this;
    }

    public APIRequestCreateVideo setFormatting (AdVideo.EnumFormatting formatting) {
      this.setParam("formatting", formatting);
      return this;
    }
    public APIRequestCreateVideo setFormatting (String formatting) {
      this.setParam("formatting", formatting);
      return this;
    }

    public APIRequestCreateVideo setFunFactPromptId (Long funFactPromptId) {
      this.setParam("fun_fact_prompt_id", funFactPromptId);
      return this;
    }
    public APIRequestCreateVideo setFunFactPromptId (String funFactPromptId) {
      this.setParam("fun_fact_prompt_id", funFactPromptId);
      return this;
    }

    public APIRequestCreateVideo setFunFactToasteeId (Long funFactToasteeId) {
      this.setParam("fun_fact_toastee_id", funFactToasteeId);
      return this;
    }
    public APIRequestCreateVideo setFunFactToasteeId (String funFactToasteeId) {
      this.setParam("fun_fact_toastee_id", funFactToasteeId);
      return this;
    }

    public APIRequestCreateVideo setIsGroupLinkingPost (Boolean isGroupLinkingPost) {
      this.setParam("is_group_linking_post", isGroupLinkingPost);
      return this;
    }
    public APIRequestCreateVideo setIsGroupLinkingPost (String isGroupLinkingPost) {
      this.setParam("is_group_linking_post", isGroupLinkingPost);
      return this;
    }

    public APIRequestCreateVideo setHasNickname (Boolean hasNickname) {
      this.setParam("has_nickname", hasNickname);
      return this;
    }
    public APIRequestCreateVideo setHasNickname (String hasNickname) {
      this.setParam("has_nickname", hasNickname);
      return this;
    }

    public APIRequestCreateVideo setHolidayCard (String holidayCard) {
      this.setParam("holiday_card", holidayCard);
      return this;
    }

    public APIRequestCreateVideo setInstantGameEntryPointData (String instantGameEntryPointData) {
      this.setParam("instant_game_entry_point_data", instantGameEntryPointData);
      return this;
    }

    public APIRequestCreateVideo setIsBoostIntended (Boolean isBoostIntended) {
      this.setParam("is_boost_intended", isBoostIntended);
      return this;
    }
    public APIRequestCreateVideo setIsBoostIntended (String isBoostIntended) {
      this.setParam("is_boost_intended", isBoostIntended);
      return this;
    }

    public APIRequestCreateVideo setLocationSourceId (String locationSourceId) {
      this.setParam("location_source_id", locationSourceId);
      return this;
    }

    public APIRequestCreateVideo setDescription (String description) {
      this.setParam("description", description);
      return this;
    }

    public APIRequestCreateVideo setOfferLikePostId (Long offerLikePostId) {
      this.setParam("offer_like_post_id", offerLikePostId);
      return this;
    }
    public APIRequestCreateVideo setOfferLikePostId (String offerLikePostId) {
      this.setParam("offer_like_post_id", offerLikePostId);
      return this;
    }

    public APIRequestCreateVideo setPublishEventId (Long publishEventId) {
      this.setParam("publish_event_id", publishEventId);
      return this;
    }
    public APIRequestCreateVideo setPublishEventId (String publishEventId) {
      this.setParam("publish_event_id", publishEventId);
      return this;
    }

    public APIRequestCreateVideo setReactModeMetadata (String reactModeMetadata) {
      this.setParam("react_mode_metadata", reactModeMetadata);
      return this;
    }

    public APIRequestCreateVideo setSalesPromoId (Long salesPromoId) {
      this.setParam("sales_promo_id", salesPromoId);
      return this;
    }
    public APIRequestCreateVideo setSalesPromoId (String salesPromoId) {
      this.setParam("sales_promo_id", salesPromoId);
      return this;
    }

    public APIRequestCreateVideo setTextFormatMetadata (String textFormatMetadata) {
      this.setParam("text_format_metadata", textFormatMetadata);
      return this;
    }

    public APIRequestCreateVideo setThrowbackCameraRollMedia (String throwbackCameraRollMedia) {
      this.setParam("throwback_camera_roll_media", throwbackCameraRollMedia);
      return this;
    }

    public APIRequestCreateVideo setVideoStartTimeMs (Long videoStartTimeMs) {
      this.setParam("video_start_time_ms", videoStartTimeMs);
      return this;
    }
    public APIRequestCreateVideo setVideoStartTimeMs (String videoStartTimeMs) {
      this.setParam("video_start_time_ms", videoStartTimeMs);
      return this;
    }

    public APIRequestCreateVideo setApplicationId (String applicationId) {
      this.setParam("application_id", applicationId);
      return this;
    }

    public APIRequestCreateVideo setUploadPhase (AdVideo.EnumUploadPhase uploadPhase) {
      this.setParam("upload_phase", uploadPhase);
      return this;
    }
    public APIRequestCreateVideo setUploadPhase (String uploadPhase) {
      this.setParam("upload_phase", uploadPhase);
      return this;
    }

    public APIRequestCreateVideo setFileSize (Long fileSize) {
      this.setParam("file_size", fileSize);
      return this;
    }
    public APIRequestCreateVideo setFileSize (String fileSize) {
      this.setParam("file_size", fileSize);
      return this;
    }

    public APIRequestCreateVideo setStartOffset (Long startOffset) {
      this.setParam("start_offset", startOffset);
      return this;
    }
    public APIRequestCreateVideo setStartOffset (String startOffset) {
      this.setParam("start_offset", startOffset);
      return this;
    }

    public APIRequestCreateVideo setEndOffset (Long endOffset) {
      this.setParam("end_offset", endOffset);
      return this;
    }
    public APIRequestCreateVideo setEndOffset (String endOffset) {
      this.setParam("end_offset", endOffset);
      return this;
    }

    public APIRequestCreateVideo setVideoFileChunk (String videoFileChunk) {
      this.setParam("video_file_chunk", videoFileChunk);
      return this;
    }

    public APIRequestCreateVideo setFbuploaderVideoFileChunk (String fbuploaderVideoFileChunk) {
      this.setParam("fbuploader_video_file_chunk", fbuploaderVideoFileChunk);
      return this;
    }

    public APIRequestCreateVideo setUploadSessionId (String uploadSessionId) {
      this.setParam("upload_session_id", uploadSessionId);
      return this;
    }

    public APIRequestCreateVideo setIsVoiceClip (Boolean isVoiceClip) {
      this.setParam("is_voice_clip", isVoiceClip);
      return this;
    }
    public APIRequestCreateVideo setIsVoiceClip (String isVoiceClip) {
      this.setParam("is_voice_clip", isVoiceClip);
      return this;
    }

    public APIRequestCreateVideo setAttributionAppId (String attributionAppId) {
      this.setParam("attribution_app_id", attributionAppId);
      return this;
    }

    public APIRequestCreateVideo setContentCategory (AdVideo.EnumContentCategory contentCategory) {
      this.setParam("content_category", contentCategory);
      return this;
    }
    public APIRequestCreateVideo setContentCategory (String contentCategory) {
      this.setParam("content_category", contentCategory);
      return this;
    }

    public APIRequestCreateVideo setEmbeddable (Boolean embeddable) {
      this.setParam("embeddable", embeddable);
      return this;
    }
    public APIRequestCreateVideo setEmbeddable (String embeddable) {
      this.setParam("embeddable", embeddable);
      return this;
    }

    public APIRequestCreateVideo setSlideshowSpec (Map slideshowSpec) {
      this.setParam("slideshow_spec", slideshowSpec);
      return this;
    }
    public APIRequestCreateVideo setSlideshowSpec (String slideshowSpec) {
      this.setParam("slideshow_spec", slideshowSpec);
      return this;
    }

    public APIRequestCreateVideo setUploadSettingProperties (String uploadSettingProperties) {
      this.setParam("upload_setting_properties", uploadSettingProperties);
      return this;
    }

    public APIRequestCreateVideo setTranscodeSettingProperties (String transcodeSettingProperties) {
      this.setParam("transcode_setting_properties", transcodeSettingProperties);
      return this;
    }

    public APIRequestCreateVideo setContainerType (AdVideo.EnumContainerType containerType) {
      this.setParam("container_type", containerType);
      return this;
    }
    public APIRequestCreateVideo setContainerType (String containerType) {
      this.setParam("container_type", containerType);
      return this;
    }

    public APIRequestCreateVideo setReferencedStickerId (String referencedStickerId) {
      this.setParam("referenced_sticker_id", referencedStickerId);
      return this;
    }

    public APIRequestCreateVideo setReplaceVideoId (String replaceVideoId) {
      this.setParam("replace_video_id", replaceVideoId);
      return this;
    }

    public APIRequestCreateVideo setSwapMode (AdVideo.EnumSwapMode swapMode) {
      this.setParam("swap_mode", swapMode);
      return this;
    }
    public APIRequestCreateVideo setSwapMode (String swapMode) {
      this.setParam("swap_mode", swapMode);
      return this;
    }

    public APIRequestCreateVideo setAdBreaks (JsonArray adBreaks) {
      this.setParam("ad_breaks", adBreaks);
      return this;
    }
    public APIRequestCreateVideo setAdBreaks (String adBreaks) {
      this.setParam("ad_breaks", adBreaks);
      return this;
    }

    public APIRequestCreateVideo setBackdatedPost (JsonArray backdatedPost) {
      this.setParam("backdated_post", backdatedPost);
      return this;
    }
    public APIRequestCreateVideo setBackdatedPost (String backdatedPost) {
      this.setParam("backdated_post", backdatedPost);
      return this;
    }

    public APIRequestCreateVideo setCustomLabels (List customLabels) {
      this.setParam("custom_labels", customLabels);
      return this;
    }
    public APIRequestCreateVideo setCustomLabels (String customLabels) {
      this.setParam("custom_labels", customLabels);
      return this;
    }

    public APIRequestCreateVideo setCallToAction (Object callToAction) {
      this.setParam("call_to_action", callToAction);
      return this;
    }
    public APIRequestCreateVideo setCallToAction (String callToAction) {
      this.setParam("call_to_action", callToAction);
      return this;
    }

    public APIRequestCreateVideo setExpiration (Object expiration) {
      this.setParam("expiration", expiration);
      return this;
    }
    public APIRequestCreateVideo setExpiration (String expiration) {
      this.setParam("expiration", expiration);
      return this;
    }

    public APIRequestCreateVideo setFeedTargeting (Object feedTargeting) {
      this.setParam("feed_targeting", feedTargeting);
      return this;
    }
    public APIRequestCreateVideo setFeedTargeting (String feedTargeting) {
      this.setParam("feed_targeting", feedTargeting);
      return this;
    }

    public APIRequestCreateVideo setPublished (Boolean published) {
      this.setParam("published", published);
      return this;
    }
    public APIRequestCreateVideo setPublished (String published) {
      this.setParam("published", published);
      return this;
    }

    public APIRequestCreateVideo setScheduledPublishTime (Long scheduledPublishTime) {
      this.setParam("scheduled_publish_time", scheduledPublishTime);
      return this;
    }
    public APIRequestCreateVideo setScheduledPublishTime (String scheduledPublishTime) {
      this.setParam("scheduled_publish_time", scheduledPublishTime);
      return this;
    }

    public APIRequestCreateVideo setTargeting (Object targeting) {
      this.setParam("targeting", targeting);
      return this;
    }
    public APIRequestCreateVideo setTargeting (String targeting) {
      this.setParam("targeting", targeting);
      return this;
    }

    public APIRequestCreateVideo setNoStory (Boolean noStory) {
      this.setParam("no_story", noStory);
      return this;
    }
    public APIRequestCreateVideo setNoStory (String noStory) {
      this.setParam("no_story", noStory);
      return this;
    }

    public APIRequestCreateVideo setSecret (Boolean secret) {
      this.setParam("secret", secret);
      return this;
    }
    public APIRequestCreateVideo setSecret (String secret) {
      this.setParam("secret", secret);
      return this;
    }

    public APIRequestCreateVideo setSocialActions (Boolean socialActions) {
      this.setParam("social_actions", socialActions);
      return this;
    }
    public APIRequestCreateVideo setSocialActions (String socialActions) {
      this.setParam("social_actions", socialActions);
      return this;
    }

    public APIRequestCreateVideo setSponsorId (String sponsorId) {
      this.setParam("sponsor_id", sponsorId);
      return this;
    }

    public APIRequestCreateVideo setDirectShareStatus (Long directShareStatus) {
      this.setParam("direct_share_status", directShareStatus);
      return this;
    }
    public APIRequestCreateVideo setDirectShareStatus (String directShareStatus) {
      this.setParam("direct_share_status", directShareStatus);
      return this;
    }

    public APIRequestCreateVideo setSponsorRelationship (Long sponsorRelationship) {
      this.setParam("sponsor_relationship", sponsorRelationship);
      return this;
    }
    public APIRequestCreateVideo setSponsorRelationship (String sponsorRelationship) {
      this.setParam("sponsor_relationship", sponsorRelationship);
      return this;
    }

    public APIRequestCreateVideo setContentTags (List contentTags) {
      this.setParam("content_tags", contentTags);
      return this;
    }
    public APIRequestCreateVideo setContentTags (String contentTags) {
      this.setParam("content_tags", contentTags);
      return this;
    }

    public APIRequestCreateVideo setReferenceOnly (Boolean referenceOnly) {
      this.setParam("reference_only", referenceOnly);
      return this;
    }
    public APIRequestCreateVideo setReferenceOnly (String referenceOnly) {
      this.setParam("reference_only", referenceOnly);
      return this;
    }

    public APIRequestCreateVideo setVideoAssetId (String videoAssetId) {
      this.setParam("video_asset_id", videoAssetId);
      return this;
    }

    public APIRequestCreateVideo setUniversalVideoId (String universalVideoId) {
      this.setParam("universal_video_id", universalVideoId);
      return this;
    }

    public APIRequestCreateVideo setMultilingualData (List multilingualData) {
      this.setParam("multilingual_data", multilingualData);
      return this;
    }
    public APIRequestCreateVideo setMultilingualData (String multilingualData) {
      this.setParam("multilingual_data", multilingualData);
      return this;
    }

    public APIRequestCreateVideo setSpecifiedDialect (String specifiedDialect) {
      this.setParam("specified_dialect", specifiedDialect);
      return this;
    }

    public APIRequestCreateVideo setCrosspostedVideoId (String crosspostedVideoId) {
      this.setParam("crossposted_video_id", crosspostedVideoId);
      return this;
    }

    public APIRequestCreateVideo requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestCreateVideo requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateVideo requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestCreateVideo requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestCreateVideo requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestCreateVideo requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static class APIRequestGetVideosYouCanUse extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
    };

    public static final String[] FIELDS = {
      "description",
      "id",
      "title",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PageVideosYouCanUse.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetVideosYouCanUse.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetVideosYouCanUse(String nodeId, APIContext context) {
      super(context, nodeId, "/videos_you_can_use", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetVideosYouCanUse setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetVideosYouCanUse setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetVideosYouCanUse requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetVideosYouCanUse requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideosYouCanUse requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetVideosYouCanUse requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVideosYouCanUse requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetVideosYouCanUse requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetVideosYouCanUse requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetVideosYouCanUse requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetVideosYouCanUse requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetVideosYouCanUse requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetVideosYouCanUse requestTitleField () {
      return this.requestTitleField(true);
    }
    public APIRequestGetVideosYouCanUse requestTitleField (boolean value) {
      this.requestField("title", value);
      return this;
    }
  }

  public static class APIRequestGetVisitorPosts extends APIRequest {

    APINodeList lastResponse = null;
    @Override
    public APINodeList getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "include_hidden",
    };

    public static final String[] FIELDS = {
      "actions",
      "admin_creator",
      "allowed_advertising_objectives",
      "application",
      "backdated_time",
      "call_to_action",
      "can_reply_privately",
      "caption",
      "child_attachments",
      "comments_mirroring_domain",
      "coordinates",
      "created_time",
      "description",
      "event",
      "expanded_height",
      "expanded_width",
      "feed_targeting",
      "from",
      "full_picture",
      "height",
      "icon",
      "id",
      "instagram_eligibility",
      "is_app_share",
      "is_expired",
      "is_hidden",
      "is_instagram_eligible",
      "is_popular",
      "is_published",
      "is_spherical",
      "link",
      "message",
      "message_tags",
      "multi_share_end_card",
      "multi_share_optimized",
      "name",
      "object_id",
      "parent_id",
      "permalink_url",
      "picture",
      "place",
      "privacy",
      "promotable_id",
      "promotion_status",
      "properties",
      "scheduled_publish_time",
      "shares",
      "source",
      "status_type",
      "story",
      "story_tags",
      "subscribed",
      "target",
      "targeting",
      "timeline_visibility",
      "type",
      "updated_time",
      "via",
      "video_buying_eligibility",
      "width",
    };

    @Override
    public APINodeList parseResponse(String response, String header) throws APIException {
      return PagePost.parseResponse(response, getContext(), this, header);
    }

    @Override
    public APINodeList execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public APINodeList execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(),rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture> executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture> executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function>() {
           public APINodeList apply(ResponseWrapper result) {
             try {
               return APIRequestGetVisitorPosts.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGetVisitorPosts(String nodeId, APIContext context) {
      super(context, nodeId, "/visitor_posts", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGetVisitorPosts setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGetVisitorPosts setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGetVisitorPosts setIncludeHidden (Boolean includeHidden) {
      this.setParam("include_hidden", includeHidden);
      return this;
    }
    public APIRequestGetVisitorPosts setIncludeHidden (String includeHidden) {
      this.setParam("include_hidden", includeHidden);
      return this;
    }

    public APIRequestGetVisitorPosts requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGetVisitorPosts requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVisitorPosts requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGetVisitorPosts requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGetVisitorPosts requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGetVisitorPosts requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGetVisitorPosts requestActionsField () {
      return this.requestActionsField(true);
    }
    public APIRequestGetVisitorPosts requestActionsField (boolean value) {
      this.requestField("actions", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestAdminCreatorField () {
      return this.requestAdminCreatorField(true);
    }
    public APIRequestGetVisitorPosts requestAdminCreatorField (boolean value) {
      this.requestField("admin_creator", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestAllowedAdvertisingObjectivesField () {
      return this.requestAllowedAdvertisingObjectivesField(true);
    }
    public APIRequestGetVisitorPosts requestAllowedAdvertisingObjectivesField (boolean value) {
      this.requestField("allowed_advertising_objectives", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestApplicationField () {
      return this.requestApplicationField(true);
    }
    public APIRequestGetVisitorPosts requestApplicationField (boolean value) {
      this.requestField("application", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestBackdatedTimeField () {
      return this.requestBackdatedTimeField(true);
    }
    public APIRequestGetVisitorPosts requestBackdatedTimeField (boolean value) {
      this.requestField("backdated_time", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestCallToActionField () {
      return this.requestCallToActionField(true);
    }
    public APIRequestGetVisitorPosts requestCallToActionField (boolean value) {
      this.requestField("call_to_action", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestCanReplyPrivatelyField () {
      return this.requestCanReplyPrivatelyField(true);
    }
    public APIRequestGetVisitorPosts requestCanReplyPrivatelyField (boolean value) {
      this.requestField("can_reply_privately", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestCaptionField () {
      return this.requestCaptionField(true);
    }
    public APIRequestGetVisitorPosts requestCaptionField (boolean value) {
      this.requestField("caption", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestChildAttachmentsField () {
      return this.requestChildAttachmentsField(true);
    }
    public APIRequestGetVisitorPosts requestChildAttachmentsField (boolean value) {
      this.requestField("child_attachments", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestCommentsMirroringDomainField () {
      return this.requestCommentsMirroringDomainField(true);
    }
    public APIRequestGetVisitorPosts requestCommentsMirroringDomainField (boolean value) {
      this.requestField("comments_mirroring_domain", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestCoordinatesField () {
      return this.requestCoordinatesField(true);
    }
    public APIRequestGetVisitorPosts requestCoordinatesField (boolean value) {
      this.requestField("coordinates", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestCreatedTimeField () {
      return this.requestCreatedTimeField(true);
    }
    public APIRequestGetVisitorPosts requestCreatedTimeField (boolean value) {
      this.requestField("created_time", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGetVisitorPosts requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestEventField () {
      return this.requestEventField(true);
    }
    public APIRequestGetVisitorPosts requestEventField (boolean value) {
      this.requestField("event", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestExpandedHeightField () {
      return this.requestExpandedHeightField(true);
    }
    public APIRequestGetVisitorPosts requestExpandedHeightField (boolean value) {
      this.requestField("expanded_height", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestExpandedWidthField () {
      return this.requestExpandedWidthField(true);
    }
    public APIRequestGetVisitorPosts requestExpandedWidthField (boolean value) {
      this.requestField("expanded_width", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestFeedTargetingField () {
      return this.requestFeedTargetingField(true);
    }
    public APIRequestGetVisitorPosts requestFeedTargetingField (boolean value) {
      this.requestField("feed_targeting", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestFromField () {
      return this.requestFromField(true);
    }
    public APIRequestGetVisitorPosts requestFromField (boolean value) {
      this.requestField("from", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestFullPictureField () {
      return this.requestFullPictureField(true);
    }
    public APIRequestGetVisitorPosts requestFullPictureField (boolean value) {
      this.requestField("full_picture", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestHeightField () {
      return this.requestHeightField(true);
    }
    public APIRequestGetVisitorPosts requestHeightField (boolean value) {
      this.requestField("height", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestIconField () {
      return this.requestIconField(true);
    }
    public APIRequestGetVisitorPosts requestIconField (boolean value) {
      this.requestField("icon", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGetVisitorPosts requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestInstagramEligibilityField () {
      return this.requestInstagramEligibilityField(true);
    }
    public APIRequestGetVisitorPosts requestInstagramEligibilityField (boolean value) {
      this.requestField("instagram_eligibility", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestIsAppShareField () {
      return this.requestIsAppShareField(true);
    }
    public APIRequestGetVisitorPosts requestIsAppShareField (boolean value) {
      this.requestField("is_app_share", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestIsExpiredField () {
      return this.requestIsExpiredField(true);
    }
    public APIRequestGetVisitorPosts requestIsExpiredField (boolean value) {
      this.requestField("is_expired", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestIsHiddenField () {
      return this.requestIsHiddenField(true);
    }
    public APIRequestGetVisitorPosts requestIsHiddenField (boolean value) {
      this.requestField("is_hidden", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestIsInstagramEligibleField () {
      return this.requestIsInstagramEligibleField(true);
    }
    public APIRequestGetVisitorPosts requestIsInstagramEligibleField (boolean value) {
      this.requestField("is_instagram_eligible", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestIsPopularField () {
      return this.requestIsPopularField(true);
    }
    public APIRequestGetVisitorPosts requestIsPopularField (boolean value) {
      this.requestField("is_popular", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGetVisitorPosts requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestIsSphericalField () {
      return this.requestIsSphericalField(true);
    }
    public APIRequestGetVisitorPosts requestIsSphericalField (boolean value) {
      this.requestField("is_spherical", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGetVisitorPosts requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestMessageField () {
      return this.requestMessageField(true);
    }
    public APIRequestGetVisitorPosts requestMessageField (boolean value) {
      this.requestField("message", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestMessageTagsField () {
      return this.requestMessageTagsField(true);
    }
    public APIRequestGetVisitorPosts requestMessageTagsField (boolean value) {
      this.requestField("message_tags", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestMultiShareEndCardField () {
      return this.requestMultiShareEndCardField(true);
    }
    public APIRequestGetVisitorPosts requestMultiShareEndCardField (boolean value) {
      this.requestField("multi_share_end_card", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestMultiShareOptimizedField () {
      return this.requestMultiShareOptimizedField(true);
    }
    public APIRequestGetVisitorPosts requestMultiShareOptimizedField (boolean value) {
      this.requestField("multi_share_optimized", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGetVisitorPosts requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestObjectIdField () {
      return this.requestObjectIdField(true);
    }
    public APIRequestGetVisitorPosts requestObjectIdField (boolean value) {
      this.requestField("object_id", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestParentIdField () {
      return this.requestParentIdField(true);
    }
    public APIRequestGetVisitorPosts requestParentIdField (boolean value) {
      this.requestField("parent_id", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestPermalinkUrlField () {
      return this.requestPermalinkUrlField(true);
    }
    public APIRequestGetVisitorPosts requestPermalinkUrlField (boolean value) {
      this.requestField("permalink_url", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestPictureField () {
      return this.requestPictureField(true);
    }
    public APIRequestGetVisitorPosts requestPictureField (boolean value) {
      this.requestField("picture", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestPlaceField () {
      return this.requestPlaceField(true);
    }
    public APIRequestGetVisitorPosts requestPlaceField (boolean value) {
      this.requestField("place", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestPrivacyField () {
      return this.requestPrivacyField(true);
    }
    public APIRequestGetVisitorPosts requestPrivacyField (boolean value) {
      this.requestField("privacy", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestPromotableIdField () {
      return this.requestPromotableIdField(true);
    }
    public APIRequestGetVisitorPosts requestPromotableIdField (boolean value) {
      this.requestField("promotable_id", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestPromotionStatusField () {
      return this.requestPromotionStatusField(true);
    }
    public APIRequestGetVisitorPosts requestPromotionStatusField (boolean value) {
      this.requestField("promotion_status", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestPropertiesField () {
      return this.requestPropertiesField(true);
    }
    public APIRequestGetVisitorPosts requestPropertiesField (boolean value) {
      this.requestField("properties", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestScheduledPublishTimeField () {
      return this.requestScheduledPublishTimeField(true);
    }
    public APIRequestGetVisitorPosts requestScheduledPublishTimeField (boolean value) {
      this.requestField("scheduled_publish_time", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestSharesField () {
      return this.requestSharesField(true);
    }
    public APIRequestGetVisitorPosts requestSharesField (boolean value) {
      this.requestField("shares", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestSourceField () {
      return this.requestSourceField(true);
    }
    public APIRequestGetVisitorPosts requestSourceField (boolean value) {
      this.requestField("source", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestStatusTypeField () {
      return this.requestStatusTypeField(true);
    }
    public APIRequestGetVisitorPosts requestStatusTypeField (boolean value) {
      this.requestField("status_type", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestStoryField () {
      return this.requestStoryField(true);
    }
    public APIRequestGetVisitorPosts requestStoryField (boolean value) {
      this.requestField("story", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestStoryTagsField () {
      return this.requestStoryTagsField(true);
    }
    public APIRequestGetVisitorPosts requestStoryTagsField (boolean value) {
      this.requestField("story_tags", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestSubscribedField () {
      return this.requestSubscribedField(true);
    }
    public APIRequestGetVisitorPosts requestSubscribedField (boolean value) {
      this.requestField("subscribed", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestTargetField () {
      return this.requestTargetField(true);
    }
    public APIRequestGetVisitorPosts requestTargetField (boolean value) {
      this.requestField("target", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestTargetingField () {
      return this.requestTargetingField(true);
    }
    public APIRequestGetVisitorPosts requestTargetingField (boolean value) {
      this.requestField("targeting", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestTimelineVisibilityField () {
      return this.requestTimelineVisibilityField(true);
    }
    public APIRequestGetVisitorPosts requestTimelineVisibilityField (boolean value) {
      this.requestField("timeline_visibility", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestTypeField () {
      return this.requestTypeField(true);
    }
    public APIRequestGetVisitorPosts requestTypeField (boolean value) {
      this.requestField("type", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestUpdatedTimeField () {
      return this.requestUpdatedTimeField(true);
    }
    public APIRequestGetVisitorPosts requestUpdatedTimeField (boolean value) {
      this.requestField("updated_time", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestViaField () {
      return this.requestViaField(true);
    }
    public APIRequestGetVisitorPosts requestViaField (boolean value) {
      this.requestField("via", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestVideoBuyingEligibilityField () {
      return this.requestVideoBuyingEligibilityField(true);
    }
    public APIRequestGetVisitorPosts requestVideoBuyingEligibilityField (boolean value) {
      this.requestField("video_buying_eligibility", value);
      return this;
    }
    public APIRequestGetVisitorPosts requestWidthField () {
      return this.requestWidthField(true);
    }
    public APIRequestGetVisitorPosts requestWidthField (boolean value) {
      this.requestField("width", value);
      return this;
    }
  }

  public static class APIRequestGet extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "account_linking_token",
    };

    public static final String[] FIELDS = {
      "about",
      "access_token",
      "ad_campaign",
      "affiliation",
      "app_id",
      "app_links",
      "artists_we_like",
      "attire",
      "awards",
      "band_interests",
      "band_members",
      "best_page",
      "bio",
      "birthday",
      "booking_agent",
      "built",
      "business",
      "can_checkin",
      "can_post",
      "category",
      "category_list",
      "checkins",
      "company_overview",
      "connected_instagram_account",
      "contact_address",
      "context",
      "copyright_attribution_insights",
      "copyright_whitelisted_ig_partners",
      "country_page_likes",
      "cover",
      "culinary_team",
      "current_location",
      "description",
      "description_html",
      "directed_by",
      "display_subtext",
      "displayed_message_response_time",
      "emails",
      "engagement",
      "fan_count",
      "featured_video",
      "features",
      "food_styles",
      "founded",
      "general_info",
      "general_manager",
      "genre",
      "global_brand_page_name",
      "global_brand_root_id",
      "has_added_app",
      "has_whatsapp_business_number",
      "has_whatsapp_number",
      "hometown",
      "hours",
      "id",
      "impressum",
      "influences",
      "instagram_business_account",
      "instant_articles_review_status",
      "is_always_open",
      "is_chain",
      "is_community_page",
      "is_eligible_for_branded_content",
      "is_messenger_bot_get_started_enabled",
      "is_messenger_platform_bot",
      "is_owned",
      "is_permanently_closed",
      "is_published",
      "is_unclaimed",
      "is_verified",
      "is_webhooks_subscribed",
      "keywords",
      "leadgen_form_preview_details",
      "leadgen_has_crm_integration",
      "leadgen_has_fat_ping_crm_integration",
      "leadgen_tos_acceptance_time",
      "leadgen_tos_accepted",
      "leadgen_tos_accepting_user",
      "link",
      "location",
      "members",
      "merchant_id",
      "merchant_review_status",
      "messenger_ads_default_icebreakers",
      "messenger_ads_default_page_welcome_message",
      "messenger_ads_default_quick_replies",
      "messenger_ads_quick_replies_type",
      "mission",
      "mpg",
      "name",
      "name_with_location_descriptor",
      "network",
      "new_like_count",
      "offer_eligible",
      "overall_star_rating",
      "page_about_story",
      "page_token",
      "parent_page",
      "parking",
      "payment_options",
      "personal_info",
      "personal_interests",
      "pharma_safety_info",
      "phone",
      "place_type",
      "plot_outline",
      "preferred_audience",
      "press_contact",
      "price_range",
      "privacy_info_url",
      "produced_by",
      "products",
      "promotion_eligible",
      "promotion_ineligible_reason",
      "public_transit",
      "rating_count",
      "recipient",
      "record_label",
      "release_date",
      "restaurant_services",
      "restaurant_specialties",
      "schedule",
      "screenplay_by",
      "season",
      "single_line_address",
      "starring",
      "start_info",
      "store_code",
      "store_location_descriptor",
      "store_number",
      "studio",
      "supports_instant_articles",
      "talking_about_count",
      "unread_message_count",
      "unread_notif_count",
      "unseen_message_count",
      "username",
      "verification_status",
      "voip_info",
      "website",
      "were_here_count",
      "whatsapp_number",
      "written_by",
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestGet.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestGet(String nodeId, APIContext context) {
      super(context, nodeId, "/", "GET", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestGet setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestGet setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestGet setAccountLinkingToken (String accountLinkingToken) {
      this.setParam("account_linking_token", accountLinkingToken);
      return this;
    }

    public APIRequestGet requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestGet requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGet requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestGet requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestGet requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestGet requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

    public APIRequestGet requestAboutField () {
      return this.requestAboutField(true);
    }
    public APIRequestGet requestAboutField (boolean value) {
      this.requestField("about", value);
      return this;
    }
    public APIRequestGet requestAccessTokenField () {
      return this.requestAccessTokenField(true);
    }
    public APIRequestGet requestAccessTokenField (boolean value) {
      this.requestField("access_token", value);
      return this;
    }
    public APIRequestGet requestAdCampaignField () {
      return this.requestAdCampaignField(true);
    }
    public APIRequestGet requestAdCampaignField (boolean value) {
      this.requestField("ad_campaign", value);
      return this;
    }
    public APIRequestGet requestAffiliationField () {
      return this.requestAffiliationField(true);
    }
    public APIRequestGet requestAffiliationField (boolean value) {
      this.requestField("affiliation", value);
      return this;
    }
    public APIRequestGet requestAppIdField () {
      return this.requestAppIdField(true);
    }
    public APIRequestGet requestAppIdField (boolean value) {
      this.requestField("app_id", value);
      return this;
    }
    public APIRequestGet requestAppLinksField () {
      return this.requestAppLinksField(true);
    }
    public APIRequestGet requestAppLinksField (boolean value) {
      this.requestField("app_links", value);
      return this;
    }
    public APIRequestGet requestArtistsWeLikeField () {
      return this.requestArtistsWeLikeField(true);
    }
    public APIRequestGet requestArtistsWeLikeField (boolean value) {
      this.requestField("artists_we_like", value);
      return this;
    }
    public APIRequestGet requestAttireField () {
      return this.requestAttireField(true);
    }
    public APIRequestGet requestAttireField (boolean value) {
      this.requestField("attire", value);
      return this;
    }
    public APIRequestGet requestAwardsField () {
      return this.requestAwardsField(true);
    }
    public APIRequestGet requestAwardsField (boolean value) {
      this.requestField("awards", value);
      return this;
    }
    public APIRequestGet requestBandInterestsField () {
      return this.requestBandInterestsField(true);
    }
    public APIRequestGet requestBandInterestsField (boolean value) {
      this.requestField("band_interests", value);
      return this;
    }
    public APIRequestGet requestBandMembersField () {
      return this.requestBandMembersField(true);
    }
    public APIRequestGet requestBandMembersField (boolean value) {
      this.requestField("band_members", value);
      return this;
    }
    public APIRequestGet requestBestPageField () {
      return this.requestBestPageField(true);
    }
    public APIRequestGet requestBestPageField (boolean value) {
      this.requestField("best_page", value);
      return this;
    }
    public APIRequestGet requestBioField () {
      return this.requestBioField(true);
    }
    public APIRequestGet requestBioField (boolean value) {
      this.requestField("bio", value);
      return this;
    }
    public APIRequestGet requestBirthdayField () {
      return this.requestBirthdayField(true);
    }
    public APIRequestGet requestBirthdayField (boolean value) {
      this.requestField("birthday", value);
      return this;
    }
    public APIRequestGet requestBookingAgentField () {
      return this.requestBookingAgentField(true);
    }
    public APIRequestGet requestBookingAgentField (boolean value) {
      this.requestField("booking_agent", value);
      return this;
    }
    public APIRequestGet requestBuiltField () {
      return this.requestBuiltField(true);
    }
    public APIRequestGet requestBuiltField (boolean value) {
      this.requestField("built", value);
      return this;
    }
    public APIRequestGet requestBusinessField () {
      return this.requestBusinessField(true);
    }
    public APIRequestGet requestBusinessField (boolean value) {
      this.requestField("business", value);
      return this;
    }
    public APIRequestGet requestCanCheckinField () {
      return this.requestCanCheckinField(true);
    }
    public APIRequestGet requestCanCheckinField (boolean value) {
      this.requestField("can_checkin", value);
      return this;
    }
    public APIRequestGet requestCanPostField () {
      return this.requestCanPostField(true);
    }
    public APIRequestGet requestCanPostField (boolean value) {
      this.requestField("can_post", value);
      return this;
    }
    public APIRequestGet requestCategoryField () {
      return this.requestCategoryField(true);
    }
    public APIRequestGet requestCategoryField (boolean value) {
      this.requestField("category", value);
      return this;
    }
    public APIRequestGet requestCategoryListField () {
      return this.requestCategoryListField(true);
    }
    public APIRequestGet requestCategoryListField (boolean value) {
      this.requestField("category_list", value);
      return this;
    }
    public APIRequestGet requestCheckinsField () {
      return this.requestCheckinsField(true);
    }
    public APIRequestGet requestCheckinsField (boolean value) {
      this.requestField("checkins", value);
      return this;
    }
    public APIRequestGet requestCompanyOverviewField () {
      return this.requestCompanyOverviewField(true);
    }
    public APIRequestGet requestCompanyOverviewField (boolean value) {
      this.requestField("company_overview", value);
      return this;
    }
    public APIRequestGet requestConnectedInstagramAccountField () {
      return this.requestConnectedInstagramAccountField(true);
    }
    public APIRequestGet requestConnectedInstagramAccountField (boolean value) {
      this.requestField("connected_instagram_account", value);
      return this;
    }
    public APIRequestGet requestContactAddressField () {
      return this.requestContactAddressField(true);
    }
    public APIRequestGet requestContactAddressField (boolean value) {
      this.requestField("contact_address", value);
      return this;
    }
    public APIRequestGet requestContextField () {
      return this.requestContextField(true);
    }
    public APIRequestGet requestContextField (boolean value) {
      this.requestField("context", value);
      return this;
    }
    public APIRequestGet requestCopyrightAttributionInsightsField () {
      return this.requestCopyrightAttributionInsightsField(true);
    }
    public APIRequestGet requestCopyrightAttributionInsightsField (boolean value) {
      this.requestField("copyright_attribution_insights", value);
      return this;
    }
    public APIRequestGet requestCopyrightWhitelistedIgPartnersField () {
      return this.requestCopyrightWhitelistedIgPartnersField(true);
    }
    public APIRequestGet requestCopyrightWhitelistedIgPartnersField (boolean value) {
      this.requestField("copyright_whitelisted_ig_partners", value);
      return this;
    }
    public APIRequestGet requestCountryPageLikesField () {
      return this.requestCountryPageLikesField(true);
    }
    public APIRequestGet requestCountryPageLikesField (boolean value) {
      this.requestField("country_page_likes", value);
      return this;
    }
    public APIRequestGet requestCoverField () {
      return this.requestCoverField(true);
    }
    public APIRequestGet requestCoverField (boolean value) {
      this.requestField("cover", value);
      return this;
    }
    public APIRequestGet requestCulinaryTeamField () {
      return this.requestCulinaryTeamField(true);
    }
    public APIRequestGet requestCulinaryTeamField (boolean value) {
      this.requestField("culinary_team", value);
      return this;
    }
    public APIRequestGet requestCurrentLocationField () {
      return this.requestCurrentLocationField(true);
    }
    public APIRequestGet requestCurrentLocationField (boolean value) {
      this.requestField("current_location", value);
      return this;
    }
    public APIRequestGet requestDescriptionField () {
      return this.requestDescriptionField(true);
    }
    public APIRequestGet requestDescriptionField (boolean value) {
      this.requestField("description", value);
      return this;
    }
    public APIRequestGet requestDescriptionHtmlField () {
      return this.requestDescriptionHtmlField(true);
    }
    public APIRequestGet requestDescriptionHtmlField (boolean value) {
      this.requestField("description_html", value);
      return this;
    }
    public APIRequestGet requestDirectedByField () {
      return this.requestDirectedByField(true);
    }
    public APIRequestGet requestDirectedByField (boolean value) {
      this.requestField("directed_by", value);
      return this;
    }
    public APIRequestGet requestDisplaySubtextField () {
      return this.requestDisplaySubtextField(true);
    }
    public APIRequestGet requestDisplaySubtextField (boolean value) {
      this.requestField("display_subtext", value);
      return this;
    }
    public APIRequestGet requestDisplayedMessageResponseTimeField () {
      return this.requestDisplayedMessageResponseTimeField(true);
    }
    public APIRequestGet requestDisplayedMessageResponseTimeField (boolean value) {
      this.requestField("displayed_message_response_time", value);
      return this;
    }
    public APIRequestGet requestEmailsField () {
      return this.requestEmailsField(true);
    }
    public APIRequestGet requestEmailsField (boolean value) {
      this.requestField("emails", value);
      return this;
    }
    public APIRequestGet requestEngagementField () {
      return this.requestEngagementField(true);
    }
    public APIRequestGet requestEngagementField (boolean value) {
      this.requestField("engagement", value);
      return this;
    }
    public APIRequestGet requestFanCountField () {
      return this.requestFanCountField(true);
    }
    public APIRequestGet requestFanCountField (boolean value) {
      this.requestField("fan_count", value);
      return this;
    }
    public APIRequestGet requestFeaturedVideoField () {
      return this.requestFeaturedVideoField(true);
    }
    public APIRequestGet requestFeaturedVideoField (boolean value) {
      this.requestField("featured_video", value);
      return this;
    }
    public APIRequestGet requestFeaturesField () {
      return this.requestFeaturesField(true);
    }
    public APIRequestGet requestFeaturesField (boolean value) {
      this.requestField("features", value);
      return this;
    }
    public APIRequestGet requestFoodStylesField () {
      return this.requestFoodStylesField(true);
    }
    public APIRequestGet requestFoodStylesField (boolean value) {
      this.requestField("food_styles", value);
      return this;
    }
    public APIRequestGet requestFoundedField () {
      return this.requestFoundedField(true);
    }
    public APIRequestGet requestFoundedField (boolean value) {
      this.requestField("founded", value);
      return this;
    }
    public APIRequestGet requestGeneralInfoField () {
      return this.requestGeneralInfoField(true);
    }
    public APIRequestGet requestGeneralInfoField (boolean value) {
      this.requestField("general_info", value);
      return this;
    }
    public APIRequestGet requestGeneralManagerField () {
      return this.requestGeneralManagerField(true);
    }
    public APIRequestGet requestGeneralManagerField (boolean value) {
      this.requestField("general_manager", value);
      return this;
    }
    public APIRequestGet requestGenreField () {
      return this.requestGenreField(true);
    }
    public APIRequestGet requestGenreField (boolean value) {
      this.requestField("genre", value);
      return this;
    }
    public APIRequestGet requestGlobalBrandPageNameField () {
      return this.requestGlobalBrandPageNameField(true);
    }
    public APIRequestGet requestGlobalBrandPageNameField (boolean value) {
      this.requestField("global_brand_page_name", value);
      return this;
    }
    public APIRequestGet requestGlobalBrandRootIdField () {
      return this.requestGlobalBrandRootIdField(true);
    }
    public APIRequestGet requestGlobalBrandRootIdField (boolean value) {
      this.requestField("global_brand_root_id", value);
      return this;
    }
    public APIRequestGet requestHasAddedAppField () {
      return this.requestHasAddedAppField(true);
    }
    public APIRequestGet requestHasAddedAppField (boolean value) {
      this.requestField("has_added_app", value);
      return this;
    }
    public APIRequestGet requestHasWhatsappBusinessNumberField () {
      return this.requestHasWhatsappBusinessNumberField(true);
    }
    public APIRequestGet requestHasWhatsappBusinessNumberField (boolean value) {
      this.requestField("has_whatsapp_business_number", value);
      return this;
    }
    public APIRequestGet requestHasWhatsappNumberField () {
      return this.requestHasWhatsappNumberField(true);
    }
    public APIRequestGet requestHasWhatsappNumberField (boolean value) {
      this.requestField("has_whatsapp_number", value);
      return this;
    }
    public APIRequestGet requestHometownField () {
      return this.requestHometownField(true);
    }
    public APIRequestGet requestHometownField (boolean value) {
      this.requestField("hometown", value);
      return this;
    }
    public APIRequestGet requestHoursField () {
      return this.requestHoursField(true);
    }
    public APIRequestGet requestHoursField (boolean value) {
      this.requestField("hours", value);
      return this;
    }
    public APIRequestGet requestIdField () {
      return this.requestIdField(true);
    }
    public APIRequestGet requestIdField (boolean value) {
      this.requestField("id", value);
      return this;
    }
    public APIRequestGet requestImpressumField () {
      return this.requestImpressumField(true);
    }
    public APIRequestGet requestImpressumField (boolean value) {
      this.requestField("impressum", value);
      return this;
    }
    public APIRequestGet requestInfluencesField () {
      return this.requestInfluencesField(true);
    }
    public APIRequestGet requestInfluencesField (boolean value) {
      this.requestField("influences", value);
      return this;
    }
    public APIRequestGet requestInstagramBusinessAccountField () {
      return this.requestInstagramBusinessAccountField(true);
    }
    public APIRequestGet requestInstagramBusinessAccountField (boolean value) {
      this.requestField("instagram_business_account", value);
      return this;
    }
    public APIRequestGet requestInstantArticlesReviewStatusField () {
      return this.requestInstantArticlesReviewStatusField(true);
    }
    public APIRequestGet requestInstantArticlesReviewStatusField (boolean value) {
      this.requestField("instant_articles_review_status", value);
      return this;
    }
    public APIRequestGet requestIsAlwaysOpenField () {
      return this.requestIsAlwaysOpenField(true);
    }
    public APIRequestGet requestIsAlwaysOpenField (boolean value) {
      this.requestField("is_always_open", value);
      return this;
    }
    public APIRequestGet requestIsChainField () {
      return this.requestIsChainField(true);
    }
    public APIRequestGet requestIsChainField (boolean value) {
      this.requestField("is_chain", value);
      return this;
    }
    public APIRequestGet requestIsCommunityPageField () {
      return this.requestIsCommunityPageField(true);
    }
    public APIRequestGet requestIsCommunityPageField (boolean value) {
      this.requestField("is_community_page", value);
      return this;
    }
    public APIRequestGet requestIsEligibleForBrandedContentField () {
      return this.requestIsEligibleForBrandedContentField(true);
    }
    public APIRequestGet requestIsEligibleForBrandedContentField (boolean value) {
      this.requestField("is_eligible_for_branded_content", value);
      return this;
    }
    public APIRequestGet requestIsMessengerBotGetStartedEnabledField () {
      return this.requestIsMessengerBotGetStartedEnabledField(true);
    }
    public APIRequestGet requestIsMessengerBotGetStartedEnabledField (boolean value) {
      this.requestField("is_messenger_bot_get_started_enabled", value);
      return this;
    }
    public APIRequestGet requestIsMessengerPlatformBotField () {
      return this.requestIsMessengerPlatformBotField(true);
    }
    public APIRequestGet requestIsMessengerPlatformBotField (boolean value) {
      this.requestField("is_messenger_platform_bot", value);
      return this;
    }
    public APIRequestGet requestIsOwnedField () {
      return this.requestIsOwnedField(true);
    }
    public APIRequestGet requestIsOwnedField (boolean value) {
      this.requestField("is_owned", value);
      return this;
    }
    public APIRequestGet requestIsPermanentlyClosedField () {
      return this.requestIsPermanentlyClosedField(true);
    }
    public APIRequestGet requestIsPermanentlyClosedField (boolean value) {
      this.requestField("is_permanently_closed", value);
      return this;
    }
    public APIRequestGet requestIsPublishedField () {
      return this.requestIsPublishedField(true);
    }
    public APIRequestGet requestIsPublishedField (boolean value) {
      this.requestField("is_published", value);
      return this;
    }
    public APIRequestGet requestIsUnclaimedField () {
      return this.requestIsUnclaimedField(true);
    }
    public APIRequestGet requestIsUnclaimedField (boolean value) {
      this.requestField("is_unclaimed", value);
      return this;
    }
    public APIRequestGet requestIsVerifiedField () {
      return this.requestIsVerifiedField(true);
    }
    public APIRequestGet requestIsVerifiedField (boolean value) {
      this.requestField("is_verified", value);
      return this;
    }
    public APIRequestGet requestIsWebhooksSubscribedField () {
      return this.requestIsWebhooksSubscribedField(true);
    }
    public APIRequestGet requestIsWebhooksSubscribedField (boolean value) {
      this.requestField("is_webhooks_subscribed", value);
      return this;
    }
    public APIRequestGet requestKeywordsField () {
      return this.requestKeywordsField(true);
    }
    public APIRequestGet requestKeywordsField (boolean value) {
      this.requestField("keywords", value);
      return this;
    }
    public APIRequestGet requestLeadgenFormPreviewDetailsField () {
      return this.requestLeadgenFormPreviewDetailsField(true);
    }
    public APIRequestGet requestLeadgenFormPreviewDetailsField (boolean value) {
      this.requestField("leadgen_form_preview_details", value);
      return this;
    }
    public APIRequestGet requestLeadgenHasCrmIntegrationField () {
      return this.requestLeadgenHasCrmIntegrationField(true);
    }
    public APIRequestGet requestLeadgenHasCrmIntegrationField (boolean value) {
      this.requestField("leadgen_has_crm_integration", value);
      return this;
    }
    public APIRequestGet requestLeadgenHasFatPingCrmIntegrationField () {
      return this.requestLeadgenHasFatPingCrmIntegrationField(true);
    }
    public APIRequestGet requestLeadgenHasFatPingCrmIntegrationField (boolean value) {
      this.requestField("leadgen_has_fat_ping_crm_integration", value);
      return this;
    }
    public APIRequestGet requestLeadgenTosAcceptanceTimeField () {
      return this.requestLeadgenTosAcceptanceTimeField(true);
    }
    public APIRequestGet requestLeadgenTosAcceptanceTimeField (boolean value) {
      this.requestField("leadgen_tos_acceptance_time", value);
      return this;
    }
    public APIRequestGet requestLeadgenTosAcceptedField () {
      return this.requestLeadgenTosAcceptedField(true);
    }
    public APIRequestGet requestLeadgenTosAcceptedField (boolean value) {
      this.requestField("leadgen_tos_accepted", value);
      return this;
    }
    public APIRequestGet requestLeadgenTosAcceptingUserField () {
      return this.requestLeadgenTosAcceptingUserField(true);
    }
    public APIRequestGet requestLeadgenTosAcceptingUserField (boolean value) {
      this.requestField("leadgen_tos_accepting_user", value);
      return this;
    }
    public APIRequestGet requestLinkField () {
      return this.requestLinkField(true);
    }
    public APIRequestGet requestLinkField (boolean value) {
      this.requestField("link", value);
      return this;
    }
    public APIRequestGet requestLocationField () {
      return this.requestLocationField(true);
    }
    public APIRequestGet requestLocationField (boolean value) {
      this.requestField("location", value);
      return this;
    }
    public APIRequestGet requestMembersField () {
      return this.requestMembersField(true);
    }
    public APIRequestGet requestMembersField (boolean value) {
      this.requestField("members", value);
      return this;
    }
    public APIRequestGet requestMerchantIdField () {
      return this.requestMerchantIdField(true);
    }
    public APIRequestGet requestMerchantIdField (boolean value) {
      this.requestField("merchant_id", value);
      return this;
    }
    public APIRequestGet requestMerchantReviewStatusField () {
      return this.requestMerchantReviewStatusField(true);
    }
    public APIRequestGet requestMerchantReviewStatusField (boolean value) {
      this.requestField("merchant_review_status", value);
      return this;
    }
    public APIRequestGet requestMessengerAdsDefaultIcebreakersField () {
      return this.requestMessengerAdsDefaultIcebreakersField(true);
    }
    public APIRequestGet requestMessengerAdsDefaultIcebreakersField (boolean value) {
      this.requestField("messenger_ads_default_icebreakers", value);
      return this;
    }
    public APIRequestGet requestMessengerAdsDefaultPageWelcomeMessageField () {
      return this.requestMessengerAdsDefaultPageWelcomeMessageField(true);
    }
    public APIRequestGet requestMessengerAdsDefaultPageWelcomeMessageField (boolean value) {
      this.requestField("messenger_ads_default_page_welcome_message", value);
      return this;
    }
    public APIRequestGet requestMessengerAdsDefaultQuickRepliesField () {
      return this.requestMessengerAdsDefaultQuickRepliesField(true);
    }
    public APIRequestGet requestMessengerAdsDefaultQuickRepliesField (boolean value) {
      this.requestField("messenger_ads_default_quick_replies", value);
      return this;
    }
    public APIRequestGet requestMessengerAdsQuickRepliesTypeField () {
      return this.requestMessengerAdsQuickRepliesTypeField(true);
    }
    public APIRequestGet requestMessengerAdsQuickRepliesTypeField (boolean value) {
      this.requestField("messenger_ads_quick_replies_type", value);
      return this;
    }
    public APIRequestGet requestMissionField () {
      return this.requestMissionField(true);
    }
    public APIRequestGet requestMissionField (boolean value) {
      this.requestField("mission", value);
      return this;
    }
    public APIRequestGet requestMpgField () {
      return this.requestMpgField(true);
    }
    public APIRequestGet requestMpgField (boolean value) {
      this.requestField("mpg", value);
      return this;
    }
    public APIRequestGet requestNameField () {
      return this.requestNameField(true);
    }
    public APIRequestGet requestNameField (boolean value) {
      this.requestField("name", value);
      return this;
    }
    public APIRequestGet requestNameWithLocationDescriptorField () {
      return this.requestNameWithLocationDescriptorField(true);
    }
    public APIRequestGet requestNameWithLocationDescriptorField (boolean value) {
      this.requestField("name_with_location_descriptor", value);
      return this;
    }
    public APIRequestGet requestNetworkField () {
      return this.requestNetworkField(true);
    }
    public APIRequestGet requestNetworkField (boolean value) {
      this.requestField("network", value);
      return this;
    }
    public APIRequestGet requestNewLikeCountField () {
      return this.requestNewLikeCountField(true);
    }
    public APIRequestGet requestNewLikeCountField (boolean value) {
      this.requestField("new_like_count", value);
      return this;
    }
    public APIRequestGet requestOfferEligibleField () {
      return this.requestOfferEligibleField(true);
    }
    public APIRequestGet requestOfferEligibleField (boolean value) {
      this.requestField("offer_eligible", value);
      return this;
    }
    public APIRequestGet requestOverallStarRatingField () {
      return this.requestOverallStarRatingField(true);
    }
    public APIRequestGet requestOverallStarRatingField (boolean value) {
      this.requestField("overall_star_rating", value);
      return this;
    }
    public APIRequestGet requestPageAboutStoryField () {
      return this.requestPageAboutStoryField(true);
    }
    public APIRequestGet requestPageAboutStoryField (boolean value) {
      this.requestField("page_about_story", value);
      return this;
    }
    public APIRequestGet requestPageTokenField () {
      return this.requestPageTokenField(true);
    }
    public APIRequestGet requestPageTokenField (boolean value) {
      this.requestField("page_token", value);
      return this;
    }
    public APIRequestGet requestParentPageField () {
      return this.requestParentPageField(true);
    }
    public APIRequestGet requestParentPageField (boolean value) {
      this.requestField("parent_page", value);
      return this;
    }
    public APIRequestGet requestParkingField () {
      return this.requestParkingField(true);
    }
    public APIRequestGet requestParkingField (boolean value) {
      this.requestField("parking", value);
      return this;
    }
    public APIRequestGet requestPaymentOptionsField () {
      return this.requestPaymentOptionsField(true);
    }
    public APIRequestGet requestPaymentOptionsField (boolean value) {
      this.requestField("payment_options", value);
      return this;
    }
    public APIRequestGet requestPersonalInfoField () {
      return this.requestPersonalInfoField(true);
    }
    public APIRequestGet requestPersonalInfoField (boolean value) {
      this.requestField("personal_info", value);
      return this;
    }
    public APIRequestGet requestPersonalInterestsField () {
      return this.requestPersonalInterestsField(true);
    }
    public APIRequestGet requestPersonalInterestsField (boolean value) {
      this.requestField("personal_interests", value);
      return this;
    }
    public APIRequestGet requestPharmaSafetyInfoField () {
      return this.requestPharmaSafetyInfoField(true);
    }
    public APIRequestGet requestPharmaSafetyInfoField (boolean value) {
      this.requestField("pharma_safety_info", value);
      return this;
    }
    public APIRequestGet requestPhoneField () {
      return this.requestPhoneField(true);
    }
    public APIRequestGet requestPhoneField (boolean value) {
      this.requestField("phone", value);
      return this;
    }
    public APIRequestGet requestPlaceTypeField () {
      return this.requestPlaceTypeField(true);
    }
    public APIRequestGet requestPlaceTypeField (boolean value) {
      this.requestField("place_type", value);
      return this;
    }
    public APIRequestGet requestPlotOutlineField () {
      return this.requestPlotOutlineField(true);
    }
    public APIRequestGet requestPlotOutlineField (boolean value) {
      this.requestField("plot_outline", value);
      return this;
    }
    public APIRequestGet requestPreferredAudienceField () {
      return this.requestPreferredAudienceField(true);
    }
    public APIRequestGet requestPreferredAudienceField (boolean value) {
      this.requestField("preferred_audience", value);
      return this;
    }
    public APIRequestGet requestPressContactField () {
      return this.requestPressContactField(true);
    }
    public APIRequestGet requestPressContactField (boolean value) {
      this.requestField("press_contact", value);
      return this;
    }
    public APIRequestGet requestPriceRangeField () {
      return this.requestPriceRangeField(true);
    }
    public APIRequestGet requestPriceRangeField (boolean value) {
      this.requestField("price_range", value);
      return this;
    }
    public APIRequestGet requestPrivacyInfoUrlField () {
      return this.requestPrivacyInfoUrlField(true);
    }
    public APIRequestGet requestPrivacyInfoUrlField (boolean value) {
      this.requestField("privacy_info_url", value);
      return this;
    }
    public APIRequestGet requestProducedByField () {
      return this.requestProducedByField(true);
    }
    public APIRequestGet requestProducedByField (boolean value) {
      this.requestField("produced_by", value);
      return this;
    }
    public APIRequestGet requestProductsField () {
      return this.requestProductsField(true);
    }
    public APIRequestGet requestProductsField (boolean value) {
      this.requestField("products", value);
      return this;
    }
    public APIRequestGet requestPromotionEligibleField () {
      return this.requestPromotionEligibleField(true);
    }
    public APIRequestGet requestPromotionEligibleField (boolean value) {
      this.requestField("promotion_eligible", value);
      return this;
    }
    public APIRequestGet requestPromotionIneligibleReasonField () {
      return this.requestPromotionIneligibleReasonField(true);
    }
    public APIRequestGet requestPromotionIneligibleReasonField (boolean value) {
      this.requestField("promotion_ineligible_reason", value);
      return this;
    }
    public APIRequestGet requestPublicTransitField () {
      return this.requestPublicTransitField(true);
    }
    public APIRequestGet requestPublicTransitField (boolean value) {
      this.requestField("public_transit", value);
      return this;
    }
    public APIRequestGet requestRatingCountField () {
      return this.requestRatingCountField(true);
    }
    public APIRequestGet requestRatingCountField (boolean value) {
      this.requestField("rating_count", value);
      return this;
    }
    public APIRequestGet requestRecipientField () {
      return this.requestRecipientField(true);
    }
    public APIRequestGet requestRecipientField (boolean value) {
      this.requestField("recipient", value);
      return this;
    }
    public APIRequestGet requestRecordLabelField () {
      return this.requestRecordLabelField(true);
    }
    public APIRequestGet requestRecordLabelField (boolean value) {
      this.requestField("record_label", value);
      return this;
    }
    public APIRequestGet requestReleaseDateField () {
      return this.requestReleaseDateField(true);
    }
    public APIRequestGet requestReleaseDateField (boolean value) {
      this.requestField("release_date", value);
      return this;
    }
    public APIRequestGet requestRestaurantServicesField () {
      return this.requestRestaurantServicesField(true);
    }
    public APIRequestGet requestRestaurantServicesField (boolean value) {
      this.requestField("restaurant_services", value);
      return this;
    }
    public APIRequestGet requestRestaurantSpecialtiesField () {
      return this.requestRestaurantSpecialtiesField(true);
    }
    public APIRequestGet requestRestaurantSpecialtiesField (boolean value) {
      this.requestField("restaurant_specialties", value);
      return this;
    }
    public APIRequestGet requestScheduleField () {
      return this.requestScheduleField(true);
    }
    public APIRequestGet requestScheduleField (boolean value) {
      this.requestField("schedule", value);
      return this;
    }
    public APIRequestGet requestScreenplayByField () {
      return this.requestScreenplayByField(true);
    }
    public APIRequestGet requestScreenplayByField (boolean value) {
      this.requestField("screenplay_by", value);
      return this;
    }
    public APIRequestGet requestSeasonField () {
      return this.requestSeasonField(true);
    }
    public APIRequestGet requestSeasonField (boolean value) {
      this.requestField("season", value);
      return this;
    }
    public APIRequestGet requestSingleLineAddressField () {
      return this.requestSingleLineAddressField(true);
    }
    public APIRequestGet requestSingleLineAddressField (boolean value) {
      this.requestField("single_line_address", value);
      return this;
    }
    public APIRequestGet requestStarringField () {
      return this.requestStarringField(true);
    }
    public APIRequestGet requestStarringField (boolean value) {
      this.requestField("starring", value);
      return this;
    }
    public APIRequestGet requestStartInfoField () {
      return this.requestStartInfoField(true);
    }
    public APIRequestGet requestStartInfoField (boolean value) {
      this.requestField("start_info", value);
      return this;
    }
    public APIRequestGet requestStoreCodeField () {
      return this.requestStoreCodeField(true);
    }
    public APIRequestGet requestStoreCodeField (boolean value) {
      this.requestField("store_code", value);
      return this;
    }
    public APIRequestGet requestStoreLocationDescriptorField () {
      return this.requestStoreLocationDescriptorField(true);
    }
    public APIRequestGet requestStoreLocationDescriptorField (boolean value) {
      this.requestField("store_location_descriptor", value);
      return this;
    }
    public APIRequestGet requestStoreNumberField () {
      return this.requestStoreNumberField(true);
    }
    public APIRequestGet requestStoreNumberField (boolean value) {
      this.requestField("store_number", value);
      return this;
    }
    public APIRequestGet requestStudioField () {
      return this.requestStudioField(true);
    }
    public APIRequestGet requestStudioField (boolean value) {
      this.requestField("studio", value);
      return this;
    }
    public APIRequestGet requestSupportsInstantArticlesField () {
      return this.requestSupportsInstantArticlesField(true);
    }
    public APIRequestGet requestSupportsInstantArticlesField (boolean value) {
      this.requestField("supports_instant_articles", value);
      return this;
    }
    public APIRequestGet requestTalkingAboutCountField () {
      return this.requestTalkingAboutCountField(true);
    }
    public APIRequestGet requestTalkingAboutCountField (boolean value) {
      this.requestField("talking_about_count", value);
      return this;
    }
    public APIRequestGet requestUnreadMessageCountField () {
      return this.requestUnreadMessageCountField(true);
    }
    public APIRequestGet requestUnreadMessageCountField (boolean value) {
      this.requestField("unread_message_count", value);
      return this;
    }
    public APIRequestGet requestUnreadNotifCountField () {
      return this.requestUnreadNotifCountField(true);
    }
    public APIRequestGet requestUnreadNotifCountField (boolean value) {
      this.requestField("unread_notif_count", value);
      return this;
    }
    public APIRequestGet requestUnseenMessageCountField () {
      return this.requestUnseenMessageCountField(true);
    }
    public APIRequestGet requestUnseenMessageCountField (boolean value) {
      this.requestField("unseen_message_count", value);
      return this;
    }
    public APIRequestGet requestUsernameField () {
      return this.requestUsernameField(true);
    }
    public APIRequestGet requestUsernameField (boolean value) {
      this.requestField("username", value);
      return this;
    }
    public APIRequestGet requestVerificationStatusField () {
      return this.requestVerificationStatusField(true);
    }
    public APIRequestGet requestVerificationStatusField (boolean value) {
      this.requestField("verification_status", value);
      return this;
    }
    public APIRequestGet requestVoipInfoField () {
      return this.requestVoipInfoField(true);
    }
    public APIRequestGet requestVoipInfoField (boolean value) {
      this.requestField("voip_info", value);
      return this;
    }
    public APIRequestGet requestWebsiteField () {
      return this.requestWebsiteField(true);
    }
    public APIRequestGet requestWebsiteField (boolean value) {
      this.requestField("website", value);
      return this;
    }
    public APIRequestGet requestWereHereCountField () {
      return this.requestWereHereCountField(true);
    }
    public APIRequestGet requestWereHereCountField (boolean value) {
      this.requestField("were_here_count", value);
      return this;
    }
    public APIRequestGet requestWhatsappNumberField () {
      return this.requestWhatsappNumberField(true);
    }
    public APIRequestGet requestWhatsappNumberField (boolean value) {
      this.requestField("whatsapp_number", value);
      return this;
    }
    public APIRequestGet requestWrittenByField () {
      return this.requestWrittenByField(true);
    }
    public APIRequestGet requestWrittenByField (boolean value) {
      this.requestField("written_by", value);
      return this;
    }
  }

  public static class APIRequestUpdate extends APIRequest {

    Page lastResponse = null;
    @Override
    public Page getLastResponse() {
      return lastResponse;
    }
    public static final String[] PARAMS = {
      "allow_spherical_photo",
      "spherical_metadata",
      "offset_y",
      "offset_x",
      "focus_y",
      "focus_x",
      "zoom_scale_x",
      "zoom_scale_y",
      "no_feed_story",
      "no_notification",
      "cover",
      "about",
      "bio",
      "company_overview",
      "description",
      "directed_by",
      "general_info",
      "impressum",
      "mission",
      "phone",
      "website",
      "parking",
      "hours",
      "location",
      "price_range",
      "payment_options",
      "restaurant_services",
      "restaurant_specialties",
      "emails",
      "food_styles",
      "attire",
      "public_transit",
      "general_manager",
      "culinary_team",
      "start_info",
      "genre",
      "plot_outline",
      "scrape",
      "category_list",
      "is_always_open",
      "is_published",
      "is_webhooks_subscribed",
      "contact_address",
      "instant_articles_submit_for_review",
      "is_permanently_closed",
      "ignore_coordinate_warnings",
      "begin_crossposting_handshake",
      "accept_crossposting_handshake",
      "displayed_message_response_time",
      "store_location_descriptor",
      "service_details",
      "menu",
    };

    public static final String[] FIELDS = {
    };

    @Override
    public Page parseResponse(String response, String header) throws APIException {
      return Page.parseResponse(response, getContext(), this, header).head();
    }

    @Override
    public Page execute() throws APIException {
      return execute(new HashMap());
    }

    @Override
    public Page execute(Map extraParams) throws APIException {
      ResponseWrapper rw = executeInternal(extraParams);
      lastResponse = parseResponse(rw.getBody(), rw.getHeader());
      return lastResponse;
    }

    public ListenableFuture executeAsync() throws APIException {
      return executeAsync(new HashMap());
    };

    public ListenableFuture executeAsync(Map extraParams) throws APIException {
      return Futures.transform(
        executeAsyncInternal(extraParams),
        new Function() {
           public Page apply(ResponseWrapper result) {
             try {
               return APIRequestUpdate.this.parseResponse(result.getBody(), result.getHeader());
             } catch (Exception e) {
               throw new RuntimeException(e);
             }
           }
         }
      );
    };

    public APIRequestUpdate(String nodeId, APIContext context) {
      super(context, nodeId, "/", "POST", Arrays.asList(PARAMS));
    }

    @Override
    public APIRequestUpdate setParam(String param, Object value) {
      setParamInternal(param, value);
      return this;
    }

    @Override
    public APIRequestUpdate setParams(Map params) {
      setParamsInternal(params);
      return this;
    }


    public APIRequestUpdate setAllowSphericalPhoto (Boolean allowSphericalPhoto) {
      this.setParam("allow_spherical_photo", allowSphericalPhoto);
      return this;
    }
    public APIRequestUpdate setAllowSphericalPhoto (String allowSphericalPhoto) {
      this.setParam("allow_spherical_photo", allowSphericalPhoto);
      return this;
    }

    public APIRequestUpdate setSphericalMetadata (Map sphericalMetadata) {
      this.setParam("spherical_metadata", sphericalMetadata);
      return this;
    }
    public APIRequestUpdate setSphericalMetadata (String sphericalMetadata) {
      this.setParam("spherical_metadata", sphericalMetadata);
      return this;
    }

    public APIRequestUpdate setOffsetY (Long offsetY) {
      this.setParam("offset_y", offsetY);
      return this;
    }
    public APIRequestUpdate setOffsetY (String offsetY) {
      this.setParam("offset_y", offsetY);
      return this;
    }

    public APIRequestUpdate setOffsetX (Long offsetX) {
      this.setParam("offset_x", offsetX);
      return this;
    }
    public APIRequestUpdate setOffsetX (String offsetX) {
      this.setParam("offset_x", offsetX);
      return this;
    }

    public APIRequestUpdate setFocusY (Double focusY) {
      this.setParam("focus_y", focusY);
      return this;
    }
    public APIRequestUpdate setFocusY (String focusY) {
      this.setParam("focus_y", focusY);
      return this;
    }

    public APIRequestUpdate setFocusX (Double focusX) {
      this.setParam("focus_x", focusX);
      return this;
    }
    public APIRequestUpdate setFocusX (String focusX) {
      this.setParam("focus_x", focusX);
      return this;
    }

    public APIRequestUpdate setZoomScaleX (Double zoomScaleX) {
      this.setParam("zoom_scale_x", zoomScaleX);
      return this;
    }
    public APIRequestUpdate setZoomScaleX (String zoomScaleX) {
      this.setParam("zoom_scale_x", zoomScaleX);
      return this;
    }

    public APIRequestUpdate setZoomScaleY (Double zoomScaleY) {
      this.setParam("zoom_scale_y", zoomScaleY);
      return this;
    }
    public APIRequestUpdate setZoomScaleY (String zoomScaleY) {
      this.setParam("zoom_scale_y", zoomScaleY);
      return this;
    }

    public APIRequestUpdate setNoFeedStory (Boolean noFeedStory) {
      this.setParam("no_feed_story", noFeedStory);
      return this;
    }
    public APIRequestUpdate setNoFeedStory (String noFeedStory) {
      this.setParam("no_feed_story", noFeedStory);
      return this;
    }

    public APIRequestUpdate setNoNotification (Boolean noNotification) {
      this.setParam("no_notification", noNotification);
      return this;
    }
    public APIRequestUpdate setNoNotification (String noNotification) {
      this.setParam("no_notification", noNotification);
      return this;
    }

    public APIRequestUpdate setCover (String cover) {
      this.setParam("cover", cover);
      return this;
    }

    public APIRequestUpdate setAbout (String about) {
      this.setParam("about", about);
      return this;
    }

    public APIRequestUpdate setBio (String bio) {
      this.setParam("bio", bio);
      return this;
    }

    public APIRequestUpdate setCompanyOverview (String companyOverview) {
      this.setParam("company_overview", companyOverview);
      return this;
    }

    public APIRequestUpdate setDescription (String description) {
      this.setParam("description", description);
      return this;
    }

    public APIRequestUpdate setDirectedBy (String directedBy) {
      this.setParam("directed_by", directedBy);
      return this;
    }

    public APIRequestUpdate setGeneralInfo (String generalInfo) {
      this.setParam("general_info", generalInfo);
      return this;
    }

    public APIRequestUpdate setImpressum (String impressum) {
      this.setParam("impressum", impressum);
      return this;
    }

    public APIRequestUpdate setMission (String mission) {
      this.setParam("mission", mission);
      return this;
    }

    public APIRequestUpdate setPhone (String phone) {
      this.setParam("phone", phone);
      return this;
    }

    public APIRequestUpdate setWebsite (String website) {
      this.setParam("website", website);
      return this;
    }

    public APIRequestUpdate setParking (Map parking) {
      this.setParam("parking", parking);
      return this;
    }
    public APIRequestUpdate setParking (String parking) {
      this.setParam("parking", parking);
      return this;
    }

    public APIRequestUpdate setHours (Map hours) {
      this.setParam("hours", hours);
      return this;
    }
    public APIRequestUpdate setHours (String hours) {
      this.setParam("hours", hours);
      return this;
    }

    public APIRequestUpdate setLocation (Object location) {
      this.setParam("location", location);
      return this;
    }
    public APIRequestUpdate setLocation (String location) {
      this.setParam("location", location);
      return this;
    }

    public APIRequestUpdate setPriceRange (String priceRange) {
      this.setParam("price_range", priceRange);
      return this;
    }

    public APIRequestUpdate setPaymentOptions (Map paymentOptions) {
      this.setParam("payment_options", paymentOptions);
      return this;
    }
    public APIRequestUpdate setPaymentOptions (String paymentOptions) {
      this.setParam("payment_options", paymentOptions);
      return this;
    }

    public APIRequestUpdate setRestaurantServices (Map restaurantServices) {
      this.setParam("restaurant_services", restaurantServices);
      return this;
    }
    public APIRequestUpdate setRestaurantServices (String restaurantServices) {
      this.setParam("restaurant_services", restaurantServices);
      return this;
    }

    public APIRequestUpdate setRestaurantSpecialties (Map restaurantSpecialties) {
      this.setParam("restaurant_specialties", restaurantSpecialties);
      return this;
    }
    public APIRequestUpdate setRestaurantSpecialties (String restaurantSpecialties) {
      this.setParam("restaurant_specialties", restaurantSpecialties);
      return this;
    }

    public APIRequestUpdate setEmails (List emails) {
      this.setParam("emails", emails);
      return this;
    }
    public APIRequestUpdate setEmails (String emails) {
      this.setParam("emails", emails);
      return this;
    }

    public APIRequestUpdate setFoodStyles (List foodStyles) {
      this.setParam("food_styles", foodStyles);
      return this;
    }
    public APIRequestUpdate setFoodStyles (String foodStyles) {
      this.setParam("food_styles", foodStyles);
      return this;
    }

    public APIRequestUpdate setAttire (Page.EnumAttire attire) {
      this.setParam("attire", attire);
      return this;
    }
    public APIRequestUpdate setAttire (String attire) {
      this.setParam("attire", attire);
      return this;
    }

    public APIRequestUpdate setPublicTransit (String publicTransit) {
      this.setParam("public_transit", publicTransit);
      return this;
    }

    public APIRequestUpdate setGeneralManager (String generalManager) {
      this.setParam("general_manager", generalManager);
      return this;
    }

    public APIRequestUpdate setCulinaryTeam (String culinaryTeam) {
      this.setParam("culinary_team", culinaryTeam);
      return this;
    }

    public APIRequestUpdate setStartInfo (Object startInfo) {
      this.setParam("start_info", startInfo);
      return this;
    }
    public APIRequestUpdate setStartInfo (String startInfo) {
      this.setParam("start_info", startInfo);
      return this;
    }

    public APIRequestUpdate setGenre (String genre) {
      this.setParam("genre", genre);
      return this;
    }

    public APIRequestUpdate setPlotOutline (String plotOutline) {
      this.setParam("plot_outline", plotOutline);
      return this;
    }

    public APIRequestUpdate setScrape (Boolean scrape) {
      this.setParam("scrape", scrape);
      return this;
    }
    public APIRequestUpdate setScrape (String scrape) {
      this.setParam("scrape", scrape);
      return this;
    }

    public APIRequestUpdate setCategoryList (List categoryList) {
      this.setParam("category_list", categoryList);
      return this;
    }
    public APIRequestUpdate setCategoryList (String categoryList) {
      this.setParam("category_list", categoryList);
      return this;
    }

    public APIRequestUpdate setIsAlwaysOpen (Boolean isAlwaysOpen) {
      this.setParam("is_always_open", isAlwaysOpen);
      return this;
    }
    public APIRequestUpdate setIsAlwaysOpen (String isAlwaysOpen) {
      this.setParam("is_always_open", isAlwaysOpen);
      return this;
    }

    public APIRequestUpdate setIsPublished (Boolean isPublished) {
      this.setParam("is_published", isPublished);
      return this;
    }
    public APIRequestUpdate setIsPublished (String isPublished) {
      this.setParam("is_published", isPublished);
      return this;
    }

    public APIRequestUpdate setIsWebhooksSubscribed (Boolean isWebhooksSubscribed) {
      this.setParam("is_webhooks_subscribed", isWebhooksSubscribed);
      return this;
    }
    public APIRequestUpdate setIsWebhooksSubscribed (String isWebhooksSubscribed) {
      this.setParam("is_webhooks_subscribed", isWebhooksSubscribed);
      return this;
    }

    public APIRequestUpdate setContactAddress (Object contactAddress) {
      this.setParam("contact_address", contactAddress);
      return this;
    }
    public APIRequestUpdate setContactAddress (String contactAddress) {
      this.setParam("contact_address", contactAddress);
      return this;
    }

    public APIRequestUpdate setInstantArticlesSubmitForReview (Boolean instantArticlesSubmitForReview) {
      this.setParam("instant_articles_submit_for_review", instantArticlesSubmitForReview);
      return this;
    }
    public APIRequestUpdate setInstantArticlesSubmitForReview (String instantArticlesSubmitForReview) {
      this.setParam("instant_articles_submit_for_review", instantArticlesSubmitForReview);
      return this;
    }

    public APIRequestUpdate setIsPermanentlyClosed (Boolean isPermanentlyClosed) {
      this.setParam("is_permanently_closed", isPermanentlyClosed);
      return this;
    }
    public APIRequestUpdate setIsPermanentlyClosed (String isPermanentlyClosed) {
      this.setParam("is_permanently_closed", isPermanentlyClosed);
      return this;
    }

    public APIRequestUpdate setIgnoreCoordinateWarnings (Boolean ignoreCoordinateWarnings) {
      this.setParam("ignore_coordinate_warnings", ignoreCoordinateWarnings);
      return this;
    }
    public APIRequestUpdate setIgnoreCoordinateWarnings (String ignoreCoordinateWarnings) {
      this.setParam("ignore_coordinate_warnings", ignoreCoordinateWarnings);
      return this;
    }

    public APIRequestUpdate setBeginCrosspostingHandshake (List> beginCrosspostingHandshake) {
      this.setParam("begin_crossposting_handshake", beginCrosspostingHandshake);
      return this;
    }
    public APIRequestUpdate setBeginCrosspostingHandshake (String beginCrosspostingHandshake) {
      this.setParam("begin_crossposting_handshake", beginCrosspostingHandshake);
      return this;
    }

    public APIRequestUpdate setAcceptCrosspostingHandshake (List> acceptCrosspostingHandshake) {
      this.setParam("accept_crossposting_handshake", acceptCrosspostingHandshake);
      return this;
    }
    public APIRequestUpdate setAcceptCrosspostingHandshake (String acceptCrosspostingHandshake) {
      this.setParam("accept_crossposting_handshake", acceptCrosspostingHandshake);
      return this;
    }

    public APIRequestUpdate setDisplayedMessageResponseTime (String displayedMessageResponseTime) {
      this.setParam("displayed_message_response_time", displayedMessageResponseTime);
      return this;
    }

    public APIRequestUpdate setStoreLocationDescriptor (String storeLocationDescriptor) {
      this.setParam("store_location_descriptor", storeLocationDescriptor);
      return this;
    }

    public APIRequestUpdate setServiceDetails (String serviceDetails) {
      this.setParam("service_details", serviceDetails);
      return this;
    }

    public APIRequestUpdate setMenu (String menu) {
      this.setParam("menu", menu);
      return this;
    }

    public APIRequestUpdate requestAllFields () {
      return this.requestAllFields(true);
    }

    public APIRequestUpdate requestAllFields (boolean value) {
      for (String field : FIELDS) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestUpdate requestFields (List fields) {
      return this.requestFields(fields, true);
    }

    @Override
    public APIRequestUpdate requestFields (List fields, boolean value) {
      for (String field : fields) {
        this.requestField(field, value);
      }
      return this;
    }

    @Override
    public APIRequestUpdate requestField (String field) {
      this.requestField(field, true);
      return this;
    }

    @Override
    public APIRequestUpdate requestField (String field, boolean value) {
      this.requestFieldInternal(field, value);
      return this;
    }

  }

  public static enum EnumAttire {
      @SerializedName("Casual")
      VALUE_CASUAL("Casual"),
      @SerializedName("Dressy")
      VALUE_DRESSY("Dressy"),
      @SerializedName("Unspecified")
      VALUE_UNSPECIFIED("Unspecified"),
      NULL(null);

      private String value;

      private EnumAttire(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumFoodStyles {
      @SerializedName("Afghani")
      VALUE_AFGHANI("Afghani"),
      @SerializedName("American (New)")
      VALUE_AMERICAN_NEW_("American (New)"),
      @SerializedName("American (Traditional)")
      VALUE_AMERICAN_TRADITIONAL_("American (Traditional)"),
      @SerializedName("Asian Fusion")
      VALUE_ASIAN_FUSION("Asian Fusion"),
      @SerializedName("Barbeque")
      VALUE_BARBEQUE("Barbeque"),
      @SerializedName("Brazilian")
      VALUE_BRAZILIAN("Brazilian"),
      @SerializedName("Breakfast")
      VALUE_BREAKFAST("Breakfast"),
      @SerializedName("British")
      VALUE_BRITISH("British"),
      @SerializedName("Brunch")
      VALUE_BRUNCH("Brunch"),
      @SerializedName("Buffets")
      VALUE_BUFFETS("Buffets"),
      @SerializedName("Burgers")
      VALUE_BURGERS("Burgers"),
      @SerializedName("Burmese")
      VALUE_BURMESE("Burmese"),
      @SerializedName("Cajun/Creole")
      VALUE_CAJUN_CREOLE("Cajun/Creole"),
      @SerializedName("Caribbean")
      VALUE_CARIBBEAN("Caribbean"),
      @SerializedName("Chinese")
      VALUE_CHINESE("Chinese"),
      @SerializedName("Creperies")
      VALUE_CREPERIES("Creperies"),
      @SerializedName("Cuban")
      VALUE_CUBAN("Cuban"),
      @SerializedName("Delis")
      VALUE_DELIS("Delis"),
      @SerializedName("Diners")
      VALUE_DINERS("Diners"),
      @SerializedName("Ethiopian")
      VALUE_ETHIOPIAN("Ethiopian"),
      @SerializedName("Fast Food")
      VALUE_FAST_FOOD("Fast Food"),
      @SerializedName("Filipino")
      VALUE_FILIPINO("Filipino"),
      @SerializedName("Fondue")
      VALUE_FONDUE("Fondue"),
      @SerializedName("Food Stands")
      VALUE_FOOD_STANDS("Food Stands"),
      @SerializedName("French")
      VALUE_FRENCH("French"),
      @SerializedName("German")
      VALUE_GERMAN("German"),
      @SerializedName("Greek and Mediterranean")
      VALUE_GREEK_AND_MEDITERRANEAN("Greek and Mediterranean"),
      @SerializedName("Hawaiian")
      VALUE_HAWAIIAN("Hawaiian"),
      @SerializedName("Himalayan/Nepalese")
      VALUE_HIMALAYAN_NEPALESE("Himalayan/Nepalese"),
      @SerializedName("Hot Dogs")
      VALUE_HOT_DOGS("Hot Dogs"),
      @SerializedName("Indian/Pakistani")
      VALUE_INDIAN_PAKISTANI("Indian/Pakistani"),
      @SerializedName("Irish")
      VALUE_IRISH("Irish"),
      @SerializedName("Italian")
      VALUE_ITALIAN("Italian"),
      @SerializedName("Japanese")
      VALUE_JAPANESE("Japanese"),
      @SerializedName("Korean")
      VALUE_KOREAN("Korean"),
      @SerializedName("Latin American")
      VALUE_LATIN_AMERICAN("Latin American"),
      @SerializedName("Mexican")
      VALUE_MEXICAN("Mexican"),
      @SerializedName("Middle Eastern")
      VALUE_MIDDLE_EASTERN("Middle Eastern"),
      @SerializedName("Moroccan")
      VALUE_MOROCCAN("Moroccan"),
      @SerializedName("Pizza")
      VALUE_PIZZA("Pizza"),
      @SerializedName("Russian")
      VALUE_RUSSIAN("Russian"),
      @SerializedName("Sandwiches")
      VALUE_SANDWICHES("Sandwiches"),
      @SerializedName("Seafood")
      VALUE_SEAFOOD("Seafood"),
      @SerializedName("Singaporean")
      VALUE_SINGAPOREAN("Singaporean"),
      @SerializedName("Soul Food")
      VALUE_SOUL_FOOD("Soul Food"),
      @SerializedName("Southern")
      VALUE_SOUTHERN("Southern"),
      @SerializedName("Spanish/Basque")
      VALUE_SPANISH_BASQUE("Spanish/Basque"),
      @SerializedName("Steakhouses")
      VALUE_STEAKHOUSES("Steakhouses"),
      @SerializedName("Sushi Bars")
      VALUE_SUSHI_BARS("Sushi Bars"),
      @SerializedName("Taiwanese")
      VALUE_TAIWANESE("Taiwanese"),
      @SerializedName("Tapas Bars")
      VALUE_TAPAS_BARS("Tapas Bars"),
      @SerializedName("Tex-Mex")
      VALUE_TEX_MEX("Tex-Mex"),
      @SerializedName("Thai")
      VALUE_THAI("Thai"),
      @SerializedName("Turkish")
      VALUE_TURKISH("Turkish"),
      @SerializedName("Vegan")
      VALUE_VEGAN("Vegan"),
      @SerializedName("Vegetarian")
      VALUE_VEGETARIAN("Vegetarian"),
      @SerializedName("Vietnamese")
      VALUE_VIETNAMESE("Vietnamese"),
      NULL(null);

      private String value;

      private EnumFoodStyles(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumSetting {
      @SerializedName("EMAIL_NOTIF")
      VALUE_EMAIL_NOTIF("EMAIL_NOTIF"),
      @SerializedName("MOBILE_NOTIF")
      VALUE_MOBILE_NOTIF("MOBILE_NOTIF"),
      @SerializedName("POST_AS_SELF")
      VALUE_POST_AS_SELF("POST_AS_SELF"),
      NULL(null);

      private String value;

      private EnumSetting(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumAudience {
      @SerializedName("AUTO_LOOKALIKE")
      VALUE_AUTO_LOOKALIKE("AUTO_LOOKALIKE"),
      @SerializedName("AUTO_PAGE_LOOKALIKE")
      VALUE_AUTO_PAGE_LOOKALIKE("AUTO_PAGE_LOOKALIKE"),
      @SerializedName("AUTO_TARGETING")
      VALUE_AUTO_TARGETING("AUTO_TARGETING"),
      @SerializedName("CREATE_NEW")
      VALUE_CREATE_NEW("CREATE_NEW"),
      @SerializedName("CUSTOM_AUDIENCE")
      VALUE_CUSTOM_AUDIENCE("CUSTOM_AUDIENCE"),
      @SerializedName("DISTRICT")
      VALUE_DISTRICT("DISTRICT"),
      @SerializedName("EVENT_CUSTOM_AUDIENCES")
      VALUE_EVENT_CUSTOM_AUDIENCES("EVENT_CUSTOM_AUDIENCES"),
      @SerializedName("EVENT_ENGAGEMENT")
      VALUE_EVENT_ENGAGEMENT("EVENT_ENGAGEMENT"),
      @SerializedName("FANS")
      VALUE_FANS("FANS"),
      @SerializedName("GROUPER")
      VALUE_GROUPER("GROUPER"),
      @SerializedName("IG_PROMOTED_POST_AUTO")
      VALUE_IG_PROMOTED_POST_AUTO("IG_PROMOTED_POST_AUTO"),
      @SerializedName("LOCAL")
      VALUE_LOCAL("LOCAL"),
      @SerializedName("LOOKALIKE")
      VALUE_LOOKALIKE("LOOKALIKE"),
      @SerializedName("MULT_CUSTOM_AUDIENCES")
      VALUE_MULT_CUSTOM_AUDIENCES("MULT_CUSTOM_AUDIENCES"),
      @SerializedName("NCPP")
      VALUE_NCPP("NCPP"),
      @SerializedName("SAVED_AUDIENCE")
      VALUE_SAVED_AUDIENCE("SAVED_AUDIENCE"),
      @SerializedName("SMART_AUDIENCE")
      VALUE_SMART_AUDIENCE("SMART_AUDIENCE"),
      NULL(null);

      private String value;

      private EnumAudience(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumPermittedTasks {
      @SerializedName("ADVERTISE")
      VALUE_ADVERTISE("ADVERTISE"),
      @SerializedName("ANALYZE")
      VALUE_ANALYZE("ANALYZE"),
      @SerializedName("CREATE_CONTENT")
      VALUE_CREATE_CONTENT("CREATE_CONTENT"),
      @SerializedName("MANAGE")
      VALUE_MANAGE("MANAGE"),
      @SerializedName("MANAGE_JOBS")
      VALUE_MANAGE_JOBS("MANAGE_JOBS"),
      @SerializedName("MODERATE")
      VALUE_MODERATE("MODERATE"),
      @SerializedName("MODERATE_COMMUNITY")
      VALUE_MODERATE_COMMUNITY("MODERATE_COMMUNITY"),
      @SerializedName("PAGES_MESSAGING")
      VALUE_PAGES_MESSAGING("PAGES_MESSAGING"),
      @SerializedName("PAGES_MESSAGING_SUBSCRIPTIONS")
      VALUE_PAGES_MESSAGING_SUBSCRIPTIONS("PAGES_MESSAGING_SUBSCRIPTIONS"),
      @SerializedName("READ_PAGE_MAILBOXES")
      VALUE_READ_PAGE_MAILBOXES("READ_PAGE_MAILBOXES"),
      NULL(null);

      private String value;

      private EnumPermittedTasks(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumTasks {
      @SerializedName("ADVERTISE")
      VALUE_ADVERTISE("ADVERTISE"),
      @SerializedName("ANALYZE")
      VALUE_ANALYZE("ANALYZE"),
      @SerializedName("CREATE_CONTENT")
      VALUE_CREATE_CONTENT("CREATE_CONTENT"),
      @SerializedName("MANAGE")
      VALUE_MANAGE("MANAGE"),
      @SerializedName("MANAGE_JOBS")
      VALUE_MANAGE_JOBS("MANAGE_JOBS"),
      @SerializedName("MODERATE")
      VALUE_MODERATE("MODERATE"),
      @SerializedName("MODERATE_COMMUNITY")
      VALUE_MODERATE_COMMUNITY("MODERATE_COMMUNITY"),
      @SerializedName("PAGES_MESSAGING")
      VALUE_PAGES_MESSAGING("PAGES_MESSAGING"),
      @SerializedName("PAGES_MESSAGING_SUBSCRIPTIONS")
      VALUE_PAGES_MESSAGING_SUBSCRIPTIONS("PAGES_MESSAGING_SUBSCRIPTIONS"),
      @SerializedName("READ_PAGE_MAILBOXES")
      VALUE_READ_PAGE_MAILBOXES("READ_PAGE_MAILBOXES"),
      NULL(null);

      private String value;

      private EnumTasks(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumMessagingType {
      @SerializedName("MESSAGE_TAG")
      VALUE_MESSAGE_TAG("MESSAGE_TAG"),
      @SerializedName("RESPONSE")
      VALUE_RESPONSE("RESPONSE"),
      @SerializedName("UPDATE")
      VALUE_UPDATE("UPDATE"),
      NULL(null);

      private String value;

      private EnumMessagingType(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumNotificationType {
      @SerializedName("NO_PUSH")
      VALUE_NO_PUSH("NO_PUSH"),
      @SerializedName("REGULAR")
      VALUE_REGULAR("REGULAR"),
      @SerializedName("SILENT_PUSH")
      VALUE_SILENT_PUSH("SILENT_PUSH"),
      NULL(null);

      private String value;

      private EnumNotificationType(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumPublishStatus {
      @SerializedName("DRAFT")
      VALUE_DRAFT("DRAFT"),
      @SerializedName("LIVE")
      VALUE_LIVE("LIVE"),
      NULL(null);

      private String value;

      private EnumPublishStatus(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumSenderAction {
      @SerializedName("MARK_SEEN")
      VALUE_MARK_SEEN("MARK_SEEN"),
      @SerializedName("TYPING_OFF")
      VALUE_TYPING_OFF("TYPING_OFF"),
      @SerializedName("TYPING_ON")
      VALUE_TYPING_ON("TYPING_ON"),
      NULL(null);

      private String value;

      private EnumSenderAction(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumType {
      @SerializedName("REF")
      VALUE_REF("REF"),
      @SerializedName("STANDARD")
      VALUE_STANDARD("STANDARD"),
      NULL(null);

      private String value;

      private EnumType(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumModel {
      @SerializedName("ARABIC")
      VALUE_ARABIC("ARABIC"),
      @SerializedName("CHINESE")
      VALUE_CHINESE("CHINESE"),
      @SerializedName("CROATIAN")
      VALUE_CROATIAN("CROATIAN"),
      @SerializedName("CUSTOM")
      VALUE_CUSTOM("CUSTOM"),
      @SerializedName("DANISH")
      VALUE_DANISH("DANISH"),
      @SerializedName("DUTCH")
      VALUE_DUTCH("DUTCH"),
      @SerializedName("ENGLISH")
      VALUE_ENGLISH("ENGLISH"),
      @SerializedName("FRENCH_STANDARD")
      VALUE_FRENCH_STANDARD("FRENCH_STANDARD"),
      @SerializedName("GEORGIAN")
      VALUE_GEORGIAN("GEORGIAN"),
      @SerializedName("GERMAN_STANDARD")
      VALUE_GERMAN_STANDARD("GERMAN_STANDARD"),
      @SerializedName("GREEK")
      VALUE_GREEK("GREEK"),
      @SerializedName("HEBREW")
      VALUE_HEBREW("HEBREW"),
      @SerializedName("HUNGARIAN")
      VALUE_HUNGARIAN("HUNGARIAN"),
      @SerializedName("IRISH")
      VALUE_IRISH("IRISH"),
      @SerializedName("ITALIAN_STANDARD")
      VALUE_ITALIAN_STANDARD("ITALIAN_STANDARD"),
      @SerializedName("KOREAN")
      VALUE_KOREAN("KOREAN"),
      @SerializedName("NORWEGIAN_BOKMAL")
      VALUE_NORWEGIAN_BOKMAL("NORWEGIAN_BOKMAL"),
      @SerializedName("POLISH")
      VALUE_POLISH("POLISH"),
      @SerializedName("PORTUGUESE")
      VALUE_PORTUGUESE("PORTUGUESE"),
      @SerializedName("ROMANIAN")
      VALUE_ROMANIAN("ROMANIAN"),
      @SerializedName("SPANISH")
      VALUE_SPANISH("SPANISH"),
      @SerializedName("SWEDISH")
      VALUE_SWEDISH("SWEDISH"),
      @SerializedName("VIETNAMESE")
      VALUE_VIETNAMESE("VIETNAMESE"),
      NULL(null);

      private String value;

      private EnumModel(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumFiltering {
      @SerializedName("ema")
      VALUE_EMA("ema"),
      @SerializedName("groups")
      VALUE_GROUPS("groups"),
      @SerializedName("groups_social")
      VALUE_GROUPS_SOCIAL("groups_social"),
      NULL(null);

      private String value;

      private EnumFiltering(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumSubscribedFields {
      @SerializedName("affiliation")
      VALUE_AFFILIATION("affiliation"),
      @SerializedName("attire")
      VALUE_ATTIRE("attire"),
      @SerializedName("awards")
      VALUE_AWARDS("awards"),
      @SerializedName("bio")
      VALUE_BIO("bio"),
      @SerializedName("birthday")
      VALUE_BIRTHDAY("birthday"),
      @SerializedName("branded_camera")
      VALUE_BRANDED_CAMERA("branded_camera"),
      @SerializedName("category")
      VALUE_CATEGORY("category"),
      @SerializedName("checkins")
      VALUE_CHECKINS("checkins"),
      @SerializedName("company_overview")
      VALUE_COMPANY_OVERVIEW("company_overview"),
      @SerializedName("conversations")
      VALUE_CONVERSATIONS("conversations"),
      @SerializedName("culinary_team")
      VALUE_CULINARY_TEAM("culinary_team"),
      @SerializedName("current_location")
      VALUE_CURRENT_LOCATION("current_location"),
      @SerializedName("description")
      VALUE_DESCRIPTION("description"),
      @SerializedName("email")
      VALUE_EMAIL("email"),
      @SerializedName("feature_access_list")
      VALUE_FEATURE_ACCESS_LIST("feature_access_list"),
      @SerializedName("feed")
      VALUE_FEED("feed"),
      @SerializedName("founded")
      VALUE_FOUNDED("founded"),
      @SerializedName("general_info")
      VALUE_GENERAL_INFO("general_info"),
      @SerializedName("general_manager")
      VALUE_GENERAL_MANAGER("general_manager"),
      @SerializedName("hometown")
      VALUE_HOMETOWN("hometown"),
      @SerializedName("hours")
      VALUE_HOURS("hours"),
      @SerializedName("leadgen")
      VALUE_LEADGEN("leadgen"),
      @SerializedName("leadgen_fat")
      VALUE_LEADGEN_FAT("leadgen_fat"),
      @SerializedName("live_videos")
      VALUE_LIVE_VIDEOS("live_videos"),
      @SerializedName("location")
      VALUE_LOCATION("location"),
      @SerializedName("members")
      VALUE_MEMBERS("members"),
      @SerializedName("mention")
      VALUE_MENTION("mention"),
      @SerializedName("merchant_review")
      VALUE_MERCHANT_REVIEW("merchant_review"),
      @SerializedName("message_deliveries")
      VALUE_MESSAGE_DELIVERIES("message_deliveries"),
      @SerializedName("message_echoes")
      VALUE_MESSAGE_ECHOES("message_echoes"),
      @SerializedName("message_reads")
      VALUE_MESSAGE_READS("message_reads"),
      @SerializedName("messages")
      VALUE_MESSAGES("messages"),
      @SerializedName("messaging_account_linking")
      VALUE_MESSAGING_ACCOUNT_LINKING("messaging_account_linking"),
      @SerializedName("messaging_appointments")
      VALUE_MESSAGING_APPOINTMENTS("messaging_appointments"),
      @SerializedName("messaging_checkout_updates")
      VALUE_MESSAGING_CHECKOUT_UPDATES("messaging_checkout_updates"),
      @SerializedName("messaging_game_plays")
      VALUE_MESSAGING_GAME_PLAYS("messaging_game_plays"),
      @SerializedName("messaging_handovers")
      VALUE_MESSAGING_HANDOVERS("messaging_handovers"),
      @SerializedName("messaging_optins")
      VALUE_MESSAGING_OPTINS("messaging_optins"),
      @SerializedName("messaging_optouts")
      VALUE_MESSAGING_OPTOUTS("messaging_optouts"),
      @SerializedName("messaging_page_feedback")
      VALUE_MESSAGING_PAGE_FEEDBACK("messaging_page_feedback"),
      @SerializedName("messaging_payments")
      VALUE_MESSAGING_PAYMENTS("messaging_payments"),
      @SerializedName("messaging_policy_enforcement")
      VALUE_MESSAGING_POLICY_ENFORCEMENT("messaging_policy_enforcement"),
      @SerializedName("messaging_postbacks")
      VALUE_MESSAGING_POSTBACKS("messaging_postbacks"),
      @SerializedName("messaging_pre_checkouts")
      VALUE_MESSAGING_PRE_CHECKOUTS("messaging_pre_checkouts"),
      @SerializedName("messaging_referrals")
      VALUE_MESSAGING_REFERRALS("messaging_referrals"),
      @SerializedName("mission")
      VALUE_MISSION("mission"),
      @SerializedName("name")
      VALUE_NAME("name"),
      @SerializedName("page_about_story")
      VALUE_PAGE_ABOUT_STORY("page_about_story"),
      @SerializedName("page_change_proposal")
      VALUE_PAGE_CHANGE_PROPOSAL("page_change_proposal"),
      @SerializedName("page_upcoming_change")
      VALUE_PAGE_UPCOMING_CHANGE("page_upcoming_change"),
      @SerializedName("parking")
      VALUE_PARKING("parking"),
      @SerializedName("payment_options")
      VALUE_PAYMENT_OPTIONS("payment_options"),
      @SerializedName("personal_info")
      VALUE_PERSONAL_INFO("personal_info"),
      @SerializedName("personal_interests")
      VALUE_PERSONAL_INTERESTS("personal_interests"),
      @SerializedName("phone")
      VALUE_PHONE("phone"),
      @SerializedName("picture")
      VALUE_PICTURE("picture"),
      @SerializedName("price_range")
      VALUE_PRICE_RANGE("price_range"),
      @SerializedName("product_review")
      VALUE_PRODUCT_REVIEW("product_review"),
      @SerializedName("products")
      VALUE_PRODUCTS("products"),
      @SerializedName("public_transit")
      VALUE_PUBLIC_TRANSIT("public_transit"),
      @SerializedName("publisher_subscriptions")
      VALUE_PUBLISHER_SUBSCRIPTIONS("publisher_subscriptions"),
      @SerializedName("ratings")
      VALUE_RATINGS("ratings"),
      @SerializedName("registration")
      VALUE_REGISTRATION("registration"),
      @SerializedName("standby")
      VALUE_STANDBY("standby"),
      @SerializedName("videos")
      VALUE_VIDEOS("videos"),
      @SerializedName("website")
      VALUE_WEBSITE("website"),
      NULL(null);

      private String value;

      private EnumSubscribedFields(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumDomainActionType {
      @SerializedName("ADD")
      VALUE_ADD("ADD"),
      @SerializedName("REMOVE")
      VALUE_REMOVE("REMOVE"),
      NULL(null);

      private String value;

      private EnumDomainActionType(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumPaymentDevModeAction {
      @SerializedName("ADD")
      VALUE_ADD("ADD"),
      @SerializedName("REMOVE")
      VALUE_REMOVE("REMOVE"),
      NULL(null);

      private String value;

      private EnumPaymentDevModeAction(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumSettingType {
      @SerializedName("ACCOUNT_LINKING")
      VALUE_ACCOUNT_LINKING("ACCOUNT_LINKING"),
      @SerializedName("CALL_TO_ACTIONS")
      VALUE_CALL_TO_ACTIONS("CALL_TO_ACTIONS"),
      @SerializedName("DOMAIN_WHITELISTING")
      VALUE_DOMAIN_WHITELISTING("DOMAIN_WHITELISTING"),
      @SerializedName("GREETING")
      VALUE_GREETING("GREETING"),
      @SerializedName("PAYMENT")
      VALUE_PAYMENT("PAYMENT"),
      NULL(null);

      private String value;

      private EnumSettingType(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumThreadState {
      @SerializedName("EXISTING_THREAD")
      VALUE_EXISTING_THREAD("EXISTING_THREAD"),
      @SerializedName("NEW_THREAD")
      VALUE_NEW_THREAD("NEW_THREAD"),
      NULL(null);

      private String value;

      private EnumThreadState(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumMatchContentType {
      @SerializedName("AUDIO_ONLY")
      VALUE_AUDIO_ONLY("AUDIO_ONLY"),
      @SerializedName("VIDEO_AND_AUDIO")
      VALUE_VIDEO_AND_AUDIO("VIDEO_AND_AUDIO"),
      @SerializedName("VIDEO_ONLY")
      VALUE_VIDEO_ONLY("VIDEO_ONLY"),
      NULL(null);

      private String value;

      private EnumMatchContentType(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumAction {
      @SerializedName("BLOCK")
      VALUE_BLOCK("BLOCK"),
      @SerializedName("CLAIM_AD_EARNINGS")
      VALUE_CLAIM_AD_EARNINGS("CLAIM_AD_EARNINGS"),
      @SerializedName("MANUAL_REVIEW")
      VALUE_MANUAL_REVIEW("MANUAL_REVIEW"),
      @SerializedName("MONITOR")
      VALUE_MONITOR("MONITOR"),
      @SerializedName("REQUEST_TAKEDOWN")
      VALUE_REQUEST_TAKEDOWN("REQUEST_TAKEDOWN"),
      NULL(null);

      private String value;

      private EnumAction(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumActionReason {
      @SerializedName("ARTIST_OBJECTION")
      VALUE_ARTIST_OBJECTION("ARTIST_OBJECTION"),
      @SerializedName("OBJECTIONABLE_CONTENT")
      VALUE_OBJECTIONABLE_CONTENT("OBJECTIONABLE_CONTENT"),
      @SerializedName("PREMIUM_MUSIC_VIDEO")
      VALUE_PREMIUM_MUSIC_VIDEO("PREMIUM_MUSIC_VIDEO"),
      @SerializedName("PRERELEASE_CONTENT")
      VALUE_PRERELEASE_CONTENT("PRERELEASE_CONTENT"),
      @SerializedName("PRODUCT_PARAMETERS")
      VALUE_PRODUCT_PARAMETERS("PRODUCT_PARAMETERS"),
      @SerializedName("RESTRICTED_CONTENT")
      VALUE_RESTRICTED_CONTENT("RESTRICTED_CONTENT"),
      @SerializedName("UNAUTHORIZED_COMMERCIAL_USE")
      VALUE_UNAUTHORIZED_COMMERCIAL_USE("UNAUTHORIZED_COMMERCIAL_USE"),
      NULL(null);

      private String value;

      private EnumActionReason(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }

  public static enum EnumFields {
      @SerializedName("ACCOUNT_LINKING_URL")
      VALUE_ACCOUNT_LINKING_URL("ACCOUNT_LINKING_URL"),
      @SerializedName("GET_STARTED")
      VALUE_GET_STARTED("GET_STARTED"),
      @SerializedName("GREETING")
      VALUE_GREETING("GREETING"),
      @SerializedName("HOME_URL")
      VALUE_HOME_URL("HOME_URL"),
      @SerializedName("PAYMENT_SETTINGS")
      VALUE_PAYMENT_SETTINGS("PAYMENT_SETTINGS"),
      @SerializedName("PERSISTENT_MENU")
      VALUE_PERSISTENT_MENU("PERSISTENT_MENU"),
      @SerializedName("TARGET_AUDIENCE")
      VALUE_TARGET_AUDIENCE("TARGET_AUDIENCE"),
      @SerializedName("WHITELISTED_DOMAINS")
      VALUE_WHITELISTED_DOMAINS("WHITELISTED_DOMAINS"),
      NULL(null);

      private String value;

      private EnumFields(String value) {
        this.value = value;
      }

      @Override
      public String toString() {
        return value;
      }
  }


  synchronized /*package*/ static Gson getGson() {
    if (gson != null) {
      return gson;
    } else {
      gson = new GsonBuilder()
        .excludeFieldsWithModifiers(Modifier.STATIC)
        .excludeFieldsWithModifiers(Modifier.PROTECTED)
        .disableHtmlEscaping()
        .create();
    }
    return gson;
  }

  public Page copyFrom(Page instance) {
    this.mAbout = instance.mAbout;
    this.mAccessToken = instance.mAccessToken;
    this.mAdCampaign = instance.mAdCampaign;
    this.mAffiliation = instance.mAffiliation;
    this.mAppId = instance.mAppId;
    this.mAppLinks = instance.mAppLinks;
    this.mArtistsWeLike = instance.mArtistsWeLike;
    this.mAttire = instance.mAttire;
    this.mAwards = instance.mAwards;
    this.mBandInterests = instance.mBandInterests;
    this.mBandMembers = instance.mBandMembers;
    this.mBestPage = instance.mBestPage;
    this.mBio = instance.mBio;
    this.mBirthday = instance.mBirthday;
    this.mBookingAgent = instance.mBookingAgent;
    this.mBuilt = instance.mBuilt;
    this.mBusiness = instance.mBusiness;
    this.mCanCheckin = instance.mCanCheckin;
    this.mCanPost = instance.mCanPost;
    this.mCategory = instance.mCategory;
    this.mCategoryList = instance.mCategoryList;
    this.mCheckins = instance.mCheckins;
    this.mCompanyOverview = instance.mCompanyOverview;
    this.mConnectedInstagramAccount = instance.mConnectedInstagramAccount;
    this.mContactAddress = instance.mContactAddress;
    this.mContext = instance.mContext;
    this.mCopyrightAttributionInsights = instance.mCopyrightAttributionInsights;
    this.mCopyrightWhitelistedIgPartners = instance.mCopyrightWhitelistedIgPartners;
    this.mCountryPageLikes = instance.mCountryPageLikes;
    this.mCover = instance.mCover;
    this.mCulinaryTeam = instance.mCulinaryTeam;
    this.mCurrentLocation = instance.mCurrentLocation;
    this.mDescription = instance.mDescription;
    this.mDescriptionHtml = instance.mDescriptionHtml;
    this.mDirectedBy = instance.mDirectedBy;
    this.mDisplaySubtext = instance.mDisplaySubtext;
    this.mDisplayedMessageResponseTime = instance.mDisplayedMessageResponseTime;
    this.mEmails = instance.mEmails;
    this.mEngagement = instance.mEngagement;
    this.mFanCount = instance.mFanCount;
    this.mFeaturedVideo = instance.mFeaturedVideo;
    this.mFeatures = instance.mFeatures;
    this.mFoodStyles = instance.mFoodStyles;
    this.mFounded = instance.mFounded;
    this.mGeneralInfo = instance.mGeneralInfo;
    this.mGeneralManager = instance.mGeneralManager;
    this.mGenre = instance.mGenre;
    this.mGlobalBrandPageName = instance.mGlobalBrandPageName;
    this.mGlobalBrandRootId = instance.mGlobalBrandRootId;
    this.mHasAddedApp = instance.mHasAddedApp;
    this.mHasWhatsappBusinessNumber = instance.mHasWhatsappBusinessNumber;
    this.mHasWhatsappNumber = instance.mHasWhatsappNumber;
    this.mHometown = instance.mHometown;
    this.mHours = instance.mHours;
    this.mId = instance.mId;
    this.mImpressum = instance.mImpressum;
    this.mInfluences = instance.mInfluences;
    this.mInstagramBusinessAccount = instance.mInstagramBusinessAccount;
    this.mInstantArticlesReviewStatus = instance.mInstantArticlesReviewStatus;
    this.mIsAlwaysOpen = instance.mIsAlwaysOpen;
    this.mIsChain = instance.mIsChain;
    this.mIsCommunityPage = instance.mIsCommunityPage;
    this.mIsEligibleForBrandedContent = instance.mIsEligibleForBrandedContent;
    this.mIsMessengerBotGetStartedEnabled = instance.mIsMessengerBotGetStartedEnabled;
    this.mIsMessengerPlatformBot = instance.mIsMessengerPlatformBot;
    this.mIsOwned = instance.mIsOwned;
    this.mIsPermanentlyClosed = instance.mIsPermanentlyClosed;
    this.mIsPublished = instance.mIsPublished;
    this.mIsUnclaimed = instance.mIsUnclaimed;
    this.mIsVerified = instance.mIsVerified;
    this.mIsWebhooksSubscribed = instance.mIsWebhooksSubscribed;
    this.mKeywords = instance.mKeywords;
    this.mLeadgenFormPreviewDetails = instance.mLeadgenFormPreviewDetails;
    this.mLeadgenHasCrmIntegration = instance.mLeadgenHasCrmIntegration;
    this.mLeadgenHasFatPingCrmIntegration = instance.mLeadgenHasFatPingCrmIntegration;
    this.mLeadgenTosAcceptanceTime = instance.mLeadgenTosAcceptanceTime;
    this.mLeadgenTosAccepted = instance.mLeadgenTosAccepted;
    this.mLeadgenTosAcceptingUser = instance.mLeadgenTosAcceptingUser;
    this.mLink = instance.mLink;
    this.mLocation = instance.mLocation;
    this.mMembers = instance.mMembers;
    this.mMerchantId = instance.mMerchantId;
    this.mMerchantReviewStatus = instance.mMerchantReviewStatus;
    this.mMessengerAdsDefaultIcebreakers = instance.mMessengerAdsDefaultIcebreakers;
    this.mMessengerAdsDefaultPageWelcomeMessage = instance.mMessengerAdsDefaultPageWelcomeMessage;
    this.mMessengerAdsDefaultQuickReplies = instance.mMessengerAdsDefaultQuickReplies;
    this.mMessengerAdsQuickRepliesType = instance.mMessengerAdsQuickRepliesType;
    this.mMission = instance.mMission;
    this.mMpg = instance.mMpg;
    this.mName = instance.mName;
    this.mNameWithLocationDescriptor = instance.mNameWithLocationDescriptor;
    this.mNetwork = instance.mNetwork;
    this.mNewLikeCount = instance.mNewLikeCount;
    this.mOfferEligible = instance.mOfferEligible;
    this.mOverallStarRating = instance.mOverallStarRating;
    this.mPageAboutStory = instance.mPageAboutStory;
    this.mPageToken = instance.mPageToken;
    this.mParentPage = instance.mParentPage;
    this.mParking = instance.mParking;
    this.mPaymentOptions = instance.mPaymentOptions;
    this.mPersonalInfo = instance.mPersonalInfo;
    this.mPersonalInterests = instance.mPersonalInterests;
    this.mPharmaSafetyInfo = instance.mPharmaSafetyInfo;
    this.mPhone = instance.mPhone;
    this.mPlaceType = instance.mPlaceType;
    this.mPlotOutline = instance.mPlotOutline;
    this.mPreferredAudience = instance.mPreferredAudience;
    this.mPressContact = instance.mPressContact;
    this.mPriceRange = instance.mPriceRange;
    this.mPrivacyInfoUrl = instance.mPrivacyInfoUrl;
    this.mProducedBy = instance.mProducedBy;
    this.mProducts = instance.mProducts;
    this.mPromotionEligible = instance.mPromotionEligible;
    this.mPromotionIneligibleReason = instance.mPromotionIneligibleReason;
    this.mPublicTransit = instance.mPublicTransit;
    this.mRatingCount = instance.mRatingCount;
    this.mRecipient = instance.mRecipient;
    this.mRecordLabel = instance.mRecordLabel;
    this.mReleaseDate = instance.mReleaseDate;
    this.mRestaurantServices = instance.mRestaurantServices;
    this.mRestaurantSpecialties = instance.mRestaurantSpecialties;
    this.mSchedule = instance.mSchedule;
    this.mScreenplayBy = instance.mScreenplayBy;
    this.mSeason = instance.mSeason;
    this.mSingleLineAddress = instance.mSingleLineAddress;
    this.mStarring = instance.mStarring;
    this.mStartInfo = instance.mStartInfo;
    this.mStoreCode = instance.mStoreCode;
    this.mStoreLocationDescriptor = instance.mStoreLocationDescriptor;
    this.mStoreNumber = instance.mStoreNumber;
    this.mStudio = instance.mStudio;
    this.mSupportsInstantArticles = instance.mSupportsInstantArticles;
    this.mTalkingAboutCount = instance.mTalkingAboutCount;
    this.mUnreadMessageCount = instance.mUnreadMessageCount;
    this.mUnreadNotifCount = instance.mUnreadNotifCount;
    this.mUnseenMessageCount = instance.mUnseenMessageCount;
    this.mUsername = instance.mUsername;
    this.mVerificationStatus = instance.mVerificationStatus;
    this.mVoipInfo = instance.mVoipInfo;
    this.mWebsite = instance.mWebsite;
    this.mWereHereCount = instance.mWereHereCount;
    this.mWhatsappNumber = instance.mWhatsappNumber;
    this.mWrittenBy = instance.mWrittenBy;
    this.context = instance.context;
    this.rawValue = instance.rawValue;
    return this;
  }

  public static APIRequest.ResponseParser getParser() {
    return new APIRequest.ResponseParser() {
      public APINodeList parseResponse(String response, APIContext context, APIRequest request, String header) throws MalformedResponseException {
        return Page.parseResponse(response, context, request, header);
      }
    };
  }
}