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

/**
 * An Identity Platform account's information.
 *
 * <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 Identity Toolkit 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 GoogleCloudIdentitytoolkitV1UserInfo extends com.google.api.client.json.GenericJson {

  /**
   * The time, in milliseconds from epoch, when the account was created.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long createdAt;

  /**
   * Custom claims to be added to any ID tokens minted for the account. Should be at most 1,000
   * characters in length and in valid JSON format.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String customAttributes;

  /**
   * Output only. Whether this account has been authenticated using SignInWithCustomToken.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean customAuth;

  /**
   * Output only. The date of birth set for the account. This account attribute is not used by
   * Identity Platform. It is available for informational purposes only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String dateOfBirth;

  /**
   * Whether the account is disabled. Disabled accounts are inaccessible except for requests bearing
   * a Google OAuth2 credential with proper permissions.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean disabled;

  /**
   * The display name of the account. This account attribute is not used by Identity Platform. It is
   * available for informational purposes only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String displayName;

  /**
   * The account's email address. The length of the email should be less than 256 characters and in
   * the format of `name@domain.tld`. The email should also match the [RFC
   * 822](https://tools.ietf.org/html/rfc822) addr-spec.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String email;

  /**
   * Output only. Whether the account can authenticate with email link.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean emailLinkSignin;

  /**
   * Whether the account's email address has been verified.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean emailVerified;

  /**
   * The first email address associated with this account. The account's initial email cannot be
   * changed once set and is used to recover access to this account if lost via the RECOVER_EMAIL
   * flow in GetOobCode. Should match the [RFC 822](https://tools.ietf.org/html/rfc822) addr-spec.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String initialEmail;

  /**
   * Output only. The language preference of the account. This account attribute is not used by
   * Identity Platform. It is available for informational purposes only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String language;

  /**
   * The last time, in milliseconds from epoch, this account was logged into.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long lastLoginAt;

  /**
   * Timestamp when an ID token was last minted for this account.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String lastRefreshAt;

  /**
   * Immutable. The unique ID of the account.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String localId;

  /**
   * Information on which multi-factor authentication providers are enabled for this account.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<GoogleCloudIdentitytoolkitV1MfaEnrollment> mfaInfo;

  static {
    // hack to force ProGuard to consider GoogleCloudIdentitytoolkitV1MfaEnrollment used, since otherwise it would be stripped out
    // see https://github.com/google/google-api-java-client/issues/543
    com.google.api.client.util.Data.nullOf(GoogleCloudIdentitytoolkitV1MfaEnrollment.class);
  }

  /**
   * The account's hashed password. Only accessible by requests bearing a Google OAuth2 credential
   * with proper [permissions](https://cloud.google.com/identity-platform/docs/access-control).
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String passwordHash;

  /**
   * The timestamp, in milliseconds from the epoch of 1970-01-01T00:00:00Z, when the account's
   * password was last updated.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Double passwordUpdatedAt;

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

  /**
   * The URL of the account's profile photo. This account attribute is not used by Identity
   * Platform. It is available for informational purposes only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String photoUrl;

  /**
   * Information about the user as provided by various Identity Providers.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<GoogleCloudIdentitytoolkitV1ProviderUserInfo> providerUserInfo;

  static {
    // hack to force ProGuard to consider GoogleCloudIdentitytoolkitV1ProviderUserInfo used, since otherwise it would be stripped out
    // see https://github.com/google/google-api-java-client/issues/543
    com.google.api.client.util.Data.nullOf(GoogleCloudIdentitytoolkitV1ProviderUserInfo.class);
  }

  /**
   * Input only. Plain text password used to update a account's password. This field is only ever
   * used as input in a request. Identity Platform uses cryptographically secure hashing when
   * managing passwords and will never store or transmit a user's password in plain text.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String rawPassword;

  /**
   * The account's password salt. Only accessible by requests bearing a Google OAuth2 credential
   * with proper permissions.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String salt;

  /**
   * Output only. This account's screen name at Twitter or login name at GitHub.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String screenName;

  /**
   * ID of the tenant this account belongs to. Only set if this account belongs to a tenant.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String tenantId;

  /**
   * Output only. The time zone preference of the account. This account attribute is not used by
   * Identity Platform. It is available for informational purposes only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String timeZone;

  /**
   * Oldest timestamp, in seconds since epoch, that an ID token should be considered valid. All ID
   * tokens issued before this time are considered invalid.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long validSince;

  /**
   * The version of the account's password. Only accessible by requests bearing a Google OAuth2
   * credential with proper permissions.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Integer version;

  /**
   * The time, in milliseconds from epoch, when the account was created.
   * @return value or {@code null} for none
   */
  public java.lang.Long getCreatedAt() {
    return createdAt;
  }

  /**
   * The time, in milliseconds from epoch, when the account was created.
   * @param createdAt createdAt or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setCreatedAt(java.lang.Long createdAt) {
    this.createdAt = createdAt;
    return this;
  }

  /**
   * Custom claims to be added to any ID tokens minted for the account. Should be at most 1,000
   * characters in length and in valid JSON format.
   * @return value or {@code null} for none
   */
  public java.lang.String getCustomAttributes() {
    return customAttributes;
  }

  /**
   * Custom claims to be added to any ID tokens minted for the account. Should be at most 1,000
   * characters in length and in valid JSON format.
   * @param customAttributes customAttributes or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setCustomAttributes(java.lang.String customAttributes) {
    this.customAttributes = customAttributes;
    return this;
  }

  /**
   * Output only. Whether this account has been authenticated using SignInWithCustomToken.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getCustomAuth() {
    return customAuth;
  }

  /**
   * Output only. Whether this account has been authenticated using SignInWithCustomToken.
   * @param customAuth customAuth or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setCustomAuth(java.lang.Boolean customAuth) {
    this.customAuth = customAuth;
    return this;
  }

  /**
   * Output only. The date of birth set for the account. This account attribute is not used by
   * Identity Platform. It is available for informational purposes only.
   * @return value or {@code null} for none
   */
  public java.lang.String getDateOfBirth() {
    return dateOfBirth;
  }

  /**
   * Output only. The date of birth set for the account. This account attribute is not used by
   * Identity Platform. It is available for informational purposes only.
   * @param dateOfBirth dateOfBirth or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setDateOfBirth(java.lang.String dateOfBirth) {
    this.dateOfBirth = dateOfBirth;
    return this;
  }

  /**
   * Whether the account is disabled. Disabled accounts are inaccessible except for requests bearing
   * a Google OAuth2 credential with proper permissions.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getDisabled() {
    return disabled;
  }

  /**
   * Whether the account is disabled. Disabled accounts are inaccessible except for requests bearing
   * a Google OAuth2 credential with proper permissions.
   * @param disabled disabled or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setDisabled(java.lang.Boolean disabled) {
    this.disabled = disabled;
    return this;
  }

  /**
   * The display name of the account. This account attribute is not used by Identity Platform. It is
   * available for informational purposes only.
   * @return value or {@code null} for none
   */
  public java.lang.String getDisplayName() {
    return displayName;
  }

  /**
   * The display name of the account. This account attribute is not used by Identity Platform. It is
   * available for informational purposes only.
   * @param displayName displayName or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setDisplayName(java.lang.String displayName) {
    this.displayName = displayName;
    return this;
  }

  /**
   * The account's email address. The length of the email should be less than 256 characters and in
   * the format of `name@domain.tld`. The email should also match the [RFC
   * 822](https://tools.ietf.org/html/rfc822) addr-spec.
   * @return value or {@code null} for none
   */
  public java.lang.String getEmail() {
    return email;
  }

  /**
   * The account's email address. The length of the email should be less than 256 characters and in
   * the format of `name@domain.tld`. The email should also match the [RFC
   * 822](https://tools.ietf.org/html/rfc822) addr-spec.
   * @param email email or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setEmail(java.lang.String email) {
    this.email = email;
    return this;
  }

  /**
   * Output only. Whether the account can authenticate with email link.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getEmailLinkSignin() {
    return emailLinkSignin;
  }

  /**
   * Output only. Whether the account can authenticate with email link.
   * @param emailLinkSignin emailLinkSignin or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setEmailLinkSignin(java.lang.Boolean emailLinkSignin) {
    this.emailLinkSignin = emailLinkSignin;
    return this;
  }

  /**
   * Whether the account's email address has been verified.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getEmailVerified() {
    return emailVerified;
  }

  /**
   * Whether the account's email address has been verified.
   * @param emailVerified emailVerified or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setEmailVerified(java.lang.Boolean emailVerified) {
    this.emailVerified = emailVerified;
    return this;
  }

  /**
   * The first email address associated with this account. The account's initial email cannot be
   * changed once set and is used to recover access to this account if lost via the RECOVER_EMAIL
   * flow in GetOobCode. Should match the [RFC 822](https://tools.ietf.org/html/rfc822) addr-spec.
   * @return value or {@code null} for none
   */
  public java.lang.String getInitialEmail() {
    return initialEmail;
  }

  /**
   * The first email address associated with this account. The account's initial email cannot be
   * changed once set and is used to recover access to this account if lost via the RECOVER_EMAIL
   * flow in GetOobCode. Should match the [RFC 822](https://tools.ietf.org/html/rfc822) addr-spec.
   * @param initialEmail initialEmail or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setInitialEmail(java.lang.String initialEmail) {
    this.initialEmail = initialEmail;
    return this;
  }

  /**
   * Output only. The language preference of the account. This account attribute is not used by
   * Identity Platform. It is available for informational purposes only.
   * @return value or {@code null} for none
   */
  public java.lang.String getLanguage() {
    return language;
  }

  /**
   * Output only. The language preference of the account. This account attribute is not used by
   * Identity Platform. It is available for informational purposes only.
   * @param language language or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setLanguage(java.lang.String language) {
    this.language = language;
    return this;
  }

  /**
   * The last time, in milliseconds from epoch, this account was logged into.
   * @return value or {@code null} for none
   */
  public java.lang.Long getLastLoginAt() {
    return lastLoginAt;
  }

  /**
   * The last time, in milliseconds from epoch, this account was logged into.
   * @param lastLoginAt lastLoginAt or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setLastLoginAt(java.lang.Long lastLoginAt) {
    this.lastLoginAt = lastLoginAt;
    return this;
  }

  /**
   * Timestamp when an ID token was last minted for this account.
   * @return value or {@code null} for none
   */
  public String getLastRefreshAt() {
    return lastRefreshAt;
  }

  /**
   * Timestamp when an ID token was last minted for this account.
   * @param lastRefreshAt lastRefreshAt or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setLastRefreshAt(String lastRefreshAt) {
    this.lastRefreshAt = lastRefreshAt;
    return this;
  }

  /**
   * Immutable. The unique ID of the account.
   * @return value or {@code null} for none
   */
  public java.lang.String getLocalId() {
    return localId;
  }

  /**
   * Immutable. The unique ID of the account.
   * @param localId localId or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setLocalId(java.lang.String localId) {
    this.localId = localId;
    return this;
  }

  /**
   * Information on which multi-factor authentication providers are enabled for this account.
   * @return value or {@code null} for none
   */
  public java.util.List<GoogleCloudIdentitytoolkitV1MfaEnrollment> getMfaInfo() {
    return mfaInfo;
  }

  /**
   * Information on which multi-factor authentication providers are enabled for this account.
   * @param mfaInfo mfaInfo or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setMfaInfo(java.util.List<GoogleCloudIdentitytoolkitV1MfaEnrollment> mfaInfo) {
    this.mfaInfo = mfaInfo;
    return this;
  }

  /**
   * The account's hashed password. Only accessible by requests bearing a Google OAuth2 credential
   * with proper [permissions](https://cloud.google.com/identity-platform/docs/access-control).
   * @see #decodePasswordHash()
   * @return value or {@code null} for none
   */
  public java.lang.String getPasswordHash() {
    return passwordHash;
  }

  /**
   * The account's hashed password. Only accessible by requests bearing a Google OAuth2 credential
   * with proper [permissions](https://cloud.google.com/identity-platform/docs/access-control).
   * @see #getPasswordHash()
   * @return Base64 decoded value or {@code null} for none
   *
   * @since 1.14
   */
  public byte[] decodePasswordHash() {
    return com.google.api.client.util.Base64.decodeBase64(passwordHash);
  }

  /**
   * The account's hashed password. Only accessible by requests bearing a Google OAuth2 credential
   * with proper [permissions](https://cloud.google.com/identity-platform/docs/access-control).
   * @see #encodePasswordHash()
   * @param passwordHash passwordHash or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setPasswordHash(java.lang.String passwordHash) {
    this.passwordHash = passwordHash;
    return this;
  }

  /**
   * The account's hashed password. Only accessible by requests bearing a Google OAuth2 credential
   * with proper [permissions](https://cloud.google.com/identity-platform/docs/access-control).
   * @see #setPasswordHash()
   *
   * <p>
   * The value is encoded Base64 or {@code null} for none.
   * </p>
   *
   * @since 1.14
   */
  public GoogleCloudIdentitytoolkitV1UserInfo encodePasswordHash(byte[] passwordHash) {
    this.passwordHash = com.google.api.client.util.Base64.encodeBase64URLSafeString(passwordHash);
    return this;
  }

  /**
   * The timestamp, in milliseconds from the epoch of 1970-01-01T00:00:00Z, when the account's
   * password was last updated.
   * @return value or {@code null} for none
   */
  public java.lang.Double getPasswordUpdatedAt() {
    return passwordUpdatedAt;
  }

  /**
   * The timestamp, in milliseconds from the epoch of 1970-01-01T00:00:00Z, when the account's
   * password was last updated.
   * @param passwordUpdatedAt passwordUpdatedAt or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setPasswordUpdatedAt(java.lang.Double passwordUpdatedAt) {
    this.passwordUpdatedAt = passwordUpdatedAt;
    return this;
  }

  /**
   * The account's phone number.
   * @return value or {@code null} for none
   */
  public java.lang.String getPhoneNumber() {
    return phoneNumber;
  }

  /**
   * The account's phone number.
   * @param phoneNumber phoneNumber or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setPhoneNumber(java.lang.String phoneNumber) {
    this.phoneNumber = phoneNumber;
    return this;
  }

  /**
   * The URL of the account's profile photo. This account attribute is not used by Identity
   * Platform. It is available for informational purposes only.
   * @return value or {@code null} for none
   */
  public java.lang.String getPhotoUrl() {
    return photoUrl;
  }

  /**
   * The URL of the account's profile photo. This account attribute is not used by Identity
   * Platform. It is available for informational purposes only.
   * @param photoUrl photoUrl or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setPhotoUrl(java.lang.String photoUrl) {
    this.photoUrl = photoUrl;
    return this;
  }

  /**
   * Information about the user as provided by various Identity Providers.
   * @return value or {@code null} for none
   */
  public java.util.List<GoogleCloudIdentitytoolkitV1ProviderUserInfo> getProviderUserInfo() {
    return providerUserInfo;
  }

  /**
   * Information about the user as provided by various Identity Providers.
   * @param providerUserInfo providerUserInfo or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setProviderUserInfo(java.util.List<GoogleCloudIdentitytoolkitV1ProviderUserInfo> providerUserInfo) {
    this.providerUserInfo = providerUserInfo;
    return this;
  }

  /**
   * Input only. Plain text password used to update a account's password. This field is only ever
   * used as input in a request. Identity Platform uses cryptographically secure hashing when
   * managing passwords and will never store or transmit a user's password in plain text.
   * @return value or {@code null} for none
   */
  public java.lang.String getRawPassword() {
    return rawPassword;
  }

  /**
   * Input only. Plain text password used to update a account's password. This field is only ever
   * used as input in a request. Identity Platform uses cryptographically secure hashing when
   * managing passwords and will never store or transmit a user's password in plain text.
   * @param rawPassword rawPassword or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setRawPassword(java.lang.String rawPassword) {
    this.rawPassword = rawPassword;
    return this;
  }

  /**
   * The account's password salt. Only accessible by requests bearing a Google OAuth2 credential
   * with proper permissions.
   * @see #decodeSalt()
   * @return value or {@code null} for none
   */
  public java.lang.String getSalt() {
    return salt;
  }

  /**
   * The account's password salt. Only accessible by requests bearing a Google OAuth2 credential
   * with proper permissions.
   * @see #getSalt()
   * @return Base64 decoded value or {@code null} for none
   *
   * @since 1.14
   */
  public byte[] decodeSalt() {
    return com.google.api.client.util.Base64.decodeBase64(salt);
  }

  /**
   * The account's password salt. Only accessible by requests bearing a Google OAuth2 credential
   * with proper permissions.
   * @see #encodeSalt()
   * @param salt salt or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setSalt(java.lang.String salt) {
    this.salt = salt;
    return this;
  }

  /**
   * The account's password salt. Only accessible by requests bearing a Google OAuth2 credential
   * with proper permissions.
   * @see #setSalt()
   *
   * <p>
   * The value is encoded Base64 or {@code null} for none.
   * </p>
   *
   * @since 1.14
   */
  public GoogleCloudIdentitytoolkitV1UserInfo encodeSalt(byte[] salt) {
    this.salt = com.google.api.client.util.Base64.encodeBase64URLSafeString(salt);
    return this;
  }

  /**
   * Output only. This account's screen name at Twitter or login name at GitHub.
   * @return value or {@code null} for none
   */
  public java.lang.String getScreenName() {
    return screenName;
  }

  /**
   * Output only. This account's screen name at Twitter or login name at GitHub.
   * @param screenName screenName or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setScreenName(java.lang.String screenName) {
    this.screenName = screenName;
    return this;
  }

  /**
   * ID of the tenant this account belongs to. Only set if this account belongs to a tenant.
   * @return value or {@code null} for none
   */
  public java.lang.String getTenantId() {
    return tenantId;
  }

  /**
   * ID of the tenant this account belongs to. Only set if this account belongs to a tenant.
   * @param tenantId tenantId or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setTenantId(java.lang.String tenantId) {
    this.tenantId = tenantId;
    return this;
  }

  /**
   * Output only. The time zone preference of the account. This account attribute is not used by
   * Identity Platform. It is available for informational purposes only.
   * @return value or {@code null} for none
   */
  public java.lang.String getTimeZone() {
    return timeZone;
  }

  /**
   * Output only. The time zone preference of the account. This account attribute is not used by
   * Identity Platform. It is available for informational purposes only.
   * @param timeZone timeZone or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setTimeZone(java.lang.String timeZone) {
    this.timeZone = timeZone;
    return this;
  }

  /**
   * Oldest timestamp, in seconds since epoch, that an ID token should be considered valid. All ID
   * tokens issued before this time are considered invalid.
   * @return value or {@code null} for none
   */
  public java.lang.Long getValidSince() {
    return validSince;
  }

  /**
   * Oldest timestamp, in seconds since epoch, that an ID token should be considered valid. All ID
   * tokens issued before this time are considered invalid.
   * @param validSince validSince or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setValidSince(java.lang.Long validSince) {
    this.validSince = validSince;
    return this;
  }

  /**
   * The version of the account's password. Only accessible by requests bearing a Google OAuth2
   * credential with proper permissions.
   * @return value or {@code null} for none
   */
  public java.lang.Integer getVersion() {
    return version;
  }

  /**
   * The version of the account's password. Only accessible by requests bearing a Google OAuth2
   * credential with proper permissions.
   * @param version version or {@code null} for none
   */
  public GoogleCloudIdentitytoolkitV1UserInfo setVersion(java.lang.Integer version) {
    this.version = version;
    return this;
  }

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

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

}
