/*
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * This code was generated by https://github.com/googleapis/google-api-java-client-services/
 * Modify at your own risk.
 */

package com.google.api.services.contentwarehouse.v1.model;

/**
 * Extension data for the whole person entity.
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Document AI Warehouse API. For a detailed explanation
 * see:
 * <a href="https://developers.google.com/api-client-library/java/google-http-java-client/json">https://developers.google.com/api-client-library/java/google-http-java-client/json</a>
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class AppsPeopleOzExternalMergedpeopleapiPersonExtendedData extends com.google.api.client.json.GenericJson {

  /**
   * For use by AboutMe and SmartProfile clients.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData aboutMeExtendedData;

  /**
   * For use with Apps Waldo Availability Data extension
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private SocialGraphWireProtoPeopleapiExtensionAppsWaldoExtendedData appsWaldoExtendedData;

  /**
   * For use with caller ID extension
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedData callerIdExtendedData;

  /**
   * For use with Contacts extension.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData contactsExtendedData;

  /**
   * Hosted domain this person is a member of. The domain_name is also returned as part of the
   * person's ReadOnlyProfileInfo, so requesting it via this extension is no longer necessary.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<java.lang.String> domainName;

  /**
   * For use with Dynamite extension.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private SocialGraphWireProtoPeopleapiExtensionDynamiteExtendedData dynamiteExtendedData;

  /**
   * For use with Google Pay extension.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AppsPeopleOzExternalMergedpeopleapiGPayExtendedData gpayExtendedData;

  /**
   * For use with Google+ extension.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AppsPeopleOzExternalMergedpeopleapiGplusExtendedData gplusExtendedData;

  /**
   * For use with Hangouts extension.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData hangoutsExtendedData;

  /**
   * For use with gmail extensions and lookup by email. If true, no person was actually found using
   * the specified email address, but we want to return TLS info about the email address regardless.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean isPlaceholder;

  /**
   * For use with Maps extension.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AppsPeopleOzExternalMergedpeopleapiMapsExtendedData mapsExtendedData;

  /**
   * For use with Paisa extension
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private SocialGraphWireProtoPeopleapiExtensionPaisaExtendedData paisaExtendedData;

  /**
   * DEPRECATED: Use people_stack_person_extended_data instead. For use with PeopleStack extension.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private SocialGraphWireProtoPeopleapiExtensionPeopleStackExtendedData peopleStackExtendedData;

  /**
   * For use with PeopleStack extension.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private SocialGraphWireProtoPeopleapiExtensionPeopleStackPersonExtendedData peopleStackPersonExtendedData;

  /**
   * For use with Play Games Product Profile extension. See go/jam-games-profile. The play games
   * profile will be returned only for profile-centric requests.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData playGamesExtendedData;

  /**
   * For use with the TLS extension and lookup by email. If true, no person was actually found using
   * the specified email address, but we want to return TLS info about the email address regardless.
   * DEPRECATED: Use is_placeholder instead.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean tlsIsPlaceholder;

  /**
   * For use with Youtube extension.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData youtubeExtendedData;

  /**
   * For use by AboutMe and SmartProfile clients.
   * @return value or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData getAboutMeExtendedData() {
    return aboutMeExtendedData;
  }

  /**
   * For use by AboutMe and SmartProfile clients.
   * @param aboutMeExtendedData aboutMeExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setAboutMeExtendedData(AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData aboutMeExtendedData) {
    this.aboutMeExtendedData = aboutMeExtendedData;
    return this;
  }

  /**
   * For use with Apps Waldo Availability Data extension
   * @return value or {@code null} for none
   */
  public SocialGraphWireProtoPeopleapiExtensionAppsWaldoExtendedData getAppsWaldoExtendedData() {
    return appsWaldoExtendedData;
  }

  /**
   * For use with Apps Waldo Availability Data extension
   * @param appsWaldoExtendedData appsWaldoExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setAppsWaldoExtendedData(SocialGraphWireProtoPeopleapiExtensionAppsWaldoExtendedData appsWaldoExtendedData) {
    this.appsWaldoExtendedData = appsWaldoExtendedData;
    return this;
  }

  /**
   * For use with caller ID extension
   * @return value or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedData getCallerIdExtendedData() {
    return callerIdExtendedData;
  }

  /**
   * For use with caller ID extension
   * @param callerIdExtendedData callerIdExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setCallerIdExtendedData(AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedData callerIdExtendedData) {
    this.callerIdExtendedData = callerIdExtendedData;
    return this;
  }

  /**
   * For use with Contacts extension.
   * @return value or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData getContactsExtendedData() {
    return contactsExtendedData;
  }

  /**
   * For use with Contacts extension.
   * @param contactsExtendedData contactsExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setContactsExtendedData(AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData contactsExtendedData) {
    this.contactsExtendedData = contactsExtendedData;
    return this;
  }

  /**
   * Hosted domain this person is a member of. The domain_name is also returned as part of the
   * person's ReadOnlyProfileInfo, so requesting it via this extension is no longer necessary.
   * @return value or {@code null} for none
   */
  public java.util.List<java.lang.String> getDomainName() {
    return domainName;
  }

  /**
   * Hosted domain this person is a member of. The domain_name is also returned as part of the
   * person's ReadOnlyProfileInfo, so requesting it via this extension is no longer necessary.
   * @param domainName domainName or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setDomainName(java.util.List<java.lang.String> domainName) {
    this.domainName = domainName;
    return this;
  }

  /**
   * For use with Dynamite extension.
   * @return value or {@code null} for none
   */
  public SocialGraphWireProtoPeopleapiExtensionDynamiteExtendedData getDynamiteExtendedData() {
    return dynamiteExtendedData;
  }

  /**
   * For use with Dynamite extension.
   * @param dynamiteExtendedData dynamiteExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setDynamiteExtendedData(SocialGraphWireProtoPeopleapiExtensionDynamiteExtendedData dynamiteExtendedData) {
    this.dynamiteExtendedData = dynamiteExtendedData;
    return this;
  }

  /**
   * For use with Google Pay extension.
   * @return value or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiGPayExtendedData getGpayExtendedData() {
    return gpayExtendedData;
  }

  /**
   * For use with Google Pay extension.
   * @param gpayExtendedData gpayExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setGpayExtendedData(AppsPeopleOzExternalMergedpeopleapiGPayExtendedData gpayExtendedData) {
    this.gpayExtendedData = gpayExtendedData;
    return this;
  }

  /**
   * For use with Google+ extension.
   * @return value or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiGplusExtendedData getGplusExtendedData() {
    return gplusExtendedData;
  }

  /**
   * For use with Google+ extension.
   * @param gplusExtendedData gplusExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setGplusExtendedData(AppsPeopleOzExternalMergedpeopleapiGplusExtendedData gplusExtendedData) {
    this.gplusExtendedData = gplusExtendedData;
    return this;
  }

  /**
   * For use with Hangouts extension.
   * @return value or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData getHangoutsExtendedData() {
    return hangoutsExtendedData;
  }

  /**
   * For use with Hangouts extension.
   * @param hangoutsExtendedData hangoutsExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setHangoutsExtendedData(AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData hangoutsExtendedData) {
    this.hangoutsExtendedData = hangoutsExtendedData;
    return this;
  }

  /**
   * For use with gmail extensions and lookup by email. If true, no person was actually found using
   * the specified email address, but we want to return TLS info about the email address regardless.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getIsPlaceholder() {
    return isPlaceholder;
  }

  /**
   * For use with gmail extensions and lookup by email. If true, no person was actually found using
   * the specified email address, but we want to return TLS info about the email address regardless.
   * @param isPlaceholder isPlaceholder or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setIsPlaceholder(java.lang.Boolean isPlaceholder) {
    this.isPlaceholder = isPlaceholder;
    return this;
  }

  /**
   * For use with Maps extension.
   * @return value or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiMapsExtendedData getMapsExtendedData() {
    return mapsExtendedData;
  }

  /**
   * For use with Maps extension.
   * @param mapsExtendedData mapsExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setMapsExtendedData(AppsPeopleOzExternalMergedpeopleapiMapsExtendedData mapsExtendedData) {
    this.mapsExtendedData = mapsExtendedData;
    return this;
  }

  /**
   * For use with Paisa extension
   * @return value or {@code null} for none
   */
  public SocialGraphWireProtoPeopleapiExtensionPaisaExtendedData getPaisaExtendedData() {
    return paisaExtendedData;
  }

  /**
   * For use with Paisa extension
   * @param paisaExtendedData paisaExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setPaisaExtendedData(SocialGraphWireProtoPeopleapiExtensionPaisaExtendedData paisaExtendedData) {
    this.paisaExtendedData = paisaExtendedData;
    return this;
  }

  /**
   * DEPRECATED: Use people_stack_person_extended_data instead. For use with PeopleStack extension.
   * @return value or {@code null} for none
   */
  public SocialGraphWireProtoPeopleapiExtensionPeopleStackExtendedData getPeopleStackExtendedData() {
    return peopleStackExtendedData;
  }

  /**
   * DEPRECATED: Use people_stack_person_extended_data instead. For use with PeopleStack extension.
   * @param peopleStackExtendedData peopleStackExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setPeopleStackExtendedData(SocialGraphWireProtoPeopleapiExtensionPeopleStackExtendedData peopleStackExtendedData) {
    this.peopleStackExtendedData = peopleStackExtendedData;
    return this;
  }

  /**
   * For use with PeopleStack extension.
   * @return value or {@code null} for none
   */
  public SocialGraphWireProtoPeopleapiExtensionPeopleStackPersonExtendedData getPeopleStackPersonExtendedData() {
    return peopleStackPersonExtendedData;
  }

  /**
   * For use with PeopleStack extension.
   * @param peopleStackPersonExtendedData peopleStackPersonExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setPeopleStackPersonExtendedData(SocialGraphWireProtoPeopleapiExtensionPeopleStackPersonExtendedData peopleStackPersonExtendedData) {
    this.peopleStackPersonExtendedData = peopleStackPersonExtendedData;
    return this;
  }

  /**
   * For use with Play Games Product Profile extension. See go/jam-games-profile. The play games
   * profile will be returned only for profile-centric requests.
   * @return value or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData getPlayGamesExtendedData() {
    return playGamesExtendedData;
  }

  /**
   * For use with Play Games Product Profile extension. See go/jam-games-profile. The play games
   * profile will be returned only for profile-centric requests.
   * @param playGamesExtendedData playGamesExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setPlayGamesExtendedData(AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData playGamesExtendedData) {
    this.playGamesExtendedData = playGamesExtendedData;
    return this;
  }

  /**
   * For use with the TLS extension and lookup by email. If true, no person was actually found using
   * the specified email address, but we want to return TLS info about the email address regardless.
   * DEPRECATED: Use is_placeholder instead.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getTlsIsPlaceholder() {
    return tlsIsPlaceholder;
  }

  /**
   * For use with the TLS extension and lookup by email. If true, no person was actually found using
   * the specified email address, but we want to return TLS info about the email address regardless.
   * DEPRECATED: Use is_placeholder instead.
   * @param tlsIsPlaceholder tlsIsPlaceholder or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setTlsIsPlaceholder(java.lang.Boolean tlsIsPlaceholder) {
    this.tlsIsPlaceholder = tlsIsPlaceholder;
    return this;
  }

  /**
   * For use with Youtube extension.
   * @return value or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData getYoutubeExtendedData() {
    return youtubeExtendedData;
  }

  /**
   * For use with Youtube extension.
   * @param youtubeExtendedData youtubeExtendedData or {@code null} for none
   */
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData setYoutubeExtendedData(AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData youtubeExtendedData) {
    this.youtubeExtendedData = youtubeExtendedData;
    return this;
  }

  @Override
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData set(String fieldName, Object value) {
    return (AppsPeopleOzExternalMergedpeopleapiPersonExtendedData) super.set(fieldName, value);
  }

  @Override
  public AppsPeopleOzExternalMergedpeopleapiPersonExtendedData clone() {
    return (AppsPeopleOzExternalMergedpeopleapiPersonExtendedData) super.clone();
  }

}
