<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.sampleQuerySets.html">sampleQuerySets</a> . <a href="discoveryengine_v1alpha.projects.locations.sampleQuerySets.sampleQueries.html">sampleQueries</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="#create">create(parent, body=None, sampleQueryId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a SampleQuery</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a SampleQuery.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a SampleQuery.</p>
<p class="toc_element">
  <code><a href="#import_">import_(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Bulk import of multiple SampleQuerys. Sample queries that already exist may be deleted. Note: It is possible for a subset of the SampleQuerys to be successfully imported.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a list of SampleQuerys.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</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 SampleQuery.</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="create">create(parent, body=None, sampleQueryId=None, x__xgafv=None)</code>
  <pre>Creates a SampleQuery

Args:
  parent: string, Required. The parent resource name, such as `projects/{project}/locations/{location}/sampleQuerySets/{sampleQuerySet}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Sample Query captures metadata to be used for evaluation.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp the SampleQuery was created at.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The full resource name of the sample query, in the format of `projects/{project}/locations/{location}/sampleQuerySets/{sample_query_set}/sampleQueries/{sample_query}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
  &quot;queryEntry&quot;: { # Query Entry captures metadata to be used for search evaluation. # The query entry.
    &quot;query&quot;: &quot;A String&quot;, # Required. The query.
    &quot;targets&quot;: [ # List of targets for the query.
      { # Defines the parameters of the query&#x27;s expected outcome.
        &quot;pageNumbers&quot;: [ # Expected page numbers of the target. Each page number must be non negative.
          42,
        ],
        &quot;score&quot;: 3.14, # Relevance score of the target.
        &quot;uri&quot;: &quot;A String&quot;, # Expected uri of the target. This field must be a UTF-8 encoded string with a length limit of 2048 characters. Example of valid uris: `https://example.com/abc`, `gcs://example/example.pdf`.
      },
    ],
  },
}

  sampleQueryId: string, Required. The ID to use for the SampleQuery, which will become the final component of the SampleQuery.name. If the caller does not have permission to create the SampleQuery, regardless of whether or not it exists, a `PERMISSION_DENIED` error is returned. This field must be unique among all SampleQuerys with the same parent. Otherwise, an `ALREADY_EXISTS` error is returned. This field must conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters. Otherwise, an `INVALID_ARGUMENT` error is returned.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Sample Query captures metadata to be used for evaluation.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp the SampleQuery was created at.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The full resource name of the sample query, in the format of `projects/{project}/locations/{location}/sampleQuerySets/{sample_query_set}/sampleQueries/{sample_query}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
  &quot;queryEntry&quot;: { # Query Entry captures metadata to be used for search evaluation. # The query entry.
    &quot;query&quot;: &quot;A String&quot;, # Required. The query.
    &quot;targets&quot;: [ # List of targets for the query.
      { # Defines the parameters of the query&#x27;s expected outcome.
        &quot;pageNumbers&quot;: [ # Expected page numbers of the target. Each page number must be non negative.
          42,
        ],
        &quot;score&quot;: 3.14, # Relevance score of the target.
        &quot;uri&quot;: &quot;A String&quot;, # Expected uri of the target. This field must be a UTF-8 encoded string with a length limit of 2048 characters. Example of valid uris: `https://example.com/abc`, `gcs://example/example.pdf`.
      },
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a SampleQuery.

Args:
  name: string, Required. Full resource name of SampleQuery, such as `projects/{project}/locations/{location}/sampleQuerySets/{sample_query_set}/sampleQueries/{sample_query}`. If the caller does not have permission to delete the SampleQuery, regardless of whether or not it exists, a `PERMISSION_DENIED` error is returned. If the SampleQuery to delete does not exist, a `NOT_FOUND` error is returned. (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 SampleQuery.

Args:
  name: string, Required. Full resource name of SampleQuery, such as `projects/{project}/locations/{location}/sampleQuerySets/{sample_query_set}/sampleQueries/{sample_query}`. If the caller does not have permission to access the SampleQuery, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. If the requested SampleQuery does not exist, a NOT_FOUND error is returned. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Sample Query captures metadata to be used for evaluation.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp the SampleQuery was created at.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The full resource name of the sample query, in the format of `projects/{project}/locations/{location}/sampleQuerySets/{sample_query_set}/sampleQueries/{sample_query}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
  &quot;queryEntry&quot;: { # Query Entry captures metadata to be used for search evaluation. # The query entry.
    &quot;query&quot;: &quot;A String&quot;, # Required. The query.
    &quot;targets&quot;: [ # List of targets for the query.
      { # Defines the parameters of the query&#x27;s expected outcome.
        &quot;pageNumbers&quot;: [ # Expected page numbers of the target. Each page number must be non negative.
          42,
        ],
        &quot;score&quot;: 3.14, # Relevance score of the target.
        &quot;uri&quot;: &quot;A String&quot;, # Expected uri of the target. This field must be a UTF-8 encoded string with a length limit of 2048 characters. Example of valid uris: `https://example.com/abc`, `gcs://example/example.pdf`.
      },
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="import_">import_(parent, body=None, x__xgafv=None)</code>
  <pre>Bulk import of multiple SampleQuerys. Sample queries that already exist may be deleted. Note: It is possible for a subset of the SampleQuerys to be successfully imported.

