<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="discoveryengine_v1alpha.html">Discovery Engine API</a> . <a href="discoveryengine_v1alpha.projects.html">projects</a> . <a href="discoveryengine_v1alpha.projects.locations.html">locations</a> . <a href="discoveryengine_v1alpha.projects.locations.collections.html">collections</a> . <a href="discoveryengine_v1alpha.projects.locations.collections.engines.html">engines</a> . <a href="discoveryengine_v1alpha.projects.locations.collections.engines.conversations.html">conversations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#converse">converse(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Converses a conversation.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a Conversation. If the Conversation to create already exists, an ALREADY_EXISTS error is returned.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a Conversation. If the Conversation to delete does not exist, a NOT_FOUND error is returned.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a Conversation.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all Conversations by their parent DataStore.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a Conversation. Conversation action type cannot be changed. If the Conversation to update does not exist, a NOT_FOUND error is returned.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="converse">converse(name, body=None, x__xgafv=None)</code>
  <pre>Converses a conversation.

Args:
  name: string, Required. The resource name of the Conversation to get. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store_id}/conversations/{conversation_id}`. Use `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store_id}/conversations/-` to activate auto session mode, which automatically creates a new conversation inside a ConverseConversation session. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for ConversationalSearchService.ConverseConversation method.
  &quot;boostSpec&quot;: { # Boost specification to boost certain documents. # Boost specification to boost certain documents in search results which may affect the converse response. For more information on boosting, see [Boosting](https://cloud.google.com/retail/docs/boosting#boost)
    &quot;conditionBoostSpecs&quot;: [ # Condition boost specifications. If a document matches multiple conditions in the specifications, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 20.
      { # Boost applies to documents which match a condition.
        &quot;boost&quot;: 3.14, # Strength of the condition boost, which should be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the document a big promotion. However, it does not necessarily mean that the boosted document will be the top result at all times, nor that other documents will be excluded. Results could still be shown even when none of them matches the condition. And results that are significantly more relevant to the search query can still trump your heavily favored but irrelevant documents. Setting to -1.0 gives the document a big demotion. However, results that are deeply relevant might still be shown. The document will have an upstream battle to get a fairly high ranking, but it is not blocked out completely. Setting to 0.0 means no boost applied. The boosting condition is ignored. Only one of the (condition, boost) combination or the boost_control_spec below are set. If both are set then the global boost is ignored and the more fine-grained boost_control_spec is applied.
        &quot;boostControlSpec&quot;: { # Specification for custom ranking based on customer specified attribute value. It provides more controls for customized ranking than the simple (condition, boost) combination above. # Complex specification for custom ranking based on customer defined attribute value.
          &quot;attributeType&quot;: &quot;A String&quot;, # The attribute type to be used to determine the boost amount. The attribute value can be derived from the field value of the specified field_name. In the case of numerical it is straightforward i.e. attribute_value = numerical_field_value. In the case of freshness however, attribute_value = (time.now() - datetime_field_value).
          &quot;controlPoints&quot;: [ # The control points used to define the curve. The monotonic function (defined through the interpolation_type above) passes through the control points listed here.
            { # The control points used to define the curve. The curve defined through these control points can only be monotonically increasing or decreasing(constant values are acceptable).
              &quot;attributeValue&quot;: &quot;A String&quot;, # Can be one of: 1. The numerical field value. 2. The duration spec for freshness: The value must be formatted as an XSD `dayTimeDuration` value (a restricted subset of an ISO 8601 duration value). The pattern for this is: `nDnM]`.
              &quot;boostAmount&quot;: 3.14, # The value between -1 to 1 by which to boost the score if the attribute_value evaluates to the value specified above.
            },
          ],
          &quot;fieldName&quot;: &quot;A String&quot;, # The name of the field whose value will be used to determine the boost amount.
          &quot;interpolationType&quot;: &quot;A String&quot;, # The interpolation type to be applied to connect the control points listed below.
        },
        &quot;condition&quot;: &quot;A String&quot;, # An expression which specifies a boost condition. The syntax and supported fields are the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Examples: * To boost documents with document ID &quot;doc_1&quot; or &quot;doc_2&quot;, and color &quot;Red&quot; or &quot;Blue&quot;: `(document_id: ANY(&quot;doc_1&quot;, &quot;doc_2&quot;)) AND (color: ANY(&quot;Red&quot;, &quot;Blue&quot;))`
      },
    ],
  },
  &quot;conversation&quot;: { # External conversation proto definition. # The conversation to be used by auto session only. The name field will be ignored as we automatically assign new name for the conversation in auto session.
    &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time the conversation finished.
    &quot;messages&quot;: [ # Conversation messages.
      { # Defines a conversation message.
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. Message creation timestamp.
        &quot;reply&quot;: { # Defines a reply message to user. # Search reply.
          &quot;references&quot;: [ # References in the reply.
            { # Defines reference in reply.
              &quot;anchorText&quot;: &quot;A String&quot;, # Anchor text.
              &quot;end&quot;: 42, # Anchor text end index.
              &quot;start&quot;: 42, # Anchor text start index.
              &quot;uri&quot;: &quot;A String&quot;, # URI link reference.
            },
          ],
          &quot;reply&quot;: &quot;A String&quot;, # DEPRECATED: use `summary` instead. Text reply.
          &quot;summary&quot;: { # Summary of the top N search results specified by the summary spec. # Summary based on search results.
            &quot;safetyAttributes&quot;: { # Safety Attribute categories and their associated confidence scores. # A collection of Safety Attribute categories and their associated confidence scores.
              &quot;categories&quot;: [ # The display names of Safety Attribute categories associated with the generated content. Order matches the Scores.
                &quot;A String&quot;,
              ],
              &quot;scores&quot;: [ # The confidence scores of the each category, higher value means higher confidence. Order matches the Categories.
                3.14,
              ],
            },
            &quot;summarySkippedReasons&quot;: [ # Additional summary-skipped reasons. This provides the reason for ignored cases. If nothing is skipped, this field is not set.
              &quot;A String&quot;,
            ],
            &quot;summaryText&quot;: &quot;A String&quot;, # The summary content.
            &quot;summaryWithMetadata&quot;: { # Summary with metadata information. # Summary with metadata information.
              &quot;blobAttachments&quot;: [ # Output only. Store multimodal data for answer enhancement.
                { # Stores binarydata attached to text answer, e.g. image, video, audio, etc.
                  &quot;attributionType&quot;: &quot;A String&quot;, # Output only. The attribution type of the blob.
                  &quot;data&quot;: { # Stores type and data of the blob. # Output only. The blob data.
                    &quot;data&quot;: &quot;A String&quot;, # Output only. Raw bytes.
                    &quot;mimeType&quot;: &quot;A String&quot;, # Output only. The media type (MIME type) of the generated data.
                  },
                },
              ],
              &quot;citationMetadata&quot;: { # Citation metadata. # Citation metadata for given summary.
                &quot;citations&quot;: [ # Citations for segments.
                  { # Citation info for a segment.
                    &quot;endIndex&quot;: &quot;A String&quot;, # End of the attributed segment, exclusive.
                    &quot;sources&quot;: [ # Citation sources for the attributed segment.
                      { # Citation source.
                        &quot;referenceIndex&quot;: &quot;A String&quot;, # Document reference index from SummaryWithMetadata.references. It is 0-indexed and the value will be zero if the reference_index is not set explicitly.
                      },
                    ],
                    &quot;startIndex&quot;: &quot;A String&quot;, # Index indicates the start of the segment, measured in bytes/unicode.
                  },
                ],
              },
              &quot;references&quot;: [ # Document References.
                { # Document reference.
                  &quot;chunkContents&quot;: [ # List of cited chunk contents derived from document content.
                    { # Chunk content.
                      &quot;blobAttachmentIndexes&quot;: [ # Output only. Stores indexes of blobattachments linked to this chunk.
                        &quot;A String&quot;,
                      ],
                      &quot;content&quot;: &quot;A String&quot;, # Chunk textual content.
                      &quot;pageIdentifier&quot;: &quot;A String&quot;, # Page identifier.
                    },
                  ],
                  &quot;document&quot;: &quot;A String&quot;, # Required. Document.name of the document. Full resource name of the referenced document, in the format `projects/*/locations/*/collections/*/dataStores/*/branches/*/documents/*`.
                  &quot;title&quot;: &quot;A String&quot;, # Title of the document.
                  &quot;uri&quot;: &quot;A String&quot;, # Cloud Storage or HTTP uri for the document.
                },
              ],
              &quot;summary&quot;: &quot;A String&quot;, # Summary text with no citation information.
            },
          },
        },
        &quot;userInput&quot;: { # Defines text input. # User text input.
          &quot;context&quot;: { # Defines context of the conversation # Conversation context of the input.
            &quot;activeDocument&quot;: &quot;A String&quot;, # The current active document the user opened. It contains the document resource reference.
            &quot;contextDocuments&quot;: [ # The current list of documents the user is seeing. It contains the document resource references.
              &quot;A String&quot;,
            ],
          },
          &quot;input&quot;: &quot;A String&quot;, # Text input.
        },
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Immutable. Fully qualified name `projects/{project}/locations/global/collections/{collection}/dataStore/*/conversations/*` or `projects/{project}/locations/global/collections/{collection}/engines/*/conversations/*`.
    &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time the conversation started.
    &quot;state&quot;: &quot;A String&quot;, # The state of the Conversation.
    &quot;userPseudoId&quot;: &quot;A String&quot;, # A unique identifier for tracking users.
  },
  &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the documents being filtered. Filter expression is case-sensitive. This will be used to filter search results which may affect the summary response. If this field is unrecognizable, an `INVALID_ARGUMENT` is returned. Filtering in Vertex AI Search is done by mapping the LHS filter key to a key property defined in the Vertex AI Search backend -- this mapping is defined by the customer in their schema. For example a media customer might have a field &#x27;name&#x27; in their schema. In this case the filter would look like this: filter --&gt; name:&#x27;ANY(&quot;king kong&quot;)&#x27; For more information about filtering including syntax and filter operators, see [Filter](https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata)
  &quot;query&quot;: { # Defines text input. # Required. Current user input.
    &quot;context&quot;: { # Defines context of the conversation # Conversation context of the input.
      &quot;activeDocument&quot;: &quot;A String&quot;, # The current active document the user opened. It contains the document resource reference.
      &quot;contextDocuments&quot;: [ # The current list of documents the user is seeing. It contains the document resource references.
        &quot;A String&quot;,
      ],
    },
    &quot;input&quot;: &quot;A String&quot;, # Text input.
  },
  &quot;safeSearch&quot;: True or False, # Whether to turn on safe search.
  &quot;servingConfig&quot;: &quot;A String&quot;, # The resource name of the Serving Config to use. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store_id}/servingConfigs/{serving_config_id}` If this is not set, the default serving config will be used.
  &quot;summarySpec&quot;: { # A specification for configuring a summary returned in a search response. # A specification for configuring the summary returned in the response.
    &quot;ignoreAdversarialQuery&quot;: True or False, # Specifies whether to filter out adversarial queries. The default value is `false`. Google employs search-query classification to detect adversarial queries. No summary is returned if the search query is classified as an adversarial query. For example, a user might ask a question regarding negative comments about the company or submit a query designed to generate unsafe, policy-violating output. If this field is set to `true`, we skip generating summaries for adversarial queries and return fallback messages instead.
    &quot;ignoreJailBreakingQuery&quot;: True or False, # Optional. Specifies whether to filter out jail-breaking queries. The default value is `false`. Google employs search-query classification to detect jail-breaking queries. No summary is returned if the search query is classified as a jail-breaking query. A user might add instructions to the query to change the tone, style, language, content of the answer, or ask the model to act as a different entity, e.g. &quot;Reply in the tone of a competing company&#x27;s CEO&quot;. If this field is set to `true`, we skip generating summaries for jail-breaking queries and return fallback messages instead.
    &quot;ignoreLowRelevantContent&quot;: True or False, # Specifies whether to filter out queries that have low relevance. The default value is `false`. If this field is set to `false`, all search results are used regardless of relevance to generate answers. If set to `true`, only queries with high relevance search results will generate answers.
    &quot;ignoreNonSummarySeekingQuery&quot;: True or False, # Specifies whether to filter out queries that are not summary-seeking. The default value is `false`. Google employs search-query classification to detect summary-seeking queries. No summary is returned if the search query is classified as a non-summary seeking query. For example, `why is the sky blue` and `Who is the best soccer player in the world?` are summary-seeking queries, but `SFO airport` and `world cup 2026` are not. They are most likely navigational queries. If this field is set to `true`, we skip generating summaries for non-summary seeking queries and return fallback messages instead.
    &quot;includeCitations&quot;: True or False, # Specifies whether to include citations in the summary. The default value is `false`. When this field is set to `true`, summaries include in-line citation numbers. Example summary including citations: BigQuery is Google Cloud&#x27;s fully managed and completely serverless enterprise data warehouse [1]. BigQuery supports all data types, works across clouds, and has built-in machine learning and business intelligence, all within a unified platform [2, 3]. The citation numbers refer to the returned search results and are 1-indexed. For example, [1] means that the sentence is attributed to the first search result. [2, 3] means that the sentence is attributed to both the second and third search results.
    &quot;languageCode&quot;: &quot;A String&quot;, # Language code for Summary. Use language tags defined by [BCP47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). Note: This is an experimental feature.
    &quot;modelPromptSpec&quot;: { # Specification of the prompt to use with the model. # If specified, the spec will be used to modify the prompt provided to the LLM.
      &quot;preamble&quot;: &quot;A String&quot;, # Text at the beginning of the prompt that instructs the assistant. Examples are available in the user guide.
    },
    &quot;modelSpec&quot;: { # Specification of the model. # If specified, the spec will be used to modify the model specification provided to the LLM.
      &quot;version&quot;: &quot;A String&quot;, # The model version used to generate the summary. Supported values are: * `stable`: string. Default value when no value is specified. Uses a generally available, fine-tuned model. For more information, see [Answer generation model versions and lifecycle](https://cloud.google.com/generative-ai-app-builder/docs/answer-generation-models). * `preview`: string. (Public preview) Uses a preview model. For more information, see [Answer generation model versions and lifecycle](https://cloud.google.com/generative-ai-app-builder/docs/answer-generation-models).
    },
    &quot;multimodalSpec&quot;: { # Multimodal specification: Will return an image from specified source. If multiple sources are specified, the pick is a quality based decision. # Optional. Multimodal specification.
      &quot;imageSource&quot;: &quot;A String&quot;, # Optional. Source of image returned in the answer.
    },
    &quot;summaryResultCount&quot;: 42, # The number of top results to generate the summary from. If the number of results returned is less than `summaryResultCount`, the summary is generated from all of the results. At most 10 results for documents mode, or 50 for chunks mode, can be used to generate a summary. The chunks mode is used when SearchRequest.ContentSearchSpec.search_result_mode is set to CHUNKS.
    &quot;useSemanticChunks&quot;: True or False, # If true, answer will be generated from most relevant chunks from top search results. This feature will improve summary quality. Note that with this feature enabled, not all top search results will be referenced and included in the reference list, so the citation source index only points to the search results listed in the reference list.
  },
  &quot;userLabels&quot;: { # The user labels applied to a resource must meet the following requirements: * Each resource can have multiple labels, up to a maximum of 64. * Each label must be a key-value pair. * Keys have a minimum length of 1 character and a maximum length of 63 characters and cannot be empty. Values can be empty and have a maximum length of 63 characters. * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. All characters must use UTF-8 encoding, and international characters are allowed. * The key portion of a label must be unique. However, you can use the same key with multiple resources. * Keys must start with a lowercase letter or international character. See [Google Cloud Document](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements) for more details.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for ConversationalSearchService.ConverseConversation method.
  &quot;conversation&quot;: { # External conversation proto definition. # Updated conversation including the answer.
    &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time the conversation finished.
    &quot;messages&quot;: [ # Conversation messages.
      { # Defines a conversation message.
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. Message creation timestamp.
        &quot;reply&quot;: { # Defines a reply message to user. # Search reply.
          &quot;references&quot;: [ # References in the reply.
            { # Defines reference in reply.
              &quot;anchorText&quot;: &quot;A String&quot;, # Anchor text.
              &quot;end&quot;: 42, # Anchor text end index.
              &quot;start&quot;: 42, # Anchor text start index.
              &quot;uri&quot;: &quot;A String&quot;, # URI link reference.
            },
          ],
          &quot;reply&quot;: &quot;A String&quot;, # DEPRECATED: use `summary` instead. Text reply.
          &quot;summary&quot;: { # Summary of the top N search results specified by the summary spec. # Summary based on search results.
            &quot;safetyAttributes&quot;: { # Safety Attribute categories and their associated confidence scores. # A collection of Safety Attribute categories and their associated confidence scores.
              &quot;categories&quot;: [ # The display names of Safety Attribute categories associated with the generated content. Order matches the Scores.
                &quot;A String&quot;,
              ],
              &quot;scores&quot;: [ # The confidence scores of the each category, higher value means higher confidence. Order matches the Categories.
                3.14,
              ],
            },
            &quot;summarySkippedReasons&quot;: [ # Additional summary-skipped reasons. This provides the reason for ignored cases. If nothing is skipped, this field is not set.
              &quot;A String&quot;,
            ],
            &quot;summaryText&quot;: &quot;A String&quot;, # The summary content.
            &quot;summaryWithMetadata&quot;: { # Summary with metadata information. # Summary with metadata information.
              &quot;blobAttachments&quot;: [ # Output only. Store multimodal data for answer enhancement.
                { # Stores binarydata attached to text answer, e.g. image, video, audio, etc.
                  &quot;attributionType&quot;: &quot;A String&quot;, # Output only. The attribution type of the blob.
                  &quot;data&quot;: { # Stores type and data of the blob. # Output only. The blob data.
                    &quot;data&quot;: &quot;A String&quot;, # Output only. Raw bytes.
                    &quot;mimeType&quot;: &quot;A String&quot;, # Output only. The media type (MIME type) of the generated data.
                  },
                },
              ],
              &quot;citationMetadata&quot;: { # Citation metadata. # Citation metadata for given summary.
                &quot;citations&quot;: [ # Citations for segments.
                  { # Citation info for a segment.
                    &quot;endIndex&quot;: &quot;A String&quot;, # End of the attributed segment, exclusive.
                    &quot;sources&quot;: [ # Citation sources for the attributed segment.
                      { # Citation source.
                        &quot;referenceIndex&quot;: &quot;A String&quot;, # Document reference index from SummaryWithMetadata.references. It is 0-indexed and the value will be zero if the reference_index is not set explicitly.
                      },
                    ],
                    &quot;startIndex&quot;: &quot;A String&quot;, # Index indicates the start of the segment, measured in bytes/unicode.
                  },
                ],
              },
              &quot;references&quot;: [ # Document References.
                { # Document reference.
                  &quot;chunkContents&quot;: [ # List of cited chunk contents derived from document content.
                    { # Chunk content.
                      &quot;blobAttachmentIndexes&quot;: [ # Output only. Stores indexes of blobattachments linked to this chunk.
                        &quot;A String&quot;,
                      ],
                      &quot;content&quot;: &quot;A String&quot;, # Chunk textual content.
                      &quot;pageIdentifier&quot;: &quot;A String&quot;, # Page identifier.
                    },
                  ],
                  &quot;document&quot;: &quot;A String&quot;, # Required. Document.name of the document. Full resource name of the referenced document, in the format `projects/*/locations/*/collections/*/dataStores/*/branches/*/documents/*`.
                  &quot;title&quot;: &quot;A String&quot;, # Title of the document.
                  &quot;uri&quot;: &quot;A String&quot;, # Cloud Storage or HTTP uri for the document.
                },
              ],
              &quot;summary&quot;: &quot;A String&quot;, # Summary text with no citation information.
            },
          },
        },
        &quot;userInput&quot;: { # Defines text input. # User text input.
          &quot;context&quot;: { # Defines context of the conversation # Conversation context of the input.
            &quot;activeDocument&quot;: &quot;A String&quot;, # The current active document the user opened. It contains the document resource reference.
            &quot;contextDocuments&quot;: [ # The current list of documents the user is seeing. It contains the document resource references.
              &quot;A String&quot;,
            ],
          },
          &quot;input&quot;: &quot;A String&quot;, # Text input.
        },
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Immutable. Fully qualified name `projects/{project}/locations/global/collections/{collection}/dataStore/*/conversations/*` or `projects/{project}/locations/global/collections/{collection}/engines/*/conversations/*`.
    &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time the conversation started.
    &quot;state&quot;: &quot;A String&quot;, # The state of the Conversation.
    &quot;userPseudoId&quot;: &quot;A String&quot;, # A unique identifier for tracking users.
  },
  &quot;relatedQuestions&quot;: [ # Suggested related questions.
    &quot;A String&quot;,
  ],
  &quot;reply&quot;: { # Defines a reply message to user. # Answer to the current query.
    &quot;references&quot;: [ # References in the reply.
      { # Defines reference in reply.
        &quot;anchorText&quot;: &quot;A String&quot;, # Anchor text.
        &quot;end&quot;: 42, # Anchor text end index.
        &quot;start&quot;: 42, # Anchor text start index.
        &quot;uri&quot;: &quot;A String&quot;, # URI link reference.
      },
    ],
    &quot;reply&quot;: &quot;A String&quot;, # DEPRECATED: use `summary` instead. Text reply.
    &quot;summary&quot;: { # Summary of the top N search results specified by the summary spec. # Summary based on search results.
      &quot;safetyAttributes&quot;: { # Safety Attribute categories and their associated confidence scores. # A collection of Safety Attribute categories and their associated confidence scores.
        &quot;categories&quot;: [ # The display names of Safety Attribute categories associated with the generated content. Order matches the Scores.
          &quot;A String&quot;,
        ],
        &quot;scores&quot;: [ # The confidence scores of the each category, higher value means higher confidence. Order matches the Categories.
          3.14,
        ],
      },
      &quot;summarySkippedReasons&quot;: [ # Additional summary-skipped reasons. This provides the reason for ignored cases. If nothing is skipped, this field is not set.
        &quot;A String&quot;,
      ],
      &quot;summaryText&quot;: &quot;A String&quot;, # The summary content.
      &quot;summaryWithMetadata&quot;: { # Summary with metadata information. # Summary with metadata information.
        &quot;blobAttachments&quot;: [ # Output only. Store multimodal data for answer enhancement.
          { # Stores binarydata attached to text answer, e.g. image, video, audio, etc.
            &quot;attributionType&quot;: &quot;A String&quot;, # Output only. The attribution type of the blob.
            &quot;data&quot;: { # Stores type and data of the blob. # Output only. The blob data.
              &quot;data&quot;: &quot;A String&quot;, # Output only. Raw bytes.
              &quot;mimeType&quot;: &quot;A String&quot;, # Output only. The media type (MIME type) of the generated data.
            },
          },
        ],
        &quot;citationMetadata&quot;: { # Citation metadata. # Citation metadata for given summary.
          &quot;citations&quot;: [ # Citations for segments.
            { # Citation info for a segment.
              &quot;endIndex&quot;: &quot;A String&quot;, # End of the attributed segment, exclusive.
              &quot;sources&quot;: [ # Citation sources for the attributed segment.
                { # Citation source.
                  &quot;referenceIndex&quot;: &quot;A String&quot;, # Document reference index from SummaryWithMetadata.references. It is 0-indexed and the value will be zero if the reference_index is not set explicitly.
                },
              ],
              &quot;startIndex&quot;: &quot;A String&quot;, # Index indicates the start of the segment, measured in bytes/unicode.
            },
          ],
        },
        &quot;references&quot;: [ # Document References.
          { # Document reference.
            &quot;chunkContents&quot;: [ # List of cited chunk contents derived from document content.
              { # Chunk content.
                &quot;blobAttachmentIndexes&quot;: [ # Output only. Stores indexes of blobattachments linked to this chunk.
                  &quot;A String&quot;,
                ],
                &quot;content&quot;: &quot;A String&quot;, # Chunk textual content.
                &quot;pageIdentifier&quot;: &quot;A String&quot;, # Page identifier.
              },
            ],
            &quot;document&quot;: &quot;A String&quot;, # Required. Document.name of the document. Full resource name of the referenced document, in the format `projects/*/locations/*/collections/*/dataStores/*/branches/*/documents/*`.
            &quot;title&quot;: &quot;A String&quot;, # Title of the document.
            &quot;uri&quot;: &quot;A String&quot;, # Cloud Storage or HTTP uri for the document.
          },
        ],
        &quot;summary&quot;: &quot;A String&quot;, # Summary text with no citation information.
      },
    },
  },
  &quot;searchResults&quot;: [ # Search Results.
    { # Represents the search results.
      &quot;chunk&quot;: { # Chunk captures all raw metadata information of items to be recommended or searched in the chunk mode. # The chunk data in the search response if the SearchRequest.ContentSearchSpec.search_result_mode is set to CHUNKS.
        &quot;annotationContents&quot;: [ # Output only. Annotation contents if the current chunk contains annotations.
          &quot;A String&quot;,
        ],
        &quot;annotationMetadata&quot;: [ # Output only. The annotation metadata includes structured content in the current chunk.
          { # The annotation metadata includes structured content in the current chunk.
            &quot;imageId&quot;: &quot;A String&quot;, # Output only. Image id is provided if the structured content is based on an image.
            &quot;structuredContent&quot;: { # The structured content information. # Output only. The structured content information.
              &quot;content&quot;: &quot;A String&quot;, # Output only. The content of the structured content.
              &quot;structureType&quot;: &quot;A String&quot;, # Output only. The structure type of the structured content.
            },
          },
        ],
        &quot;chunkMetadata&quot;: { # Metadata of the current chunk. This field is only populated on SearchService.Search API. # Output only. Metadata of the current chunk.
          &quot;nextChunks&quot;: [ # The next chunks of the current chunk. The number is controlled by SearchRequest.ContentSearchSpec.ChunkSpec.num_next_chunks. This field is only populated on SearchService.Search API.
            # Object with schema name: GoogleCloudDiscoveryengineV1alphaChunk
          ],
          &quot;previousChunks&quot;: [ # The previous chunks of the current chunk. The number is controlled by SearchRequest.ContentSearchSpec.ChunkSpec.num_previous_chunks. This field is only populated on SearchService.Search API.
            # Object with schema name: GoogleCloudDiscoveryengineV1alphaChunk
          ],
        },
        &quot;content&quot;: &quot;A String&quot;, # Content is a string from a document (parsed content).
        &quot;dataUrls&quot;: [ # Output only. Image Data URLs if the current chunk contains images. Data URLs are composed of four parts: a prefix (data:), a MIME type indicating the type of data, an optional base64 token if non-textual, and the data itself: data:,
          &quot;A String&quot;,
        ],
        &quot;derivedStructData&quot;: { # Output only. This field is OUTPUT_ONLY. It contains derived data that are not in the original input document.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;documentMetadata&quot;: { # Document metadata contains the information of the document of the current chunk. # Metadata of the document from the current chunk.
          &quot;mimeType&quot;: &quot;A String&quot;, # The mime type of the document. https://www.iana.org/assignments/media-types/media-types.xhtml.
          &quot;structData&quot;: { # Data representation. The structured JSON data for the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;title&quot;: &quot;A String&quot;, # Title of the document.
          &quot;uri&quot;: &quot;A String&quot;, # Uri of the document.
        },
        &quot;id&quot;: &quot;A String&quot;, # Unique chunk ID of the current chunk.
        &quot;name&quot;: &quot;A String&quot;, # The full resource name of the chunk. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}/documents/{document_id}/chunks/{chunk_id}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
        &quot;pageSpan&quot;: { # Page span of the chunk. # Page span of the chunk.
          &quot;pageEnd&quot;: 42, # The end page of the chunk.
          &quot;pageStart&quot;: 42, # The start page of the chunk.
        },
        &quot;relevanceScore&quot;: 3.14, # Output only. Represents the relevance score based on similarity. Higher score indicates higher chunk relevance. The score is in range [-1.0, 1.0]. Only populated on SearchResponse.
      },
      &quot;document&quot;: { # Document captures all raw metadata information of items to be recommended or searched. # The document data snippet in the search response. Only fields that are marked as `retrievable` are populated.
        &quot;aclInfo&quot;: { # ACL Information of the Document. # Access control information for the document.
          &quot;readers&quot;: [ # Readers of the document.
            { # AclRestriction to model complex inheritance restrictions. Example: Modeling a &quot;Both Permit&quot; inheritance, where to access a child document, user needs to have access to parent document. Document Hierarchy - Space_S --&gt; Page_P. Readers: Space_S: group_1, user_1 Page_P: group_2, group_3, user_2 Space_S ACL Restriction - { &quot;acl_info&quot;: { &quot;readers&quot;: [ { &quot;principals&quot;: [ { &quot;group_id&quot;: &quot;group_1&quot; }, { &quot;user_id&quot;: &quot;user_1&quot; } ] } ] } } Page_P ACL Restriction. { &quot;acl_info&quot;: { &quot;readers&quot;: [ { &quot;principals&quot;: [ { &quot;group_id&quot;: &quot;group_2&quot; }, { &quot;group_id&quot;: &quot;group_3&quot; }, { &quot;user_id&quot;: &quot;user_2&quot; } ], }, { &quot;principals&quot;: [ { &quot;group_id&quot;: &quot;group_1&quot; }, { &quot;user_id&quot;: &quot;user_1&quot; } ], } ] } }
              &quot;idpWide&quot;: True or False, # All users within the Identity Provider.
              &quot;principals&quot;: [ # List of principals.
                { # Principal identifier of a user or a group.
                  &quot;externalEntityId&quot;: &quot;A String&quot;, # For 3P application identities which are not present in the customer identity provider.
                  &quot;groupId&quot;: &quot;A String&quot;, # Group identifier. For Google Workspace user account, group_id should be the google workspace group email. For non-google identity provider user account, group_id is the mapped group identifier configured during the workforcepool config.
                  &quot;userId&quot;: &quot;A String&quot;, # User identifier. For Google Workspace user account, user_id should be the google workspace user email. For non-google identity provider user account, user_id is the mapped user identifier configured during the workforcepool config.
                },
              ],
            },
          ],
        },
        &quot;content&quot;: { # Unstructured data linked to this document. # The unstructured data linked to this document. Content can only be set and must be set if this document is under a `CONTENT_REQUIRED` data store.
          &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the content. Supported types: * `application/pdf` (PDF, only native PDFs are supported for now) * `text/html` (HTML) * `text/plain` (TXT) * `application/xml` or `text/xml` (XML) * `application/json` (JSON) * `application/vnd.openxmlformats-officedocument.wordprocessingml.document` (DOCX) * `application/vnd.openxmlformats-officedocument.presentationml.presentation` (PPTX) * `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` (XLSX) * `application/vnd.ms-excel.sheet.macroenabled.12` (XLSM) The following types are supported only if layout parser is enabled in the data store: * `image/bmp` (BMP) * `image/gif` (GIF) * `image/jpeg` (JPEG) * `image/png` (PNG) * `image/tiff` (TIFF) See https://www.iana.org/assignments/media-types/media-types.xhtml.
          &quot;rawBytes&quot;: &quot;A String&quot;, # The content represented as a stream of bytes. The maximum length is 1,000,000 bytes (1 MB / ~0.95 MiB). Note: As with all `bytes` fields, this field is represented as pure binary in Protocol Buffers and base64-encoded string in JSON. For example, `abc123!?$*&amp;()&#x27;-=@~` should be represented as `YWJjMTIzIT8kKiYoKSctPUB+` in JSON. See https://developers.google.com/protocol-buffers/docs/proto3#json.
          &quot;uri&quot;: &quot;A String&quot;, # The URI of the content. Only Cloud Storage URIs (e.g. `gs://bucket-name/path/to/file`) are supported. The maximum file size is 2.5 MB for text-based formats, 200 MB for other formats.
        },
        &quot;derivedStructData&quot;: { # Output only. This field is OUTPUT_ONLY. It contains derived data that are not in the original input document.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;id&quot;: &quot;A String&quot;, # Immutable. The identifier of the document. Id should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 128 characters.
        &quot;indexStatus&quot;: { # Index status of the document. # Output only. The index status of the document. * If document is indexed successfully, the index_time field is populated. * Otherwise, if document is not indexed due to errors, the error_samples field is populated. * Otherwise, if document&#x27;s index is in progress, the pending_message field is populated.
          &quot;errorSamples&quot;: [ # A sample of errors encountered while indexing the document. If this field is populated, the document is not indexed due to errors.
            { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
              &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
              &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
              &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
            },
          ],
          &quot;indexTime&quot;: &quot;A String&quot;, # The time when the document was indexed. If this field is populated, it means the document has been indexed.
          &quot;pendingMessage&quot;: &quot;A String&quot;, # Immutable. The message indicates the document index is in progress. If this field is populated, the document index is pending.
        },
        &quot;indexTime&quot;: &quot;A String&quot;, # Output only. The last time the document was indexed. If this field is set, the document could be returned in search results. This field is OUTPUT_ONLY. If this field is not populated, it means the document has never been indexed.
        &quot;jsonData&quot;: &quot;A String&quot;, # The JSON string representation of the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown.
        &quot;name&quot;: &quot;A String&quot;, # Immutable. The full resource name of the document. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}/documents/{document_id}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
        &quot;parentDocumentId&quot;: &quot;A String&quot;, # The identifier of the parent document. Currently supports at most two level document hierarchy. Id should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters.
        &quot;schemaId&quot;: &quot;A String&quot;, # The identifier of the schema located in the same data store.
        &quot;structData&quot;: { # The structured JSON data for the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
      },
      &quot;id&quot;: &quot;A String&quot;, # Document.id of the searched Document.
      &quot;modelScores&quot;: { # Output only. Google provided available scores.
        &quot;a_key&quot;: { # Double list.
          &quot;values&quot;: [ # Double values.
            3.14,
          ],
        },
      },
      &quot;rankSignals&quot;: { # A set of ranking signals. # Optional. A set of ranking signals associated with the result.
        &quot;boostingFactor&quot;: 3.14, # Optional. Combined custom boosts for a doc.
        &quot;customSignals&quot;: [ # Optional. A list of custom clearbox signals.
          { # Custom clearbox signal represented by name and value pair.
            &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the signal.
            &quot;value&quot;: 3.14, # Optional. Float value representing the ranking signal (e.g. 1.25 for BM25).
          },
        ],
        &quot;defaultRank&quot;: 3.14, # Optional. The default rank of the result.
        &quot;documentAge&quot;: 3.14, # Optional. Age of the document in hours.
        &quot;keywordSimilarityScore&quot;: 3.14, # Optional. Keyword matching adjustment.
        &quot;pctrRank&quot;: 3.14, # Optional. Predicted conversion rate adjustment as a rank.
        &quot;relevanceScore&quot;: 3.14, # Optional. Semantic relevance adjustment.
        &quot;semanticSimilarityScore&quot;: 3.14, # Optional. Semantic similarity adjustment.
        &quot;topicalityRank&quot;: 3.14, # Optional. Topicality adjustment as a rank.
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a Conversation. If the Conversation to create already exists, an ALREADY_EXISTS error is returned.

Args:
  parent: string, Required. Full resource name of parent data store. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store_id}` (required)
  body: object, The request body.
    The object takes the form of:

{ # External conversation proto definition.
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time the conversation finished.
  &quot;messages&quot;: [ # Conversation messages.
    { # Defines a conversation message.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Message creation timestamp.
      &quot;reply&quot;: { # Defines a reply message to user. # Search reply.
        &quot;references&quot;: [ # References in the reply.
          { # Defines reference in reply.
            &quot;anchorText&quot;: &quot;A String&quot;, # Anchor text.
            &quot;end&quot;: 42, # Anchor text end index.
            &quot;start&quot;: 42, # Anchor text start index.
            &quot;uri&quot;: &quot;A String&quot;, # URI link reference.
          },
        ],
        &quot;reply&quot;: &quot;A String&quot;, # DEPRECATED: use `summary` instead. Text reply.
        &quot;summary&quot;: { # Summary of the top N search results specified by the summary spec. # Summary based on search results.
          &quot;safetyAttributes&quot;: { # Safety Attribute categories and their associated confidence scores. # A collection of Safety Attribute categories and their associated confidence scores.
            &quot;categories&quot;: [ # The display names of Safety Attribute categories associated with the generated content. Order matches the Scores.
              &quot;A String&quot;,
            ],
            &quot;scores&quot;: [ # The confidence scores of the each category, higher value means higher confidence. Order matches the Categories.
              3.14,
            ],
          },
          &quot;summarySkippedReasons&quot;: [ # Additional summary-skipped reasons. This provides the reason for ignored cases. If nothing is skipped, this field is not set.
            &quot;A String&quot;,
          ],
          &quot;summaryText&quot;: &quot;A String&quot;, # The summary content.
          &quot;summaryWithMetadata&quot;: { # Summary with metadata information. # Summary with metadata information.
            &quot;blobAttachments&quot;: [ # Output only. Store multimodal data for answer enhancement.
              { # Stores binarydata attached to text answer, e.g. image, video, audio, etc.
                &quot;attributionType&quot;: &quot;A String&quot;, # Output only. The attribution type of the blob.
                &quot;data&quot;: { # Stores type and data of the blob. # Output only. The blob data.
                  &quot;data&quot;: &quot;A String&quot;, # Output only. Raw bytes.
                  &quot;mimeType&quot;: &quot;A String&quot;, # Output only. The media type (MIME type) of the generated data.
                },
              },
            ],
            &quot;citationMetadata&quot;: { # Citation metadata. # Citation metadata for given summary.
              &quot;citations&quot;: [ # Citations for segments.
                { # Citation info for a segment.
                  &quot;endIndex&quot;: &quot;A String&quot;, # End of the attributed segment, exclusive.
                  &quot;sources&quot;: [ # Citation sources for the attributed segment.
                    { # Citation source.
                      &quot;referenceIndex&quot;: &quot;A String&quot;, # Document reference index from SummaryWithMetadata.references. It is 0-indexed and the value will be zero if the reference_index is not set explicitly.
                    },
                  ],
                  &quot;startIndex&quot;: &quot;A String&quot;, # Index indicates the start of the segment, measured in bytes/unicode.
                },
              ],
            },
            &quot;references&quot;: [ # Document References.
              { # Document reference.
                &quot;chunkContents&quot;: [ # List of cited chunk contents derived from document content.
                  { # Chunk content.
                    &quot;blobAttachmentIndexes&quot;: [ # Output only. Stores indexes of blobattachments linked to this chunk.
                      &quot;A String&quot;,
                    ],
                    &quot;content&quot;: &quot;A String&quot;, # Chunk textual content.
                    &quot;pageIdentifier&quot;: &quot;A String&quot;, # Page identifier.
                  },
                ],
                &quot;document&quot;: &quot;A String&quot;, # Required. Document.name of the document. Full resource name of the referenced document, in the format `projects/*/locations/*/collections/*/dataStores/*/branches/*/documents/*`.
                &quot;title&quot;: &quot;A String&quot;, # Title of the document.
                &quot;uri&quot;: &quot;A String&quot;, # Cloud Storage or HTTP uri for the document.
              },
            ],
            &quot;summary&quot;: &quot;A String&quot;, # Summary text with no citation information.
          },
        },
      },
      &quot;userInput&quot;: { # Defines text input. # User text input.
        &quot;context&quot;: { # Defines context of the conversation # Conversation context of the input.
          &quot;activeDocument&quot;: &quot;A String&quot;, # The current active document the user opened. It contains the document resource reference.
          &quot;contextDocuments&quot;: [ # The current list of documents the user is seeing. It contains the document resource references.
            &quot;A String&quot;,
          ],
        },
        &quot;input&quot;: &quot;A String&quot;, # Text input.
      },
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Immutable. Fully qualified name `projects/{project}/locations/global/collections/{collection}/dataStore/*/conversations/*` or `projects/{project}/locations/global/collections/{collection}/engines/*/conversations/*`.
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time the conversation started.
  &quot;state&quot;: &quot;A String&quot;, # The state of the Conversation.
  &quot;userPseudoId&quot;: &quot;A String&quot;, # A unique identifier for tracking users.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # External conversation proto definition.
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time the conversation finished.
  &quot;messages&quot;: [ # Conversation messages.
    { # Defines a conversation message.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Message creation timestamp.
      &quot;reply&quot;: { # Defines a reply message to user. # Search reply.
        &quot;references&quot;: [ # References in the reply.
          { # Defines reference in reply.
            &quot;anchorText&quot;: &quot;A String&quot;, # Anchor text.
            &quot;end&quot;: 42, # Anchor text end index.
            &quot;start&quot;: 42, # Anchor text start index.
            &quot;uri&quot;: &quot;A String&quot;, # URI link reference.
          },
        ],
        &quot;reply&quot;: &quot;A String&quot;, # DEPRECATED: use `summary` instead. Text reply.
        &quot;summary&quot;: { # Summary of the top N search results specified by the summary spec. # Summary based on search results.
          &quot;safetyAttributes&quot;: { # Safety Attribute categories and their associated confidence scores. # A collection of Safety Attribute categories and their associated confidence scores.
            &quot;categories&quot;: [ # The display names of Safety Attribute categories associated with the generated content. Order matches the Scores.
              &quot;A String&quot;,
            ],
            &quot;scores&quot;: [ # The confidence scores of the each category, higher value means higher confidence. Order matches the Categories.
              3.14,
            ],
          },
          &quot;summarySkippedReasons&quot;: [ # Additional summary-skipped reasons. This provides the reason for ignored cases. If nothing is skipped, this field is not set.
            &quot;A String&quot;,
          ],
          &quot;summaryText&quot;: &quot;A String&quot;, # The summary content.
          &quot;summaryWithMetadata&quot;: { # Summary with metadata information. # Summary with metadata information.
            &quot;blobAttachments&quot;: [ # Output only. Store multimodal data for answer enhancement.
              { # Stores binarydata attached to text answer, e.g. image, video, audio, etc.
                &quot;attributionType&quot;: &quot;A String&quot;, # Output only. The attribution type of the blob.
                &quot;data&quot;: { # Stores type and data of the blob. # Output only. The blob data.
                  &quot;data&quot;: &quot;A String&quot;, # Output only. Raw bytes.
                  &quot;mimeType&quot;: &quot;A String&quot;, # Output only. The media type (MIME type) of the generated data.
                },
              },
            ],
            &quot;citationMetadata&quot;: { # Citation metadata. # Citation metadata for given summary.
              &quot;citations&quot;: [ # Citations for segments.
                { # Citation info for a segment.
                  &quot;endIndex&quot;: &quot;A String&quot;, # End of the attributed segment, exclusive.
                  &quot;sources&quot;: [ # Citation sources for the attributed segment.
                    { # Citation source.
                      &quot;referenceIndex&quot;: &quot;A String&quot;, # Document reference index from SummaryWithMetadata.references. It is 0-indexed and the value will be zero if the reference_index is not set explicitly.
                    },
                  ],
                  &quot;startIndex&quot;: &quot;A String&quot;, # Index indicates the start of the segment, measured in bytes/unicode.
                },
              ],
            },
            &quot;references&quot;: [ # Document References.
              { # Document reference.
                &quot;chunkContents&quot;: [ # List of cited chunk contents derived from document content.
                  { # Chunk content.
                    &quot;blobAttachmentIndexes&quot;: [ # Output only. Stores indexes of blobattachments linked to this chunk.
                      &quot;A String&quot;,
                    ],
                    &quot;content&quot;: &quot;A String&quot;, # Chunk textual content.
                    &quot;pageIdentifier&quot;: &quot;A String&quot;, # Page identifier.
                  },
                ],
                &quot;document&quot;: &quot;A String&quot;, # Required. Document.name of the document. Full resource name of the referenced document, in the format `projects/*/locations/*/collections/*/dataStores/*/branches/*/documents/*`.
                &quot;title&quot;: &quot;A String&quot;, # Title of the document.
                &quot;uri&quot;: &quot;A String&quot;, # Cloud Storage or HTTP uri for the document.
              },
            ],
            &quot;summary&quot;: &quot;A String&quot;, # Summary text with no citation information.
          },
        },
      },
      &quot;userInput&quot;: { # Defines text input. # User text input.
        &quot;context&quot;: { # Defines context of the conversation # Conversation context of the input.
          &quot;activeDocument&quot;: &quot;A String&quot;, # The current active document the user opened. It contains the document resource reference.
          &quot;contextDocuments&quot;: [ # The current list of documents the user is seeing. It contains the document resource references.
            &quot;A String&quot;,
          ],
        },
        &quot;input&quot;: &quot;A String&quot;, # Text input.
      },
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Immutable. Fully qualified name `projects/{project}/locations/global/collections/{collection}/dataStore/*/conversations/*` or `projects/{project}/locations/global/collections/{collection}/engines/*/conversations/*`.
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time the conversation started.
  &quot;state&quot;: &quot;A String&quot;, # The state of the Conversation.
  &quot;userPseudoId&quot;: &quot;A String&quot;, # A unique identifier for tracking users.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a Conversation. If the Conversation to delete does not exist, a NOT_FOUND error is returned.

Args:
  name: string, Required. The resource name of the Conversation to delete. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store_id}/conversations/{conversation_id}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets a Conversation.

Args:
  name: string, Required. The resource name of the Conversation to get. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store_id}/conversations/{conversation_id}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # External conversation proto definition.
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time the conversation finished.
  &quot;messages&quot;: [ # Conversation messages.
    { # Defines a conversation message.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Message creation timestamp.
      &quot;reply&quot;: { # Defines a reply message to user. # Search reply.
        &quot;references&quot;: [ # References in the reply.
          { # Defines reference in reply.
            &quot;anchorText&quot;: &quot;A String&quot;, # Anchor text.
            &quot;end&quot;: 42, # Anchor text end index.
            &quot;start&quot;: 42, # Anchor text start index.
            &quot;uri&quot;: &quot;A String&quot;, # URI link reference.
          },
        ],
        &quot;reply&quot;: &quot;A String&quot;, # DEPRECATED: use `summary` instead. Text reply.
        &quot;summary&quot;: { # Summary of the top N search results specified by the summary spec. # Summary based on search results.
          &quot;safetyAttributes&quot;: { # Safety Attribute categories and their associated confidence scores. # A collection of Safety Attribute categories and their associated confidence scores.
            &quot;categories&quot;: [ # The display names of Safety Attribute categories associated with the generated content. Order matches the Scores.
              &quot;A String&quot;,
            ],
            &quot;scores&quot;: [ # The confidence scores of the each category, higher value means higher confidence. Order matches the Categories.
              3.14,
            ],
          },
          &quot;summarySkippedReasons&quot;: [ # Additional summary-skipped reasons. This provides the reason for ignored cases. If nothing is skipped, this field is not set.
            &quot;A String&quot;,
          ],
          &quot;summaryText&quot;: &quot;A String&quot;, # The summary content.
          &quot;summaryWithMetadata&quot;: { # Summary with metadata information. # Summary with metadata information.
            &quot;blobAttachments&quot;: [ # Output only. Store multimodal data for answer enhancement.
              { # Stores binarydata attached to text answer, e.g. image, video, audio, etc.
                &quot;attributionType&quot;: &quot;A String&quot;, # Output only. The attribution type of the blob.
                &quot;data&quot;: { # Stores type and data of the blob. # Output only. The blob data.
                  &quot;data&quot;: &quot;A String&quot;, # Output only. Raw bytes.
                  &quot;mimeType&quot;: &quot;A String&quot;, # Output only. The media type (MIME type) of the generated data.
                },
              },
            ],
            &quot;citationMetadata&quot;: { # Citation metadata. # Citation metadata for given summary.
              &quot;citations&quot;: [ # Citations for segments.
                { # Citation info for a segment.
                  &quot;endIndex&quot;: &quot;A String&quot;, # End of the attributed segment, exclusive.
                  &quot;sources&quot;: [ # Citation sources for the attributed segment.
                    { # Citation source.
                      &quot;referenceIndex&quot;: &quot;A String&quot;, # Document reference index from SummaryWithMetadata.references. It is 0-indexed and the value will be zero if the reference_index is not set explicitly.
                    },
                  ],
                  &quot;startIndex&quot;: &quot;A String&quot;, # Index indicates the start of the segment, measured in bytes/unicode.
                },
              ],
            },
            &quot;references&quot;: [ # Document References.
              { # Document reference.
                &quot;chunkContents&quot;: [ # List of cited chunk contents derived from document content.
                  { # Chunk content.
                    &quot;blobAttachmentIndexes&quot;: [ # Output only. Stores indexes of blobattachments linked to this chunk.
                      &quot;A String&quot;,
                    ],
                    &quot;content&quot;: &quot;A String&quot;, # Chunk textual content.
                    &quot;pageIdentifier&quot;: &quot;A String&quot;, # Page identifier.
                  },
                ],
                &quot;document&quot;: &quot;A String&quot;, # Required. Document.name of the document. Full resource name of the referenced document, in the format `projects/*/locations/*/collections/*/dataStores/*/branches/*/documents/*`.
                &quot;title&quot;: &quot;A String&quot;, # Title of the document.
                &quot;uri&quot;: &quot;A String&quot;, # Cloud Storage or HTTP uri for the document.
              },
            ],
            &quot;summary&quot;: &quot;A String&quot;, # Summary text with no citation information.
          },
        },
      },
      &quot;userInput&quot;: { # Defines text input. # User text input.
        &quot;context&quot;: { # Defines context of the conversation # Conversation context of the input.
          &quot;activeDocument&quot;: &quot;A String&quot;, # The current active document the user opened. It contains the document resource reference.
          &quot;contextDocuments&quot;: [ # The current list of documents the user is seeing. It contains the document resource references.
            &quot;A String&quot;,
          ],
        },
        &quot;input&quot;: &quot;A String&quot;, # Text input.
      },
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Immutable. Fully qualified name `projects/{project}/locations/global/collections/{collection}/dataStore/*/conversations/*` or `projects/{project}/locations/global/collections/{collection}/engines/*/conversations/*`.
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time the conversation started.
  &quot;state&quot;: &quot;A String&quot;, # The state of the Conversation.
  &quot;userPseudoId&quot;: &quot;A String&quot;, # A unique identifier for tracking users.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all Conversations by their parent DataStore.

Args:
  parent: string, Required. The data store resource name. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store_id}` (required)
  filter: string, A filter to apply on the list results. The supported features are: user_pseudo_id, state. Example: &quot;user_pseudo_id = some_id&quot;
  orderBy: string, A comma-separated list of fields to order by, sorted in ascending order. Use &quot;desc&quot; after a field name for descending. Supported fields: * `update_time` * `create_time` * `conversation_name` Example: &quot;update_time desc&quot; &quot;create_time&quot;
  pageSize: integer, Maximum number of results to return. If unspecified, defaults to 50. Max allowed value is 1000.
  pageToken: string, A page token, received from a previous `ListConversations` call. Provide this to retrieve the subsequent page.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for ListConversations method.
  &quot;conversations&quot;: [ # All the Conversations for a given data store.
    { # External conversation proto definition.
      &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time the conversation finished.
      &quot;messages&quot;: [ # Conversation messages.
        { # Defines a conversation message.
          &quot;createTime&quot;: &quot;A String&quot;, # Output only. Message creation timestamp.
          &quot;reply&quot;: { # Defines a reply message to user. # Search reply.
            &quot;references&quot;: [ # References in the reply.
              { # Defines reference in reply.
                &quot;anchorText&quot;: &quot;A String&quot;, # Anchor text.
                &quot;end&quot;: 42, # Anchor text end index.
                &quot;start&quot;: 42, # Anchor text start index.
                &quot;uri&quot;: &quot;A String&quot;, # URI link reference.
              },
            ],
            &quot;reply&quot;: &quot;A String&quot;, # DEPRECATED: use `summary` instead. Text reply.
            &quot;summary&quot;: { # Summary of the top N search results specified by the summary spec. # Summary based on search results.
              &quot;safetyAttributes&quot;: { # Safety Attribute categories and their associated confidence scores. # A collection of Safety Attribute categories and their associated confidence scores.
                &quot;categories&quot;: [ # The display names of Safety Attribute categories associated with the generated content. Order matches the Scores.
                  &quot;A String&quot;,
                ],
                &quot;scores&quot;: [ # The confidence scores of the each category, higher value means higher confidence. Order matches the Categories.
                  3.14,
                ],
              },
              &quot;summarySkippedReasons&quot;: [ # Additional summary-skipped reasons. This provides the reason for ignored cases. If nothing is skipped, this field is not set.
                &quot;A String&quot;,
              ],
              &quot;summaryText&quot;: &quot;A String&quot;, # The summary content.
              &quot;summaryWithMetadata&quot;: { # Summary with metadata information. # Summary with metadata information.
                &quot;blobAttachments&quot;: [ # Output only. Store multimodal data for answer enhancement.
                  { # Stores binarydata attached to text answer, e.g. image, video, audio, etc.
                    &quot;attributionType&quot;: &quot;A String&quot;, # Output only. The attribution type of the blob.
                    &quot;data&quot;: { # Stores type and data of the blob. # Output only. The blob data.
                      &quot;data&quot;: &quot;A String&quot;, # Output only. Raw bytes.
                      &quot;mimeType&quot;: &quot;A String&quot;, # Output only. The media type (MIME type) of the generated data.
                    },
                  },
                ],
                &quot;citationMetadata&quot;: { # Citation metadata. # Citation metadata for given summary.
                  &quot;citations&quot;: [ # Citations for segments.
                    { # Citation info for a segment.
                      &quot;endIndex&quot;: &quot;A String&quot;, # End of the attributed segment, exclusive.
                      &quot;sources&quot;: [ # Citation sources for the attributed segment.
                        { # Citation source.
                          &quot;referenceIndex&quot;: &quot;A String&quot;, # Document reference index from SummaryWithMetadata.references. It is 0-indexed and the value will be zero if the reference_index is not set explicitly.
                        },
                      ],
                      &quot;startIndex&quot;: &quot;A String&quot;, # Index indicates the start of the segment, measured in bytes/unicode.
                    },
                  ],
                },
                &quot;references&quot;: [ # Document References.
                  { # Document reference.
                    &quot;chunkContents&quot;: [ # List of cited chunk contents derived from document content.
                      { # Chunk content.
                        &quot;blobAttachmentIndexes&quot;: [ # Output only. Stores indexes of blobattachments linked to this chunk.
                          &quot;A String&quot;,
                        ],
                        &quot;content&quot;: &quot;A String&quot;, # Chunk textual content.
                        &quot;pageIdentifier&quot;: &quot;A String&quot;, # Page identifier.
                      },
                    ],
                    &quot;document&quot;: &quot;A String&quot;, # Required. Document.name of the document. Full resource name of the referenced document, in the format `projects/*/locations/*/collections/*/dataStores/*/branches/*/documents/*`.
                    &quot;title&quot;: &quot;A String&quot;, # Title of the document.
                    &quot;uri&quot;: &quot;A String&quot;, # Cloud Storage or HTTP uri for the document.
                  },
                ],
                &quot;summary&quot;: &quot;A String&quot;, # Summary text with no citation information.
              },
            },
          },
          &quot;userInput&quot;: { # Defines text input. # User text input.
            &quot;context&quot;: { # Defines context of the conversation # Conversation context of the input.
              &quot;activeDocument&quot;: &quot;A String&quot;, # The current active document the user opened. It contains the document resource reference.
              &quot;contextDocuments&quot;: [ # The current list of documents the user is seeing. It contains the document resource references.
                &quot;A String&quot;,
              ],
            },
            &quot;input&quot;: &quot;A String&quot;, # Text input.
          },
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Immutable. Fully qualified name `projects/{project}/locations/global/collections/{collection}/dataStore/*/conversations/*` or `projects/{project}/locations/global/collections/{collection}/engines/*/conversations/*`.
      &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time the conversation started.
      &quot;state&quot;: &quot;A String&quot;, # The state of the Conversation.
      &quot;userPseudoId&quot;: &quot;A String&quot;, # A unique identifier for tracking users.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Pagination token, if not returned indicates the last page.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</code>
  <pre>Retrieves the next page of results.

        Args:
          previous_request: The request for the previous page. (required)
          previous_response: The response from the request for the previous page. (required)

        Returns:
          A request object that you can call &#x27;execute()&#x27; on to request the next
          page. Returns None if there are no more items in the collection.
        </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a Conversation. Conversation action type cannot be changed. If the Conversation to update does not exist, a NOT_FOUND error is returned.

Args:
  name: string, Immutable. Fully qualified name `projects/{project}/locations/global/collections/{collection}/dataStore/*/conversations/*` or `projects/{project}/locations/global/collections/{collection}/engines/*/conversations/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # External conversation proto definition.
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time the conversation finished.
  &quot;messages&quot;: [ # Conversation messages.
    { # Defines a conversation message.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Message creation timestamp.
      &quot;reply&quot;: { # Defines a reply message to user. # Search reply.
        &quot;references&quot;: [ # References in the reply.
          { # Defines reference in reply.
            &quot;anchorText&quot;: &quot;A String&quot;, # Anchor text.
            &quot;end&quot;: 42, # Anchor text end index.
            &quot;start&quot;: 42, # Anchor text start index.
            &quot;uri&quot;: &quot;A String&quot;, # URI link reference.
          },
        ],
        &quot;reply&quot;: &quot;A String&quot;, # DEPRECATED: use `summary` instead. Text reply.
        &quot;summary&quot;: { # Summary of the top N search results specified by the summary spec. # Summary based on search results.
          &quot;safetyAttributes&quot;: { # Safety Attribute categories and their associated confidence scores. # A collection of Safety Attribute categories and their associated confidence scores.
            &quot;categories&quot;: [ # The display names of Safety Attribute categories associated with the generated content. Order matches the Scores.
              &quot;A String&quot;,
            ],
            &quot;scores&quot;: [ # The confidence scores of the each category, higher value means higher confidence. Order matches the Categories.
              3.14,
            ],
          },
          &quot;summarySkippedReasons&quot;: [ # Additional summary-skipped reasons. This provides the reason for ignored cases. If nothing is skipped, this field is not set.
            &quot;A String&quot;,
          ],
          &quot;summaryText&quot;: &quot;A String&quot;, # The summary content.
          &quot;summaryWithMetadata&quot;: { # Summary with metadata information. # Summary with metadata information.
            &quot;blobAttachments&quot;: [ # Output only. Store multimodal data for answer enhancement.
              { # Stores binarydata attached to text answer, e.g. image, video, audio, etc.
                &quot;attributionType&quot;: &quot;A String&quot;, # Output only. The attribution type of the blob.
                &quot;data&quot;: { # Stores type and data of the blob. # Output only. The blob data.
                  &quot;data&quot;: &quot;A String&quot;, # Output only. Raw bytes.
                  &quot;mimeType&quot;: &quot;A String&quot;, # Output only. The media type (MIME type) of the generated data.
                },
              },
            ],
            &quot;citationMetadata&quot;: { # Citation metadata. # Citation metadata for given summary.
              &quot;citations&quot;: [ # Citations for segments.
                { # Citation info for a segment.
                  &quot;endIndex&quot;: &quot;A String&quot;, # End of the attributed segment, exclusive.
                  &quot;sources&quot;: [ # Citation sources for the attributed segment.
                    { # Citation source.
                      &quot;referenceIndex&quot;: &quot;A String&quot;, # Document reference index from SummaryWithMetadata.references. It is 0-indexed and the value will be zero if the reference_index is not set explicitly.
                    },
                  ],
                  &quot;startIndex&quot;: &quot;A String&quot;, # Index indicates the start of the segment, measured in bytes/unicode.
                },
              ],
            },
            &quot;references&quot;: [ # Document References.
              { # Document reference.
                &quot;chunkContents&quot;: [ # List of cited chunk contents derived from document content.
                  { # Chunk content.
                    &quot;blobAttachmentIndexes&quot;: [ # Output only. Stores indexes of blobattachments linked to this chunk.
                      &quot;A String&quot;,
                    ],
                    &quot;content&quot;: &quot;A String&quot;, # Chunk textual content.
                    &quot;pageIdentifier&quot;: &quot;A String&quot;, # Page identifier.
                  },
                ],
                &quot;document&quot;: &quot;A String&quot;, # Required. Document.name of the document. Full resource name of the referenced document, in the format `projects/*/locations/*/collections/*/dataStores/*/branches/*/documents/*`.
                &quot;title&quot;: &quot;A String&quot;, # Title of the document.
                &quot;uri&quot;: &quot;A String&quot;, # Cloud Storage or HTTP uri for the document.
              },
            ],
            &quot;summary&quot;: &quot;A String&quot;, # Summary text with no citation information.
          },
        },
      },
      &quot;userInput&quot;: { # Defines text input. # User text input.
        &quot;context&quot;: { # Defines context of the conversation # Conversation context of the input.
          &quot;activeDocument&quot;: &quot;A String&quot;, # The current active document the user opened. It contains the document resource reference.
          &quot;contextDocuments&quot;: [ # The current list of documents the user is seeing. It contains the document resource references.
            &quot;A String&quot;,
          ],
        },
        &quot;input&quot;: &quot;A String&quot;, # Text input.
      },
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Immutable. Fully qualified name `projects/{project}/locations/global/collections/{collection}/dataStore/*/conversations/*` or `projects/{project}/locations/global/collections/{collection}/engines/*/conversations/*`.
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time the conversation started.
  &quot;state&quot;: &quot;A String&quot;, # The state of the Conversation.
  &quot;userPseudoId&quot;: &quot;A String&quot;, # A unique identifier for tracking users.
}

  updateMask: string, Indicates which fields in the provided Conversation to update. The following are NOT supported: * Conversation.name If not set or empty, all supported fields are updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # External conversation proto definition.
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time the conversation finished.
  &quot;messages&quot;: [ # Conversation messages.
    { # Defines a conversation message.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Message creation timestamp.
      &quot;reply&quot;: { # Defines a reply message to user. # Search reply.
        &quot;references&quot;: [ # References in the reply.
          { # Defines reference in reply.
            &quot;anchorText&quot;: &quot;A String&quot;, # Anchor text.
            &quot;end&quot;: 42, # Anchor text end index.
            &quot;start&quot;: 42, # Anchor text start index.
            &quot;uri&quot;: &quot;A String&quot;, # URI link reference.
          },
        ],
        &quot;reply&quot;: &quot;A String&quot;, # DEPRECATED: use `summary` instead. Text reply.
        &quot;summary&quot;: { # Summary of the top N search results specified by the summary spec. # Summary based on search results.
          &quot;safetyAttributes&quot;: { # Safety Attribute categories and their associated confidence scores. # A collection of Safety Attribute categories and their associated confidence scores.
            &quot;categories&quot;: [ # The display names of Safety Attribute categories associated with the generated content. Order matches the Scores.
              &quot;A String&quot;,
            ],
            &quot;scores&quot;: [ # The confidence scores of the each category, higher value means higher confidence. Order matches the Categories.
              3.14,
            ],
          },
          &quot;summarySkippedReasons&quot;: [ # Additional summary-skipped reasons. This provides the reason for ignored cases. If nothing is skipped, this field is not set.
            &quot;A String&quot;,
          ],
          &quot;summaryText&quot;: &quot;A String&quot;, # The summary content.
          &quot;summaryWithMetadata&quot;: { # Summary with metadata information. # Summary with metadata information.
            &quot;blobAttachments&quot;: [ # Output only. Store multimodal data for answer enhancement.
              { # Stores binarydata attached to text answer, e.g. image, video, audio, etc.
                &quot;attributionType&quot;: &quot;A String&quot;, # Output only. The attribution type of the blob.
                &quot;data&quot;: { # Stores type and data of the blob. # Output only. The blob data.
                  &quot;data&quot;: &quot;A String&quot;, # Output only. Raw bytes.
                  &quot;mimeType&quot;: &quot;A String&quot;, # Output only. The media type (MIME type) of the generated data.
                },
              },
            ],
            &quot;citationMetadata&quot;: { # Citation metadata. # Citation metadata for given summary.
              &quot;citations&quot;: [ # Citations for segments.
                { # Citation info for a segment.
                  &quot;endIndex&quot;: &quot;A String&quot;, # End of the attributed segment, exclusive.
                  &quot;sources&quot;: [ # Citation sources for the attributed segment.
                    { # Citation source.
                      &quot;referenceIndex&quot;: &quot;A String&quot;, # Document reference index from SummaryWithMetadata.references. It is 0-indexed and the value will be zero if the reference_index is not set explicitly.
                    },
                  ],
                  &quot;startIndex&quot;: &quot;A String&quot;, # Index indicates the start of the segment, measured in bytes/unicode.
                },
              ],
            },
            &quot;references&quot;: [ # Document References.
              { # Document reference.
                &quot;chunkContents&quot;: [ # List of cited chunk contents derived from document content.
                  { # Chunk content.
                    &quot;blobAttachmentIndexes&quot;: [ # Output only. Stores indexes of blobattachments linked to this chunk.
                      &quot;A String&quot;,
                    ],
                    &quot;content&quot;: &quot;A String&quot;, # Chunk textual content.
                    &quot;pageIdentifier&quot;: &quot;A String&quot;, # Page identifier.
                  },
                ],
                &quot;document&quot;: &quot;A String&quot;, # Required. Document.name of the document. Full resource name of the referenced document, in the format `projects/*/locations/*/collections/*/dataStores/*/branches/*/documents/*`.
                &quot;title&quot;: &quot;A String&quot;, # Title of the document.
                &quot;uri&quot;: &quot;A String&quot;, # Cloud Storage or HTTP uri for the document.
              },
            ],
            &quot;summary&quot;: &quot;A String&quot;, # Summary text with no citation information.
          },
        },
      },
      &quot;userInput&quot;: { # Defines text input. # User text input.
        &quot;context&quot;: { # Defines context of the conversation # Conversation context of the input.
          &quot;activeDocument&quot;: &quot;A String&quot;, # The current active document the user opened. It contains the document resource reference.
          &quot;contextDocuments&quot;: [ # The current list of documents the user is seeing. It contains the document resource references.
            &quot;A String&quot;,
          ],
        },
        &quot;input&quot;: &quot;A String&quot;, # Text input.
      },
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Immutable. Fully qualified name `projects/{project}/locations/global/collections/{collection}/dataStore/*/conversations/*` or `projects/{project}/locations/global/collections/{collection}/engines/*/conversations/*`.
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time the conversation started.
  &quot;state&quot;: &quot;A String&quot;, # The state of the Conversation.
  &quot;userPseudoId&quot;: &quot;A String&quot;, # A unique identifier for tracking users.
}</pre>
</div>

</body></html>