<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="cloudsearch_v1.html">Cloud Search API</a> . <a href="cloudsearch_v1.settings.html">settings</a> . <a href="cloudsearch_v1.settings.searchapplications.html">searchapplications</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(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a search application. **Note:** This API requires an admin account to execute.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, debugOptions_enableDebugging=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a search application. **Note:** This API requires an admin account to execute.</p>
<p class="toc_element">
  <code><a href="#get">get(name, debugOptions_enableDebugging=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the specified search application. **Note:** This API requires an admin account to execute.</p>
<p class="toc_element">
  <code><a href="#list">list(pageSize=None, debugOptions_enableDebugging=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all search applications. **Note:** This API requires an admin account to execute.</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="#reset">reset(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Resets a search application to default settings. This will return an empty response. **Note:** This API requires an admin account to execute.</p>
<p class="toc_element">
  <code><a href="#update">update(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a search application. **Note:** This API requires an admin account to execute.</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(body=None, x__xgafv=None)</code>
  <pre>Creates a search application. **Note:** This API requires an admin account to execute.

Args:
  body: object, The request body.
    The object takes the form of:

{ # SearchApplication
    &quot;defaultFacetOptions&quot;: [ # The default fields for returning facet results. The sources specified here also have been included in data_source_restrictions above.
      { # Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination.
        &quot;operatorName&quot;: &quot;A String&quot;, # Name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions
        &quot;objectType&quot;: &quot;A String&quot;, # If object_type is set, only those objects of that type will be used to compute facets. If empty, then all objects will be used to compute facets.
        &quot;sourceName&quot;: &quot;A String&quot;, # Source name to facet on. Format: datasources/{source_id} If empty, all data sources will be used.
        &quot;numFacetBuckets&quot;: 42, # Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100.
      },
    ],
    &quot;operationIds&quot;: [ # Output only. IDs of the Long Running Operations (LROs) currently running for this schema. Output only field.
      &quot;A String&quot;,
    ],
    &quot;defaultSortOptions&quot;: { # The default options for sorting the search results
      &quot;sortOrder&quot;: &quot;A String&quot;, # Ascending is the default sort order
      &quot;operatorName&quot;: &quot;A String&quot;, # Name of the operator corresponding to the field to sort on. The corresponding property must be marked as sortable.
    },
    &quot;dataSourceRestrictions&quot;: [ # Retrictions applied to the configurations. The maximum number of elements is 10.
      { # Restriction on Datasource.
        &quot;source&quot;: { # Defines sources for the suggest/search APIs. # The source of restriction.
          &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
          &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
        },
        &quot;filterOptions&quot;: [ # Filter options restricting the results. If multiple filters are present, they are grouped by object type before joining. Filters with the same object type are joined conjunctively, then the resulting expressions are joined disjunctively. The maximum number of elements is 20. NOTE: Suggest API supports only few filters at the moment: &quot;objecttype&quot;, &quot;type&quot; and &quot;mimetype&quot;. For now, schema specific filters cannot be used to filter suggestions.
          { # Filter options to be applied on query.
            &quot;filter&quot;: { # A generic way of expressing filters in a query, which supports two approaches: **1. Setting a ValueFilter.** The name must match an operator_name defined in the schema for your data source. **2. Setting a CompositeFilter.** The filters are evaluated using the logical operator. The top-level operators can only be either an AND or a NOT. AND can appear only at the top-most level. OR can appear only under a top-level AND. # Generic filter to restrict the search, such as `lang:en`, `site:xyz`.
              &quot;compositeFilter&quot;: {
                &quot;subFilters&quot;: [ # Sub filters.
                  # Object with schema name: Filter
                ],
                &quot;logicOperator&quot;: &quot;A String&quot;, # The logic operator of the sub filter.
              },
              &quot;valueFilter&quot;: {
                &quot;operatorName&quot;: &quot;A String&quot;, # The `operator_name` applied to the query, such as *price_greater_than*. The filter can work against both types of filters defined in the schema for your data source: 1. `operator_name`, where the query filters results by the property that matches the value. 2. `greater_than_operator_name` or `less_than_operator_name` in your schema. The query filters the results for the property values that are greater than or less than the supplied value in the query.
                &quot;value&quot;: { # Definition of a single value with generic type. # The value to be compared with.
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleValue&quot;: 3.14,
                  &quot;dateValue&quot;: { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                    &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                    &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                    &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                  },
                  &quot;integerValue&quot;: &quot;A String&quot;,
                  &quot;stringValue&quot;: &quot;A String&quot;,
                  &quot;timestampValue&quot;: &quot;A String&quot;,
                },
              },
            },
            &quot;objectType&quot;: &quot;A String&quot;, # If object_type is set, only objects of that type are returned. This should correspond to the name of the object that was registered within the definition of schema. The maximum length is 256 characters.
          },
        ],
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Name of the Search Application. Format: searchapplications/{application_id}.
    &quot;sourceConfig&quot;: [ # Configuration for a sources specified in data_source_restrictions.
      { # Configurations for a source while processing a Search or Suggest request.
        &quot;scoringConfig&quot;: { # Set the scoring configuration. This allows modifying the ranking of results for a source. # The scoring configuration for the source.
          &quot;sourceImportance&quot;: &quot;A String&quot;, # Importance of the source.
        },
        &quot;source&quot;: { # Defines sources for the suggest/search APIs. # The source for which this configuration is to be used.
          &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
          &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
        },
        &quot;crowdingConfig&quot;: { # Set search results crowding limits. Crowding is a situation in which multiple results from the same source or host &quot;crowd out&quot; other results, diminishing the quality of search for users. To foster better search quality and source diversity in search results, you can set a condition to reduce repetitive results by source. # The crowding configuration for the source.
          &quot;numResults&quot;: 42, # Maximum number of results allowed from a source. No limits will be set on results if this value is less than or equal to 0.
          &quot;numSuggestions&quot;: 42, # Maximum number of suggestions allowed from a source. No limits will be set on results if this value is less than or equal to 0.
        },
      },
    ],
    &quot;scoringConfig&quot;: { # Scoring configurations for a source while processing a Search or Suggest request. # Configuration for ranking results.
      &quot;disablePersonalization&quot;: True or False, # Whether to personalize the results. By default, personal signals will be used to boost results.
      &quot;disableFreshness&quot;: True or False, # Whether to use freshness as a ranking signal. By default, freshness is used as a ranking signal. Note that this setting is not available in the Admin UI.
    },
    &quot;displayName&quot;: &quot;A String&quot;, # Display name of the Search Application. The maximum length is 300 characters.
  }

  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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &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;response&quot;: { # The normal response of the operation in case of success. 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.
    },
    &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}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, debugOptions_enableDebugging=None, x__xgafv=None)</code>
  <pre>Deletes a search application. **Note:** This API requires an admin account to execute.

Args:
  name: string, The name of the search application to be deleted. Format: applications/{application_id}. (required)
  debugOptions_enableDebugging: boolean, If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &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;response&quot;: { # The normal response of the operation in case of success. 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.
    },
    &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}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, debugOptions_enableDebugging=None, x__xgafv=None)</code>
  <pre>Gets the specified search application. **Note:** This API requires an admin account to execute.

Args:
  name: string, Name of the search application. Format: searchapplications/{application_id}. (required)
  debugOptions_enableDebugging: boolean, If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # SearchApplication
      &quot;defaultFacetOptions&quot;: [ # The default fields for returning facet results. The sources specified here also have been included in data_source_restrictions above.
        { # Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination.
          &quot;operatorName&quot;: &quot;A String&quot;, # Name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions
          &quot;objectType&quot;: &quot;A String&quot;, # If object_type is set, only those objects of that type will be used to compute facets. If empty, then all objects will be used to compute facets.
          &quot;sourceName&quot;: &quot;A String&quot;, # Source name to facet on. Format: datasources/{source_id} If empty, all data sources will be used.
          &quot;numFacetBuckets&quot;: 42, # Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100.
        },
      ],
      &quot;operationIds&quot;: [ # Output only. IDs of the Long Running Operations (LROs) currently running for this schema. Output only field.
        &quot;A String&quot;,
      ],
      &quot;defaultSortOptions&quot;: { # The default options for sorting the search results
        &quot;sortOrder&quot;: &quot;A String&quot;, # Ascending is the default sort order
        &quot;operatorName&quot;: &quot;A String&quot;, # Name of the operator corresponding to the field to sort on. The corresponding property must be marked as sortable.
      },
      &quot;dataSourceRestrictions&quot;: [ # Retrictions applied to the configurations. The maximum number of elements is 10.
        { # Restriction on Datasource.
          &quot;source&quot;: { # Defines sources for the suggest/search APIs. # The source of restriction.
            &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
            &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
          },
          &quot;filterOptions&quot;: [ # Filter options restricting the results. If multiple filters are present, they are grouped by object type before joining. Filters with the same object type are joined conjunctively, then the resulting expressions are joined disjunctively. The maximum number of elements is 20. NOTE: Suggest API supports only few filters at the moment: &quot;objecttype&quot;, &quot;type&quot; and &quot;mimetype&quot;. For now, schema specific filters cannot be used to filter suggestions.
            { # Filter options to be applied on query.
              &quot;filter&quot;: { # A generic way of expressing filters in a query, which supports two approaches: **1. Setting a ValueFilter.** The name must match an operator_name defined in the schema for your data source. **2. Setting a CompositeFilter.** The filters are evaluated using the logical operator. The top-level operators can only be either an AND or a NOT. AND can appear only at the top-most level. OR can appear only under a top-level AND. # Generic filter to restrict the search, such as `lang:en`, `site:xyz`.
                &quot;compositeFilter&quot;: {
                  &quot;subFilters&quot;: [ # Sub filters.
                    # Object with schema name: Filter
                  ],
                  &quot;logicOperator&quot;: &quot;A String&quot;, # The logic operator of the sub filter.
                },
                &quot;valueFilter&quot;: {
                  &quot;operatorName&quot;: &quot;A String&quot;, # The `operator_name` applied to the query, such as *price_greater_than*. The filter can work against both types of filters defined in the schema for your data source: 1. `operator_name`, where the query filters results by the property that matches the value. 2. `greater_than_operator_name` or `less_than_operator_name` in your schema. The query filters the results for the property values that are greater than or less than the supplied value in the query.
                  &quot;value&quot;: { # Definition of a single value with generic type. # The value to be compared with.
                    &quot;booleanValue&quot;: True or False,
                    &quot;doubleValue&quot;: 3.14,
                    &quot;dateValue&quot;: { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                      &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                      &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                      &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                    },
                    &quot;integerValue&quot;: &quot;A String&quot;,
                    &quot;stringValue&quot;: &quot;A String&quot;,
                    &quot;timestampValue&quot;: &quot;A String&quot;,
                  },
                },
              },
              &quot;objectType&quot;: &quot;A String&quot;, # If object_type is set, only objects of that type are returned. This should correspond to the name of the object that was registered within the definition of schema. The maximum length is 256 characters.
            },
          ],
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Name of the Search Application. Format: searchapplications/{application_id}.
      &quot;sourceConfig&quot;: [ # Configuration for a sources specified in data_source_restrictions.
        { # Configurations for a source while processing a Search or Suggest request.
          &quot;scoringConfig&quot;: { # Set the scoring configuration. This allows modifying the ranking of results for a source. # The scoring configuration for the source.
            &quot;sourceImportance&quot;: &quot;A String&quot;, # Importance of the source.
          },
          &quot;source&quot;: { # Defines sources for the suggest/search APIs. # The source for which this configuration is to be used.
            &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
            &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
          },
          &quot;crowdingConfig&quot;: { # Set search results crowding limits. Crowding is a situation in which multiple results from the same source or host &quot;crowd out&quot; other results, diminishing the quality of search for users. To foster better search quality and source diversity in search results, you can set a condition to reduce repetitive results by source. # The crowding configuration for the source.
            &quot;numResults&quot;: 42, # Maximum number of results allowed from a source. No limits will be set on results if this value is less than or equal to 0.
            &quot;numSuggestions&quot;: 42, # Maximum number of suggestions allowed from a source. No limits will be set on results if this value is less than or equal to 0.
          },
        },
      ],
      &quot;scoringConfig&quot;: { # Scoring configurations for a source while processing a Search or Suggest request. # Configuration for ranking results.
        &quot;disablePersonalization&quot;: True or False, # Whether to personalize the results. By default, personal signals will be used to boost results.
        &quot;disableFreshness&quot;: True or False, # Whether to use freshness as a ranking signal. By default, freshness is used as a ranking signal. Note that this setting is not available in the Admin UI.
      },
      &quot;displayName&quot;: &quot;A String&quot;, # Display name of the Search Application. The maximum length is 300 characters.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(pageSize=None, debugOptions_enableDebugging=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all search applications. **Note:** This API requires an admin account to execute.

Args:
  pageSize: integer, The maximum number of items to return.
  debugOptions_enableDebugging: boolean, If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  pageToken: string, The next_page_token value returned from a previous List request, if any. The default value is 10
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;searchApplications&quot;: [
      { # SearchApplication
          &quot;defaultFacetOptions&quot;: [ # The default fields for returning facet results. The sources specified here also have been included in data_source_restrictions above.
            { # Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination.
              &quot;operatorName&quot;: &quot;A String&quot;, # Name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions
              &quot;objectType&quot;: &quot;A String&quot;, # If object_type is set, only those objects of that type will be used to compute facets. If empty, then all objects will be used to compute facets.
              &quot;sourceName&quot;: &quot;A String&quot;, # Source name to facet on. Format: datasources/{source_id} If empty, all data sources will be used.
              &quot;numFacetBuckets&quot;: 42, # Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100.
            },
          ],
          &quot;operationIds&quot;: [ # Output only. IDs of the Long Running Operations (LROs) currently running for this schema. Output only field.
            &quot;A String&quot;,
          ],
          &quot;defaultSortOptions&quot;: { # The default options for sorting the search results
            &quot;sortOrder&quot;: &quot;A String&quot;, # Ascending is the default sort order
            &quot;operatorName&quot;: &quot;A String&quot;, # Name of the operator corresponding to the field to sort on. The corresponding property must be marked as sortable.
          },
          &quot;dataSourceRestrictions&quot;: [ # Retrictions applied to the configurations. The maximum number of elements is 10.
            { # Restriction on Datasource.
              &quot;source&quot;: { # Defines sources for the suggest/search APIs. # The source of restriction.
                &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
                &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
              },
              &quot;filterOptions&quot;: [ # Filter options restricting the results. If multiple filters are present, they are grouped by object type before joining. Filters with the same object type are joined conjunctively, then the resulting expressions are joined disjunctively. The maximum number of elements is 20. NOTE: Suggest API supports only few filters at the moment: &quot;objecttype&quot;, &quot;type&quot; and &quot;mimetype&quot;. For now, schema specific filters cannot be used to filter suggestions.
                { # Filter options to be applied on query.
                  &quot;filter&quot;: { # A generic way of expressing filters in a query, which supports two approaches: **1. Setting a ValueFilter.** The name must match an operator_name defined in the schema for your data source. **2. Setting a CompositeFilter.** The filters are evaluated using the logical operator. The top-level operators can only be either an AND or a NOT. AND can appear only at the top-most level. OR can appear only under a top-level AND. # Generic filter to restrict the search, such as `lang:en`, `site:xyz`.
                    &quot;compositeFilter&quot;: {
                      &quot;subFilters&quot;: [ # Sub filters.
                        # Object with schema name: Filter
                      ],
                      &quot;logicOperator&quot;: &quot;A String&quot;, # The logic operator of the sub filter.
                    },
                    &quot;valueFilter&quot;: {
                      &quot;operatorName&quot;: &quot;A String&quot;, # The `operator_name` applied to the query, such as *price_greater_than*. The filter can work against both types of filters defined in the schema for your data source: 1. `operator_name`, where the query filters results by the property that matches the value. 2. `greater_than_operator_name` or `less_than_operator_name` in your schema. The query filters the results for the property values that are greater than or less than the supplied value in the query.
                      &quot;value&quot;: { # Definition of a single value with generic type. # The value to be compared with.
                        &quot;booleanValue&quot;: True or False,
                        &quot;doubleValue&quot;: 3.14,
                        &quot;dateValue&quot;: { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                          &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                          &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                          &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                        },
                        &quot;integerValue&quot;: &quot;A String&quot;,
                        &quot;stringValue&quot;: &quot;A String&quot;,
                        &quot;timestampValue&quot;: &quot;A String&quot;,
                      },
                    },
                  },
                  &quot;objectType&quot;: &quot;A String&quot;, # If object_type is set, only objects of that type are returned. This should correspond to the name of the object that was registered within the definition of schema. The maximum length is 256 characters.
                },
              ],
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # Name of the Search Application. Format: searchapplications/{application_id}.
          &quot;sourceConfig&quot;: [ # Configuration for a sources specified in data_source_restrictions.
            { # Configurations for a source while processing a Search or Suggest request.
              &quot;scoringConfig&quot;: { # Set the scoring configuration. This allows modifying the ranking of results for a source. # The scoring configuration for the source.
                &quot;sourceImportance&quot;: &quot;A String&quot;, # Importance of the source.
              },
              &quot;source&quot;: { # Defines sources for the suggest/search APIs. # The source for which this configuration is to be used.
                &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
                &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
              },
              &quot;crowdingConfig&quot;: { # Set search results crowding limits. Crowding is a situation in which multiple results from the same source or host &quot;crowd out&quot; other results, diminishing the quality of search for users. To foster better search quality and source diversity in search results, you can set a condition to reduce repetitive results by source. # The crowding configuration for the source.
                &quot;numResults&quot;: 42, # Maximum number of results allowed from a source. No limits will be set on results if this value is less than or equal to 0.
                &quot;numSuggestions&quot;: 42, # Maximum number of suggestions allowed from a source. No limits will be set on results if this value is less than or equal to 0.
              },
            },
          ],
          &quot;scoringConfig&quot;: { # Scoring configurations for a source while processing a Search or Suggest request. # Configuration for ranking results.
            &quot;disablePersonalization&quot;: True or False, # Whether to personalize the results. By default, personal signals will be used to boost results.
            &quot;disableFreshness&quot;: True or False, # Whether to use freshness as a ranking signal. By default, freshness is used as a ranking signal. Note that this setting is not available in the Admin UI.
          },
          &quot;displayName&quot;: &quot;A String&quot;, # Display name of the Search Application. The maximum length is 300 characters.
        },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results in the list.
  }</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="reset">reset(name, body=None, x__xgafv=None)</code>
  <pre>Resets a search application to default settings. This will return an empty response. **Note:** This API requires an admin account to execute.

Args:
  name: string, The name of the search application to be reset. Format: applications/{application_id}. (required)
  body: object, The request body.
    The object takes the form of:

{
    &quot;debugOptions&quot;: { # Shared request debug options for all cloudsearch RPC methods. # Common debug options.
      &quot;enableDebugging&quot;: True or False, # If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
    },
  }

  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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &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;response&quot;: { # The normal response of the operation in case of success. 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.
    },
    &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}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(name, body=None, x__xgafv=None)</code>
  <pre>Updates a search application. **Note:** This API requires an admin account to execute.

Args:
  name: string, Name of the Search Application. Format: searchapplications/{application_id}. (required)
  body: object, The request body.
    The object takes the form of:

{ # SearchApplication
    &quot;defaultFacetOptions&quot;: [ # The default fields for returning facet results. The sources specified here also have been included in data_source_restrictions above.
      { # Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination.
        &quot;operatorName&quot;: &quot;A String&quot;, # Name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions
        &quot;objectType&quot;: &quot;A String&quot;, # If object_type is set, only those objects of that type will be used to compute facets. If empty, then all objects will be used to compute facets.
        &quot;sourceName&quot;: &quot;A String&quot;, # Source name to facet on. Format: datasources/{source_id} If empty, all data sources will be used.
        &quot;numFacetBuckets&quot;: 42, # Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100.
      },
    ],
    &quot;operationIds&quot;: [ # Output only. IDs of the Long Running Operations (LROs) currently running for this schema. Output only field.
      &quot;A String&quot;,
    ],
    &quot;defaultSortOptions&quot;: { # The default options for sorting the search results
      &quot;sortOrder&quot;: &quot;A String&quot;, # Ascending is the default sort order
      &quot;operatorName&quot;: &quot;A String&quot;, # Name of the operator corresponding to the field to sort on. The corresponding property must be marked as sortable.
    },
    &quot;dataSourceRestrictions&quot;: [ # Retrictions applied to the configurations. The maximum number of elements is 10.
      { # Restriction on Datasource.
        &quot;source&quot;: { # Defines sources for the suggest/search APIs. # The source of restriction.
          &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
          &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
        },
        &quot;filterOptions&quot;: [ # Filter options restricting the results. If multiple filters are present, they are grouped by object type before joining. Filters with the same object type are joined conjunctively, then the resulting expressions are joined disjunctively. The maximum number of elements is 20. NOTE: Suggest API supports only few filters at the moment: &quot;objecttype&quot;, &quot;type&quot; and &quot;mimetype&quot;. For now, schema specific filters cannot be used to filter suggestions.
          { # Filter options to be applied on query.
            &quot;filter&quot;: { # A generic way of expressing filters in a query, which supports two approaches: **1. Setting a ValueFilter.** The name must match an operator_name defined in the schema for your data source. **2. Setting a CompositeFilter.** The filters are evaluated using the logical operator. The top-level operators can only be either an AND or a NOT. AND can appear only at the top-most level. OR can appear only under a top-level AND. # Generic filter to restrict the search, such as `lang:en`, `site:xyz`.
              &quot;compositeFilter&quot;: {
                &quot;subFilters&quot;: [ # Sub filters.
                  # Object with schema name: Filter
                ],
                &quot;logicOperator&quot;: &quot;A String&quot;, # The logic operator of the sub filter.
              },
              &quot;valueFilter&quot;: {
                &quot;operatorName&quot;: &quot;A String&quot;, # The `operator_name` applied to the query, such as *price_greater_than*. The filter can work against both types of filters defined in the schema for your data source: 1. `operator_name`, where the query filters results by the property that matches the value. 2. `greater_than_operator_name` or `less_than_operator_name` in your schema. The query filters the results for the property values that are greater than or less than the supplied value in the query.
                &quot;value&quot;: { # Definition of a single value with generic type. # The value to be compared with.
                  &quot;booleanValue&quot;: True or False,
                  &quot;doubleValue&quot;: 3.14,
                  &quot;dateValue&quot;: { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                    &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                    &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                    &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                  },
                  &quot;integerValue&quot;: &quot;A String&quot;,
                  &quot;stringValue&quot;: &quot;A String&quot;,
                  &quot;timestampValue&quot;: &quot;A String&quot;,
                },
              },
            },
            &quot;objectType&quot;: &quot;A String&quot;, # If object_type is set, only objects of that type are returned. This should correspond to the name of the object that was registered within the definition of schema. The maximum length is 256 characters.
          },
        ],
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Name of the Search Application. Format: searchapplications/{application_id}.
    &quot;sourceConfig&quot;: [ # Configuration for a sources specified in data_source_restrictions.
      { # Configurations for a source while processing a Search or Suggest request.
        &quot;scoringConfig&quot;: { # Set the scoring configuration. This allows modifying the ranking of results for a source. # The scoring configuration for the source.
          &quot;sourceImportance&quot;: &quot;A String&quot;, # Importance of the source.
        },
        &quot;source&quot;: { # Defines sources for the suggest/search APIs. # The source for which this configuration is to be used.
          &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
          &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
        },
        &quot;crowdingConfig&quot;: { # Set search results crowding limits. Crowding is a situation in which multiple results from the same source or host &quot;crowd out&quot; other results, diminishing the quality of search for users. To foster better search quality and source diversity in search results, you can set a condition to reduce repetitive results by source. # The crowding configuration for the source.
          &quot;numResults&quot;: 42, # Maximum number of results allowed from a source. No limits will be set on results if this value is less than or equal to 0.
          &quot;numSuggestions&quot;: 42, # Maximum number of suggestions allowed from a source. No limits will be set on results if this value is less than or equal to 0.
        },
      },
    ],
    &quot;scoringConfig&quot;: { # Scoring configurations for a source while processing a Search or Suggest request. # Configuration for ranking results.
      &quot;disablePersonalization&quot;: True or False, # Whether to personalize the results. By default, personal signals will be used to boost results.
      &quot;disableFreshness&quot;: True or False, # Whether to use freshness as a ranking signal. By default, freshness is used as a ranking signal. Note that this setting is not available in the Admin UI.
    },
    &quot;displayName&quot;: &quot;A String&quot;, # Display name of the Search Application. The maximum length is 300 characters.
  }

  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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &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;response&quot;: { # The normal response of the operation in case of success. 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.
    },
    &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}`.
  }</pre>
</div>

</body></html>