/*
 * Oceanengine Open Api
 * 巨量引擎开放平台 Open Api
 *
 * The version of the OpenAPI document: 1.1.19
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package com.bytedance.ads.model;

import java.util.Objects;
import java.util.Arrays;
import com.bytedance.ads.model.QianchuanAdDetailGetV10DataCampaignScene;
import com.bytedance.ads.model.QianchuanAdDetailGetV10DataCreativeAutoGenerate;
import com.bytedance.ads.model.QianchuanAdDetailGetV10DataCreativeMaterialMode;
import com.bytedance.ads.model.QianchuanAdDetailGetV10DataDynamicCreative;
import com.bytedance.ads.model.QianchuanAdDetailGetV10DataIsHomepageHide;
import com.bytedance.ads.model.QianchuanAdDetailGetV10DataIsIntelligent;
import com.bytedance.ads.model.QianchuanAdDetailGetV10DataLabAdType;
import com.bytedance.ads.model.QianchuanAdDetailGetV10DataMarketingGoal;
import com.bytedance.ads.model.QianchuanAdDetailGetV10DataMarketingScene;
import com.bytedance.ads.model.QianchuanAdDetailGetV10DataOptStatus;
import com.bytedance.ads.model.QianchuanAdDetailGetV10DataStatus;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataAudience;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataAwemeInfoInner;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataBrandInfo;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataCreativeListInner;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataDeliverySetting;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataKeywordsInner;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataMultiProductCreativeListInner;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataPivativeWords;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataProductInfoInner;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeCard;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeMediaListInner;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeTitleListInner;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataRoomInfoInner;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataShopInfo;
import com.bytedance.ads.model.QianchuanAdDetailGetV10ResponseDataTrackUrl;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.openapitools.jackson.nullable.JsonNullable;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;

import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import com.bytedance.ads.JSON;

/**
 * 
 */
@javax.annotation.Generated(value = "com.org.bytedance.ad_open_sdk.JavacusGenerator", date = "2024-09-10T15:29:00.246104612+08:00[Asia/Shanghai]")
public class QianchuanAdDetailGetV10ResponseData {
  public static final String SERIALIZED_NAME_AD_CREATE_TIME = "ad_create_time";
  @SerializedName(SERIALIZED_NAME_AD_CREATE_TIME)
  private String adCreateTime = null;

  public static final String SERIALIZED_NAME_AD_ID = "ad_id";
  @SerializedName(SERIALIZED_NAME_AD_ID)
  private Long adId = null;

  public static final String SERIALIZED_NAME_AD_KEYWORDS = "ad_keywords";
  @SerializedName(SERIALIZED_NAME_AD_KEYWORDS)
  private List<String> adKeywords = null;

  public static final String SERIALIZED_NAME_AD_MODIFY_TIME = "ad_modify_time";
  @SerializedName(SERIALIZED_NAME_AD_MODIFY_TIME)
  private String adModifyTime = null;

  public static final String SERIALIZED_NAME_AUDIENCE = "audience";
  @SerializedName(SERIALIZED_NAME_AUDIENCE)
  private QianchuanAdDetailGetV10ResponseDataAudience audience = null;

  public static final String SERIALIZED_NAME_AWEME_INFO = "aweme_info";
  @SerializedName(SERIALIZED_NAME_AWEME_INFO)
  private List<QianchuanAdDetailGetV10ResponseDataAwemeInfoInner> awemeInfo = null;

  public static final String SERIALIZED_NAME_BRAND_INFO = "brand_info";
  @SerializedName(SERIALIZED_NAME_BRAND_INFO)
  private QianchuanAdDetailGetV10ResponseDataBrandInfo brandInfo = null;

  public static final String SERIALIZED_NAME_CAMPAIGN_ID = "campaign_id";
  @SerializedName(SERIALIZED_NAME_CAMPAIGN_ID)
  private Long campaignId = null;

  public static final String SERIALIZED_NAME_CAMPAIGN_SCENE = "campaign_scene";
  @SerializedName(SERIALIZED_NAME_CAMPAIGN_SCENE)
  private QianchuanAdDetailGetV10DataCampaignScene campaignScene = null;

  public static final String SERIALIZED_NAME_CREATIVE_AUTO_GENERATE = "creative_auto_generate";
  @SerializedName(SERIALIZED_NAME_CREATIVE_AUTO_GENERATE)
  private QianchuanAdDetailGetV10DataCreativeAutoGenerate creativeAutoGenerate = null;

  public static final String SERIALIZED_NAME_CREATIVE_LIST = "creative_list";
  @SerializedName(SERIALIZED_NAME_CREATIVE_LIST)
  private List<QianchuanAdDetailGetV10ResponseDataCreativeListInner> creativeList = null;

  public static final String SERIALIZED_NAME_CREATIVE_MATERIAL_MODE = "creative_material_mode";
  @SerializedName(SERIALIZED_NAME_CREATIVE_MATERIAL_MODE)
  private QianchuanAdDetailGetV10DataCreativeMaterialMode creativeMaterialMode = null;

  public static final String SERIALIZED_NAME_DELIVERY_SETTING = "delivery_setting";
  @SerializedName(SERIALIZED_NAME_DELIVERY_SETTING)
  private QianchuanAdDetailGetV10ResponseDataDeliverySetting deliverySetting = null;

  public static final String SERIALIZED_NAME_DYNAMIC_CREATIVE = "dynamic_creative";
  @SerializedName(SERIALIZED_NAME_DYNAMIC_CREATIVE)
  private QianchuanAdDetailGetV10DataDynamicCreative dynamicCreative = null;

