/*
 * 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.cloudsearch.v1.model;

/**
 * User profile information. This user is not necessarily member of a space.
 *
 * <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 Cloud Search 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 AppsDynamiteFrontendUser extends com.google.api.client.json.GenericJson {

  /**
   * URL for the avatar picture of the User in dynamite
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String avatarUrl;

  /**
   * Information about whether the user is blocked by requester and/or has blocked requester.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AppsDynamiteSharedUserBlockRelationship blockRelationship;

  /**
   * Bot-specific profile information. Leave it empty for human users.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AppsDynamiteFrontendBotInfo botInfo;

  /**
   * Deleted flag, if true, means User has been soft-deleted/purged Deprecated. Use
   * user_account_state field instead.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean deleted;

  /**
   * Email ID of the user
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String email;

  /**
   * First or given name of the user
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String firstName;

  /**
   * Gender of the user
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String gender;

  /**
   * UserId
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AppsDynamiteUserId id;

  /**
   * Set to true if none of the depending services (Gaia, PeopleApi) returns any info for this user.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean isAnonymous;

  /**
   * Last or family name of the user
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String lastName;

  /**
   * Non-unique, user-defined display name of the User
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String name;

  /**
   * Information about whether the user is a consumer user, or the GSuite customer that they belong
   * to.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AppsDynamiteSharedOrganizationInfo organizationInfo;

  /**
   * Phone number(s) of the user
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<AppsDynamiteSharedPhoneNumber> phoneNumber;

  /**
   * State of user's Gaia Account
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String userAccountState;

  /**
   * Visibility of user's Profile
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String userProfileVisibility;

  /**
   * URL for the avatar picture of the User in dynamite
   * @return value or {@code null} for none
   */
  public java.lang.String getAvatarUrl() {
    return avatarUrl;
  }

  /**
   * URL for the avatar picture of the User in dynamite
   * @param avatarUrl avatarUrl or {@code null} for none
   */
  public AppsDynamiteFrontendUser setAvatarUrl(java.lang.String avatarUrl) {
    this.avatarUrl = avatarUrl;
    return this;
  }

  /**
   * Information about whether the user is blocked by requester and/or has blocked requester.
   * @return value or {@code null} for none
   */
  public AppsDynamiteSharedUserBlockRelationship getBlockRelationship() {
    return blockRelationship;
  }

  /**
   * Information about whether the user is blocked by requester and/or has blocked requester.
   * @param blockRelationship blockRelationship or {@code null} for none
   */
  public AppsDynamiteFrontendUser setBlockRelationship(AppsDynamiteSharedUserBlockRelationship blockRelationship) {
    this.blockRelationship = blockRelationship;
    return this;
  }

  /**
   * Bot-specific profile information. Leave it empty for human users.
   * @return value or {@code null} for none
   */
  public AppsDynamiteFrontendBotInfo getBotInfo() {
    return botInfo;
  }

  /**
   * Bot-specific profile information. Leave it empty for human users.
   * @param botInfo botInfo or {@code null} for none
   */
  public AppsDynamiteFrontendUser setBotInfo(AppsDynamiteFrontendBotInfo botInfo) {
    this.botInfo = botInfo;
    return this;
  }

  /**
   * Deleted flag, if true, means User has been soft-deleted/purged Deprecated. Use
   * user_account_state field instead.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getDeleted() {
    return deleted;
  }

  /**
   * Deleted flag, if true, means User has been soft-deleted/purged Deprecated. Use
   * user_account_state field instead.
   * @param deleted deleted or {@code null} for none
   */
  public AppsDynamiteFrontendUser setDeleted(java.lang.Boolean deleted) {
    this.deleted = deleted;
    return this;
  }

  /**
   * Email ID of the user
   * @return value or {@code null} for none
   */
  public java.lang.String getEmail() {
    return email;
  }

  /**
   * Email ID of the user
   * @param email email or {@code null} for none
   */
  public AppsDynamiteFrontendUser setEmail(java.lang.String email) {
    this.email = email;
    return this;
  }

  /**
   * First or given name of the user
   * @return value or {@code null} for none
   */
  public java.lang.String getFirstName() {
    return firstName;
  }

  /**
   * First or given name of the user
   * @param firstName firstName or {@code null} for none
   */
  public AppsDynamiteFrontendUser setFirstName(java.lang.String firstName) {
    this.firstName = firstName;
    return this;
  }

  /**
   * Gender of the user
   * @return value or {@code null} for none
   */
  public java.lang.String getGender() {
    return gender;
  }

  /**
   * Gender of the user
   * @param gender gender or {@code null} for none
   */
  public AppsDynamiteFrontendUser setGender(java.lang.String gender) {
    this.gender = gender;
    return this;
  }

  /**
   * UserId
   * @return value or {@code null} for none
   */
  public AppsDynamiteUserId getId() {
    return id;
  }

  /**
   * UserId
   * @param id id or {@code null} for none
   */
  public AppsDynamiteFrontendUser setId(AppsDynamiteUserId id) {
    this.id = id;
    return this;
  }

  /**
   * Set to true if none of the depending services (Gaia, PeopleApi) returns any info for this user.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getIsAnonymous() {
    return isAnonymous;
  }

  /**
   * Set to true if none of the depending services (Gaia, PeopleApi) returns any info for this user.
   * @param isAnonymous isAnonymous or {@code null} for none
   */
  public AppsDynamiteFrontendUser setIsAnonymous(java.lang.Boolean isAnonymous) {
    this.isAnonymous = isAnonymous;
    return this;
  }

  /**
   * Last or family name of the user
   * @return value or {@code null} for none
   */
  public java.lang.String getLastName() {
    return lastName;
  }

  /**
   * Last or family name of the user
   * @param lastName lastName or {@code null} for none
   */
  public AppsDynamiteFrontendUser setLastName(java.lang.String lastName) {
    this.lastName = lastName;
    return this;
  }

  /**
   * Non-unique, user-defined display name of the User
   * @return value or {@code null} for none
   */
  public java.lang.String getName() {
    return name;
  }

  /**
   * Non-unique, user-defined display name of the User
   * @param name name or {@code null} for none
   */
  public AppsDynamiteFrontendUser setName(java.lang.String name) {
    this.name = name;
    return this;
  }

  /**
   * Information about whether the user is a consumer user, or the GSuite customer that they belong
   * to.
   * @return value or {@code null} for none
   */
  public AppsDynamiteSharedOrganizationInfo getOrganizationInfo() {
    return organizationInfo;
  }

  /**
   * Information about whether the user is a consumer user, or the GSuite customer that they belong
   * to.
   * @param organizationInfo organizationInfo or {@code null} for none
   */
  public AppsDynamiteFrontendUser setOrganizationInfo(AppsDynamiteSharedOrganizationInfo organizationInfo) {
    this.organizationInfo = organizationInfo;
    return this;
  }

  /**
   * Phone number(s) of the user
   * @return value or {@code null} for none
   */
  public java.util.List<AppsDynamiteSharedPhoneNumber> getPhoneNumber() {
    return phoneNumber;
  }

  /**
   * Phone number(s) of the user
   * @param phoneNumber phoneNumber or {@code null} for none
   */
  public AppsDynamiteFrontendUser setPhoneNumber(java.util.List<AppsDynamiteSharedPhoneNumber> phoneNumber) {
    this.phoneNumber = phoneNumber;
    return this;
  }

  /**
   * State of user's Gaia Account
   * @return value or {@code null} for none
   */
  public java.lang.String getUserAccountState() {
    return userAccountState;
  }

  /**
   * State of user's Gaia Account
   * @param userAccountState userAccountState or {@code null} for none
   */
  public AppsDynamiteFrontendUser setUserAccountState(java.lang.String userAccountState) {
    this.userAccountState = userAccountState;
    return this;
  }

  /**
   * Visibility of user's Profile
   * @return value or {@code null} for none
   */
  public java.lang.String getUserProfileVisibility() {
    return userProfileVisibility;
  }

  /**
   * Visibility of user's Profile
   * @param userProfileVisibility userProfileVisibility or {@code null} for none
   */
  public AppsDynamiteFrontendUser setUserProfileVisibility(java.lang.String userProfileVisibility) {
    this.userProfileVisibility = userProfileVisibility;
    return this;
  }

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

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

}
