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

/**
 * Data which is produced for logging and debugging. Servers MUST NOT use this for any other
 * purposes, such as branching on it. Next ID: 16
 *
 * <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 AssistantApiLoggingOnlyData extends com.google.api.client.json.GenericJson {

  /**
   * A user-readable string describing the ACP version (go/acp-version) of the client app used by
   * the user to originate the conversation.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String acpVersion;

  /**
   * Random identifier assigned to Android mobile devices. Older logs may have previously stored
   * other kinds of android IDs in this field, but all current logs should use the GServices Id. See
   * go/androidids.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long androidId;

  /**
   * A user-readable string describing the version of the client app used by the user to originate
   * the conversation.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String appVersion;

  /**
   * An enum specifying when was this ATV AssistantSettings entry initially created.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String assistantSettingsSource;

  /**
   * The type of board used by manufacturer for this device
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String boardName;

  /**
   * The revision of board used
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String boardRevision;

  /**
   * This field records the linking status between Assistant setting entry and Cast setting entry.
   * Currently only ATV surface populates this field for profiling purpose.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AssistantApiCastAssistantSettingLinkingResult castAssistantSettingLinkingResult;

  /**
   * A user-readable string describing the device's hardware platform.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String deviceModel;

  /**
   * Any relevant info concerning the build options of the embedder (that is the software which runs
   * as the 'driver' of an Assistant library, such as libassistant. the embedder is typically built
   * by a third party)
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String embedderBuildInfo;

  /**
   * A string recording the app version that is initially used to created this settings entry.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String initialAppVersion;

  /**
   * Boolean field to indicate whether a certain user is the primary user of a device or not. This
   * is useful for distinguishing the user0 from other users given user0 might have certain
   * privileges (Eg: Hubmode on Tangor)
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean isPrimaryUser;

  /**
   * default display name of device over mdns. This is specified at the factory, not specified by
   * the user.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String mdnsDisplayName;

  /**
   * A user-readable string describing the device's software platform.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String platformBuild;

  /**
   * A string describing device's release channel. For cast devices, the string will look like "qa-
   * beta-channel", "eng-no-update", etc.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String virtualReleaseChannel;

  /**
   * A user-readable string describing the ACP version (go/acp-version) of the client app used by
   * the user to originate the conversation.
   * @return value or {@code null} for none
   */
  public java.lang.String getAcpVersion() {
    return acpVersion;
  }

  /**
   * A user-readable string describing the ACP version (go/acp-version) of the client app used by
   * the user to originate the conversation.
   * @param acpVersion acpVersion or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setAcpVersion(java.lang.String acpVersion) {
    this.acpVersion = acpVersion;
    return this;
  }

  /**
   * Random identifier assigned to Android mobile devices. Older logs may have previously stored
   * other kinds of android IDs in this field, but all current logs should use the GServices Id. See
   * go/androidids.
   * @return value or {@code null} for none
   */
  public java.lang.Long getAndroidId() {
    return androidId;
  }

  /**
   * Random identifier assigned to Android mobile devices. Older logs may have previously stored
   * other kinds of android IDs in this field, but all current logs should use the GServices Id. See
   * go/androidids.
   * @param androidId androidId or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setAndroidId(java.lang.Long androidId) {
    this.androidId = androidId;
    return this;
  }

  /**
   * A user-readable string describing the version of the client app used by the user to originate
   * the conversation.
   * @return value or {@code null} for none
   */
  public java.lang.String getAppVersion() {
    return appVersion;
  }

  /**
   * A user-readable string describing the version of the client app used by the user to originate
   * the conversation.
   * @param appVersion appVersion or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setAppVersion(java.lang.String appVersion) {
    this.appVersion = appVersion;
    return this;
  }

  /**
   * An enum specifying when was this ATV AssistantSettings entry initially created.
   * @return value or {@code null} for none
   */
  public java.lang.String getAssistantSettingsSource() {
    return assistantSettingsSource;
  }

  /**
   * An enum specifying when was this ATV AssistantSettings entry initially created.
   * @param assistantSettingsSource assistantSettingsSource or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setAssistantSettingsSource(java.lang.String assistantSettingsSource) {
    this.assistantSettingsSource = assistantSettingsSource;
    return this;
  }

  /**
   * The type of board used by manufacturer for this device
   * @return value or {@code null} for none
   */
  public java.lang.String getBoardName() {
    return boardName;
  }

  /**
   * The type of board used by manufacturer for this device
   * @param boardName boardName or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setBoardName(java.lang.String boardName) {
    this.boardName = boardName;
    return this;
  }

  /**
   * The revision of board used
   * @return value or {@code null} for none
   */
  public java.lang.String getBoardRevision() {
    return boardRevision;
  }

  /**
   * The revision of board used
   * @param boardRevision boardRevision or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setBoardRevision(java.lang.String boardRevision) {
    this.boardRevision = boardRevision;
    return this;
  }

  /**
   * This field records the linking status between Assistant setting entry and Cast setting entry.
   * Currently only ATV surface populates this field for profiling purpose.
   * @return value or {@code null} for none
   */
  public AssistantApiCastAssistantSettingLinkingResult getCastAssistantSettingLinkingResult() {
    return castAssistantSettingLinkingResult;
  }

  /**
   * This field records the linking status between Assistant setting entry and Cast setting entry.
   * Currently only ATV surface populates this field for profiling purpose.
   * @param castAssistantSettingLinkingResult castAssistantSettingLinkingResult or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setCastAssistantSettingLinkingResult(AssistantApiCastAssistantSettingLinkingResult castAssistantSettingLinkingResult) {
    this.castAssistantSettingLinkingResult = castAssistantSettingLinkingResult;
    return this;
  }

  /**
   * A user-readable string describing the device's hardware platform.
   * @return value or {@code null} for none
   */
  public java.lang.String getDeviceModel() {
    return deviceModel;
  }

  /**
   * A user-readable string describing the device's hardware platform.
   * @param deviceModel deviceModel or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setDeviceModel(java.lang.String deviceModel) {
    this.deviceModel = deviceModel;
    return this;
  }

  /**
   * Any relevant info concerning the build options of the embedder (that is the software which runs
   * as the 'driver' of an Assistant library, such as libassistant. the embedder is typically built
   * by a third party)
   * @return value or {@code null} for none
   */
  public java.lang.String getEmbedderBuildInfo() {
    return embedderBuildInfo;
  }

  /**
   * Any relevant info concerning the build options of the embedder (that is the software which runs
   * as the 'driver' of an Assistant library, such as libassistant. the embedder is typically built
   * by a third party)
   * @param embedderBuildInfo embedderBuildInfo or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setEmbedderBuildInfo(java.lang.String embedderBuildInfo) {
    this.embedderBuildInfo = embedderBuildInfo;
    return this;
  }

  /**
   * A string recording the app version that is initially used to created this settings entry.
   * @return value or {@code null} for none
   */
  public java.lang.String getInitialAppVersion() {
    return initialAppVersion;
  }

  /**
   * A string recording the app version that is initially used to created this settings entry.
   * @param initialAppVersion initialAppVersion or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setInitialAppVersion(java.lang.String initialAppVersion) {
    this.initialAppVersion = initialAppVersion;
    return this;
  }

  /**
   * Boolean field to indicate whether a certain user is the primary user of a device or not. This
   * is useful for distinguishing the user0 from other users given user0 might have certain
   * privileges (Eg: Hubmode on Tangor)
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getIsPrimaryUser() {
    return isPrimaryUser;
  }

  /**
   * Boolean field to indicate whether a certain user is the primary user of a device or not. This
   * is useful for distinguishing the user0 from other users given user0 might have certain
   * privileges (Eg: Hubmode on Tangor)
   * @param isPrimaryUser isPrimaryUser or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setIsPrimaryUser(java.lang.Boolean isPrimaryUser) {
    this.isPrimaryUser = isPrimaryUser;
    return this;
  }

  /**
   * default display name of device over mdns. This is specified at the factory, not specified by
   * the user.
   * @return value or {@code null} for none
   */
  public java.lang.String getMdnsDisplayName() {
    return mdnsDisplayName;
  }

  /**
   * default display name of device over mdns. This is specified at the factory, not specified by
   * the user.
   * @param mdnsDisplayName mdnsDisplayName or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setMdnsDisplayName(java.lang.String mdnsDisplayName) {
    this.mdnsDisplayName = mdnsDisplayName;
    return this;
  }

  /**
   * A user-readable string describing the device's software platform.
   * @return value or {@code null} for none
   */
  public java.lang.String getPlatformBuild() {
    return platformBuild;
  }

  /**
   * A user-readable string describing the device's software platform.
   * @param platformBuild platformBuild or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setPlatformBuild(java.lang.String platformBuild) {
    this.platformBuild = platformBuild;
    return this;
  }

  /**
   * A string describing device's release channel. For cast devices, the string will look like "qa-
   * beta-channel", "eng-no-update", etc.
   * @return value or {@code null} for none
   */
  public java.lang.String getVirtualReleaseChannel() {
    return virtualReleaseChannel;
  }

  /**
   * A string describing device's release channel. For cast devices, the string will look like "qa-
   * beta-channel", "eng-no-update", etc.
   * @param virtualReleaseChannel virtualReleaseChannel or {@code null} for none
   */
  public AssistantApiLoggingOnlyData setVirtualReleaseChannel(java.lang.String virtualReleaseChannel) {
    this.virtualReleaseChannel = virtualReleaseChannel;
    return this;
  }

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

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

}