  public static final String SERIALIZED_NAME_FIRST_INDUSTRY_ID = "first_industry_id";
  @SerializedName(SERIALIZED_NAME_FIRST_INDUSTRY_ID)
  private Long firstIndustryId = null;

  public static final String SERIALIZED_NAME_IS_HOMEPAGE_HIDE = "is_homepage_hide";
  @SerializedName(SERIALIZED_NAME_IS_HOMEPAGE_HIDE)
  private QianchuanAdDetailGetV10DataIsHomepageHide isHomepageHide = null;

  public static final String SERIALIZED_NAME_IS_INTELLIGENT = "is_intelligent";
  @SerializedName(SERIALIZED_NAME_IS_INTELLIGENT)
  private QianchuanAdDetailGetV10DataIsIntelligent isIntelligent = null;

  public static final String SERIALIZED_NAME_KEYWORDS = "keywords";
  @SerializedName(SERIALIZED_NAME_KEYWORDS)
  private List<QianchuanAdDetailGetV10ResponseDataKeywordsInner> keywords = null;

  public static final String SERIALIZED_NAME_LAB_AD_TYPE = "lab_ad_type";
  @SerializedName(SERIALIZED_NAME_LAB_AD_TYPE)
  private QianchuanAdDetailGetV10DataLabAdType labAdType = null;

  public static final String SERIALIZED_NAME_MARKETING_GOAL = "marketing_goal";
  @SerializedName(SERIALIZED_NAME_MARKETING_GOAL)
  private QianchuanAdDetailGetV10DataMarketingGoal marketingGoal = null;

  public static final String SERIALIZED_NAME_MARKETING_SCENE = "marketing_scene";
  @SerializedName(SERIALIZED_NAME_MARKETING_SCENE)
  private QianchuanAdDetailGetV10DataMarketingScene marketingScene = null;

  public static final String SERIALIZED_NAME_MULTI_PRODUCT_CREATIVE_LIST = "multi_product_creative_list";
  @SerializedName(SERIALIZED_NAME_MULTI_PRODUCT_CREATIVE_LIST)
  private List<QianchuanAdDetailGetV10ResponseDataMultiProductCreativeListInner> multiProductCreativeList = null;

  public static final String SERIALIZED_NAME_NAME = "name";
  @SerializedName(SERIALIZED_NAME_NAME)
  private String name = null;

  public static final String SERIALIZED_NAME_OPT_STATUS = "opt_status";
  @SerializedName(SERIALIZED_NAME_OPT_STATUS)
  private QianchuanAdDetailGetV10DataOptStatus optStatus = null;

  public static final String SERIALIZED_NAME_PIVATIVE_WORDS = "pivative_words";
  @SerializedName(SERIALIZED_NAME_PIVATIVE_WORDS)
  private QianchuanAdDetailGetV10ResponseDataPivativeWords pivativeWords = null;

  public static final String SERIALIZED_NAME_PRODUCT_INFO = "product_info";
  @SerializedName(SERIALIZED_NAME_PRODUCT_INFO)
  private List<QianchuanAdDetailGetV10ResponseDataProductInfoInner> productInfo = null;

  public static final String SERIALIZED_NAME_PROGRAMMATIC_CREATIVE_CARD = "programmatic_creative_card";
  @SerializedName(SERIALIZED_NAME_PROGRAMMATIC_CREATIVE_CARD)
  private QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeCard programmaticCreativeCard = null;

  public static final String SERIALIZED_NAME_PROGRAMMATIC_CREATIVE_MEDIA_LIST = "programmatic_creative_media_list";
  @SerializedName(SERIALIZED_NAME_PROGRAMMATIC_CREATIVE_MEDIA_LIST)
  private List<QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeMediaListInner> programmaticCreativeMediaList = null;

  public static final String SERIALIZED_NAME_PROGRAMMATIC_CREATIVE_TITLE_LIST = "programmatic_creative_title_list";
  @SerializedName(SERIALIZED_NAME_PROGRAMMATIC_CREATIVE_TITLE_LIST)
  private List<QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeTitleListInner> programmaticCreativeTitleList = null;

  public static final String SERIALIZED_NAME_ROOM_INFO = "room_info";
  @SerializedName(SERIALIZED_NAME_ROOM_INFO)
  private List<QianchuanAdDetailGetV10ResponseDataRoomInfoInner> roomInfo = null;

  public static final String SERIALIZED_NAME_SECOND_INDUSTRY_ID = "second_industry_id";
  @SerializedName(SERIALIZED_NAME_SECOND_INDUSTRY_ID)
  private Long secondIndustryId = null;

  public static final String SERIALIZED_NAME_SHOP_INFO = "shop_info";
  @SerializedName(SERIALIZED_NAME_SHOP_INFO)
  private QianchuanAdDetailGetV10ResponseDataShopInfo shopInfo = null;

  public static final String SERIALIZED_NAME_STATUS = "status";
  @SerializedName(SERIALIZED_NAME_STATUS)
  private QianchuanAdDetailGetV10DataStatus status = null;

  public static final String SERIALIZED_NAME_THIRD_INDUSTRY_ID = "third_industry_id";
  @SerializedName(SERIALIZED_NAME_THIRD_INDUSTRY_ID)
  private Long thirdIndustryId = null;

  public static final String SERIALIZED_NAME_TRACK_URL = "track_url";
  @SerializedName(SERIALIZED_NAME_TRACK_URL)
  private QianchuanAdDetailGetV10ResponseDataTrackUrl trackUrl = null;

  public QianchuanAdDetailGetV10ResponseData() {
  }

