/*
 * 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;

/**
 * Common representation of a person.
 *
 * <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 EnterpriseTopazSidekickCommonPerson extends com.google.api.client.json.GenericJson {

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

  /**
   * Cell phone number.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String cellPhone;

  /**
   * The department the person works in (e.g. Engineering).
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String department;

  /**
   * Desk location (e.g. US-MTV-PR55-5-5B1I).
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String deskLocation;

  /**
   * Work desk phone number.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String deskPhone;

  /**
   * The full name.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String displayName;

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

  /**
   * The last name.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String familyName;

  /**
   * The fully formatted address (e.g. 1255 Pear Avenue, Mountain View 94043, United States).
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String fullAddress;

  /**
   * This field is deprecated. The obfuscated_id should be used instead.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long gaiaId;

  /**
   * The first name.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String givenName;

  /**
   * The person's job title (e.g. Software Engineer).
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String jobTitle;

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

  /**
   * The obfuscated GAIA ID.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String obfuscatedId;

  /**
   * The URL for the Focus profile picture.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String photoUrl;

  /**
   * The street address (e.g. 1255 Pear Avenue).
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String streetAddress;

  /**
   * The birthday.
   * @return value or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPersonBirthday getBirthday() {
    return birthday;
  }

  /**
   * The birthday.
   * @param birthday birthday or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setBirthday(EnterpriseTopazSidekickCommonPersonBirthday birthday) {
    this.birthday = birthday;
    return this;
  }

  /**
   * Cell phone number.
   * @return value or {@code null} for none
   */
  public java.lang.String getCellPhone() {
    return cellPhone;
  }

  /**
   * Cell phone number.
   * @param cellPhone cellPhone or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setCellPhone(java.lang.String cellPhone) {
    this.cellPhone = cellPhone;
    return this;
  }

  /**
   * The department the person works in (e.g. Engineering).
   * @return value or {@code null} for none
   */
  public java.lang.String getDepartment() {
    return department;
  }

  /**
   * The department the person works in (e.g. Engineering).
   * @param department department or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setDepartment(java.lang.String department) {
    this.department = department;
    return this;
  }

  /**
   * Desk location (e.g. US-MTV-PR55-5-5B1I).
   * @return value or {@code null} for none
   */
  public java.lang.String getDeskLocation() {
    return deskLocation;
  }

  /**
   * Desk location (e.g. US-MTV-PR55-5-5B1I).
   * @param deskLocation deskLocation or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setDeskLocation(java.lang.String deskLocation) {
    this.deskLocation = deskLocation;
    return this;
  }

  /**
   * Work desk phone number.
   * @return value or {@code null} for none
   */
  public java.lang.String getDeskPhone() {
    return deskPhone;
  }

  /**
   * Work desk phone number.
   * @param deskPhone deskPhone or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setDeskPhone(java.lang.String deskPhone) {
    this.deskPhone = deskPhone;
    return this;
  }

  /**
   * The full name.
   * @return value or {@code null} for none
   */
  public java.lang.String getDisplayName() {
    return displayName;
  }

  /**
   * The full name.
   * @param displayName displayName or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setDisplayName(java.lang.String displayName) {
    this.displayName = displayName;
    return this;
  }

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

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

  /**
   * The last name.
   * @return value or {@code null} for none
   */
  public java.lang.String getFamilyName() {
    return familyName;
  }

  /**
   * The last name.
   * @param familyName familyName or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setFamilyName(java.lang.String familyName) {
    this.familyName = familyName;
    return this;
  }

  /**
   * The fully formatted address (e.g. 1255 Pear Avenue, Mountain View 94043, United States).
   * @return value or {@code null} for none
   */
  public java.lang.String getFullAddress() {
    return fullAddress;
  }

  /**
   * The fully formatted address (e.g. 1255 Pear Avenue, Mountain View 94043, United States).
   * @param fullAddress fullAddress or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setFullAddress(java.lang.String fullAddress) {
    this.fullAddress = fullAddress;
    return this;
  }

  /**
   * This field is deprecated. The obfuscated_id should be used instead.
   * @return value or {@code null} for none
   */
  public java.lang.Long getGaiaId() {
    return gaiaId;
  }

  /**
   * This field is deprecated. The obfuscated_id should be used instead.
   * @param gaiaId gaiaId or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setGaiaId(java.lang.Long gaiaId) {
    this.gaiaId = gaiaId;
    return this;
  }

  /**
   * The first name.
   * @return value or {@code null} for none
   */
  public java.lang.String getGivenName() {
    return givenName;
  }

  /**
   * The first name.
   * @param givenName givenName or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setGivenName(java.lang.String givenName) {
    this.givenName = givenName;
    return this;
  }

  /**
   * The person's job title (e.g. Software Engineer).
   * @return value or {@code null} for none
   */
  public java.lang.String getJobTitle() {
    return jobTitle;
  }

  /**
   * The person's job title (e.g. Software Engineer).
   * @param jobTitle jobTitle or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setJobTitle(java.lang.String jobTitle) {
    this.jobTitle = jobTitle;
    return this;
  }

  /**
   * The manager.
   * @return value or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson getManager() {
    return manager;
  }

  /**
   * The manager.
   * @param manager manager or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setManager(EnterpriseTopazSidekickCommonPerson manager) {
    this.manager = manager;
    return this;
  }

  /**
   * The obfuscated GAIA ID.
   * @return value or {@code null} for none
   */
  public java.lang.String getObfuscatedId() {
    return obfuscatedId;
  }

  /**
   * The obfuscated GAIA ID.
   * @param obfuscatedId obfuscatedId or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setObfuscatedId(java.lang.String obfuscatedId) {
    this.obfuscatedId = obfuscatedId;
    return this;
  }

  /**
   * The URL for the Focus profile picture.
   * @return value or {@code null} for none
   */
  public java.lang.String getPhotoUrl() {
    return photoUrl;
  }

  /**
   * The URL for the Focus profile picture.
   * @param photoUrl photoUrl or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setPhotoUrl(java.lang.String photoUrl) {
    this.photoUrl = photoUrl;
    return this;
  }

  /**
   * The street address (e.g. 1255 Pear Avenue).
   * @return value or {@code null} for none
   */
  public java.lang.String getStreetAddress() {
    return streetAddress;
  }

  /**
   * The street address (e.g. 1255 Pear Avenue).
   * @param streetAddress streetAddress or {@code null} for none
   */
  public EnterpriseTopazSidekickCommonPerson setStreetAddress(java.lang.String streetAddress) {
    this.streetAddress = streetAddress;
    return this;
  }

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

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

}