Args:
  parent: string, Required. The parent sample query set resource name, such as `projects/{project}/locations/{location}/sampleQuerySets/{sampleQuerySet}`. If the caller does not have permission to list SampleQuerys under this sample query set, regardless of whether or not this sample query set exists, a `PERMISSION_DENIED` error is returned. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for SampleQueryService.ImportSampleQueries method.
  &quot;bigquerySource&quot;: { # BigQuery source import data from. # BigQuery input source.
    &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for user event imports: * `user_event` (default): One UserEvent per row. Supported values for document imports: * `document` (default): One Document format per row. Each document must have a valid Document.id and one of Document.json_data or Document.struct_data. * `custom`: One custom data per row in arbitrary format that conforms to the defined Schema of the data store. This can only be used by the GENERIC Data Store vertical.
    &quot;datasetId&quot;: &quot;A String&quot;, # Required. The BigQuery data set to copy the data from with a length limit of 1,024 characters.
    &quot;gcsStagingDir&quot;: &quot;A String&quot;, # Intermediate Cloud Storage directory used for the import with a length limit of 2,000 characters. Can be specified if one wants to have the BigQuery export to a specific Cloud Storage directory.
    &quot;partitionDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp # BigQuery time partitioned table&#x27;s _PARTITIONDATE in YYYY-MM-DD format.
      &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
      &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
      &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
    },
    &quot;projectId&quot;: &quot;A String&quot;, # The project ID or the project number that contains the BigQuery source. Has a length limit of 128 characters. If not specified, inherits the project ID from the parent request.
    &quot;tableId&quot;: &quot;A String&quot;, # Required. The BigQuery table to copy the data from with a length limit of 1,024 characters.
  },
  &quot;errorConfig&quot;: { # Configuration of destination for Import related errors. # The desired location of errors incurred during the Import.
    &quot;gcsPrefix&quot;: &quot;A String&quot;, # Cloud Storage prefix for import errors. This must be an empty, existing Cloud Storage directory. Import errors are written to sharded files in this directory, one per line, as a JSON-encoded `google.rpc.Status` message.
  },
  &quot;gcsSource&quot;: { # Cloud Storage location for input content. # Cloud Storage location for the input content.
    &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for document imports: * `document` (default): One JSON Document per line. Each document must have a valid Document.id. * `content`: Unstructured data (e.g. PDF, HTML). Each file matched by `input_uris` becomes a document, with the ID set to the first 128 bits of SHA256(URI) encoded as a hex string. * `custom`: One custom data JSON per row in arbitrary format that conforms to the defined Schema of the data store. This can only be used by the GENERIC Data Store vertical. * `csv`: A CSV file with header conforming to the defined Schema of the data store. Each entry after the header is imported as a Document. This can only be used by the GENERIC Data Store vertical. Supported values for user event imports: * `user_event` (default): One JSON UserEvent per line.
    &quot;inputUris&quot;: [ # Required. Cloud Storage URIs to input files. Each URI can be up to 2000 characters long. URIs can match the full object path (for example, `gs://bucket/directory/object.json`) or a pattern matching one or more files, such as `gs://bucket/directory/*.json`. A request can contain at most 100 files (or 100,000 files if `data_schema` is `content`). Each file can be up to 2 GB (or 100 MB if `data_schema` is `content`).
      &quot;A String&quot;,
    ],
  },
  &quot;inlineSource&quot;: { # The inline source for SampleQuerys. # The Inline source for sample query entries.
    &quot;sampleQueries&quot;: [ # Required. A list of SampleQuerys to import. Max of 1000 items.
      { # Sample Query captures metadata to be used for evaluation.
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp the SampleQuery was created at.
        &quot;name&quot;: &quot;A String&quot;, # Identifier. The full resource name of the sample query, in the format of `projects/{project}/locations/{location}/sampleQuerySets/{sample_query_set}/sampleQueries/{sample_query}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
        &quot;queryEntry&quot;: { # Query Entry captures metadata to be used for search evaluation. # The query entry.
          &quot;query&quot;: &quot;A String&quot;, # Required. The query.
          &quot;targets&quot;: [ # List of targets for the query.
            { # Defines the parameters of the query&#x27;s expected outcome.
              &quot;pageNumbers&quot;: [ # Expected page numbers of the target. Each page number must be non negative.
                42,
              ],
              &quot;score&quot;: 3.14, # Relevance score of the target.
              &quot;uri&quot;: &quot;A String&quot;, # Expected uri of the target. This field must be a UTF-8 encoded string with a length limit of 2048 characters. Example of valid uris: `https://example.com/abc`, `gcs://example/example.pdf`.
            },
          ],
        },
      },
    ],
  },
}

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
    &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;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Gets a list of SampleQuerys.