  public QianchuanAdDetailGetV10ResponseData adCreateTime(String adCreateTime) {
    
    this.adCreateTime = adCreateTime;
    return this;
  }

   /**
   * 
   * @return adCreateTime
  **/
  @javax.annotation.Nullable
  public String getAdCreateTime() {
    return adCreateTime;
  }


  public void setAdCreateTime(String adCreateTime) {
    this.adCreateTime = adCreateTime;
  }


  public QianchuanAdDetailGetV10ResponseData adId(Long adId) {
    
    this.adId = adId;
    return this;
  }

   /**
   * 
   * @return adId
  **/
  @javax.annotation.Nullable
  public Long getAdId() {
    return adId;
  }


  public void setAdId(Long adId) {
    this.adId = adId;
  }


  public QianchuanAdDetailGetV10ResponseData adKeywords(List<String> adKeywords) {
    
    this.adKeywords = adKeywords;
    return this;
  }

  public QianchuanAdDetailGetV10ResponseData addAdKeywordsItem(String adKeywordsItem) {
    if (this.adKeywords == null) {
      this.adKeywords = new ArrayList<>();
    }
    this.adKeywords.add(adKeywordsItem);
    return this;
  }

   /**
   * 
   * @return adKeywords
  **/
  @javax.annotation.Nullable
  public List<String> getAdKeywords() {
    return adKeywords;
  }


  public void setAdKeywords(List<String> adKeywords) {
    this.adKeywords = adKeywords;
  }


  public QianchuanAdDetailGetV10ResponseData adModifyTime(String adModifyTime) {
    
    this.adModifyTime = adModifyTime;
    return this;
  }

   /**
   * 
   * @return adModifyTime
  **/
  @javax.annotation.Nullable
  public String getAdModifyTime() {
    return adModifyTime;
  }


  public void setAdModifyTime(String adModifyTime) {
    this.adModifyTime = adModifyTime;
  }


  public QianchuanAdDetailGetV10ResponseData audience(QianchuanAdDetailGetV10ResponseDataAudience audience) {
    
    this.audience = audience;
    return this;
  }

   /**
   * Get audience
   * @return audience
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10ResponseDataAudience getAudience() {
    return audience;
  }


  public void setAudience(QianchuanAdDetailGetV10ResponseDataAudience audience) {
    this.audience = audience;
  }


  public QianchuanAdDetailGetV10ResponseData awemeInfo(List<QianchuanAdDetailGetV10ResponseDataAwemeInfoInner> awemeInfo) {
    
    this.awemeInfo = awemeInfo;
    return this;
  }

  public QianchuanAdDetailGetV10ResponseData addAwemeInfoItem(QianchuanAdDetailGetV10ResponseDataAwemeInfoInner awemeInfoItem) {
    if (this.awemeInfo == null) {
      this.awemeInfo = new ArrayList<>();
    }
    this.awemeInfo.add(awemeInfoItem);
    return this;
  }

   /**
   * 
   * @return awemeInfo
  **/
  @javax.annotation.Nullable
  public List<QianchuanAdDetailGetV10ResponseDataAwemeInfoInner> getAwemeInfo() {
    return awemeInfo;
  }


  public void setAwemeInfo(List<QianchuanAdDetailGetV10ResponseDataAwemeInfoInner> awemeInfo) {
    this.awemeInfo = awemeInfo;
  }


  public QianchuanAdDetailGetV10ResponseData brandInfo(QianchuanAdDetailGetV10ResponseDataBrandInfo brandInfo) {
    
    this.brandInfo = brandInfo;
    return this;
  }

   /**
   * Get brandInfo
   * @return brandInfo
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10ResponseDataBrandInfo getBrandInfo() {
    return brandInfo;
  }


  public void setBrandInfo(QianchuanAdDetailGetV10ResponseDataBrandInfo brandInfo) {
    this.brandInfo = brandInfo;
  }


  public QianchuanAdDetailGetV10ResponseData campaignId(Long campaignId) {
    
    this.campaignId = campaignId;
    return this;
  }

   /**
   * 
   * @return campaignId
  **/
  @javax.annotation.Nullable
  public Long getCampaignId() {
    return campaignId;
  }


  public void setCampaignId(Long campaignId) {
    this.campaignId = campaignId;
  }


  public QianchuanAdDetailGetV10ResponseData campaignScene(QianchuanAdDetailGetV10DataCampaignScene campaignScene) {
    
    this.campaignScene = campaignScene;
    return this;
  }

   /**
   * Get campaignScene
   * @return campaignScene
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10DataCampaignScene getCampaignScene() {
    return campaignScene;
  }


  public void setCampaignScene(QianchuanAdDetailGetV10DataCampaignScene campaignScene) {
    this.campaignScene = campaignScene;
  }


  public QianchuanAdDetailGetV10ResponseData creativeAutoGenerate(QianchuanAdDetailGetV10DataCreativeAutoGenerate creativeAutoGenerate) {
    
    this.creativeAutoGenerate = creativeAutoGenerate;
    return this;
  }

   /**
   * Get creativeAutoGenerate
   * @return creativeAutoGenerate
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10DataCreativeAutoGenerate getCreativeAutoGenerate() {
    return creativeAutoGenerate;
  }


  public void setCreativeAutoGenerate(QianchuanAdDetailGetV10DataCreativeAutoGenerate creativeAutoGenerate) {
    this.creativeAutoGenerate = creativeAutoGenerate;
  }


  public QianchuanAdDetailGetV10ResponseData creativeList(List<QianchuanAdDetailGetV10ResponseDataCreativeListInner> creativeList) {
    
    this.creativeList = creativeList;
    return this;
  }

  public QianchuanAdDetailGetV10ResponseData addCreativeListItem(QianchuanAdDetailGetV10ResponseDataCreativeListInner creativeListItem) {
    if (this.creativeList == null) {
      this.creativeList = new ArrayList<>();
    }
    this.creativeList.add(creativeListItem);
    return this;
  }

   /**
   * 
   * @return creativeList
  **/
  @javax.annotation.Nullable
  public List<QianchuanAdDetailGetV10ResponseDataCreativeListInner> getCreativeList() {
    return creativeList;
  }


