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

/**
 * The features supported by the ActionV2 protocol. Note that after we move on to ConversationProto
 * for all surfaces we can remove this message.
 *
 * <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 AssistantApiActionV2SupportedFeatures extends com.google.api.client.json.GenericJson {

  /**
   * This flag is used to work around a bug in AGSA 6.8 that got away. The bug prevents users from
   * accessing their shopping list if the URL of the shopping list is not a keep.google.com URL.
   * This will happen when switch the backend that stores the shopping list from Keep to a backend
   * maintained by the Google Shopping Express team.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean expressUrlInSettingsResponseSupported;

  /**
   * Whether client supports reconnect client input in action v2 payload. This capability is needed
   * to determine if client supports parsing client input payload from actionv2 proto for workflow
   * purposes. See go/personal-workflow. OWNER:nyzstar,vvvemuri.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean reconnectClientInputSupported;

  /**
   * Whether or not the surface supports a simple UnsupportedAction instead of a ModalState punt
   * card for rendering. For ActionV2 punt cards, the ModalState extension on the ResourceSet is the
   * canonical way of building punt cards. However, while most all devices support the ActionV2
   * protocol, not all devices handle the ModalState rendering as part of the ActionV2. For these
   * devices, we want to build a modified ActionV2 for punt cards which omits this ModalState. At
   * present, this is only Android Wear and should not be used for other devices if they support
   * ModalState or Conversation protocol.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean simpleActionV2PuntSupported;

  /**
   * A list of all the action types supported by the client. These should be the string
   * representation of majel.ActionTypes within "quality/majel/api/proto/action_v2.proto".
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<java.lang.String> supportedActionType;

  /**
   * Checks if screenshots can be taken on the client. This field is set on the client from AGSA 7.2
   * onwards.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean takeScreenshotSupported;

  /**
   * If IMMERSIVE_ACTIONS UiType is supported by the client.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean voiceDelightImmersiveUiSupported;

  /**
   * If Voice Delight Stickers are supported by the client. In order to support Voice Delight
   * stickers, the client should know how to extract sticker_url from
   * VoiceDelightSystemInteractionSegment.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean voiceDelightStickersSupported;

  /**
   * If Voice Delight Suggestion Chips are supported by the client. In order to support Voice
   * Delight Suggestion Chips, the client should know how to extract suggestions form
   * VoiceDelightSystemInteraction.ResourceSet.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean voiceDelightSuggestionsSupported;

  /**
   * This flag is used to work around a bug in AGSA 6.8 that got away. The bug prevents users from
   * accessing their shopping list if the URL of the shopping list is not a keep.google.com URL.
   * This will happen when switch the backend that stores the shopping list from Keep to a backend
   * maintained by the Google Shopping Express team.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getExpressUrlInSettingsResponseSupported() {
    return expressUrlInSettingsResponseSupported;
  }

  /**
   * This flag is used to work around a bug in AGSA 6.8 that got away. The bug prevents users from
   * accessing their shopping list if the URL of the shopping list is not a keep.google.com URL.
   * This will happen when switch the backend that stores the shopping list from Keep to a backend
   * maintained by the Google Shopping Express team.
   * @param expressUrlInSettingsResponseSupported expressUrlInSettingsResponseSupported or {@code null} for none
   */
  public AssistantApiActionV2SupportedFeatures setExpressUrlInSettingsResponseSupported(java.lang.Boolean expressUrlInSettingsResponseSupported) {
    this.expressUrlInSettingsResponseSupported = expressUrlInSettingsResponseSupported;
    return this;
  }

  /**
   * Whether client supports reconnect client input in action v2 payload. This capability is needed
   * to determine if client supports parsing client input payload from actionv2 proto for workflow
   * purposes. See go/personal-workflow. OWNER:nyzstar,vvvemuri.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getReconnectClientInputSupported() {
    return reconnectClientInputSupported;
  }

  /**
   * Whether client supports reconnect client input in action v2 payload. This capability is needed
   * to determine if client supports parsing client input payload from actionv2 proto for workflow
   * purposes. See go/personal-workflow. OWNER:nyzstar,vvvemuri.
   * @param reconnectClientInputSupported reconnectClientInputSupported or {@code null} for none
   */
  public AssistantApiActionV2SupportedFeatures setReconnectClientInputSupported(java.lang.Boolean reconnectClientInputSupported) {
    this.reconnectClientInputSupported = reconnectClientInputSupported;
    return this;
  }

  /**
   * Whether or not the surface supports a simple UnsupportedAction instead of a ModalState punt
   * card for rendering. For ActionV2 punt cards, the ModalState extension on the ResourceSet is the
   * canonical way of building punt cards. However, while most all devices support the ActionV2
   * protocol, not all devices handle the ModalState rendering as part of the ActionV2. For these
   * devices, we want to build a modified ActionV2 for punt cards which omits this ModalState. At
   * present, this is only Android Wear and should not be used for other devices if they support
   * ModalState or Conversation protocol.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSimpleActionV2PuntSupported() {
    return simpleActionV2PuntSupported;
  }

  /**
   * Whether or not the surface supports a simple UnsupportedAction instead of a ModalState punt
   * card for rendering. For ActionV2 punt cards, the ModalState extension on the ResourceSet is the
   * canonical way of building punt cards. However, while most all devices support the ActionV2
   * protocol, not all devices handle the ModalState rendering as part of the ActionV2. For these
   * devices, we want to build a modified ActionV2 for punt cards which omits this ModalState. At
   * present, this is only Android Wear and should not be used for other devices if they support
   * ModalState or Conversation protocol.
   * @param simpleActionV2PuntSupported simpleActionV2PuntSupported or {@code null} for none
   */
  public AssistantApiActionV2SupportedFeatures setSimpleActionV2PuntSupported(java.lang.Boolean simpleActionV2PuntSupported) {
    this.simpleActionV2PuntSupported = simpleActionV2PuntSupported;
    return this;
  }

  /**
   * A list of all the action types supported by the client. These should be the string
   * representation of majel.ActionTypes within "quality/majel/api/proto/action_v2.proto".
   * @return value or {@code null} for none
   */
  public java.util.List<java.lang.String> getSupportedActionType() {
    return supportedActionType;
  }

  /**
   * A list of all the action types supported by the client. These should be the string
   * representation of majel.ActionTypes within "quality/majel/api/proto/action_v2.proto".
   * @param supportedActionType supportedActionType or {@code null} for none
   */
  public AssistantApiActionV2SupportedFeatures setSupportedActionType(java.util.List<java.lang.String> supportedActionType) {
    this.supportedActionType = supportedActionType;
    return this;
  }

  /**
   * Checks if screenshots can be taken on the client. This field is set on the client from AGSA 7.2
   * onwards.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getTakeScreenshotSupported() {
    return takeScreenshotSupported;
  }

  /**
   * Checks if screenshots can be taken on the client. This field is set on the client from AGSA 7.2
   * onwards.
   * @param takeScreenshotSupported takeScreenshotSupported or {@code null} for none
   */
  public AssistantApiActionV2SupportedFeatures setTakeScreenshotSupported(java.lang.Boolean takeScreenshotSupported) {
    this.takeScreenshotSupported = takeScreenshotSupported;
    return this;
  }

  /**
   * If IMMERSIVE_ACTIONS UiType is supported by the client.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getVoiceDelightImmersiveUiSupported() {
    return voiceDelightImmersiveUiSupported;
  }

  /**
   * If IMMERSIVE_ACTIONS UiType is supported by the client.
   * @param voiceDelightImmersiveUiSupported voiceDelightImmersiveUiSupported or {@code null} for none
   */
  public AssistantApiActionV2SupportedFeatures setVoiceDelightImmersiveUiSupported(java.lang.Boolean voiceDelightImmersiveUiSupported) {
    this.voiceDelightImmersiveUiSupported = voiceDelightImmersiveUiSupported;
    return this;
  }

  /**
   * If Voice Delight Stickers are supported by the client. In order to support Voice Delight
   * stickers, the client should know how to extract sticker_url from
   * VoiceDelightSystemInteractionSegment.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getVoiceDelightStickersSupported() {
    return voiceDelightStickersSupported;
  }

  /**
   * If Voice Delight Stickers are supported by the client. In order to support Voice Delight
   * stickers, the client should know how to extract sticker_url from
   * VoiceDelightSystemInteractionSegment.
   * @param voiceDelightStickersSupported voiceDelightStickersSupported or {@code null} for none
   */
  public AssistantApiActionV2SupportedFeatures setVoiceDelightStickersSupported(java.lang.Boolean voiceDelightStickersSupported) {
    this.voiceDelightStickersSupported = voiceDelightStickersSupported;
    return this;
  }

  /**
   * If Voice Delight Suggestion Chips are supported by the client. In order to support Voice
   * Delight Suggestion Chips, the client should know how to extract suggestions form
   * VoiceDelightSystemInteraction.ResourceSet.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getVoiceDelightSuggestionsSupported() {
    return voiceDelightSuggestionsSupported;
  }

  /**
   * If Voice Delight Suggestion Chips are supported by the client. In order to support Voice
   * Delight Suggestion Chips, the client should know how to extract suggestions form
   * VoiceDelightSystemInteraction.ResourceSet.
   * @param voiceDelightSuggestionsSupported voiceDelightSuggestionsSupported or {@code null} for none
   */
  public AssistantApiActionV2SupportedFeatures setVoiceDelightSuggestionsSupported(java.lang.Boolean voiceDelightSuggestionsSupported) {
    this.voiceDelightSuggestionsSupported = voiceDelightSuggestionsSupported;
    return this;
  }

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

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

}
