/*
 * Copyright 2020 Google LLC
 *
 * 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
 *
 *     https://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.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/cloud/contactcenterinsights/v1/resources.proto

package com.google.cloud.contactcenterinsights.v1;

public interface ConversationOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.cloud.contactcenterinsights.v1.Conversation)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * Call-specific metadata.
   * </pre>
   *
   * <code>.google.cloud.contactcenterinsights.v1.Conversation.CallMetadata call_metadata = 7;
   * </code>
   *
   * @return Whether the callMetadata field is set.
   */
  boolean hasCallMetadata();
  /**
   *
   *
   * <pre>
   * Call-specific metadata.
   * </pre>
   *
   * <code>.google.cloud.contactcenterinsights.v1.Conversation.CallMetadata call_metadata = 7;
   * </code>
   *
   * @return The callMetadata.
   */
  com.google.cloud.contactcenterinsights.v1.Conversation.CallMetadata getCallMetadata();
  /**
   *
   *
   * <pre>
   * Call-specific metadata.
   * </pre>
   *
   * <code>.google.cloud.contactcenterinsights.v1.Conversation.CallMetadata call_metadata = 7;
   * </code>
   */
  com.google.cloud.contactcenterinsights.v1.Conversation.CallMetadataOrBuilder
      getCallMetadataOrBuilder();

  /**
   *
   *
   * <pre>
   * The time at which this conversation should expire. After this time, the
   * conversation data and any associated analyses will be deleted.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp expire_time = 15;</code>
   *
   * @return Whether the expireTime field is set.
   */
  boolean hasExpireTime();
  /**
   *
   *
   * <pre>
   * The time at which this conversation should expire. After this time, the
   * conversation data and any associated analyses will be deleted.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp expire_time = 15;</code>
   *
   * @return The expireTime.
   */
  com.google.protobuf.Timestamp getExpireTime();
  /**
   *
   *
   * <pre>
   * The time at which this conversation should expire. After this time, the
   * conversation data and any associated analyses will be deleted.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp expire_time = 15;</code>
   */
  com.google.protobuf.TimestampOrBuilder getExpireTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * Input only. The TTL for this resource. If specified, then this TTL will
   * be used to calculate the expire time.
   * </pre>
   *
   * <code>.google.protobuf.Duration ttl = 16 [(.google.api.field_behavior) = INPUT_ONLY];</code>
   *
   * @return Whether the ttl field is set.
   */
  boolean hasTtl();
  /**
   *
   *
   * <pre>
   * Input only. The TTL for this resource. If specified, then this TTL will
   * be used to calculate the expire time.
   * </pre>
   *
   * <code>.google.protobuf.Duration ttl = 16 [(.google.api.field_behavior) = INPUT_ONLY];</code>
   *
   * @return The ttl.
   */
  com.google.protobuf.Duration getTtl();
  /**
   *
   *
   * <pre>
   * Input only. The TTL for this resource. If specified, then this TTL will
   * be used to calculate the expire time.
   * </pre>
   *
   * <code>.google.protobuf.Duration ttl = 16 [(.google.api.field_behavior) = INPUT_ONLY];</code>
   */
  com.google.protobuf.DurationOrBuilder getTtlOrBuilder();

  /**
   *
   *
   * <pre>
   * Immutable. The resource name of the conversation.
   * Format:
   * projects/{project}/locations/{location}/conversations/{conversation}
   * </pre>
   *
   * <code>string name = 1 [(.google.api.field_behavior) = IMMUTABLE];</code>
   *
   * @return The name.
   */
  java.lang.String getName();
  /**
   *
   *
   * <pre>
   * Immutable. The resource name of the conversation.
   * Format:
   * projects/{project}/locations/{location}/conversations/{conversation}
   * </pre>
   *
   * <code>string name = 1 [(.google.api.field_behavior) = IMMUTABLE];</code>
   *
   * @return The bytes for name.
   */
  com.google.protobuf.ByteString getNameBytes();

  /**
   *
   *
   * <pre>
   * The source of the audio and transcription for the conversation.
   * </pre>
   *
   * <code>.google.cloud.contactcenterinsights.v1.ConversationDataSource data_source = 2;</code>
   *
   * @return Whether the dataSource field is set.
   */
  boolean hasDataSource();
  /**
   *
   *
   * <pre>
   * The source of the audio and transcription for the conversation.
   * </pre>
   *
   * <code>.google.cloud.contactcenterinsights.v1.ConversationDataSource data_source = 2;</code>
   *
   * @return The dataSource.
   */
  com.google.cloud.contactcenterinsights.v1.ConversationDataSource getDataSource();
  /**
   *
   *
   * <pre>
   * The source of the audio and transcription for the conversation.
   * </pre>
   *
   * <code>.google.cloud.contactcenterinsights.v1.ConversationDataSource data_source = 2;</code>
   */
  com.google.cloud.contactcenterinsights.v1.ConversationDataSourceOrBuilder
      getDataSourceOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. The time at which the conversation was created.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the createTime field is set.
   */
  boolean hasCreateTime();
  /**
   *
   *
   * <pre>
   * Output only. The time at which the conversation was created.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The createTime.
   */
  com.google.protobuf.Timestamp getCreateTime();
  /**
   *
   *
   * <pre>
   * Output only. The time at which the conversation was created.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.protobuf.TimestampOrBuilder getCreateTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. The most recent time at which the conversation was updated.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the updateTime field is set.
   */
  boolean hasUpdateTime();
  /**
   *
   *
   * <pre>
   * Output only. The most recent time at which the conversation was updated.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The updateTime.
   */
  com.google.protobuf.Timestamp getUpdateTime();
  /**
   *
   *
   * <pre>
   * Output only. The most recent time at which the conversation was updated.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * The time at which the conversation started.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp start_time = 17;</code>
   *
   * @return Whether the startTime field is set.
   */
  boolean hasStartTime();
  /**
   *
   *
   * <pre>
   * The time at which the conversation started.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp start_time = 17;</code>
   *
   * @return The startTime.
   */
  com.google.protobuf.Timestamp getStartTime();
  /**
   *
   *
   * <pre>
   * The time at which the conversation started.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp start_time = 17;</code>
   */
  com.google.protobuf.TimestampOrBuilder getStartTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * A user-specified language code for the conversation.
   * </pre>
   *
   * <code>string language_code = 14;</code>
   *
   * @return The languageCode.
   */
  java.lang.String getLanguageCode();
  /**
   *
   *
   * <pre>
   * A user-specified language code for the conversation.
   * </pre>
   *
   * <code>string language_code = 14;</code>
   *
   * @return The bytes for languageCode.
   */
  com.google.protobuf.ByteString getLanguageCodeBytes();

  /**
   *
   *
   * <pre>
   * An opaque, user-specified string representing the human agent who handled
   * the conversation.
   * </pre>
   *
   * <code>string agent_id = 5;</code>
   *
   * @return The agentId.
   */
  java.lang.String getAgentId();
  /**
   *
   *
   * <pre>
   * An opaque, user-specified string representing the human agent who handled
   * the conversation.
   * </pre>
   *
   * <code>string agent_id = 5;</code>
   *
   * @return The bytes for agentId.
   */
  com.google.protobuf.ByteString getAgentIdBytes();

  /**
   *
   *
   * <pre>
   * A map for the user to specify any custom fields. A maximum of 20 labels per
   * conversation is allowed, with a maximum of 256 characters per entry.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 6;</code>
   */
  int getLabelsCount();
  /**
   *
   *
   * <pre>
   * A map for the user to specify any custom fields. A maximum of 20 labels per
   * conversation is allowed, with a maximum of 256 characters per entry.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 6;</code>
   */
  boolean containsLabels(java.lang.String key);
  /** Use {@link #getLabelsMap()} instead. */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, java.lang.String> getLabels();
  /**
   *
   *
   * <pre>
   * A map for the user to specify any custom fields. A maximum of 20 labels per
   * conversation is allowed, with a maximum of 256 characters per entry.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 6;</code>
   */
  java.util.Map<java.lang.String, java.lang.String> getLabelsMap();
  /**
   *
   *
   * <pre>
   * A map for the user to specify any custom fields. A maximum of 20 labels per
   * conversation is allowed, with a maximum of 256 characters per entry.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 6;</code>
   */
  /* nullable */
  java.lang.String getLabelsOrDefault(
      java.lang.String key,
      /* nullable */
      java.lang.String defaultValue);
  /**
   *
   *
   * <pre>
   * A map for the user to specify any custom fields. A maximum of 20 labels per
   * conversation is allowed, with a maximum of 256 characters per entry.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 6;</code>
   */
  java.lang.String getLabelsOrThrow(java.lang.String key);

  /**
   *
   *
   * <pre>
   * Output only. The conversation transcript.
   * </pre>
   *
   * <code>
   * .google.cloud.contactcenterinsights.v1.Conversation.Transcript transcript = 8 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the transcript field is set.
   */
  boolean hasTranscript();
  /**
   *
   *
   * <pre>
   * Output only. The conversation transcript.
   * </pre>
   *
   * <code>
   * .google.cloud.contactcenterinsights.v1.Conversation.Transcript transcript = 8 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The transcript.
   */
  com.google.cloud.contactcenterinsights.v1.Conversation.Transcript getTranscript();
  /**
   *
   *
   * <pre>
   * Output only. The conversation transcript.
   * </pre>
   *
   * <code>
   * .google.cloud.contactcenterinsights.v1.Conversation.Transcript transcript = 8 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.cloud.contactcenterinsights.v1.Conversation.TranscriptOrBuilder
      getTranscriptOrBuilder();

  /**
   *
   *
   * <pre>
   * Immutable. The conversation medium, if unspecified will default to
   * PHONE_CALL.
   * </pre>
   *
   * <code>
   * .google.cloud.contactcenterinsights.v1.Conversation.Medium medium = 9 [(.google.api.field_behavior) = IMMUTABLE];
   * </code>
   *
   * @return The enum numeric value on the wire for medium.
   */
  int getMediumValue();
  /**
   *
   *
   * <pre>
   * Immutable. The conversation medium, if unspecified will default to
   * PHONE_CALL.
   * </pre>
   *
   * <code>
   * .google.cloud.contactcenterinsights.v1.Conversation.Medium medium = 9 [(.google.api.field_behavior) = IMMUTABLE];
   * </code>
   *
   * @return The medium.
   */
  com.google.cloud.contactcenterinsights.v1.Conversation.Medium getMedium();

  /**
   *
   *
   * <pre>
   * Output only. The duration of the conversation.
   * </pre>
   *
   * <code>.google.protobuf.Duration duration = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the duration field is set.
   */
  boolean hasDuration();
  /**
   *
   *
   * <pre>
   * Output only. The duration of the conversation.
   * </pre>
   *
   * <code>.google.protobuf.Duration duration = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The duration.
   */
  com.google.protobuf.Duration getDuration();
  /**
   *
   *
   * <pre>
   * Output only. The duration of the conversation.
   * </pre>
   *
   * <code>.google.protobuf.Duration duration = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.protobuf.DurationOrBuilder getDurationOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. The number of turns in the conversation.
   * </pre>
   *
   * <code>int32 turn_count = 11 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return The turnCount.
   */
  int getTurnCount();

  /**
   *
   *
   * <pre>
   * Output only. The conversation's latest analysis, if one exists.
   * </pre>
   *
   * <code>
   * .google.cloud.contactcenterinsights.v1.Analysis latest_analysis = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the latestAnalysis field is set.
   */
  boolean hasLatestAnalysis();
  /**
   *
   *
   * <pre>
   * Output only. The conversation's latest analysis, if one exists.
   * </pre>
   *
   * <code>
   * .google.cloud.contactcenterinsights.v1.Analysis latest_analysis = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The latestAnalysis.
   */
  com.google.cloud.contactcenterinsights.v1.Analysis getLatestAnalysis();
  /**
   *
   *
   * <pre>
   * Output only. The conversation's latest analysis, if one exists.
   * </pre>
   *
   * <code>
   * .google.cloud.contactcenterinsights.v1.Analysis latest_analysis = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.cloud.contactcenterinsights.v1.AnalysisOrBuilder getLatestAnalysisOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. Latest summary of the conversation.
   * </pre>
   *
   * <code>
   * .google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData latest_summary = 20 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the latestSummary field is set.
   */
  boolean hasLatestSummary();
  /**
   *
   *
   * <pre>
   * Output only. Latest summary of the conversation.
   * </pre>
   *
   * <code>
   * .google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData latest_summary = 20 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The latestSummary.
   */
  com.google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData
      getLatestSummary();
  /**
   *
   *
   * <pre>
   * Output only. Latest summary of the conversation.
   * </pre>
   *
   * <code>
   * .google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData latest_summary = 20 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionDataOrBuilder
      getLatestSummaryOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. The annotations that were generated during the customer and
   * agent interaction.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.contactcenterinsights.v1.RuntimeAnnotation runtime_annotations = 13 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  java.util.List<com.google.cloud.contactcenterinsights.v1.RuntimeAnnotation>
      getRuntimeAnnotationsList();
  /**
   *
   *
   * <pre>
   * Output only. The annotations that were generated during the customer and
   * agent interaction.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.contactcenterinsights.v1.RuntimeAnnotation runtime_annotations = 13 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.cloud.contactcenterinsights.v1.RuntimeAnnotation getRuntimeAnnotations(int index);
  /**
   *
   *
   * <pre>
   * Output only. The annotations that were generated during the customer and
   * agent interaction.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.contactcenterinsights.v1.RuntimeAnnotation runtime_annotations = 13 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  int getRuntimeAnnotationsCount();
  /**
   *
   *
   * <pre>
   * Output only. The annotations that were generated during the customer and
   * agent interaction.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.contactcenterinsights.v1.RuntimeAnnotation runtime_annotations = 13 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  java.util.List<? extends com.google.cloud.contactcenterinsights.v1.RuntimeAnnotationOrBuilder>
      getRuntimeAnnotationsOrBuilderList();
  /**
   *
   *
   * <pre>
   * Output only. The annotations that were generated during the customer and
   * agent interaction.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.contactcenterinsights.v1.RuntimeAnnotation runtime_annotations = 13 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.cloud.contactcenterinsights.v1.RuntimeAnnotationOrBuilder
      getRuntimeAnnotationsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Output only. All the matched Dialogflow intents in the call. The key
   * corresponds to a Dialogflow intent, format:
   * projects/{project}/agent/{agent}/intents/{intent}
   * </pre>
   *
   * <code>
   * map&lt;string, .google.cloud.contactcenterinsights.v1.DialogflowIntent&gt; dialogflow_intents = 18 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  int getDialogflowIntentsCount();
  /**
   *
   *
   * <pre>
   * Output only. All the matched Dialogflow intents in the call. The key
   * corresponds to a Dialogflow intent, format:
   * projects/{project}/agent/{agent}/intents/{intent}
   * </pre>
   *
   * <code>
   * map&lt;string, .google.cloud.contactcenterinsights.v1.DialogflowIntent&gt; dialogflow_intents = 18 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  boolean containsDialogflowIntents(java.lang.String key);
  /** Use {@link #getDialogflowIntentsMap()} instead. */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, com.google.cloud.contactcenterinsights.v1.DialogflowIntent>
      getDialogflowIntents();
  /**
   *
   *
   * <pre>
   * Output only. All the matched Dialogflow intents in the call. The key
   * corresponds to a Dialogflow intent, format:
   * projects/{project}/agent/{agent}/intents/{intent}
   * </pre>
   *
   * <code>
   * map&lt;string, .google.cloud.contactcenterinsights.v1.DialogflowIntent&gt; dialogflow_intents = 18 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  java.util.Map<java.lang.String, com.google.cloud.contactcenterinsights.v1.DialogflowIntent>
      getDialogflowIntentsMap();
  /**
   *
   *
   * <pre>
   * Output only. All the matched Dialogflow intents in the call. The key
   * corresponds to a Dialogflow intent, format:
   * projects/{project}/agent/{agent}/intents/{intent}
   * </pre>
   *
   * <code>
   * map&lt;string, .google.cloud.contactcenterinsights.v1.DialogflowIntent&gt; dialogflow_intents = 18 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  /* nullable */
  com.google.cloud.contactcenterinsights.v1.DialogflowIntent getDialogflowIntentsOrDefault(
      java.lang.String key,
      /* nullable */
      com.google.cloud.contactcenterinsights.v1.DialogflowIntent defaultValue);
  /**
   *
   *
   * <pre>
   * Output only. All the matched Dialogflow intents in the call. The key
   * corresponds to a Dialogflow intent, format:
   * projects/{project}/agent/{agent}/intents/{intent}
   * </pre>
   *
   * <code>
   * map&lt;string, .google.cloud.contactcenterinsights.v1.DialogflowIntent&gt; dialogflow_intents = 18 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.cloud.contactcenterinsights.v1.DialogflowIntent getDialogflowIntentsOrThrow(
      java.lang.String key);

  /**
   *
   *
   * <pre>
   * Obfuscated user ID which the customer sent to us.
   * </pre>
   *
   * <code>string obfuscated_user_id = 21;</code>
   *
   * @return The obfuscatedUserId.
   */
  java.lang.String getObfuscatedUserId();
  /**
   *
   *
   * <pre>
   * Obfuscated user ID which the customer sent to us.
   * </pre>
   *
   * <code>string obfuscated_user_id = 21;</code>
   *
   * @return The bytes for obfuscatedUserId.
   */
  com.google.protobuf.ByteString getObfuscatedUserIdBytes();

  public com.google.cloud.contactcenterinsights.v1.Conversation.MetadataCase getMetadataCase();

  public com.google.cloud.contactcenterinsights.v1.Conversation.ExpirationCase getExpirationCase();
}