  public void setCreativeList(List<QianchuanAdDetailGetV10ResponseDataCreativeListInner> creativeList) {
    this.creativeList = creativeList;
  }


  public QianchuanAdDetailGetV10ResponseData creativeMaterialMode(QianchuanAdDetailGetV10DataCreativeMaterialMode creativeMaterialMode) {
    
    this.creativeMaterialMode = creativeMaterialMode;
    return this;
  }

   /**
   * Get creativeMaterialMode
   * @return creativeMaterialMode
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10DataCreativeMaterialMode getCreativeMaterialMode() {
    return creativeMaterialMode;
  }


  public void setCreativeMaterialMode(QianchuanAdDetailGetV10DataCreativeMaterialMode creativeMaterialMode) {
    this.creativeMaterialMode = creativeMaterialMode;
  }


  public QianchuanAdDetailGetV10ResponseData deliverySetting(QianchuanAdDetailGetV10ResponseDataDeliverySetting deliverySetting) {
    
    this.deliverySetting = deliverySetting;
    return this;
  }

   /**
   * Get deliverySetting
   * @return deliverySetting
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10ResponseDataDeliverySetting getDeliverySetting() {
    return deliverySetting;
  }


  public void setDeliverySetting(QianchuanAdDetailGetV10ResponseDataDeliverySetting deliverySetting) {
    this.deliverySetting = deliverySetting;
  }


  public QianchuanAdDetailGetV10ResponseData dynamicCreative(QianchuanAdDetailGetV10DataDynamicCreative dynamicCreative) {
    
    this.dynamicCreative = dynamicCreative;
    return this;
  }

   /**
   * Get dynamicCreative
   * @return dynamicCreative
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10DataDynamicCreative getDynamicCreative() {
    return dynamicCreative;
  }


  public void setDynamicCreative(QianchuanAdDetailGetV10DataDynamicCreative dynamicCreative) {
    this.dynamicCreative = dynamicCreative;
  }


  public QianchuanAdDetailGetV10ResponseData firstIndustryId(Long firstIndustryId) {
    
    this.firstIndustryId = firstIndustryId;
    return this;
  }

   /**
   * 
   * @return firstIndustryId
  **/
  @javax.annotation.Nullable
  public Long getFirstIndustryId() {
    return firstIndustryId;
  }


  public void setFirstIndustryId(Long firstIndustryId) {
    this.firstIndustryId = firstIndustryId;
  }


  public QianchuanAdDetailGetV10ResponseData isHomepageHide(QianchuanAdDetailGetV10DataIsHomepageHide isHomepageHide) {
    
    this.isHomepageHide = isHomepageHide;
    return this;
  }

   /**
   * Get isHomepageHide
   * @return isHomepageHide
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10DataIsHomepageHide getIsHomepageHide() {
    return isHomepageHide;
  }


  public void setIsHomepageHide(QianchuanAdDetailGetV10DataIsHomepageHide isHomepageHide) {
    this.isHomepageHide = isHomepageHide;
  }


  public QianchuanAdDetailGetV10ResponseData isIntelligent(QianchuanAdDetailGetV10DataIsIntelligent isIntelligent) {
    
    this.isIntelligent = isIntelligent;
    return this;
  }

   /**
   * Get isIntelligent
   * @return isIntelligent
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10DataIsIntelligent getIsIntelligent() {
    return isIntelligent;
  }


  public void setIsIntelligent(QianchuanAdDetailGetV10DataIsIntelligent isIntelligent) {
    this.isIntelligent = isIntelligent;
  }


  public QianchuanAdDetailGetV10ResponseData keywords(List<QianchuanAdDetailGetV10ResponseDataKeywordsInner> keywords) {
    
    this.keywords = keywords;
    return this;
  }

  public QianchuanAdDetailGetV10ResponseData addKeywordsItem(QianchuanAdDetailGetV10ResponseDataKeywordsInner keywordsItem) {
    if (this.keywords == null) {
      this.keywords = new ArrayList<>();
    }
    this.keywords.add(keywordsItem);
    return this;
  }

   /**
   * 
   * @return keywords
  **/
  @javax.annotation.Nullable
  public List<QianchuanAdDetailGetV10ResponseDataKeywordsInner> getKeywords() {
    return keywords;
  }


  public void setKeywords(List<QianchuanAdDetailGetV10ResponseDataKeywordsInner> keywords) {
    this.keywords = keywords;
  }


  public QianchuanAdDetailGetV10ResponseData labAdType(QianchuanAdDetailGetV10DataLabAdType labAdType) {
    
    this.labAdType = labAdType;
    return this;
  }