Args:
  parent: string, Required. The parent sample query set resource name, such as `projects/{project}/locations/{location}/sampleQuerySets/{sampleQuerySet}`. If the caller does not have permission to list SampleQuerys under this sample query set, regardless of whether or not this sample query set exists, a `PERMISSION_DENIED` error is returned. (required)
  pageSize: integer, Maximum number of SampleQuerys to return. If unspecified, defaults to 100. The maximum allowed value is 1000. Values above 1000 will be coerced to 1000. If this field is negative, an `INVALID_ARGUMENT` error is returned.
  pageToken: string, A page token ListSampleQueriesResponse.next_page_token, received from a previous SampleQueryService.ListSampleQueries call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to SampleQueryService.ListSampleQueries must match the call that provided the page token. Otherwise, an `INVALID_ARGUMENT` error is returned.
  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 SampleQueryService.ListSampleQueries method.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token that can be sent as ListSampleQueriesRequest.page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.
  &quot;sampleQueries&quot;: [ # The SampleQuerys.
    { # Sample Query captures metadata to be used for evaluation.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp the SampleQuery was created at.
      &quot;name&quot;: &quot;A String&quot;, # Identifier. The full resource name of the sample query, in the format of `projects/{project}/locations/{location}/sampleQuerySets/{sample_query_set}/sampleQueries/{sample_query}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
      &quot;queryEntry&quot;: { # Query Entry captures metadata to be used for search evaluation. # The query entry.
        &quot;query&quot;: &quot;A String&quot;, # Required. The query.
        &quot;targets&quot;: [ # List of targets for the query.
          { # Defines the parameters of the query&#x27;s expected outcome.
            &quot;pageNumbers&quot;: [ # Expected page numbers of the target. Each page number must be non negative.
              42,
            ],
            &quot;score&quot;: 3.14, # Relevance score of the target.
            &quot;uri&quot;: &quot;A String&quot;, # Expected uri of the target. This field must be a UTF-8 encoded string with a length limit of 2048 characters. Example of valid uris: `https://example.com/abc`, `gcs://example/example.pdf`.
          },
        ],
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</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 SampleQuery.

Args:
  name: string, Identifier. The full resource name of the sample query, in the format of `projects/{project}/locations/{location}/sampleQuerySets/{sample_query_set}/sampleQueries/{sample_query}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters. (required)
  body: object, The request body.
    The object takes the form of:

{ # Sample Query captures metadata to be used for evaluation.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp the SampleQuery was created at.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The full resource name of the sample query, in the format of `projects/{project}/locations/{location}/sampleQuerySets/{sample_query_set}/sampleQueries/{sample_query}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
  &quot;queryEntry&quot;: { # Query Entry captures metadata to be used for search evaluation. # The query entry.
    &quot;query&quot;: &quot;A String&quot;, # Required. The query.
    &quot;targets&quot;: [ # List of targets for the query.
      { # Defines the parameters of the query&#x27;s expected outcome.
        &quot;pageNumbers&quot;: [ # Expected page numbers of the target. Each page number must be non negative.
          42,
        ],
        &quot;score&quot;: 3.14, # Relevance score of the target.
        &quot;uri&quot;: &quot;A String&quot;, # Expected uri of the target. This field must be a UTF-8 encoded string with a length limit of 2048 characters. Example of valid uris: `https://example.com/abc`, `gcs://example/example.pdf`.
      },
    ],
  },
}

  updateMask: string, Indicates which fields in the provided imported &#x27;simple query&#x27; to update. If not set, will by default update all fields.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Sample Query captures metadata to be used for evaluation.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp the SampleQuery was created at.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The full resource name of the sample query, in the format of `projects/{project}/locations/{location}/sampleQuerySets/{sample_query_set}/sampleQueries/{sample_query}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
  &quot;queryEntry&quot;: { # Query Entry captures metadata to be used for search evaluation. # The query entry.
    &quot;query&quot;: &quot;A String&quot;, # Required. The query.
    &quot;targets&quot;: [ # List of targets for the query.
      { # Defines the parameters of the query&#x27;s expected outcome.
        &quot;pageNumbers&quot;: [ # Expected page numbers of the target. Each page number must be non negative.
          42,
        ],
        &quot;score&quot;: 3.14, # Relevance score of the target.
        &quot;uri&quot;: &quot;A String&quot;, # Expected uri of the target. This field must be a UTF-8 encoded string with a length limit of 2048 characters. Example of valid uris: `https://example.com/abc`, `gcs://example/example.pdf`.
      },
    ],
  },
}</pre>
</div>

</body></html>