   /**
   * Get labAdType
   * @return labAdType
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10DataLabAdType getLabAdType() {
    return labAdType;
  }


  public void setLabAdType(QianchuanAdDetailGetV10DataLabAdType labAdType) {
    this.labAdType = labAdType;
  }


  public QianchuanAdDetailGetV10ResponseData marketingGoal(QianchuanAdDetailGetV10DataMarketingGoal marketingGoal) {
    
    this.marketingGoal = marketingGoal;
    return this;
  }

   /**
   * Get marketingGoal
   * @return marketingGoal
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10DataMarketingGoal getMarketingGoal() {
    return marketingGoal;
  }


  public void setMarketingGoal(QianchuanAdDetailGetV10DataMarketingGoal marketingGoal) {
    this.marketingGoal = marketingGoal;
  }


  public QianchuanAdDetailGetV10ResponseData marketingScene(QianchuanAdDetailGetV10DataMarketingScene marketingScene) {
    
    this.marketingScene = marketingScene;
    return this;
  }

   /**
   * Get marketingScene
   * @return marketingScene
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10DataMarketingScene getMarketingScene() {
    return marketingScene;
  }


  public void setMarketingScene(QianchuanAdDetailGetV10DataMarketingScene marketingScene) {
    this.marketingScene = marketingScene;
  }


  public QianchuanAdDetailGetV10ResponseData multiProductCreativeList(List<QianchuanAdDetailGetV10ResponseDataMultiProductCreativeListInner> multiProductCreativeList) {
    
    this.multiProductCreativeList = multiProductCreativeList;
    return this;
  }

  public QianchuanAdDetailGetV10ResponseData addMultiProductCreativeListItem(QianchuanAdDetailGetV10ResponseDataMultiProductCreativeListInner multiProductCreativeListItem) {
    if (this.multiProductCreativeList == null) {
      this.multiProductCreativeList = new ArrayList<>();
    }
    this.multiProductCreativeList.add(multiProductCreativeListItem);
    return this;
  }

   /**
   * 
   * @return multiProductCreativeList
  **/
  @javax.annotation.Nullable
  public List<QianchuanAdDetailGetV10ResponseDataMultiProductCreativeListInner> getMultiProductCreativeList() {
    return multiProductCreativeList;
  }


  public void setMultiProductCreativeList(List<QianchuanAdDetailGetV10ResponseDataMultiProductCreativeListInner> multiProductCreativeList) {
    this.multiProductCreativeList = multiProductCreativeList;
  }


  public QianchuanAdDetailGetV10ResponseData name(String name) {
    
    this.name = name;
    return this;
  }

   /**
   * 
   * @return name
  **/
  @javax.annotation.Nullable
  public String getName() {
    return name;
  }


  public void setName(String name) {
    this.name = name;
  }


  public QianchuanAdDetailGetV10ResponseData optStatus(QianchuanAdDetailGetV10DataOptStatus optStatus) {
    
    this.optStatus = optStatus;
    return this;
  }

   /**
   * Get optStatus
   * @return optStatus
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10DataOptStatus getOptStatus() {
    return optStatus;
  }


  public void setOptStatus(QianchuanAdDetailGetV10DataOptStatus optStatus) {
    this.optStatus = optStatus;
  }


  public QianchuanAdDetailGetV10ResponseData pivativeWords(QianchuanAdDetailGetV10ResponseDataPivativeWords pivativeWords) {
    
    this.pivativeWords = pivativeWords;
    return this;
  }

   /**
   * Get pivativeWords
   * @return pivativeWords
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10ResponseDataPivativeWords getPivativeWords() {
    return pivativeWords;
  }


  public void setPivativeWords(QianchuanAdDetailGetV10ResponseDataPivativeWords pivativeWords) {
    this.pivativeWords = pivativeWords;
  }


  public QianchuanAdDetailGetV10ResponseData productInfo(List<QianchuanAdDetailGetV10ResponseDataProductInfoInner> productInfo) {
    
    this.productInfo = productInfo;
    return this;
  }

  public QianchuanAdDetailGetV10ResponseData addProductInfoItem(QianchuanAdDetailGetV10ResponseDataProductInfoInner productInfoItem) {
    if (this.productInfo == null) {
      this.productInfo = new ArrayList<>();
    }
    this.productInfo.add(productInfoItem);
    return this;
  }

   /**
   * 
   * @return productInfo
  **/
  @javax.annotation.Nullable
  public List<QianchuanAdDetailGetV10ResponseDataProductInfoInner> getProductInfo() {
    return productInfo;
  }


  public void setProductInfo(List<QianchuanAdDetailGetV10ResponseDataProductInfoInner> productInfo) {
    this.productInfo = productInfo;
  }


  public QianchuanAdDetailGetV10ResponseData programmaticCreativeCard(QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeCard programmaticCreativeCard) {
    
    this.programmaticCreativeCard = programmaticCreativeCard;
    return this;
  }

   /**
   * Get programmaticCreativeCard
   * @return programmaticCreativeCard
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeCard getProgrammaticCreativeCard() {
    return programmaticCreativeCard;
  }


  public void setProgrammaticCreativeCard(QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeCard programmaticCreativeCard) {
    this.programmaticCreativeCard = programmaticCreativeCard;
  }


  public QianchuanAdDetailGetV10ResponseData programmaticCreativeMediaList(List<QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeMediaListInner> programmaticCreativeMediaList) {
    
    this.programmaticCreativeMediaList = programmaticCreativeMediaList;
    return this;
  }

  public QianchuanAdDetailGetV10ResponseData addProgrammaticCreativeMediaListItem(QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeMediaListInner programmaticCreativeMediaListItem) {
    if (this.programmaticCreativeMediaList == null) {
      this.programmaticCreativeMediaList = new ArrayList<>();
    }
    this.programmaticCreativeMediaList.add(programmaticCreativeMediaListItem);
    return this;
  }

   /**
   * 
   * @return programmaticCreativeMediaList
  **/
  @javax.annotation.Nullable
  public List<QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeMediaListInner> getProgrammaticCreativeMediaList() {
    return programmaticCreativeMediaList;
  }


  public void setProgrammaticCreativeMediaList(List<QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeMediaListInner> programmaticCreativeMediaList) {
    this.programmaticCreativeMediaList = programmaticCreativeMediaList;
  }


  public QianchuanAdDetailGetV10ResponseData programmaticCreativeTitleList(List<QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeTitleListInner> programmaticCreativeTitleList) {
    
    this.programmaticCreativeTitleList = programmaticCreativeTitleList;
    return this;
  }

  public QianchuanAdDetailGetV10ResponseData addProgrammaticCreativeTitleListItem(QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeTitleListInner programmaticCreativeTitleListItem) {
    if (this.programmaticCreativeTitleList == null) {
      this.programmaticCreativeTitleList = new ArrayList<>();
    }
    this.programmaticCreativeTitleList.add(programmaticCreativeTitleListItem);
    return this;
  }

   /**
   * 
   * @return programmaticCreativeTitleList
  **/
  @javax.annotation.Nullable
  public List<QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeTitleListInner> getProgrammaticCreativeTitleList() {
    return programmaticCreativeTitleList;
  }


  public void setProgrammaticCreativeTitleList(List<QianchuanAdDetailGetV10ResponseDataProgrammaticCreativeTitleListInner> programmaticCreativeTitleList) {
    this.programmaticCreativeTitleList = programmaticCreativeTitleList;
  }


  public QianchuanAdDetailGetV10ResponseData roomInfo(List<QianchuanAdDetailGetV10ResponseDataRoomInfoInner> roomInfo) {
    
    this.roomInfo = roomInfo;
    return this;
  }

  public QianchuanAdDetailGetV10ResponseData addRoomInfoItem(QianchuanAdDetailGetV10ResponseDataRoomInfoInner roomInfoItem) {
    if (this.roomInfo == null) {
      this.roomInfo = new ArrayList<>();
    }
    this.roomInfo.add(roomInfoItem);
    return this;
  }

   /**
   * 
   * @return roomInfo
  **/
  @javax.annotation.Nullable
  public List<QianchuanAdDetailGetV10ResponseDataRoomInfoInner> getRoomInfo() {
    return roomInfo;
  }


  public void setRoomInfo(List<QianchuanAdDetailGetV10ResponseDataRoomInfoInner> roomInfo) {
    this.roomInfo = roomInfo;
  }


  public QianchuanAdDetailGetV10ResponseData secondIndustryId(Long secondIndustryId) {
    
    this.secondIndustryId = secondIndustryId;
    return this;
  }

   /**
   * 
   * @return secondIndustryId
  **/
  @javax.annotation.Nullable
  public Long getSecondIndustryId() {
    return secondIndustryId;
  }


  public void setSecondIndustryId(Long secondIndustryId) {
    this.secondIndustryId = secondIndustryId;
  }


  public QianchuanAdDetailGetV10ResponseData shopInfo(QianchuanAdDetailGetV10ResponseDataShopInfo shopInfo) {
    
    this.shopInfo = shopInfo;
    return this;
  }

   /**
   * Get shopInfo
   * @return shopInfo
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10ResponseDataShopInfo getShopInfo() {
    return shopInfo;
  }


  public void setShopInfo(QianchuanAdDetailGetV10ResponseDataShopInfo shopInfo) {
    this.shopInfo = shopInfo;
  }


  public QianchuanAdDetailGetV10ResponseData status(QianchuanAdDetailGetV10DataStatus status) {
    
    this.status = status;
    return this;
  }

   /**
   * Get status
   * @return status
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10DataStatus getStatus() {
    return status;
  }


  public void setStatus(QianchuanAdDetailGetV10DataStatus status) {
    this.status = status;
  }


  public QianchuanAdDetailGetV10ResponseData thirdIndustryId(Long thirdIndustryId) {
    
    this.thirdIndustryId = thirdIndustryId;
    return this;
  }

   /**
   * 
   * @return thirdIndustryId
  **/
  @javax.annotation.Nullable
  public Long getThirdIndustryId() {
    return thirdIndustryId;
  }


  public void setThirdIndustryId(Long thirdIndustryId) {
    this.thirdIndustryId = thirdIndustryId;
  }


  public QianchuanAdDetailGetV10ResponseData trackUrl(QianchuanAdDetailGetV10ResponseDataTrackUrl trackUrl) {
    
    this.trackUrl = trackUrl;
    return this;
  }

   /**
   * Get trackUrl
   * @return trackUrl
  **/
  @javax.annotation.Nullable
  public QianchuanAdDetailGetV10ResponseDataTrackUrl getTrackUrl() {
    return trackUrl;
  }


  public void setTrackUrl(QianchuanAdDetailGetV10ResponseDataTrackUrl trackUrl) {
    this.trackUrl = trackUrl;
  }



  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    QianchuanAdDetailGetV10ResponseData qianchuanAdDetailGetV10ResponseData = (QianchuanAdDetailGetV10ResponseData) o;
    return Objects.equals(this.adCreateTime, qianchuanAdDetailGetV10ResponseData.adCreateTime) &&
        Objects.equals(this.adId, qianchuanAdDetailGetV10ResponseData.adId) &&
        Objects.equals(this.adKeywords, qianchuanAdDetailGetV10ResponseData.adKeywords) &&
        Objects.equals(this.adModifyTime, qianchuanAdDetailGetV10ResponseData.adModifyTime) &&
        Objects.equals(this.audience, qianchuanAdDetailGetV10ResponseData.audience) &&
        Objects.equals(this.awemeInfo, qianchuanAdDetailGetV10ResponseData.awemeInfo) &&
        Objects.equals(this.brandInfo, qianchuanAdDetailGetV10ResponseData.brandInfo) &&
        Objects.equals(this.campaignId, qianchuanAdDetailGetV10ResponseData.campaignId) &&
        Objects.equals(this.campaignScene, qianchuanAdDetailGetV10ResponseData.campaignScene) &&
        Objects.equals(this.creativeAutoGenerate, qianchuanAdDetailGetV10ResponseData.creativeAutoGenerate) &&
        Objects.equals(this.creativeList, qianchuanAdDetailGetV10ResponseData.creativeList) &&
        Objects.equals(this.creativeMaterialMode, qianchuanAdDetailGetV10ResponseData.creativeMaterialMode) &&
        Objects.equals(this.deliverySetting, qianchuanAdDetailGetV10ResponseData.deliverySetting) &&
        Objects.equals(this.dynamicCreative, qianchuanAdDetailGetV10ResponseData.dynamicCreative) &&
        Objects.equals(this.firstIndustryId, qianchuanAdDetailGetV10ResponseData.firstIndustryId) &&
        Objects.equals(this.isHomepageHide, qianchuanAdDetailGetV10ResponseData.isHomepageHide) &&
        Objects.equals(this.isIntelligent, qianchuanAdDetailGetV10ResponseData.isIntelligent) &&
        Objects.equals(this.keywords, qianchuanAdDetailGetV10ResponseData.keywords) &&
        Objects.equals(this.labAdType, qianchuanAdDetailGetV10ResponseData.labAdType) &&
        Objects.equals(this.marketingGoal, qianchuanAdDetailGetV10ResponseData.marketingGoal) &&
        Objects.equals(this.marketingScene, qianchuanAdDetailGetV10ResponseData.marketingScene) &&
        Objects.equals(this.multiProductCreativeList, qianchuanAdDetailGetV10ResponseData.multiProductCreativeList) &&
        Objects.equals(this.name, qianchuanAdDetailGetV10ResponseData.name) &&
        Objects.equals(this.optStatus, qianchuanAdDetailGetV10ResponseData.optStatus) &&
        Objects.equals(this.pivativeWords, qianchuanAdDetailGetV10ResponseData.pivativeWords) &&
        Objects.equals(this.productInfo, qianchuanAdDetailGetV10ResponseData.productInfo) &&
        Objects.equals(this.programmaticCreativeCard, qianchuanAdDetailGetV10ResponseData.programmaticCreativeCard) &&
        Objects.equals(this.programmaticCreativeMediaList, qianchuanAdDetailGetV10ResponseData.programmaticCreativeMediaList) &&
        Objects.equals(this.programmaticCreativeTitleList, qianchuanAdDetailGetV10ResponseData.programmaticCreativeTitleList) &&
        Objects.equals(this.roomInfo, qianchuanAdDetailGetV10ResponseData.roomInfo) &&
        Objects.equals(this.secondIndustryId, qianchuanAdDetailGetV10ResponseData.secondIndustryId) &&
        Objects.equals(this.shopInfo, qianchuanAdDetailGetV10ResponseData.shopInfo) &&
        Objects.equals(this.status, qianchuanAdDetailGetV10ResponseData.status) &&
        Objects.equals(this.thirdIndustryId, qianchuanAdDetailGetV10ResponseData.thirdIndustryId) &&
        Objects.equals(this.trackUrl, qianchuanAdDetailGetV10ResponseData.trackUrl);
  }

  private static <T> boolean equalsNullable(JsonNullable<T> a, JsonNullable<T> b) {
    return a == b || (a != null && b != null && a.isPresent() && b.isPresent() && Objects.deepEquals(a.get(), b.get()));
  }

  @Override
  public int hashCode() {
    return Objects.hash(adCreateTime, adId, adKeywords, adModifyTime, audience, awemeInfo, brandInfo, campaignId, campaignScene, creativeAutoGenerate, creativeList, creativeMaterialMode, deliverySetting, dynamicCreative, firstIndustryId, isHomepageHide, isIntelligent, keywords, labAdType, marketingGoal, marketingScene, multiProductCreativeList, name, optStatus, pivativeWords, productInfo, programmaticCreativeCard, programmaticCreativeMediaList, programmaticCreativeTitleList, roomInfo, secondIndustryId, shopInfo, status, thirdIndustryId, trackUrl);
  }

  private static <T> int hashCodeNullable(JsonNullable<T> a) {
    if (a == null) {
      return 1;
    }
    return a.isPresent() ? Arrays.deepHashCode(new Object[]{a.get()}) : 31;
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class QianchuanAdDetailGetV10ResponseData {\n");
    sb.append("    adCreateTime: ").append(toIndentedString(adCreateTime)).append("\n");
    sb.append("    adId: ").append(toIndentedString(adId)).append("\n");
    sb.append("    adKeywords: ").append(toIndentedString(adKeywords)).append("\n");
    sb.append("    adModifyTime: ").append(toIndentedString(adModifyTime)).append("\n");
    sb.append("    audience: ").append(toIndentedString(audience)).append("\n");
    sb.append("    awemeInfo: ").append(toIndentedString(awemeInfo)).append("\n");
    sb.append("    brandInfo: ").append(toIndentedString(brandInfo)).append("\n");
    sb.append("    campaignId: ").append(toIndentedString(campaignId)).append("\n");
    sb.append("    campaignScene: ").append(toIndentedString(campaignScene)).append("\n");
    sb.append("    creativeAutoGenerate: ").append(toIndentedString(creativeAutoGenerate)).append("\n");
    sb.append("    creativeList: ").append(toIndentedString(creativeList)).append("\n");
    sb.append("    creativeMaterialMode: ").append(toIndentedString(creativeMaterialMode)).append("\n");
    sb.append("    deliverySetting: ").append(toIndentedString(deliverySetting)).append("\n");
    sb.append("    dynamicCreative: ").append(toIndentedString(dynamicCreative)).append("\n");
    sb.append("    firstIndustryId: ").append(toIndentedString(firstIndustryId)).append("\n");
    sb.append("    isHomepageHide: ").append(toIndentedString(isHomepageHide)).append("\n");
    sb.append("    isIntelligent: ").append(toIndentedString(isIntelligent)).append("\n");
    sb.append("    keywords: ").append(toIndentedString(keywords)).append("\n");
    sb.append("    labAdType: ").append(toIndentedString(labAdType)).append("\n");
    sb.append("    marketingGoal: ").append(toIndentedString(marketingGoal)).append("\n");
    sb.append("    marketingScene: ").append(toIndentedString(marketingScene)).append("\n");
    sb.append("    multiProductCreativeList: ").append(toIndentedString(multiProductCreativeList)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    optStatus: ").append(toIndentedString(optStatus)).append("\n");
    sb.append("    pivativeWords: ").append(toIndentedString(pivativeWords)).append("\n");
    sb.append("    productInfo: ").append(toIndentedString(productInfo)).append("\n");
    sb.append("    programmaticCreativeCard: ").append(toIndentedString(programmaticCreativeCard)).append("\n");
    sb.append("    programmaticCreativeMediaList: ").append(toIndentedString(programmaticCreativeMediaList)).append("\n");
    sb.append("    programmaticCreativeTitleList: ").append(toIndentedString(programmaticCreativeTitleList)).append("\n");
    sb.append("    roomInfo: ").append(toIndentedString(roomInfo)).append("\n");
    sb.append("    secondIndustryId: ").append(toIndentedString(secondIndustryId)).append("\n");
    sb.append("    shopInfo: ").append(toIndentedString(shopInfo)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    thirdIndustryId: ").append(toIndentedString(thirdIndustryId)).append("\n");
    sb.append("    trackUrl: ").append(toIndentedString(trackUrl)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }


  public static HashSet<String> openapiFields;
  public static HashSet<String> openapiRequiredFields;

  static {
    // a set of all properties/fields (JSON key names)
    openapiFields = new HashSet<String>();
    openapiFields.add("ad_create_time");
    openapiFields.add("ad_id");
    openapiFields.add("ad_keywords");
    openapiFields.add("ad_modify_time");
    openapiFields.add("audience");
    openapiFields.add("aweme_info");
    openapiFields.add("brand_info");
    openapiFields.add("campaign_id");
    openapiFields.add("campaign_scene");
    openapiFields.add("creative_auto_generate");
    openapiFields.add("creative_list");
    openapiFields.add("creative_material_mode");
    openapiFields.add("delivery_setting");
    openapiFields.add("dynamic_creative");
    openapiFields.add("first_industry_id");
    openapiFields.add("is_homepage_hide");
    openapiFields.add("is_intelligent");
    openapiFields.add("keywords");
    openapiFields.add("lab_ad_type");
    openapiFields.add("marketing_goal");
    openapiFields.add("marketing_scene");
    openapiFields.add("multi_product_creative_list");
    openapiFields.add("name");
    openapiFields.add("opt_status");
    openapiFields.add("pivative_words");
    openapiFields.add("product_info");
    openapiFields.add("programmatic_creative_card");
    openapiFields.add("programmatic_creative_media_list");
    openapiFields.add("programmatic_creative_title_list");
    openapiFields.add("room_info");
    openapiFields.add("second_industry_id");
    openapiFields.add("shop_info");
    openapiFields.add("status");
    openapiFields.add("third_industry_id");
    openapiFields.add("track_url");

    // a set of required properties/fields (JSON key names)
    openapiRequiredFields = new HashSet<String>();
  }


  public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
    @SuppressWarnings("unchecked")
    @Override
    public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
       if (!QianchuanAdDetailGetV10ResponseData.class.isAssignableFrom(type.getRawType())) {
         return null; // this class only serializes 'QianchuanAdDetailGetV10ResponseData' and its subtypes
       }
       final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
       final TypeAdapter<QianchuanAdDetailGetV10ResponseData> thisAdapter
                        = gson.getDelegateAdapter(this, TypeToken.get(QianchuanAdDetailGetV10ResponseData.class));

       return (TypeAdapter<T>) new TypeAdapter<QianchuanAdDetailGetV10ResponseData>() {
           @Override
           public void write(JsonWriter out, QianchuanAdDetailGetV10ResponseData value) throws IOException {
             JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
             elementAdapter.write(out, obj);
           }

           @Override
           public QianchuanAdDetailGetV10ResponseData read(JsonReader in) throws IOException {
             JsonElement jsonElement = elementAdapter.read(in);
             return thisAdapter.fromJsonTree(jsonElement);
           }

       }.nullSafe();
    }
  }

 /**
  * Create an instance of QianchuanAdDetailGetV10ResponseData given an JSON string
  *
  * @param jsonString JSON string
  * @return An instance of QianchuanAdDetailGetV10ResponseData
  * @throws IOException if the JSON string is invalid with respect to QianchuanAdDetailGetV10ResponseData
  */
  public static QianchuanAdDetailGetV10ResponseData fromJson(String jsonString) throws IOException {
    return JSON.getGson().fromJson(jsonString, QianchuanAdDetailGetV10ResponseData.class);
  }

 /**
  * Convert an instance of QianchuanAdDetailGetV10ResponseData to an JSON string
  *
  * @return JSON string
  */
  public String toJson() {
    return JSON.getGson().toJson(this);
  }
}

