<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></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.authorizations.html">authorizations()</a></code>
</p>
<p class="firstline">Returns the authorizations Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.cmekConfigs.html">cmekConfigs()</a></code>
</p>
<p class="firstline">Returns the cmekConfigs Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.collections.html">collections()</a></code>
</p>
<p class="firstline">Returns the collections Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.dataStores.html">dataStores()</a></code>
</p>
<p class="firstline">Returns the dataStores Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.evaluations.html">evaluations()</a></code>
</p>
<p class="firstline">Returns the evaluations Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.groundingConfigs.html">groundingConfigs()</a></code>
</p>
<p class="firstline">Returns the groundingConfigs Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.identityMappingStores.html">identityMappingStores()</a></code>
</p>
<p class="firstline">Returns the identityMappingStores Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.licenseConfigs.html">licenseConfigs()</a></code>
</p>
<p class="firstline">Returns the licenseConfigs Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.notebooks.html">notebooks()</a></code>
</p>
<p class="firstline">Returns the notebooks Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.operations.html">operations()</a></code>
</p>
<p class="firstline">Returns the operations Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.podcasts.html">podcasts()</a></code>
</p>
<p class="firstline">Returns the podcasts Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.rankingConfigs.html">rankingConfigs()</a></code>
</p>
<p class="firstline">Returns the rankingConfigs Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.requirements.html">requirements()</a></code>
</p>
<p class="firstline">Returns the requirements Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.sampleQuerySets.html">sampleQuerySets()</a></code>
</p>
<p class="firstline">Returns the sampleQuerySets Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.userEvents.html">userEvents()</a></code>
</p>
<p class="firstline">Returns the userEvents Resource.</p>

<p class="toc_element">
  <code><a href="discoveryengine_v1alpha.projects.locations.userStores.html">userStores()</a></code>
</p>
<p class="firstline">Returns the userStores Resource.</p>

<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="#estimateDataSize">estimateDataSize(location, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Estimates the data size to be used by a customer.</p>
<p class="toc_element">
  <code><a href="#getAclConfig">getAclConfig(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the AclConfig.</p>
<p class="toc_element">
  <code><a href="#getCmekConfig">getCmekConfig(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the CmekConfig.</p>
<p class="toc_element">
  <code><a href="#getConfigurablePricingUsageStats">getConfigurablePricingUsageStats(name, metricTypes=None, timeRange_endDate_day=None, timeRange_endDate_month=None, timeRange_endDate_year=None, timeRange_startDate_day=None, timeRange_startDate_month=None, timeRange_startDate_year=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets configurable pricing usage stats.</p>
<p class="toc_element">
  <code><a href="#obtainCrawlRate">obtainCrawlRate(location, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Obtains the time series data of organic or dedicated crawl rate for monitoring. When dedicated crawl rate is not set, it will return vertex AI's organic crawl rate time series. Organic crawl means Google automatically crawl the internet at its own convenience. When dedicated crawl rate is set, it will return vertex AI's dedicated crawl rate time series.</p>
<p class="toc_element">
  <code><a href="#removeDedicatedCrawlRate">removeDedicatedCrawlRate(location, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Removes the dedicated crawl rate for a craw_rate_scope. If the dedicated crawl rate was set, this will disable vertex AI's crawl bot from using the dedicated crawl rate for crawling. If the dedicated crawl rate was not set, this is a no-op.</p>
<p class="toc_element">
  <code><a href="#setDedicatedCrawlRate">setDedicatedCrawlRate(location, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the dedicated crawl rate for a crawl_rate_scope. If the dedicated crawl rate was not set, this will enable vertex AI's crawl bot to use the new dedicated crawl rate for crawling. If the dedicated crawl rate was set, vertex AI's crawl bot will try to update the rate to the new value. If the new value is too high, the crawl bot may crawl at a lower rate to avoid overloading the user's website.</p>
<p class="toc_element">
  <code><a href="#setUpDataConnector">setUpDataConnector(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a Collection and sets up the DataConnector for it. To stop a DataConnector after setup, use the CollectionService.DeleteCollection method.</p>
<p class="toc_element">
  <code><a href="#setUpDataConnectorV2">setUpDataConnectorV2(parent, body=None, collectionDisplayName=None, collectionId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a Collection and sets up the DataConnector for it. To stop a DataConnector after setup, use the CollectionService.DeleteCollection method.</p>
<p class="toc_element">
  <code><a href="#updateAclConfig">updateAclConfig(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Default ACL configuration for use in a location of a customer's project. Updates will only reflect to new data stores. Existing data stores will still use the old value.</p>
<p class="toc_element">
  <code><a href="#updateCmekConfig">updateCmekConfig(name, body=None, setDefault=None, x__xgafv=None)</a></code></p>
<p class="firstline">Provisions a CMEK key for use in a location of a customer's project. This method will also conduct location validation on the provided cmekConfig to make sure the key is valid and can be used in the selected location.</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="estimateDataSize">estimateDataSize(location, body=None, x__xgafv=None)</code>
  <pre>Estimates the data size to be used by a customer.

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

{ # Request message for EstimateBillingService.EstimateDataSize method
  &quot;fileDataSource&quot;: { # Data source contains files either in Cloud Storage or BigQuery. # Structured or unstructured data.
    &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;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;websiteDataSource&quot;: { # Data source is a set of website patterns that we crawl to get the total number of websites. # Website data.
    &quot;estimatorUriPatterns&quot;: [ # Required. The URI patterns to estimate the data sizes. At most 10 patterns are allowed, otherwise an INVALID_ARGUMENT error is thrown.
      { # URI patterns that we use to crawl.
        &quot;exactMatch&quot;: True or False, # Whether we infer the generated URI or use the exact provided one.
        &quot;exclusive&quot;: True or False, # Whether the pattern is exclusive or not. If set to true, the pattern is considered exclusive. If unset or set to false, the pattern is considered inclusive by default.
        &quot;providedUriPattern&quot;: &quot;A String&quot;, # User provided URI pattern. For example, `foo.com/bar/*`.
      },
    ],
  },
}

  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="getAclConfig">getAclConfig(name, x__xgafv=None)</code>
  <pre>Gets the AclConfig.

Args:
  name: string, Required. Resource name of AclConfig, such as `projects/*/locations/*/aclConfig`. If the caller does not have permission to access the AclConfig, regardless of whether or not it exists, a PERMISSION_DENIED 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:

    { # Access Control Configuration.
  &quot;idpConfig&quot;: { # Identity Provider Config. # Identity provider config.
    &quot;externalIdpConfig&quot;: { # Third party IDP Config. # External Identity provider config.
      &quot;workforcePoolName&quot;: &quot;A String&quot;, # Workforce pool name. Example: &quot;locations/global/workforcePools/pool_id&quot;
    },
    &quot;idpType&quot;: &quot;A String&quot;, # Identity provider type configured.
  },
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The full resource name of the acl configuration. Format: `projects/{project}/locations/{location}/aclConfig`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
}</pre>
</div>

<div class="method">
    <code class="details" id="getCmekConfig">getCmekConfig(name, x__xgafv=None)</code>
  <pre>Gets the CmekConfig.

Args:
  name: string, Required. Resource name of CmekConfig, such as `projects/*/locations/*/cmekConfig` or `projects/*/locations/*/cmekConfigs/*`. If the caller does not have permission to access the CmekConfig, regardless of whether or not it exists, a PERMISSION_DENIED 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:

    { # Configurations used to enable CMEK data encryption with Cloud KMS keys.
  &quot;isDefault&quot;: True or False, # Output only. The default CmekConfig for the Customer.
  &quot;kmsKey&quot;: &quot;A String&quot;, # Required. KMS key resource name which will be used to encrypt resources `projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{keyId}`.
  &quot;kmsKeyVersion&quot;: &quot;A String&quot;, # Output only. KMS key version resource name which will be used to encrypt resources `/cryptoKeyVersions/{keyVersion}`.
  &quot;lastRotationTimestampMicros&quot;: &quot;A String&quot;, # Output only. The timestamp of the last key rotation.
  &quot;name&quot;: &quot;A String&quot;, # Required. The name of the CmekConfig of the form `projects/{project}/locations/{location}/cmekConfig` or `projects/{project}/locations/{location}/cmekConfigs/{cmek_config}`.
  &quot;notebooklmState&quot;: &quot;A String&quot;, # Output only. Whether the NotebookLM Corpus is ready to be used.
  &quot;singleRegionKeys&quot;: [ # Optional. Single-regional CMEKs that are required for some VAIS features.
    { # Metadata for single-regional CMEKs.
      &quot;kmsKey&quot;: &quot;A String&quot;, # Required. Single-regional kms key resource name which will be used to encrypt resources `projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{keyId}`.
    },
  ],
  &quot;state&quot;: &quot;A String&quot;, # Output only. The states of the CmekConfig.
}</pre>
</div>

<div class="method">
    <code class="details" id="getConfigurablePricingUsageStats">getConfigurablePricingUsageStats(name, metricTypes=None, timeRange_endDate_day=None, timeRange_endDate_month=None, timeRange_endDate_year=None, timeRange_startDate_day=None, timeRange_startDate_month=None, timeRange_startDate_year=None, x__xgafv=None)</code>
  <pre>Gets configurable pricing usage stats.

Args:
  name: string, Required. The name of the ConfigurablePricingUsageStats to retrieve. Format: projects/{project}/locations/{location}/configurablePricingUsageStats (required)
  metricTypes: string, Optional. The metric types to return usage for. (repeated)
    Allowed values
      BILLING_METRIC_TYPE_UNSPECIFIED - Default value.
      DAILY_MDN_QPM - Daily median search request QPM.
      DAILY_MIN_QPM - Daily min search request QPM.
      DAILY_MAX_QPM - Daily max search request QPM.
      DAILY_SEARCH_REQUEST - Daily search request total.
      TOTAL_STORAGE - Total storage bytes for indexing core.
  timeRange_endDate_day: integer, 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.
  timeRange_endDate_month: integer, Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
  timeRange_endDate_year: integer, Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
  timeRange_startDate_day: integer, 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.
  timeRange_startDate_month: integer, Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
  timeRange_startDate_year: integer, Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for [EstimateBillingService.GetConfigurablePricingUsageStats] method.
  &quot;metricUsages&quot;: [ # A list of metric usages, one for each requested resource type that has data in the requested time range.
    { # The usage of a metric over a list of days.
      &quot;datedUsages&quot;: [ # The list of usages for this resource type, chronologically sorted by date. This is populated for metrics with daily aggregation like DAILY_MDN_QPM.
        { # A list of usages for a specific day.
          &quot;date&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 # The date of the usage.
            &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;usage&quot;: 3.14, # The usage value on the date.
        },
      ],
      &quot;metricType&quot;: &quot;A String&quot;, # The metric type.
      &quot;totalUsages&quot;: [ # The list of total usages for this resource type
        3.14,
      ],
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The name of the ConfigurablePricingUsageStats. Format: projects/{project}/locations/{location}/configurablePricingUsageStats
}</pre>
</div>

<div class="method">
    <code class="details" id="obtainCrawlRate">obtainCrawlRate(location, body=None, x__xgafv=None)</code>
  <pre>Obtains the time series data of organic or dedicated crawl rate for monitoring. When dedicated crawl rate is not set, it will return vertex AI&#x27;s organic crawl rate time series. Organic crawl means Google automatically crawl the internet at its own convenience. When dedicated crawl rate is set, it will return vertex AI&#x27;s dedicated crawl rate time series.

Args:
  location: string, Required. The location resource where crawl rate management will be performed. Format: `projects/{project}/locations/{location}` (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for CrawlRateManagementService.ObtainCrawlRate method.
  &quot;crawlRateScope&quot;: &quot;A String&quot;, # Required. The scope of the crawl rate that the user wants to monitor. Currently, only domain and host name are supported. A domain name example: `example.com`. A host name example: `www.example.com`. Please do not include `/` in the domain or host name.
}

  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 CrawlRateManagementService.ObtainCrawlRate method. The response contains organcic or dedicated crawl rate time series data for monitoring, depending on whether dedicated crawl rate is set.
  &quot;dedicatedCrawlRateTimeSeries&quot;: { # The historical dedicated crawl rate timeseries data, used for monitoring. Dedicated crawl is used by Vertex AI to crawl the user&#x27;s website when dedicate crawl is set. # The historical dedicated crawl rate timeseries data, used for monitoring.
    &quot;autoRefreshCrawlErrorRate&quot;: { # The historical crawl rate timeseries data, used for monitoring. # Vertex AI&#x27;s error rate time series of auto-refresh dedicated crawl.
      &quot;qpsTimeSeries&quot;: { # A collection of data points that describes the time-varying values of a metric. A time series is identified by a combination of a fully-specified monitored resource and a fully-specified metric. This type is used for both listing and creating time series. # The QPS of the crawl rate.
        &quot;description&quot;: &quot;A String&quot;, # Input only. A detailed description of the time series that will be associated with the google.api.MetricDescriptor for the metric. Once set, this field cannot be changed through CreateTimeSeries.
        &quot;metadata&quot;: { # Auxiliary metadata for a MonitoredResource object. MonitoredResource objects contain the minimum set of information to uniquely identify a monitored resource instance. There is some other useful auxiliary metadata. Monitoring and Logging use an ingestion pipeline to extract metadata for cloud resources of all types, and store the metadata in this message. # Output only. The associated monitored resource metadata. When reading a time series, this field will include metadata labels that are explicitly named in the reduction. When creating a time series, this field is ignored.
          &quot;systemLabels&quot;: { # Output only. Values for predefined system metadata labels. System labels are a kind of metadata extracted by Google, including &quot;machine_image&quot;, &quot;vpc&quot;, &quot;subnet_id&quot;, &quot;security_group&quot;, &quot;name&quot;, etc. System label values can be only strings, Boolean values, or a list of strings. For example: { &quot;name&quot;: &quot;my-test-instance&quot;, &quot;security_group&quot;: [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;], &quot;spot_instance&quot;: false }
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;userLabels&quot;: { # Output only. A map of user-defined metadata labels.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;metric&quot;: { # A specific metric, identified by specifying values for all of the labels of a `MetricDescriptor`. # The associated metric. A fully-specified metric used to identify the time series.
          &quot;labels&quot;: { # The set of label values that uniquely identify this metric. All labels listed in the `MetricDescriptor` must be assigned values.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # An existing metric type, see google.api.MetricDescriptor. For example, `custom.googleapis.com/invoice/paid/amount`.
        },
        &quot;metricKind&quot;: &quot;A String&quot;, # The metric kind of the time series. When listing time series, this metric kind might be different from the metric kind of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the metric kind of the associated metric. If the associated metric&#x27;s descriptor must be auto-created, then this field specifies the metric kind of the new descriptor and must be either `GAUGE` (the default) or `CUMULATIVE`.
        &quot;points&quot;: [ # The data points of this time series. When listing time series, points are returned in reverse time order. When creating a time series, this field must contain exactly one point and the point&#x27;s type must be the same as the value type of the associated metric. If the associated metric&#x27;s descriptor must be auto-created, then the value type of the descriptor is determined by the point&#x27;s type, which must be `BOOL`, `INT64`, `DOUBLE`, or `DISTRIBUTION`.
          { # A single data point in a time series.
            &quot;interval&quot;: { # A time interval extending just after a start time through an end time. If the start time is the same as the end time, then the interval represents a single point in time. # The time interval to which the data point applies. For `GAUGE` metrics, the start time is optional, but if it is supplied, it must equal the end time. For `DELTA` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For `CUMULATIVE` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points.
              &quot;endTime&quot;: &quot;A String&quot;, # Required. The end of the time interval.
              &quot;startTime&quot;: &quot;A String&quot;, # Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.
            },
            &quot;value&quot;: { # A single strongly-typed value. # The value of the data point.
              &quot;boolValue&quot;: True or False, # A Boolean value: `true` or `false`.
              &quot;distributionValue&quot;: { # `Distribution` contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets. The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values. The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by formulas for buckets of fixed or exponentially increasing widths. Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the `mean` and `sum_of_squared_deviation` fields meaningless. # A distribution value.
                &quot;bucketCounts&quot;: [ # The number of values in each bucket of the histogram, as described in `bucket_options`. If the distribution does not have a histogram, then omit this field. If there is a histogram, then the sum of the values in `bucket_counts` must equal the value in the `count` field of the distribution. If present, `bucket_counts` should contain N values, where N is the number of buckets specified in `bucket_options`. If you supply fewer than N values, the remaining values are assumed to be 0. The order of the values in `bucket_counts` follows the bucket numbering schemes described for the three bucket types. The first value must be the count for the underflow bucket (number 0). The next N-2 values are the counts for the finite buckets (number 1 through N-2). The N&#x27;th value in `bucket_counts` is the count for the overflow bucket (number N-1).
                  &quot;A String&quot;,
                ],
                &quot;bucketOptions&quot;: { # `BucketOptions` describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. `BucketOptions` does not include the number of values in each bucket. A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i &gt; 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite. # Defines the histogram bucket boundaries. If the distribution does not contain a histogram, then omit this field.
                  &quot;explicitBuckets&quot;: { # Specifies a set of buckets with arbitrary widths. There are `size(bounds) + 1` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): bounds[i] Lower bound (1 &lt;= i &lt; N); bounds[i - 1] The `bounds` field must contain at least one element. If `bounds` has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
                    &quot;bounds&quot;: [ # The values must be monotonically increasing.
                      3.14,
                    ],
                  },
                  &quot;exponentialBuckets&quot;: { # Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): scale * (growth_factor ^ i). Lower bound (1 &lt;= i &lt; N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
                    &quot;growthFactor&quot;: 3.14, # Must be greater than 1.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                    &quot;scale&quot;: 3.14, # Must be greater than 0.
                  },
                  &quot;linearBuckets&quot;: { # Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): offset + (width * i). Lower bound (1 &lt;= i &lt; N): offset + (width * (i - 1)). # The linear bucket.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                    &quot;offset&quot;: 3.14, # Lower bound of the first bucket.
                    &quot;width&quot;: 3.14, # Must be greater than 0.
                  },
                },
                &quot;count&quot;: &quot;A String&quot;, # The number of values in the population. Must be non-negative. This value must equal the sum of the values in `bucket_counts` if a histogram is provided.
                &quot;exemplars&quot;: [ # Must be in increasing order of `value` field.
                  { # Exemplars are example points that may be used to annotate aggregated distribution values. They are metadata that gives information about a particular value added to a Distribution bucket, such as a trace ID that was active when a value was added. They may contain further information, such as a example values and timestamps, origin, etc.
                    &quot;attachments&quot;: [ # Contextual information about the example value. Examples are: Trace: type.googleapis.com/google.monitoring.v3.SpanContext Literal string: type.googleapis.com/google.protobuf.StringValue Labels dropped during aggregation: type.googleapis.com/google.monitoring.v3.DroppedLabels There may be only a single attachment of any given message type in a single exemplar, and this is enforced by the system.
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                    &quot;timestamp&quot;: &quot;A String&quot;, # The observation (sampling) time of the above value.
                    &quot;value&quot;: 3.14, # Value of the exemplar point. This value determines to which bucket the exemplar belongs.
                  },
                ],
                &quot;mean&quot;: 3.14, # The arithmetic mean of the values in the population. If `count` is zero then this field must be zero.
                &quot;range&quot;: { # The range of the population values. # If specified, contains the range of the population values. The field must not be present if the `count` is zero.
                  &quot;max&quot;: 3.14, # The maximum of the population values.
                  &quot;min&quot;: 3.14, # The minimum of the population values.
                },
                &quot;sumOfSquaredDeviation&quot;: 3.14, # The sum of squared deviations from the mean of the values in the population. For values x_i this is: Sum[i=1..n]((x_i - mean)^2) Knuth, &quot;The Art of Computer Programming&quot;, Vol. 2, page 232, 3rd edition describes Welford&#x27;s method for accumulating this sum in one pass. If `count` is zero then this field must be zero.
              },
              &quot;doubleValue&quot;: 3.14, # A 64-bit double-precision floating-point number. Its magnitude is approximately ±10±300 and it has 16 significant digits of precision.
              &quot;int64Value&quot;: &quot;A String&quot;, # A 64-bit integer. Its range is approximately ±9.2x1018.
              &quot;stringValue&quot;: &quot;A String&quot;, # A variable-length string value.
            },
          },
        ],
        &quot;resource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The `type` field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the `labels` field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for `&quot;gce_instance&quot;` has labels `&quot;project_id&quot;`, `&quot;instance_id&quot;` and `&quot;zone&quot;`: { &quot;type&quot;: &quot;gce_instance&quot;, &quot;labels&quot;: { &quot;project_id&quot;: &quot;my-project&quot;, &quot;instance_id&quot;: &quot;12345678901234&quot;, &quot;zone&quot;: &quot;us-central1-a&quot; }} # The associated monitored resource. Custom metrics can use only certain monitored resource types in their time series data. For more information, see [Monitored resources for custom metrics](https://cloud.google.com/monitoring/custom-metrics/creating-metrics#custom-metric-resources).
          &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels `&quot;project_id&quot;`, `&quot;instance_id&quot;`, and `&quot;zone&quot;`.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the `type` field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is `gce_instance`. Some descriptors include the service name in the type; for example, the type of a Datastream stream is `datastream.googleapis.com/Stream`.
        },
        &quot;unit&quot;: &quot;A String&quot;, # The units in which the metric value is reported. It is only applicable if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines the representation of the stored metric values. This field can only be changed through CreateTimeSeries when it is empty.
        &quot;valueType&quot;: &quot;A String&quot;, # The value type of the time series. When listing time series, this value type might be different from the value type of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the type of the data in the `points` field.
      },
    },
    &quot;autoRefreshCrawlRate&quot;: { # The historical crawl rate timeseries data, used for monitoring. # Vertex AI&#x27;s dedicated crawl rate time series of auto-refresh, which is the crawl rate of Google-CloudVertexBot when dedicate crawl is set, and the crawl rate is for best effort use cases like refreshing urls periodically.
      &quot;qpsTimeSeries&quot;: { # A collection of data points that describes the time-varying values of a metric. A time series is identified by a combination of a fully-specified monitored resource and a fully-specified metric. This type is used for both listing and creating time series. # The QPS of the crawl rate.
        &quot;description&quot;: &quot;A String&quot;, # Input only. A detailed description of the time series that will be associated with the google.api.MetricDescriptor for the metric. Once set, this field cannot be changed through CreateTimeSeries.
        &quot;metadata&quot;: { # Auxiliary metadata for a MonitoredResource object. MonitoredResource objects contain the minimum set of information to uniquely identify a monitored resource instance. There is some other useful auxiliary metadata. Monitoring and Logging use an ingestion pipeline to extract metadata for cloud resources of all types, and store the metadata in this message. # Output only. The associated monitored resource metadata. When reading a time series, this field will include metadata labels that are explicitly named in the reduction. When creating a time series, this field is ignored.
          &quot;systemLabels&quot;: { # Output only. Values for predefined system metadata labels. System labels are a kind of metadata extracted by Google, including &quot;machine_image&quot;, &quot;vpc&quot;, &quot;subnet_id&quot;, &quot;security_group&quot;, &quot;name&quot;, etc. System label values can be only strings, Boolean values, or a list of strings. For example: { &quot;name&quot;: &quot;my-test-instance&quot;, &quot;security_group&quot;: [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;], &quot;spot_instance&quot;: false }
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;userLabels&quot;: { # Output only. A map of user-defined metadata labels.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;metric&quot;: { # A specific metric, identified by specifying values for all of the labels of a `MetricDescriptor`. # The associated metric. A fully-specified metric used to identify the time series.
          &quot;labels&quot;: { # The set of label values that uniquely identify this metric. All labels listed in the `MetricDescriptor` must be assigned values.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # An existing metric type, see google.api.MetricDescriptor. For example, `custom.googleapis.com/invoice/paid/amount`.
        },
        &quot;metricKind&quot;: &quot;A String&quot;, # The metric kind of the time series. When listing time series, this metric kind might be different from the metric kind of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the metric kind of the associated metric. If the associated metric&#x27;s descriptor must be auto-created, then this field specifies the metric kind of the new descriptor and must be either `GAUGE` (the default) or `CUMULATIVE`.
        &quot;points&quot;: [ # The data points of this time series. When listing time series, points are returned in reverse time order. When creating a time series, this field must contain exactly one point and the point&#x27;s type must be the same as the value type of the associated metric. If the associated metric&#x27;s descriptor must be auto-created, then the value type of the descriptor is determined by the point&#x27;s type, which must be `BOOL`, `INT64`, `DOUBLE`, or `DISTRIBUTION`.
          { # A single data point in a time series.
            &quot;interval&quot;: { # A time interval extending just after a start time through an end time. If the start time is the same as the end time, then the interval represents a single point in time. # The time interval to which the data point applies. For `GAUGE` metrics, the start time is optional, but if it is supplied, it must equal the end time. For `DELTA` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For `CUMULATIVE` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points.
              &quot;endTime&quot;: &quot;A String&quot;, # Required. The end of the time interval.
              &quot;startTime&quot;: &quot;A String&quot;, # Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.
            },
            &quot;value&quot;: { # A single strongly-typed value. # The value of the data point.
              &quot;boolValue&quot;: True or False, # A Boolean value: `true` or `false`.
              &quot;distributionValue&quot;: { # `Distribution` contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets. The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values. The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by formulas for buckets of fixed or exponentially increasing widths. Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the `mean` and `sum_of_squared_deviation` fields meaningless. # A distribution value.
                &quot;bucketCounts&quot;: [ # The number of values in each bucket of the histogram, as described in `bucket_options`. If the distribution does not have a histogram, then omit this field. If there is a histogram, then the sum of the values in `bucket_counts` must equal the value in the `count` field of the distribution. If present, `bucket_counts` should contain N values, where N is the number of buckets specified in `bucket_options`. If you supply fewer than N values, the remaining values are assumed to be 0. The order of the values in `bucket_counts` follows the bucket numbering schemes described for the three bucket types. The first value must be the count for the underflow bucket (number 0). The next N-2 values are the counts for the finite buckets (number 1 through N-2). The N&#x27;th value in `bucket_counts` is the count for the overflow bucket (number N-1).
                  &quot;A String&quot;,
                ],
                &quot;bucketOptions&quot;: { # `BucketOptions` describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. `BucketOptions` does not include the number of values in each bucket. A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i &gt; 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite. # Defines the histogram bucket boundaries. If the distribution does not contain a histogram, then omit this field.
                  &quot;explicitBuckets&quot;: { # Specifies a set of buckets with arbitrary widths. There are `size(bounds) + 1` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): bounds[i] Lower bound (1 &lt;= i &lt; N); bounds[i - 1] The `bounds` field must contain at least one element. If `bounds` has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
                    &quot;bounds&quot;: [ # The values must be monotonically increasing.
                      3.14,
                    ],
                  },
                  &quot;exponentialBuckets&quot;: { # Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): scale * (growth_factor ^ i). Lower bound (1 &lt;= i &lt; N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
                    &quot;growthFactor&quot;: 3.14, # Must be greater than 1.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                    &quot;scale&quot;: 3.14, # Must be greater than 0.
                  },
                  &quot;linearBuckets&quot;: { # Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): offset + (width * i). Lower bound (1 &lt;= i &lt; N): offset + (width * (i - 1)). # The linear bucket.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                    &quot;offset&quot;: 3.14, # Lower bound of the first bucket.
                    &quot;width&quot;: 3.14, # Must be greater than 0.
                  },
                },
                &quot;count&quot;: &quot;A String&quot;, # The number of values in the population. Must be non-negative. This value must equal the sum of the values in `bucket_counts` if a histogram is provided.
                &quot;exemplars&quot;: [ # Must be in increasing order of `value` field.
                  { # Exemplars are example points that may be used to annotate aggregated distribution values. They are metadata that gives information about a particular value added to a Distribution bucket, such as a trace ID that was active when a value was added. They may contain further information, such as a example values and timestamps, origin, etc.
                    &quot;attachments&quot;: [ # Contextual information about the example value. Examples are: Trace: type.googleapis.com/google.monitoring.v3.SpanContext Literal string: type.googleapis.com/google.protobuf.StringValue Labels dropped during aggregation: type.googleapis.com/google.monitoring.v3.DroppedLabels There may be only a single attachment of any given message type in a single exemplar, and this is enforced by the system.
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                    &quot;timestamp&quot;: &quot;A String&quot;, # The observation (sampling) time of the above value.
                    &quot;value&quot;: 3.14, # Value of the exemplar point. This value determines to which bucket the exemplar belongs.
                  },
                ],
                &quot;mean&quot;: 3.14, # The arithmetic mean of the values in the population. If `count` is zero then this field must be zero.
                &quot;range&quot;: { # The range of the population values. # If specified, contains the range of the population values. The field must not be present if the `count` is zero.
                  &quot;max&quot;: 3.14, # The maximum of the population values.
                  &quot;min&quot;: 3.14, # The minimum of the population values.
                },
                &quot;sumOfSquaredDeviation&quot;: 3.14, # The sum of squared deviations from the mean of the values in the population. For values x_i this is: Sum[i=1..n]((x_i - mean)^2) Knuth, &quot;The Art of Computer Programming&quot;, Vol. 2, page 232, 3rd edition describes Welford&#x27;s method for accumulating this sum in one pass. If `count` is zero then this field must be zero.
              },
              &quot;doubleValue&quot;: 3.14, # A 64-bit double-precision floating-point number. Its magnitude is approximately ±10±300 and it has 16 significant digits of precision.
              &quot;int64Value&quot;: &quot;A String&quot;, # A 64-bit integer. Its range is approximately ±9.2x1018.
              &quot;stringValue&quot;: &quot;A String&quot;, # A variable-length string value.
            },
          },
        ],
        &quot;resource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The `type` field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the `labels` field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for `&quot;gce_instance&quot;` has labels `&quot;project_id&quot;`, `&quot;instance_id&quot;` and `&quot;zone&quot;`: { &quot;type&quot;: &quot;gce_instance&quot;, &quot;labels&quot;: { &quot;project_id&quot;: &quot;my-project&quot;, &quot;instance_id&quot;: &quot;12345678901234&quot;, &quot;zone&quot;: &quot;us-central1-a&quot; }} # The associated monitored resource. Custom metrics can use only certain monitored resource types in their time series data. For more information, see [Monitored resources for custom metrics](https://cloud.google.com/monitoring/custom-metrics/creating-metrics#custom-metric-resources).
          &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels `&quot;project_id&quot;`, `&quot;instance_id&quot;`, and `&quot;zone&quot;`.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the `type` field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is `gce_instance`. Some descriptors include the service name in the type; for example, the type of a Datastream stream is `datastream.googleapis.com/Stream`.
        },
        &quot;unit&quot;: &quot;A String&quot;, # The units in which the metric value is reported. It is only applicable if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines the representation of the stored metric values. This field can only be changed through CreateTimeSeries when it is empty.
        &quot;valueType&quot;: &quot;A String&quot;, # The value type of the time series. When listing time series, this value type might be different from the value type of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the type of the data in the `points` field.
      },
    },
    &quot;userTriggeredCrawlErrorRate&quot;: { # The historical crawl rate timeseries data, used for monitoring. # Vertex AI&#x27;s error rate time series of user triggered dedicated crawl.
      &quot;qpsTimeSeries&quot;: { # A collection of data points that describes the time-varying values of a metric. A time series is identified by a combination of a fully-specified monitored resource and a fully-specified metric. This type is used for both listing and creating time series. # The QPS of the crawl rate.
        &quot;description&quot;: &quot;A String&quot;, # Input only. A detailed description of the time series that will be associated with the google.api.MetricDescriptor for the metric. Once set, this field cannot be changed through CreateTimeSeries.
        &quot;metadata&quot;: { # Auxiliary metadata for a MonitoredResource object. MonitoredResource objects contain the minimum set of information to uniquely identify a monitored resource instance. There is some other useful auxiliary metadata. Monitoring and Logging use an ingestion pipeline to extract metadata for cloud resources of all types, and store the metadata in this message. # Output only. The associated monitored resource metadata. When reading a time series, this field will include metadata labels that are explicitly named in the reduction. When creating a time series, this field is ignored.
          &quot;systemLabels&quot;: { # Output only. Values for predefined system metadata labels. System labels are a kind of metadata extracted by Google, including &quot;machine_image&quot;, &quot;vpc&quot;, &quot;subnet_id&quot;, &quot;security_group&quot;, &quot;name&quot;, etc. System label values can be only strings, Boolean values, or a list of strings. For example: { &quot;name&quot;: &quot;my-test-instance&quot;, &quot;security_group&quot;: [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;], &quot;spot_instance&quot;: false }
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;userLabels&quot;: { # Output only. A map of user-defined metadata labels.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;metric&quot;: { # A specific metric, identified by specifying values for all of the labels of a `MetricDescriptor`. # The associated metric. A fully-specified metric used to identify the time series.
          &quot;labels&quot;: { # The set of label values that uniquely identify this metric. All labels listed in the `MetricDescriptor` must be assigned values.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # An existing metric type, see google.api.MetricDescriptor. For example, `custom.googleapis.com/invoice/paid/amount`.
        },
        &quot;metricKind&quot;: &quot;A String&quot;, # The metric kind of the time series. When listing time series, this metric kind might be different from the metric kind of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the metric kind of the associated metric. If the associated metric&#x27;s descriptor must be auto-created, then this field specifies the metric kind of the new descriptor and must be either `GAUGE` (the default) or `CUMULATIVE`.
        &quot;points&quot;: [ # The data points of this time series. When listing time series, points are returned in reverse time order. When creating a time series, this field must contain exactly one point and the point&#x27;s type must be the same as the value type of the associated metric. If the associated metric&#x27;s descriptor must be auto-created, then the value type of the descriptor is determined by the point&#x27;s type, which must be `BOOL`, `INT64`, `DOUBLE`, or `DISTRIBUTION`.
          { # A single data point in a time series.
            &quot;interval&quot;: { # A time interval extending just after a start time through an end time. If the start time is the same as the end time, then the interval represents a single point in time. # The time interval to which the data point applies. For `GAUGE` metrics, the start time is optional, but if it is supplied, it must equal the end time. For `DELTA` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For `CUMULATIVE` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points.
              &quot;endTime&quot;: &quot;A String&quot;, # Required. The end of the time interval.
              &quot;startTime&quot;: &quot;A String&quot;, # Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.
            },
            &quot;value&quot;: { # A single strongly-typed value. # The value of the data point.
              &quot;boolValue&quot;: True or False, # A Boolean value: `true` or `false`.
              &quot;distributionValue&quot;: { # `Distribution` contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets. The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values. The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by formulas for buckets of fixed or exponentially increasing widths. Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the `mean` and `sum_of_squared_deviation` fields meaningless. # A distribution value.
                &quot;bucketCounts&quot;: [ # The number of values in each bucket of the histogram, as described in `bucket_options`. If the distribution does not have a histogram, then omit this field. If there is a histogram, then the sum of the values in `bucket_counts` must equal the value in the `count` field of the distribution. If present, `bucket_counts` should contain N values, where N is the number of buckets specified in `bucket_options`. If you supply fewer than N values, the remaining values are assumed to be 0. The order of the values in `bucket_counts` follows the bucket numbering schemes described for the three bucket types. The first value must be the count for the underflow bucket (number 0). The next N-2 values are the counts for the finite buckets (number 1 through N-2). The N&#x27;th value in `bucket_counts` is the count for the overflow bucket (number N-1).
                  &quot;A String&quot;,
                ],
                &quot;bucketOptions&quot;: { # `BucketOptions` describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. `BucketOptions` does not include the number of values in each bucket. A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i &gt; 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite. # Defines the histogram bucket boundaries. If the distribution does not contain a histogram, then omit this field.
                  &quot;explicitBuckets&quot;: { # Specifies a set of buckets with arbitrary widths. There are `size(bounds) + 1` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): bounds[i] Lower bound (1 &lt;= i &lt; N); bounds[i - 1] The `bounds` field must contain at least one element. If `bounds` has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
                    &quot;bounds&quot;: [ # The values must be monotonically increasing.
                      3.14,
                    ],
                  },
                  &quot;exponentialBuckets&quot;: { # Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): scale * (growth_factor ^ i). Lower bound (1 &lt;= i &lt; N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
                    &quot;growthFactor&quot;: 3.14, # Must be greater than 1.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                    &quot;scale&quot;: 3.14, # Must be greater than 0.
                  },
                  &quot;linearBuckets&quot;: { # Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): offset + (width * i). Lower bound (1 &lt;= i &lt; N): offset + (width * (i - 1)). # The linear bucket.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                    &quot;offset&quot;: 3.14, # Lower bound of the first bucket.
                    &quot;width&quot;: 3.14, # Must be greater than 0.
                  },
                },
                &quot;count&quot;: &quot;A String&quot;, # The number of values in the population. Must be non-negative. This value must equal the sum of the values in `bucket_counts` if a histogram is provided.
                &quot;exemplars&quot;: [ # Must be in increasing order of `value` field.
                  { # Exemplars are example points that may be used to annotate aggregated distribution values. They are metadata that gives information about a particular value added to a Distribution bucket, such as a trace ID that was active when a value was added. They may contain further information, such as a example values and timestamps, origin, etc.
                    &quot;attachments&quot;: [ # Contextual information about the example value. Examples are: Trace: type.googleapis.com/google.monitoring.v3.SpanContext Literal string: type.googleapis.com/google.protobuf.StringValue Labels dropped during aggregation: type.googleapis.com/google.monitoring.v3.DroppedLabels There may be only a single attachment of any given message type in a single exemplar, and this is enforced by the system.
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                    &quot;timestamp&quot;: &quot;A String&quot;, # The observation (sampling) time of the above value.
                    &quot;value&quot;: 3.14, # Value of the exemplar point. This value determines to which bucket the exemplar belongs.
                  },
                ],
                &quot;mean&quot;: 3.14, # The arithmetic mean of the values in the population. If `count` is zero then this field must be zero.
                &quot;range&quot;: { # The range of the population values. # If specified, contains the range of the population values. The field must not be present if the `count` is zero.
                  &quot;max&quot;: 3.14, # The maximum of the population values.
                  &quot;min&quot;: 3.14, # The minimum of the population values.
                },
                &quot;sumOfSquaredDeviation&quot;: 3.14, # The sum of squared deviations from the mean of the values in the population. For values x_i this is: Sum[i=1..n]((x_i - mean)^2) Knuth, &quot;The Art of Computer Programming&quot;, Vol. 2, page 232, 3rd edition describes Welford&#x27;s method for accumulating this sum in one pass. If `count` is zero then this field must be zero.
              },
              &quot;doubleValue&quot;: 3.14, # A 64-bit double-precision floating-point number. Its magnitude is approximately ±10±300 and it has 16 significant digits of precision.
              &quot;int64Value&quot;: &quot;A String&quot;, # A 64-bit integer. Its range is approximately ±9.2x1018.
              &quot;stringValue&quot;: &quot;A String&quot;, # A variable-length string value.
            },
          },
        ],
        &quot;resource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The `type` field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the `labels` field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for `&quot;gce_instance&quot;` has labels `&quot;project_id&quot;`, `&quot;instance_id&quot;` and `&quot;zone&quot;`: { &quot;type&quot;: &quot;gce_instance&quot;, &quot;labels&quot;: { &quot;project_id&quot;: &quot;my-project&quot;, &quot;instance_id&quot;: &quot;12345678901234&quot;, &quot;zone&quot;: &quot;us-central1-a&quot; }} # The associated monitored resource. Custom metrics can use only certain monitored resource types in their time series data. For more information, see [Monitored resources for custom metrics](https://cloud.google.com/monitoring/custom-metrics/creating-metrics#custom-metric-resources).
          &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels `&quot;project_id&quot;`, `&quot;instance_id&quot;`, and `&quot;zone&quot;`.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the `type` field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is `gce_instance`. Some descriptors include the service name in the type; for example, the type of a Datastream stream is `datastream.googleapis.com/Stream`.
        },
        &quot;unit&quot;: &quot;A String&quot;, # The units in which the metric value is reported. It is only applicable if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines the representation of the stored metric values. This field can only be changed through CreateTimeSeries when it is empty.
        &quot;valueType&quot;: &quot;A String&quot;, # The value type of the time series. When listing time series, this value type might be different from the value type of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the type of the data in the `points` field.
      },
    },
    &quot;userTriggeredCrawlRate&quot;: { # The historical crawl rate timeseries data, used for monitoring. # Vertex AI&#x27;s dedicated crawl rate time series of user triggered crawl, which is the crawl rate of Google-CloudVertexBot when dedicate crawl is set, and user triggered crawl rate is for deterministic use cases like crawling urls or sitemaps specified by users.
      &quot;qpsTimeSeries&quot;: { # A collection of data points that describes the time-varying values of a metric. A time series is identified by a combination of a fully-specified monitored resource and a fully-specified metric. This type is used for both listing and creating time series. # The QPS of the crawl rate.
        &quot;description&quot;: &quot;A String&quot;, # Input only. A detailed description of the time series that will be associated with the google.api.MetricDescriptor for the metric. Once set, this field cannot be changed through CreateTimeSeries.
        &quot;metadata&quot;: { # Auxiliary metadata for a MonitoredResource object. MonitoredResource objects contain the minimum set of information to uniquely identify a monitored resource instance. There is some other useful auxiliary metadata. Monitoring and Logging use an ingestion pipeline to extract metadata for cloud resources of all types, and store the metadata in this message. # Output only. The associated monitored resource metadata. When reading a time series, this field will include metadata labels that are explicitly named in the reduction. When creating a time series, this field is ignored.
          &quot;systemLabels&quot;: { # Output only. Values for predefined system metadata labels. System labels are a kind of metadata extracted by Google, including &quot;machine_image&quot;, &quot;vpc&quot;, &quot;subnet_id&quot;, &quot;security_group&quot;, &quot;name&quot;, etc. System label values can be only strings, Boolean values, or a list of strings. For example: { &quot;name&quot;: &quot;my-test-instance&quot;, &quot;security_group&quot;: [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;], &quot;spot_instance&quot;: false }
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;userLabels&quot;: { # Output only. A map of user-defined metadata labels.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;metric&quot;: { # A specific metric, identified by specifying values for all of the labels of a `MetricDescriptor`. # The associated metric. A fully-specified metric used to identify the time series.
          &quot;labels&quot;: { # The set of label values that uniquely identify this metric. All labels listed in the `MetricDescriptor` must be assigned values.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # An existing metric type, see google.api.MetricDescriptor. For example, `custom.googleapis.com/invoice/paid/amount`.
        },
        &quot;metricKind&quot;: &quot;A String&quot;, # The metric kind of the time series. When listing time series, this metric kind might be different from the metric kind of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the metric kind of the associated metric. If the associated metric&#x27;s descriptor must be auto-created, then this field specifies the metric kind of the new descriptor and must be either `GAUGE` (the default) or `CUMULATIVE`.
        &quot;points&quot;: [ # The data points of this time series. When listing time series, points are returned in reverse time order. When creating a time series, this field must contain exactly one point and the point&#x27;s type must be the same as the value type of the associated metric. If the associated metric&#x27;s descriptor must be auto-created, then the value type of the descriptor is determined by the point&#x27;s type, which must be `BOOL`, `INT64`, `DOUBLE`, or `DISTRIBUTION`.
          { # A single data point in a time series.
            &quot;interval&quot;: { # A time interval extending just after a start time through an end time. If the start time is the same as the end time, then the interval represents a single point in time. # The time interval to which the data point applies. For `GAUGE` metrics, the start time is optional, but if it is supplied, it must equal the end time. For `DELTA` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For `CUMULATIVE` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points.
              &quot;endTime&quot;: &quot;A String&quot;, # Required. The end of the time interval.
              &quot;startTime&quot;: &quot;A String&quot;, # Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.
            },
            &quot;value&quot;: { # A single strongly-typed value. # The value of the data point.
              &quot;boolValue&quot;: True or False, # A Boolean value: `true` or `false`.
              &quot;distributionValue&quot;: { # `Distribution` contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets. The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values. The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by formulas for buckets of fixed or exponentially increasing widths. Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the `mean` and `sum_of_squared_deviation` fields meaningless. # A distribution value.
                &quot;bucketCounts&quot;: [ # The number of values in each bucket of the histogram, as described in `bucket_options`. If the distribution does not have a histogram, then omit this field. If there is a histogram, then the sum of the values in `bucket_counts` must equal the value in the `count` field of the distribution. If present, `bucket_counts` should contain N values, where N is the number of buckets specified in `bucket_options`. If you supply fewer than N values, the remaining values are assumed to be 0. The order of the values in `bucket_counts` follows the bucket numbering schemes described for the three bucket types. The first value must be the count for the underflow bucket (number 0). The next N-2 values are the counts for the finite buckets (number 1 through N-2). The N&#x27;th value in `bucket_counts` is the count for the overflow bucket (number N-1).
                  &quot;A String&quot;,
                ],
                &quot;bucketOptions&quot;: { # `BucketOptions` describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. `BucketOptions` does not include the number of values in each bucket. A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i &gt; 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite. # Defines the histogram bucket boundaries. If the distribution does not contain a histogram, then omit this field.
                  &quot;explicitBuckets&quot;: { # Specifies a set of buckets with arbitrary widths. There are `size(bounds) + 1` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): bounds[i] Lower bound (1 &lt;= i &lt; N); bounds[i - 1] The `bounds` field must contain at least one element. If `bounds` has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
                    &quot;bounds&quot;: [ # The values must be monotonically increasing.
                      3.14,
                    ],
                  },
                  &quot;exponentialBuckets&quot;: { # Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): scale * (growth_factor ^ i). Lower bound (1 &lt;= i &lt; N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
                    &quot;growthFactor&quot;: 3.14, # Must be greater than 1.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                    &quot;scale&quot;: 3.14, # Must be greater than 0.
                  },
                  &quot;linearBuckets&quot;: { # Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): offset + (width * i). Lower bound (1 &lt;= i &lt; N): offset + (width * (i - 1)). # The linear bucket.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                    &quot;offset&quot;: 3.14, # Lower bound of the first bucket.
                    &quot;width&quot;: 3.14, # Must be greater than 0.
                  },
                },
                &quot;count&quot;: &quot;A String&quot;, # The number of values in the population. Must be non-negative. This value must equal the sum of the values in `bucket_counts` if a histogram is provided.
                &quot;exemplars&quot;: [ # Must be in increasing order of `value` field.
                  { # Exemplars are example points that may be used to annotate aggregated distribution values. They are metadata that gives information about a particular value added to a Distribution bucket, such as a trace ID that was active when a value was added. They may contain further information, such as a example values and timestamps, origin, etc.
                    &quot;attachments&quot;: [ # Contextual information about the example value. Examples are: Trace: type.googleapis.com/google.monitoring.v3.SpanContext Literal string: type.googleapis.com/google.protobuf.StringValue Labels dropped during aggregation: type.googleapis.com/google.monitoring.v3.DroppedLabels There may be only a single attachment of any given message type in a single exemplar, and this is enforced by the system.
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                    &quot;timestamp&quot;: &quot;A String&quot;, # The observation (sampling) time of the above value.
                    &quot;value&quot;: 3.14, # Value of the exemplar point. This value determines to which bucket the exemplar belongs.
                  },
                ],
                &quot;mean&quot;: 3.14, # The arithmetic mean of the values in the population. If `count` is zero then this field must be zero.
                &quot;range&quot;: { # The range of the population values. # If specified, contains the range of the population values. The field must not be present if the `count` is zero.
                  &quot;max&quot;: 3.14, # The maximum of the population values.
                  &quot;min&quot;: 3.14, # The minimum of the population values.
                },
                &quot;sumOfSquaredDeviation&quot;: 3.14, # The sum of squared deviations from the mean of the values in the population. For values x_i this is: Sum[i=1..n]((x_i - mean)^2) Knuth, &quot;The Art of Computer Programming&quot;, Vol. 2, page 232, 3rd edition describes Welford&#x27;s method for accumulating this sum in one pass. If `count` is zero then this field must be zero.
              },
              &quot;doubleValue&quot;: 3.14, # A 64-bit double-precision floating-point number. Its magnitude is approximately ±10±300 and it has 16 significant digits of precision.
              &quot;int64Value&quot;: &quot;A String&quot;, # A 64-bit integer. Its range is approximately ±9.2x1018.
              &quot;stringValue&quot;: &quot;A String&quot;, # A variable-length string value.
            },
          },
        ],
        &quot;resource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The `type` field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the `labels` field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for `&quot;gce_instance&quot;` has labels `&quot;project_id&quot;`, `&quot;instance_id&quot;` and `&quot;zone&quot;`: { &quot;type&quot;: &quot;gce_instance&quot;, &quot;labels&quot;: { &quot;project_id&quot;: &quot;my-project&quot;, &quot;instance_id&quot;: &quot;12345678901234&quot;, &quot;zone&quot;: &quot;us-central1-a&quot; }} # The associated monitored resource. Custom metrics can use only certain monitored resource types in their time series data. For more information, see [Monitored resources for custom metrics](https://cloud.google.com/monitoring/custom-metrics/creating-metrics#custom-metric-resources).
          &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels `&quot;project_id&quot;`, `&quot;instance_id&quot;`, and `&quot;zone&quot;`.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the `type` field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is `gce_instance`. Some descriptors include the service name in the type; for example, the type of a Datastream stream is `datastream.googleapis.com/Stream`.
        },
        &quot;unit&quot;: &quot;A String&quot;, # The units in which the metric value is reported. It is only applicable if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines the representation of the stored metric values. This field can only be changed through CreateTimeSeries when it is empty.
        &quot;valueType&quot;: &quot;A String&quot;, # The value type of the time series. When listing time series, this value type might be different from the value type of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the type of the data in the `points` field.
      },
    },
  },
  &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). # Errors from service when handling the request.
    &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;organicCrawlRateTimeSeries&quot;: { # The historical organic crawl rate timeseries data, used for monitoring. Organic crawl is auto-determined by Google to crawl the user&#x27;s website when dedicate crawl is not set. Crawl rate is the QPS of crawl request Google sends to the user&#x27;s website. # The historical organic crawl rate timeseries data, used for monitoring.
    &quot;googleOrganicCrawlRate&quot;: { # The historical crawl rate timeseries data, used for monitoring. # Google&#x27;s organic crawl rate time series, which is the sum of all googlebots&#x27; crawl rate. Please refer to https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers for more details about googlebots.
      &quot;qpsTimeSeries&quot;: { # A collection of data points that describes the time-varying values of a metric. A time series is identified by a combination of a fully-specified monitored resource and a fully-specified metric. This type is used for both listing and creating time series. # The QPS of the crawl rate.
        &quot;description&quot;: &quot;A String&quot;, # Input only. A detailed description of the time series that will be associated with the google.api.MetricDescriptor for the metric. Once set, this field cannot be changed through CreateTimeSeries.
        &quot;metadata&quot;: { # Auxiliary metadata for a MonitoredResource object. MonitoredResource objects contain the minimum set of information to uniquely identify a monitored resource instance. There is some other useful auxiliary metadata. Monitoring and Logging use an ingestion pipeline to extract metadata for cloud resources of all types, and store the metadata in this message. # Output only. The associated monitored resource metadata. When reading a time series, this field will include metadata labels that are explicitly named in the reduction. When creating a time series, this field is ignored.
          &quot;systemLabels&quot;: { # Output only. Values for predefined system metadata labels. System labels are a kind of metadata extracted by Google, including &quot;machine_image&quot;, &quot;vpc&quot;, &quot;subnet_id&quot;, &quot;security_group&quot;, &quot;name&quot;, etc. System label values can be only strings, Boolean values, or a list of strings. For example: { &quot;name&quot;: &quot;my-test-instance&quot;, &quot;security_group&quot;: [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;], &quot;spot_instance&quot;: false }
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;userLabels&quot;: { # Output only. A map of user-defined metadata labels.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;metric&quot;: { # A specific metric, identified by specifying values for all of the labels of a `MetricDescriptor`. # The associated metric. A fully-specified metric used to identify the time series.
          &quot;labels&quot;: { # The set of label values that uniquely identify this metric. All labels listed in the `MetricDescriptor` must be assigned values.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # An existing metric type, see google.api.MetricDescriptor. For example, `custom.googleapis.com/invoice/paid/amount`.
        },
        &quot;metricKind&quot;: &quot;A String&quot;, # The metric kind of the time series. When listing time series, this metric kind might be different from the metric kind of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the metric kind of the associated metric. If the associated metric&#x27;s descriptor must be auto-created, then this field specifies the metric kind of the new descriptor and must be either `GAUGE` (the default) or `CUMULATIVE`.
        &quot;points&quot;: [ # The data points of this time series. When listing time series, points are returned in reverse time order. When creating a time series, this field must contain exactly one point and the point&#x27;s type must be the same as the value type of the associated metric. If the associated metric&#x27;s descriptor must be auto-created, then the value type of the descriptor is determined by the point&#x27;s type, which must be `BOOL`, `INT64`, `DOUBLE`, or `DISTRIBUTION`.
          { # A single data point in a time series.
            &quot;interval&quot;: { # A time interval extending just after a start time through an end time. If the start time is the same as the end time, then the interval represents a single point in time. # The time interval to which the data point applies. For `GAUGE` metrics, the start time is optional, but if it is supplied, it must equal the end time. For `DELTA` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For `CUMULATIVE` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points.
              &quot;endTime&quot;: &quot;A String&quot;, # Required. The end of the time interval.
              &quot;startTime&quot;: &quot;A String&quot;, # Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.
            },
            &quot;value&quot;: { # A single strongly-typed value. # The value of the data point.
              &quot;boolValue&quot;: True or False, # A Boolean value: `true` or `false`.
              &quot;distributionValue&quot;: { # `Distribution` contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets. The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values. The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by formulas for buckets of fixed or exponentially increasing widths. Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the `mean` and `sum_of_squared_deviation` fields meaningless. # A distribution value.
                &quot;bucketCounts&quot;: [ # The number of values in each bucket of the histogram, as described in `bucket_options`. If the distribution does not have a histogram, then omit this field. If there is a histogram, then the sum of the values in `bucket_counts` must equal the value in the `count` field of the distribution. If present, `bucket_counts` should contain N values, where N is the number of buckets specified in `bucket_options`. If you supply fewer than N values, the remaining values are assumed to be 0. The order of the values in `bucket_counts` follows the bucket numbering schemes described for the three bucket types. The first value must be the count for the underflow bucket (number 0). The next N-2 values are the counts for the finite buckets (number 1 through N-2). The N&#x27;th value in `bucket_counts` is the count for the overflow bucket (number N-1).
                  &quot;A String&quot;,
                ],
                &quot;bucketOptions&quot;: { # `BucketOptions` describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. `BucketOptions` does not include the number of values in each bucket. A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i &gt; 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite. # Defines the histogram bucket boundaries. If the distribution does not contain a histogram, then omit this field.
                  &quot;explicitBuckets&quot;: { # Specifies a set of buckets with arbitrary widths. There are `size(bounds) + 1` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): bounds[i] Lower bound (1 &lt;= i &lt; N); bounds[i - 1] The `bounds` field must contain at least one element. If `bounds` has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
                    &quot;bounds&quot;: [ # The values must be monotonically increasing.
                      3.14,
                    ],
                  },
                  &quot;exponentialBuckets&quot;: { # Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): scale * (growth_factor ^ i). Lower bound (1 &lt;= i &lt; N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
                    &quot;growthFactor&quot;: 3.14, # Must be greater than 1.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                    &quot;scale&quot;: 3.14, # Must be greater than 0.
                  },
                  &quot;linearBuckets&quot;: { # Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): offset + (width * i). Lower bound (1 &lt;= i &lt; N): offset + (width * (i - 1)). # The linear bucket.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                    &quot;offset&quot;: 3.14, # Lower bound of the first bucket.
                    &quot;width&quot;: 3.14, # Must be greater than 0.
                  },
                },
                &quot;count&quot;: &quot;A String&quot;, # The number of values in the population. Must be non-negative. This value must equal the sum of the values in `bucket_counts` if a histogram is provided.
                &quot;exemplars&quot;: [ # Must be in increasing order of `value` field.
                  { # Exemplars are example points that may be used to annotate aggregated distribution values. They are metadata that gives information about a particular value added to a Distribution bucket, such as a trace ID that was active when a value was added. They may contain further information, such as a example values and timestamps, origin, etc.
                    &quot;attachments&quot;: [ # Contextual information about the example value. Examples are: Trace: type.googleapis.com/google.monitoring.v3.SpanContext Literal string: type.googleapis.com/google.protobuf.StringValue Labels dropped during aggregation: type.googleapis.com/google.monitoring.v3.DroppedLabels There may be only a single attachment of any given message type in a single exemplar, and this is enforced by the system.
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                    &quot;timestamp&quot;: &quot;A String&quot;, # The observation (sampling) time of the above value.
                    &quot;value&quot;: 3.14, # Value of the exemplar point. This value determines to which bucket the exemplar belongs.
                  },
                ],
                &quot;mean&quot;: 3.14, # The arithmetic mean of the values in the population. If `count` is zero then this field must be zero.
                &quot;range&quot;: { # The range of the population values. # If specified, contains the range of the population values. The field must not be present if the `count` is zero.
                  &quot;max&quot;: 3.14, # The maximum of the population values.
                  &quot;min&quot;: 3.14, # The minimum of the population values.
                },
                &quot;sumOfSquaredDeviation&quot;: 3.14, # The sum of squared deviations from the mean of the values in the population. For values x_i this is: Sum[i=1..n]((x_i - mean)^2) Knuth, &quot;The Art of Computer Programming&quot;, Vol. 2, page 232, 3rd edition describes Welford&#x27;s method for accumulating this sum in one pass. If `count` is zero then this field must be zero.
              },
              &quot;doubleValue&quot;: 3.14, # A 64-bit double-precision floating-point number. Its magnitude is approximately ±10±300 and it has 16 significant digits of precision.
              &quot;int64Value&quot;: &quot;A String&quot;, # A 64-bit integer. Its range is approximately ±9.2x1018.
              &quot;stringValue&quot;: &quot;A String&quot;, # A variable-length string value.
            },
          },
        ],
        &quot;resource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The `type` field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the `labels` field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for `&quot;gce_instance&quot;` has labels `&quot;project_id&quot;`, `&quot;instance_id&quot;` and `&quot;zone&quot;`: { &quot;type&quot;: &quot;gce_instance&quot;, &quot;labels&quot;: { &quot;project_id&quot;: &quot;my-project&quot;, &quot;instance_id&quot;: &quot;12345678901234&quot;, &quot;zone&quot;: &quot;us-central1-a&quot; }} # The associated monitored resource. Custom metrics can use only certain monitored resource types in their time series data. For more information, see [Monitored resources for custom metrics](https://cloud.google.com/monitoring/custom-metrics/creating-metrics#custom-metric-resources).
          &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels `&quot;project_id&quot;`, `&quot;instance_id&quot;`, and `&quot;zone&quot;`.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the `type` field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is `gce_instance`. Some descriptors include the service name in the type; for example, the type of a Datastream stream is `datastream.googleapis.com/Stream`.
        },
        &quot;unit&quot;: &quot;A String&quot;, # The units in which the metric value is reported. It is only applicable if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines the representation of the stored metric values. This field can only be changed through CreateTimeSeries when it is empty.
        &quot;valueType&quot;: &quot;A String&quot;, # The value type of the time series. When listing time series, this value type might be different from the value type of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the type of the data in the `points` field.
      },
    },
    &quot;vertexAiOrganicCrawlRate&quot;: { # The historical crawl rate timeseries data, used for monitoring. # Vertex AI&#x27;s organic crawl rate time series, which is the crawl rate of Google-CloudVertexBot when dedicate crawl is not set. Please refer to https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers#google-cloudvertexbot for more details about Google-CloudVertexBot.
      &quot;qpsTimeSeries&quot;: { # A collection of data points that describes the time-varying values of a metric. A time series is identified by a combination of a fully-specified monitored resource and a fully-specified metric. This type is used for both listing and creating time series. # The QPS of the crawl rate.
        &quot;description&quot;: &quot;A String&quot;, # Input only. A detailed description of the time series that will be associated with the google.api.MetricDescriptor for the metric. Once set, this field cannot be changed through CreateTimeSeries.
        &quot;metadata&quot;: { # Auxiliary metadata for a MonitoredResource object. MonitoredResource objects contain the minimum set of information to uniquely identify a monitored resource instance. There is some other useful auxiliary metadata. Monitoring and Logging use an ingestion pipeline to extract metadata for cloud resources of all types, and store the metadata in this message. # Output only. The associated monitored resource metadata. When reading a time series, this field will include metadata labels that are explicitly named in the reduction. When creating a time series, this field is ignored.
          &quot;systemLabels&quot;: { # Output only. Values for predefined system metadata labels. System labels are a kind of metadata extracted by Google, including &quot;machine_image&quot;, &quot;vpc&quot;, &quot;subnet_id&quot;, &quot;security_group&quot;, &quot;name&quot;, etc. System label values can be only strings, Boolean values, or a list of strings. For example: { &quot;name&quot;: &quot;my-test-instance&quot;, &quot;security_group&quot;: [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;], &quot;spot_instance&quot;: false }
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;userLabels&quot;: { # Output only. A map of user-defined metadata labels.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;metric&quot;: { # A specific metric, identified by specifying values for all of the labels of a `MetricDescriptor`. # The associated metric. A fully-specified metric used to identify the time series.
          &quot;labels&quot;: { # The set of label values that uniquely identify this metric. All labels listed in the `MetricDescriptor` must be assigned values.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # An existing metric type, see google.api.MetricDescriptor. For example, `custom.googleapis.com/invoice/paid/amount`.
        },
        &quot;metricKind&quot;: &quot;A String&quot;, # The metric kind of the time series. When listing time series, this metric kind might be different from the metric kind of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the metric kind of the associated metric. If the associated metric&#x27;s descriptor must be auto-created, then this field specifies the metric kind of the new descriptor and must be either `GAUGE` (the default) or `CUMULATIVE`.
        &quot;points&quot;: [ # The data points of this time series. When listing time series, points are returned in reverse time order. When creating a time series, this field must contain exactly one point and the point&#x27;s type must be the same as the value type of the associated metric. If the associated metric&#x27;s descriptor must be auto-created, then the value type of the descriptor is determined by the point&#x27;s type, which must be `BOOL`, `INT64`, `DOUBLE`, or `DISTRIBUTION`.
          { # A single data point in a time series.
            &quot;interval&quot;: { # A time interval extending just after a start time through an end time. If the start time is the same as the end time, then the interval represents a single point in time. # The time interval to which the data point applies. For `GAUGE` metrics, the start time is optional, but if it is supplied, it must equal the end time. For `DELTA` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For `CUMULATIVE` metrics, the start and end time should specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points.
              &quot;endTime&quot;: &quot;A String&quot;, # Required. The end of the time interval.
              &quot;startTime&quot;: &quot;A String&quot;, # Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.
            },
            &quot;value&quot;: { # A single strongly-typed value. # The value of the data point.
              &quot;boolValue&quot;: True or False, # A Boolean value: `true` or `false`.
              &quot;distributionValue&quot;: { # `Distribution` contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets. The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values. The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by formulas for buckets of fixed or exponentially increasing widths. Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the `mean` and `sum_of_squared_deviation` fields meaningless. # A distribution value.
                &quot;bucketCounts&quot;: [ # The number of values in each bucket of the histogram, as described in `bucket_options`. If the distribution does not have a histogram, then omit this field. If there is a histogram, then the sum of the values in `bucket_counts` must equal the value in the `count` field of the distribution. If present, `bucket_counts` should contain N values, where N is the number of buckets specified in `bucket_options`. If you supply fewer than N values, the remaining values are assumed to be 0. The order of the values in `bucket_counts` follows the bucket numbering schemes described for the three bucket types. The first value must be the count for the underflow bucket (number 0). The next N-2 values are the counts for the finite buckets (number 1 through N-2). The N&#x27;th value in `bucket_counts` is the count for the overflow bucket (number N-1).
                  &quot;A String&quot;,
                ],
                &quot;bucketOptions&quot;: { # `BucketOptions` describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. `BucketOptions` does not include the number of values in each bucket. A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i &gt; 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite. # Defines the histogram bucket boundaries. If the distribution does not contain a histogram, then omit this field.
                  &quot;explicitBuckets&quot;: { # Specifies a set of buckets with arbitrary widths. There are `size(bounds) + 1` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): bounds[i] Lower bound (1 &lt;= i &lt; N); bounds[i - 1] The `bounds` field must contain at least one element. If `bounds` has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
                    &quot;bounds&quot;: [ # The values must be monotonically increasing.
                      3.14,
                    ],
                  },
                  &quot;exponentialBuckets&quot;: { # Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): scale * (growth_factor ^ i). Lower bound (1 &lt;= i &lt; N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
                    &quot;growthFactor&quot;: 3.14, # Must be greater than 1.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                    &quot;scale&quot;: 3.14, # Must be greater than 0.
                  },
                  &quot;linearBuckets&quot;: { # Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket. There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the following boundaries: Upper bound (0 &lt;= i &lt; N-1): offset + (width * i). Lower bound (1 &lt;= i &lt; N): offset + (width * (i - 1)). # The linear bucket.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                    &quot;offset&quot;: 3.14, # Lower bound of the first bucket.
                    &quot;width&quot;: 3.14, # Must be greater than 0.
                  },
                },
                &quot;count&quot;: &quot;A String&quot;, # The number of values in the population. Must be non-negative. This value must equal the sum of the values in `bucket_counts` if a histogram is provided.
                &quot;exemplars&quot;: [ # Must be in increasing order of `value` field.
                  { # Exemplars are example points that may be used to annotate aggregated distribution values. They are metadata that gives information about a particular value added to a Distribution bucket, such as a trace ID that was active when a value was added. They may contain further information, such as a example values and timestamps, origin, etc.
                    &quot;attachments&quot;: [ # Contextual information about the example value. Examples are: Trace: type.googleapis.com/google.monitoring.v3.SpanContext Literal string: type.googleapis.com/google.protobuf.StringValue Labels dropped during aggregation: type.googleapis.com/google.monitoring.v3.DroppedLabels There may be only a single attachment of any given message type in a single exemplar, and this is enforced by the system.
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                    &quot;timestamp&quot;: &quot;A String&quot;, # The observation (sampling) time of the above value.
                    &quot;value&quot;: 3.14, # Value of the exemplar point. This value determines to which bucket the exemplar belongs.
                  },
                ],
                &quot;mean&quot;: 3.14, # The arithmetic mean of the values in the population. If `count` is zero then this field must be zero.
                &quot;range&quot;: { # The range of the population values. # If specified, contains the range of the population values. The field must not be present if the `count` is zero.
                  &quot;max&quot;: 3.14, # The maximum of the population values.
                  &quot;min&quot;: 3.14, # The minimum of the population values.
                },
                &quot;sumOfSquaredDeviation&quot;: 3.14, # The sum of squared deviations from the mean of the values in the population. For values x_i this is: Sum[i=1..n]((x_i - mean)^2) Knuth, &quot;The Art of Computer Programming&quot;, Vol. 2, page 232, 3rd edition describes Welford&#x27;s method for accumulating this sum in one pass. If `count` is zero then this field must be zero.
              },
              &quot;doubleValue&quot;: 3.14, # A 64-bit double-precision floating-point number. Its magnitude is approximately ±10±300 and it has 16 significant digits of precision.
              &quot;int64Value&quot;: &quot;A String&quot;, # A 64-bit integer. Its range is approximately ±9.2x1018.
              &quot;stringValue&quot;: &quot;A String&quot;, # A variable-length string value.
            },
          },
        ],
        &quot;resource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The `type` field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the `labels` field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for `&quot;gce_instance&quot;` has labels `&quot;project_id&quot;`, `&quot;instance_id&quot;` and `&quot;zone&quot;`: { &quot;type&quot;: &quot;gce_instance&quot;, &quot;labels&quot;: { &quot;project_id&quot;: &quot;my-project&quot;, &quot;instance_id&quot;: &quot;12345678901234&quot;, &quot;zone&quot;: &quot;us-central1-a&quot; }} # The associated monitored resource. Custom metrics can use only certain monitored resource types in their time series data. For more information, see [Monitored resources for custom metrics](https://cloud.google.com/monitoring/custom-metrics/creating-metrics#custom-metric-resources).
          &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels `&quot;project_id&quot;`, `&quot;instance_id&quot;`, and `&quot;zone&quot;`.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the `type` field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is `gce_instance`. Some descriptors include the service name in the type; for example, the type of a Datastream stream is `datastream.googleapis.com/Stream`.
        },
        &quot;unit&quot;: &quot;A String&quot;, # The units in which the metric value is reported. It is only applicable if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines the representation of the stored metric values. This field can only be changed through CreateTimeSeries when it is empty.
        &quot;valueType&quot;: &quot;A String&quot;, # The value type of the time series. When listing time series, this value type might be different from the value type of the associated metric if this time series is an alignment or reduction of other time series. When creating a time series, this field is optional. If present, it must be the same as the type of the data in the `points` field.
      },
    },
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the response.
}</pre>
</div>

<div class="method">
    <code class="details" id="removeDedicatedCrawlRate">removeDedicatedCrawlRate(location, body=None, x__xgafv=None)</code>
  <pre>Removes the dedicated crawl rate for a craw_rate_scope. If the dedicated crawl rate was set, this will disable vertex AI&#x27;s crawl bot from using the dedicated crawl rate for crawling. If the dedicated crawl rate was not set, this is a no-op.

Args:
  location: string, Required. The location resource where crawl rate management will be performed. Format: `projects/{project}/locations/{location}` (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for CrawlRateManagementService.RemoveDedicatedCrawlRate method. The user can remove the dedicated crawl rate for a crawl_rate_scope they own, and Google will fall back to organic crawl, and the crawl rate will be determined by Google.
  &quot;crawlRateScope&quot;: &quot;A String&quot;, # Required. The scope of the crawl rate change. Currently, only domain and host name are supported. A domain name example: `example.com`. A host name example: `www.example.com`. Please do not include `/` in the domain or host name.
}

  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="setDedicatedCrawlRate">setDedicatedCrawlRate(location, body=None, x__xgafv=None)</code>
  <pre>Sets the dedicated crawl rate for a crawl_rate_scope. If the dedicated crawl rate was not set, this will enable vertex AI&#x27;s crawl bot to use the new dedicated crawl rate for crawling. If the dedicated crawl rate was set, vertex AI&#x27;s crawl bot will try to update the rate to the new value. If the new value is too high, the crawl bot may crawl at a lower rate to avoid overloading the user&#x27;s website.

Args:
  location: string, Required. The location resource where crawl rate management will be performed. Format: `projects/{project}/locations/{location}` (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for CrawlRateManagementService.SetDedicatedCrawlRate method. The user can set the crawl rate for a crawl_rate_scope they own. They can set up an overall crawl rate, or set up a user-triggered crawl rate and a auto-refresh crawl rate separately. If an overall crawl rate is set, Vertex AI will automatically splits crawl_rate into user-triggered and auto-refresh.
  &quot;crawlRate&quot;: 42, # Optional. The crawl QPS set by the user. It is not guaranteed that Vertex crawl bot will crawl at this QPS. If the crawl rate is too high, the real QPS may be lower than the value set by the user to avoid overloading the user&#x27;s website.
  &quot;crawlRateScope&quot;: &quot;A String&quot;, # Required. The scope of the crawl rate that the user wants to config. Currently, only domain and host name are supported. A domain name example: `example.com`. A host name example: `www.example.com`. Please do not include `/` in the domain or host name.
  &quot;crawlType&quot;: &quot;A String&quot;, # Optional. Whether it&#x27;s the crawl rate of user-triggered or auto-refresh.
  &quot;mode&quot;: &quot;A String&quot;, # Optional. Whether the rate is explicitly set by users, or set by vertex AI.
}

  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="setUpDataConnector">setUpDataConnector(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a Collection and sets up the DataConnector for it. To stop a DataConnector after setup, use the CollectionService.DeleteCollection method.

Args:
  parent: string, Required. The parent of Collection, in the format of `projects/{project}/locations/{location}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for DataConnectorService.SetUpDataConnector method.
  &quot;collectionDisplayName&quot;: &quot;A String&quot;, # Required. The display name of the Collection. Should be human readable, used to display collections in the Console Dashboard. UTF-8 encoded string with limit of 1024 characters.
  &quot;collectionId&quot;: &quot;A String&quot;, # Required. The ID to use for the Collection, which will become the final component of the Collection&#x27;s resource name. A new Collection is created as part of the DataConnector setup. DataConnector is a singleton resource under Collection, managing all DataStores of the Collection. 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.
  &quot;dataConnector&quot;: { # Manages the connection to external data sources for all data stores grouped under a Collection. It&#x27;s a singleton resource of Collection. The initialization is only supported through DataConnectorService.SetUpDataConnector method, which will create a new Collection and initialize its DataConnector. # Required. The DataConnector to initialize in the newly created Collection.
    &quot;aclEnabled&quot;: True or False, # Optional. Whether the connector will be created with an ACL config. Currently this field only affects Cloud Storage and BigQuery connectors.
    &quot;actionConfig&quot;: { # Informations to support actions on the connector. # Optional. Action configurations to make the connector support actions.
      &quot;actionParams&quot;: { # Optional. Action parameters in structured json format.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;isActionConfigured&quot;: True or False, # Output only. The connector contains the necessary parameters and is configured to support actions.
      &quot;jsonActionParams&quot;: &quot;A String&quot;, # Optional. Action parameters in json string format.
      &quot;serviceName&quot;: &quot;A String&quot;, # Optional. The Service Directory resource name (projects/*/locations/*/namespaces/*/services/*) representing a VPC network endpoint used to connect to the data source&#x27;s `instance_uri`, defined in DataConnector.params. Required when VPC Service Controls are enabled.
      &quot;useStaticSecrets&quot;: True or False, # Optional. Whether to use static secrets for the connector. If true, the secrets provided in the action_params will be ignored.
    },
    &quot;actionState&quot;: &quot;A String&quot;, # Output only. State of the action connector. This reflects whether the action connector is initializing, active or has encountered errors.
    &quot;alertPolicyConfigs&quot;: [ # Optional. The connector level alert config.
      { # The connector level alert config.
        &quot;alertEnrollments&quot;: [ # Optional. The enrollment states of each alert.
          { # The alert enrollment status.
            &quot;alertId&quot;: &quot;A String&quot;, # Immutable. The id of an alert.
            &quot;enrollState&quot;: &quot;A String&quot;, # Required. The enrollment status of a customer.
          },
        ],
        &quot;alertPolicyName&quot;: &quot;A String&quot;, # Immutable. The fully qualified resource name of the AlertPolicy.
      },
    ],
    &quot;autoRunDisabled&quot;: True or False, # Optional. Indicates whether the connector is disabled for auto run. It can be used to pause periodical and real time sync. Update: with the introduction of incremental_sync_disabled, auto_run_disabled is used to pause/disable only full syncs
    &quot;bapConfig&quot;: { # The configuration for the BAP connector. # Optional. The configuration for establishing a BAP connection.
      &quot;enabledActions&quot;: [ # Optional. The actions enabled on the associated BAP connection.
        &quot;A String&quot;,
      ],
      &quot;supportedConnectorModes&quot;: [ # Required. The supported connector modes for the associated BAP connection.
        &quot;A String&quot;,
      ],
    },
    &quot;blockingReasons&quot;: [ # Output only. User actions that must be completed before the connector can start syncing data.
      &quot;A String&quot;,
    ],
    &quot;connectorModes&quot;: [ # Optional. The modes enabled for this connector. Default state is CONNECTOR_MODE_UNSPECIFIED.
      &quot;A String&quot;,
    ],
    &quot;connectorType&quot;: &quot;A String&quot;, # Output only. The type of connector. Each source can only map to one type. For example, salesforce, confluence and jira have THIRD_PARTY connector type. It is not mutable once set by system.
    &quot;createEuaSaas&quot;: True or False, # Optional. Whether the END USER AUTHENTICATION connector is created in SaaS.
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp the DataConnector was created at.
    &quot;dataSource&quot;: &quot;A String&quot;, # Required. The name of the data source. Supported values: `salesforce`, `jira`, `confluence`, `bigquery`.
    &quot;destinationConfigs&quot;: [ # Optional. Any target destinations used to connect to third-party services.
      { # Defines target endpoints used to connect to third-party sources.
        &quot;destinations&quot;: [ # Optional. The destinations for the corresponding key.
          { # Defines a target endpoint
            &quot;host&quot;: &quot;A String&quot;, # Publicly routable host.
            &quot;port&quot;: 42, # Optional. Target port number accepted by the destination.
          },
        ],
        &quot;jsonParams&quot;: &quot;A String&quot;, # Additional parameters for this destination config in json string format.
        &quot;key&quot;: &quot;A String&quot;, # Optional. Unique destination identifier that is supported by the connector.
        &quot;params&quot;: { # Optional. Additional parameters for this destination config in structured json format.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
      },
    ],
    &quot;endUserConfig&quot;: { # Any params and credentials used specifically for EUA connectors. # Optional. Any params and credentials used specifically for EUA connectors.
      &quot;additionalParams&quot;: { # Optional. Any additional parameters needed for EUA.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;authParams&quot;: { # Optional. Any authentication parameters specific to EUA connectors.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;jsonAuthParams&quot;: &quot;A String&quot;, # Optional. Any authentication parameters specific to EUA connectors in json string format.
      &quot;tenant&quot;: { # Tenant information for a connector source. This includes some of the same information stored in the Credential message, but is limited to only what is needed to provide a list of accessible tenants to the user. # Optional. The tenant project the connector is connected to.
        &quot;displayName&quot;: &quot;A String&quot;, # Optional display name for the tenant, e.g. &quot;My Slack Team&quot;.
        &quot;id&quot;: &quot;A String&quot;, # The tenant&#x27;s instance ID. Examples: Jira (&quot;8594f221-9797-5f78-1fa4-485e198d7cd0&quot;), Slack (&quot;T123456&quot;).
        &quot;uri&quot;: &quot;A String&quot;, # The URI of the tenant, if applicable. For example, the URI of a Jira instance is https://my-jira-instance.atlassian.net, and a Slack tenant does not have a URI.
      },
    },
    &quot;entities&quot;: [ # List of entities from the connected data source to ingest.
      { # Represents an entity in the data source. For example, the `Account` object in Salesforce.
        &quot;dataStore&quot;: &quot;A String&quot;, # Output only. The full resource name of the associated data store for the source entity. Format: `projects/*/locations/*/collections/*/dataStores/*`. When the connector is initialized by the DataConnectorService.SetUpDataConnector method, a DataStore is automatically created for each source entity.
        &quot;entityName&quot;: &quot;A String&quot;, # The name of the entity. Supported values by data source: * Salesforce: `Lead`, `Opportunity`, `Contact`, `Account`, `Case`, `Contract`, `Campaign` * Jira: `Issue` * Confluence: `Content`, `Space`
        &quot;healthcareFhirConfig&quot;: { # Config to data store for `HEALTHCARE_FHIR` vertical. # Optional. Configuration for `HEALTHCARE_FHIR` vertical.
          &quot;enableConfigurableSchema&quot;: True or False, # Whether to enable configurable schema for `HEALTHCARE_FHIR` vertical. If set to `true`, the predefined healthcare fhir schema can be extended for more customized searching and filtering.
          &quot;enableStaticIndexingForBatchIngestion&quot;: True or False, # Whether to enable static indexing for `HEALTHCARE_FHIR` batch ingestion. If set to `true`, the batch ingestion will be processed in a static indexing mode which is slower but more capable of handling larger volume.
        },
        &quot;jsonParams&quot;: &quot;A String&quot;, # The parameters for the entity to facilitate data ingestion in json string format.
        &quot;keyPropertyMappings&quot;: { # Attributes for indexing. Key: Field name. Value: The key property to map a field to, such as `title`, and `description`. Supported key properties: * `title`: The title for data record. This would be displayed on search results. * `description`: The description for data record. This would be displayed on search results.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;params&quot;: { # The parameters for the entity to facilitate data ingestion in structured json format.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;startingSchema&quot;: { # Defines the structure and layout of a type of document data. # Optional. The start schema to use for the DataStore created from this SourceEntity. If unset, a default vertical specialized schema will be used. This field is only used by SetUpDataConnector API, and will be ignored if used in other APIs. This field will be omitted from all API responses including GetDataConnector API. To retrieve a schema of a DataStore, use SchemaService.GetSchema API instead. The provided schema will be validated against certain rules on schema. Learn more from [this doc](https://cloud.google.com/generative-ai-app-builder/docs/provide-schema).
          &quot;fieldConfigs&quot;: [ # Output only. Configurations for fields of the schema.
            { # Configurations for fields of a schema. For example, configuring a field is indexable, or searchable.
              &quot;advancedSiteSearchDataSources&quot;: [ # If this field is set, only the corresponding source will be indexed for this field. Otherwise, the values from different sources are merged. Assuming a page with `` in meta tag, and `` in page map: if this enum is set to METATAGS, we will only index ``; if this enum is not set, we will merge them and index ``.
                &quot;A String&quot;,
              ],
              &quot;completableOption&quot;: &quot;A String&quot;, # If completable_option is COMPLETABLE_ENABLED, field values are directly used and returned as suggestions for Autocomplete in CompletionService.CompleteQuery. If completable_option is unset, the server behavior defaults to COMPLETABLE_DISABLED for fields that support setting completable options, which are just `string` fields. For those fields that do not support setting completable options, the server will skip completable option setting, and setting completable_option for those fields will throw `INVALID_ARGUMENT` error.
              &quot;dynamicFacetableOption&quot;: &quot;A String&quot;, # If dynamic_facetable_option is DYNAMIC_FACETABLE_ENABLED, field values are available for dynamic facet. Could only be DYNAMIC_FACETABLE_DISABLED if FieldConfig.indexable_option is INDEXABLE_DISABLED. Otherwise, an `INVALID_ARGUMENT` error will be returned. If dynamic_facetable_option is unset, the server behavior defaults to DYNAMIC_FACETABLE_DISABLED for fields that support setting dynamic facetable options. For those fields that do not support setting dynamic facetable options, such as `object` and `boolean`, the server will skip dynamic facetable option setting, and setting dynamic_facetable_option for those fields will throw `INVALID_ARGUMENT` error.
              &quot;fieldPath&quot;: &quot;A String&quot;, # Required. Field path of the schema field. For example: `title`, `description`, `release_info.release_year`.
              &quot;fieldType&quot;: &quot;A String&quot;, # Output only. Raw type of the field.
              &quot;indexableOption&quot;: &quot;A String&quot;, # If indexable_option is INDEXABLE_ENABLED, field values are indexed so that it can be filtered or faceted in SearchService.Search. If indexable_option is unset, the server behavior defaults to INDEXABLE_DISABLED for fields that support setting indexable options. For those fields that do not support setting indexable options, such as `object` and `boolean` and key properties, the server will skip indexable_option setting, and setting indexable_option for those fields will throw `INVALID_ARGUMENT` error.
              &quot;keyPropertyType&quot;: &quot;A String&quot;, # Output only. Type of the key property that this field is mapped to. Empty string if this is not annotated as mapped to a key property. Example types are `title`, `description`. Full list is defined by `keyPropertyMapping` in the schema field annotation. If the schema field has a `KeyPropertyMapping` annotation, `indexable_option` and `searchable_option` of this field cannot be modified.
              &quot;metatagName&quot;: &quot;A String&quot;, # Optional. The metatag name found in the HTML page. If user defines this field, the value of this metatag name will be used to extract metatag. If the user does not define this field, the FieldConfig.field_path will be used to extract metatag.
              &quot;recsFilterableOption&quot;: &quot;A String&quot;, # If recs_filterable_option is FILTERABLE_ENABLED, field values are filterable by filter expression in RecommendationService.Recommend. If FILTERABLE_ENABLED but the field type is numerical, field values are not filterable by text queries in RecommendationService.Recommend. Only textual fields are supported. If recs_filterable_option is unset, the default setting is FILTERABLE_DISABLED for fields that support setting filterable options. When a field set to [FILTERABLE_DISABLED] is filtered, a warning is generated and an empty result is returned.
              &quot;retrievableOption&quot;: &quot;A String&quot;, # If retrievable_option is RETRIEVABLE_ENABLED, field values are included in the search results. If retrievable_option is unset, the server behavior defaults to RETRIEVABLE_DISABLED for fields that support setting retrievable options. For those fields that do not support setting retrievable options, such as `object` and `boolean`, the server will skip retrievable option setting, and setting retrievable_option for those fields will throw `INVALID_ARGUMENT` error.
              &quot;schemaOrgPaths&quot;: [ # Field paths for indexing custom attribute from schema.org data. More details of schema.org and its defined types can be found at [schema.org](https://schema.org). It is only used on advanced site search schema. Currently only support full path from root. The full path to a field is constructed by concatenating field names, starting from `_root`, with a period `.` as the delimiter. Examples: * Publish date of the root: _root.datePublished * Publish date of the reviews: _root.review.datePublished
                &quot;A String&quot;,
              ],
              &quot;searchableOption&quot;: &quot;A String&quot;, # If searchable_option is SEARCHABLE_ENABLED, field values are searchable by text queries in SearchService.Search. If SEARCHABLE_ENABLED but field type is numerical, field values will not be searchable by text queries in SearchService.Search, as there are no text values associated to numerical fields. If searchable_option is unset, the server behavior defaults to SEARCHABLE_DISABLED for fields that support setting searchable options. Only `string` fields that have no key property mapping support setting searchable_option. For those fields that do not support setting searchable options, the server will skip searchable option setting, and setting searchable_option for those fields will throw `INVALID_ARGUMENT` error.
            },
          ],
          &quot;jsonSchema&quot;: &quot;A String&quot;, # The JSON representation of the schema.
          &quot;name&quot;: &quot;A String&quot;, # Immutable. The full resource name of the schema, in the format of `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/schemas/{schema}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
          &quot;structSchema&quot;: { # The structured representation of the schema.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
      },
    ],
    &quot;errors&quot;: [ # Output only. The errors from initialization or from the latest connector run.
      { # 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;federatedConfig&quot;: { # Any params and credentials used specifically for hybrid connectors supporting FEDERATED mode. # Optional. Any params and credentials used specifically for hybrid connectors supporting FEDERATED mode. This field should only be set if the connector is a hybrid connector and we want to enable FEDERATED mode.
      &quot;additionalParams&quot;: { # Optional. Any additional parameters needed for FEDERATED.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;authParams&quot;: { # Optional. Any authentication parameters specific to FEDERATED connectors.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;jsonAuthParams&quot;: &quot;A String&quot;, # Optional. Any authentication parameters specific to FEDERATED connectors in json string format.
    },
    &quot;hybridIngestionDisabled&quot;: True or False, # Optional. If the connector is a hybrid connector, determines whether ingestion is enabled and appropriate resources are provisioned during connector creation. If the connector is not a hybrid connector, this field is ignored.
    &quot;identityRefreshInterval&quot;: &quot;A String&quot;, # The refresh interval to sync the Access Control List information for the documents ingested by this connector. If not set, the access control list will be refreshed at the default interval of 30 minutes. The identity refresh interval can be at least 30 minutes and at most 7 days.
    &quot;identityScheduleConfig&quot;: { # The configuration for the identity data synchronization runs. # The configuration for the identity data synchronization runs. This contains the refresh interval to sync the Access Control List information for the documents ingested by this connector.
      &quot;nextSyncTime&quot;: { # Represents civil time (or occasionally physical time). This type can represent a civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year, month, or day are 0, the DateTime is considered not to have a specific year, month, or day respectively. This type may also be used to represent a physical time if all the date and time fields are set and either case of the `time_offset` oneof is set. Consider using `Timestamp` message for physical time instead. If your use case also would like to store the user&#x27;s timezone, that can be done in another field. This type is more flexible than some applications may want. Make sure to document and validate your application&#x27;s limitations. # Optional. The UTC time when the next data sync is expected to start for the Data Connector. Customers are only able to specify the hour and minute to schedule the data sync. This is utilized when the data connector has a refresh interval greater than 1 day.
        &quot;day&quot;: 42, # Optional. Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a datetime without a day.
        &quot;hours&quot;: 42, # Optional. Hours of day in 24 hour format. Should be from 0 to 23, defaults to 0 (midnight). An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
        &quot;minutes&quot;: 42, # Optional. Minutes of hour of day. Must be from 0 to 59, defaults to 0.
        &quot;month&quot;: 42, # Optional. Month of year. Must be from 1 to 12, or 0 if specifying a datetime without a month.
        &quot;nanos&quot;: 42, # Optional. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999, defaults to 0.
        &quot;seconds&quot;: 42, # Optional. Seconds of minutes of the time. Must normally be from 0 to 59, defaults to 0. An API may allow the value 60 if it allows leap-seconds.
        &quot;timeZone&quot;: { # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones). # Time zone.
          &quot;id&quot;: &quot;A String&quot;, # IANA Time Zone Database time zone. For example &quot;America/New_York&quot;.
          &quot;version&quot;: &quot;A String&quot;, # Optional. IANA Time Zone Database version number. For example &quot;2019a&quot;.
        },
        &quot;utcOffset&quot;: &quot;A String&quot;, # UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }.
        &quot;year&quot;: 42, # Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.
      },
      &quot;refreshInterval&quot;: &quot;A String&quot;, # Optional. The refresh interval to sync the Access Control List information for the documents ingested by this connector. If not set, the access control list will be refreshed at the default interval of 30 minutes. The identity refresh interval can be at least 30 minutes and at most 7 days.
    },
    &quot;incrementalRefreshInterval&quot;: &quot;A String&quot;, # Optional. The refresh interval specifically for incremental data syncs. If unset, incremental syncs will use the default from env, set to 3hrs. The minimum is 30 minutes and maximum is 7 days. Applicable to only 3P connectors. When the refresh interval is set to the same value as the incremental refresh interval, incremental sync will be disabled.
    &quot;incrementalSyncDisabled&quot;: True or False, # Optional. Indicates whether incremental syncs are paused for this connector. This is independent of auto_run_disabled. Applicable to only 3P connectors. When the refresh interval is set to the same value as the incremental refresh interval, incremental sync will be disabled, i.e. set to true.
    &quot;jsonParams&quot;: &quot;A String&quot;, # Required data connector parameters in json string format.
    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Input only. The KMS key to be used to protect the DataStores managed by this connector. Must be set for requests that need to comply with CMEK Org Policy protections. If this field is set and processed successfully, the DataStores created by this connector will be protected by the KMS key.
    &quot;lastSyncTime&quot;: &quot;A String&quot;, # Output only. For periodic connectors only, the last time a data sync was completed.
    &quot;latestPauseTime&quot;: &quot;A String&quot;, # Output only. The most recent timestamp when this DataConnector was paused, affecting all functionalities such as data synchronization. Pausing a connector has the following effects: - All functionalities, including data synchronization, are halted. - Any ongoing data synchronization job will be canceled. - No future data synchronization runs will be scheduled nor can be triggered.
    &quot;name&quot;: &quot;A String&quot;, # Output only. The full resource name of the Data Connector. Format: `projects/*/locations/*/collections/*/dataConnector`.
    &quot;nextSyncTime&quot;: { # Represents civil time (or occasionally physical time). This type can represent a civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year, month, or day are 0, the DateTime is considered not to have a specific year, month, or day respectively. This type may also be used to represent a physical time if all the date and time fields are set and either case of the `time_offset` oneof is set. Consider using `Timestamp` message for physical time instead. If your use case also would like to store the user&#x27;s timezone, that can be done in another field. This type is more flexible than some applications may want. Make sure to document and validate your application&#x27;s limitations. # Defines the scheduled time for the next data synchronization. This field requires hour , minute, and time_zone from the [IANA Time Zone Database](https://www.iana.org/time-zones). This is utilized when the data connector has a refresh interval greater than 1 day. When the hours or minutes are not specified, we will assume a sync time of 0:00. The user must provide a time zone to avoid ambiguity.
      &quot;day&quot;: 42, # Optional. Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a datetime without a day.
      &quot;hours&quot;: 42, # Optional. Hours of day in 24 hour format. Should be from 0 to 23, defaults to 0 (midnight). An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
      &quot;minutes&quot;: 42, # Optional. Minutes of hour of day. Must be from 0 to 59, defaults to 0.
      &quot;month&quot;: 42, # Optional. Month of year. Must be from 1 to 12, or 0 if specifying a datetime without a month.
      &quot;nanos&quot;: 42, # Optional. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999, defaults to 0.
      &quot;seconds&quot;: 42, # Optional. Seconds of minutes of the time. Must normally be from 0 to 59, defaults to 0. An API may allow the value 60 if it allows leap-seconds.
      &quot;timeZone&quot;: { # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones). # Time zone.
        &quot;id&quot;: &quot;A String&quot;, # IANA Time Zone Database time zone. For example &quot;America/New_York&quot;.
        &quot;version&quot;: &quot;A String&quot;, # Optional. IANA Time Zone Database version number. For example &quot;2019a&quot;.
      },
      &quot;utcOffset&quot;: &quot;A String&quot;, # UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }.
      &quot;year&quot;: 42, # Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.
    },
    &quot;params&quot;: { # Required data connector parameters in structured json format.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;privateConnectivityProjectId&quot;: &quot;A String&quot;, # Output only. The tenant project ID associated with private connectivity connectors. This project must be allowlisted by in order for the connector to function.
    &quot;realtimeState&quot;: &quot;A String&quot;, # Output only. real-time sync state
    &quot;realtimeSyncConfig&quot;: { # The configuration for realtime sync to store additional params for realtime sync. # Optional. The configuration for realtime sync.
      &quot;realtimeSyncSecret&quot;: &quot;A String&quot;, # Optional. The ID of the Secret Manager secret used for webhook secret.
      &quot;streamingError&quot;: { # Streaming error details. # Optional. Streaming error details.
        &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). # Optional. Error details.
          &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;streamingErrorReason&quot;: &quot;A String&quot;, # Optional. Streaming error.
      },
      &quot;webhookUri&quot;: &quot;A String&quot;, # Optional. Webhook url for the connector to specify additional params for realtime sync.
    },
    &quot;refreshInterval&quot;: &quot;A String&quot;, # Required. The refresh interval for data sync. If duration is set to 0, the data will be synced in real time. The streaming feature is not supported yet. The minimum is 30 minutes and maximum is 7 days. When the refresh interval is set to the same value as the incremental refresh interval, incremental sync will be disabled.
    &quot;removeParamKeys&quot;: [ # Optional. Specifies keys to be removed from the &#x27;params&#x27; field. This is only active when &#x27;params&#x27; is included in the &#x27;update_mask&#x27; in an UpdateDataConnectorRequest. Deletion takes precedence if a key is both in &#x27;remove_param_keys&#x27; and present in the &#x27;params&#x27; field of the request.
      &quot;A String&quot;,
    ],
    &quot;state&quot;: &quot;A String&quot;, # Output only. State of the connector.
    &quot;staticIpAddresses&quot;: [ # Output only. The static IP addresses used by this connector.
      &quot;A String&quot;,
    ],
    &quot;staticIpEnabled&quot;: True or False, # Optional. Whether customer has enabled static IP addresses for this connector.
    &quot;syncMode&quot;: &quot;A String&quot;, # The data synchronization mode supported by the data connector.
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Timestamp the DataConnector was last updated.
  },
}

  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="setUpDataConnectorV2">setUpDataConnectorV2(parent, body=None, collectionDisplayName=None, collectionId=None, x__xgafv=None)</code>
  <pre>Creates a Collection and sets up the DataConnector for it. To stop a DataConnector after setup, use the CollectionService.DeleteCollection method.

Args:
  parent: string, Required. The parent of Collection, in the format of `projects/{project}/locations/{location}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Manages the connection to external data sources for all data stores grouped under a Collection. It&#x27;s a singleton resource of Collection. The initialization is only supported through DataConnectorService.SetUpDataConnector method, which will create a new Collection and initialize its DataConnector.
  &quot;aclEnabled&quot;: True or False, # Optional. Whether the connector will be created with an ACL config. Currently this field only affects Cloud Storage and BigQuery connectors.
  &quot;actionConfig&quot;: { # Informations to support actions on the connector. # Optional. Action configurations to make the connector support actions.
    &quot;actionParams&quot;: { # Optional. Action parameters in structured json format.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;isActionConfigured&quot;: True or False, # Output only. The connector contains the necessary parameters and is configured to support actions.
    &quot;jsonActionParams&quot;: &quot;A String&quot;, # Optional. Action parameters in json string format.
    &quot;serviceName&quot;: &quot;A String&quot;, # Optional. The Service Directory resource name (projects/*/locations/*/namespaces/*/services/*) representing a VPC network endpoint used to connect to the data source&#x27;s `instance_uri`, defined in DataConnector.params. Required when VPC Service Controls are enabled.
    &quot;useStaticSecrets&quot;: True or False, # Optional. Whether to use static secrets for the connector. If true, the secrets provided in the action_params will be ignored.
  },
  &quot;actionState&quot;: &quot;A String&quot;, # Output only. State of the action connector. This reflects whether the action connector is initializing, active or has encountered errors.
  &quot;alertPolicyConfigs&quot;: [ # Optional. The connector level alert config.
    { # The connector level alert config.
      &quot;alertEnrollments&quot;: [ # Optional. The enrollment states of each alert.
        { # The alert enrollment status.
          &quot;alertId&quot;: &quot;A String&quot;, # Immutable. The id of an alert.
          &quot;enrollState&quot;: &quot;A String&quot;, # Required. The enrollment status of a customer.
        },
      ],
      &quot;alertPolicyName&quot;: &quot;A String&quot;, # Immutable. The fully qualified resource name of the AlertPolicy.
    },
  ],
  &quot;autoRunDisabled&quot;: True or False, # Optional. Indicates whether the connector is disabled for auto run. It can be used to pause periodical and real time sync. Update: with the introduction of incremental_sync_disabled, auto_run_disabled is used to pause/disable only full syncs
  &quot;bapConfig&quot;: { # The configuration for the BAP connector. # Optional. The configuration for establishing a BAP connection.
    &quot;enabledActions&quot;: [ # Optional. The actions enabled on the associated BAP connection.
      &quot;A String&quot;,
    ],
    &quot;supportedConnectorModes&quot;: [ # Required. The supported connector modes for the associated BAP connection.
      &quot;A String&quot;,
    ],
  },
  &quot;blockingReasons&quot;: [ # Output only. User actions that must be completed before the connector can start syncing data.
    &quot;A String&quot;,
  ],
  &quot;connectorModes&quot;: [ # Optional. The modes enabled for this connector. Default state is CONNECTOR_MODE_UNSPECIFIED.
    &quot;A String&quot;,
  ],
  &quot;connectorType&quot;: &quot;A String&quot;, # Output only. The type of connector. Each source can only map to one type. For example, salesforce, confluence and jira have THIRD_PARTY connector type. It is not mutable once set by system.
  &quot;createEuaSaas&quot;: True or False, # Optional. Whether the END USER AUTHENTICATION connector is created in SaaS.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Timestamp the DataConnector was created at.
  &quot;dataSource&quot;: &quot;A String&quot;, # Required. The name of the data source. Supported values: `salesforce`, `jira`, `confluence`, `bigquery`.
  &quot;destinationConfigs&quot;: [ # Optional. Any target destinations used to connect to third-party services.
    { # Defines target endpoints used to connect to third-party sources.
      &quot;destinations&quot;: [ # Optional. The destinations for the corresponding key.
        { # Defines a target endpoint
          &quot;host&quot;: &quot;A String&quot;, # Publicly routable host.
          &quot;port&quot;: 42, # Optional. Target port number accepted by the destination.
        },
      ],
      &quot;jsonParams&quot;: &quot;A String&quot;, # Additional parameters for this destination config in json string format.
      &quot;key&quot;: &quot;A String&quot;, # Optional. Unique destination identifier that is supported by the connector.
      &quot;params&quot;: { # Optional. Additional parameters for this destination config in structured json format.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  ],
  &quot;endUserConfig&quot;: { # Any params and credentials used specifically for EUA connectors. # Optional. Any params and credentials used specifically for EUA connectors.
    &quot;additionalParams&quot;: { # Optional. Any additional parameters needed for EUA.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;authParams&quot;: { # Optional. Any authentication parameters specific to EUA connectors.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;jsonAuthParams&quot;: &quot;A String&quot;, # Optional. Any authentication parameters specific to EUA connectors in json string format.
    &quot;tenant&quot;: { # Tenant information for a connector source. This includes some of the same information stored in the Credential message, but is limited to only what is needed to provide a list of accessible tenants to the user. # Optional. The tenant project the connector is connected to.
      &quot;displayName&quot;: &quot;A String&quot;, # Optional display name for the tenant, e.g. &quot;My Slack Team&quot;.
      &quot;id&quot;: &quot;A String&quot;, # The tenant&#x27;s instance ID. Examples: Jira (&quot;8594f221-9797-5f78-1fa4-485e198d7cd0&quot;), Slack (&quot;T123456&quot;).
      &quot;uri&quot;: &quot;A String&quot;, # The URI of the tenant, if applicable. For example, the URI of a Jira instance is https://my-jira-instance.atlassian.net, and a Slack tenant does not have a URI.
    },
  },
  &quot;entities&quot;: [ # List of entities from the connected data source to ingest.
    { # Represents an entity in the data source. For example, the `Account` object in Salesforce.
      &quot;dataStore&quot;: &quot;A String&quot;, # Output only. The full resource name of the associated data store for the source entity. Format: `projects/*/locations/*/collections/*/dataStores/*`. When the connector is initialized by the DataConnectorService.SetUpDataConnector method, a DataStore is automatically created for each source entity.
      &quot;entityName&quot;: &quot;A String&quot;, # The name of the entity. Supported values by data source: * Salesforce: `Lead`, `Opportunity`, `Contact`, `Account`, `Case`, `Contract`, `Campaign` * Jira: `Issue` * Confluence: `Content`, `Space`
      &quot;healthcareFhirConfig&quot;: { # Config to data store for `HEALTHCARE_FHIR` vertical. # Optional. Configuration for `HEALTHCARE_FHIR` vertical.
        &quot;enableConfigurableSchema&quot;: True or False, # Whether to enable configurable schema for `HEALTHCARE_FHIR` vertical. If set to `true`, the predefined healthcare fhir schema can be extended for more customized searching and filtering.
        &quot;enableStaticIndexingForBatchIngestion&quot;: True or False, # Whether to enable static indexing for `HEALTHCARE_FHIR` batch ingestion. If set to `true`, the batch ingestion will be processed in a static indexing mode which is slower but more capable of handling larger volume.
      },
      &quot;jsonParams&quot;: &quot;A String&quot;, # The parameters for the entity to facilitate data ingestion in json string format.
      &quot;keyPropertyMappings&quot;: { # Attributes for indexing. Key: Field name. Value: The key property to map a field to, such as `title`, and `description`. Supported key properties: * `title`: The title for data record. This would be displayed on search results. * `description`: The description for data record. This would be displayed on search results.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;params&quot;: { # The parameters for the entity to facilitate data ingestion in structured json format.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;startingSchema&quot;: { # Defines the structure and layout of a type of document data. # Optional. The start schema to use for the DataStore created from this SourceEntity. If unset, a default vertical specialized schema will be used. This field is only used by SetUpDataConnector API, and will be ignored if used in other APIs. This field will be omitted from all API responses including GetDataConnector API. To retrieve a schema of a DataStore, use SchemaService.GetSchema API instead. The provided schema will be validated against certain rules on schema. Learn more from [this doc](https://cloud.google.com/generative-ai-app-builder/docs/provide-schema).
        &quot;fieldConfigs&quot;: [ # Output only. Configurations for fields of the schema.
          { # Configurations for fields of a schema. For example, configuring a field is indexable, or searchable.
            &quot;advancedSiteSearchDataSources&quot;: [ # If this field is set, only the corresponding source will be indexed for this field. Otherwise, the values from different sources are merged. Assuming a page with `` in meta tag, and `` in page map: if this enum is set to METATAGS, we will only index ``; if this enum is not set, we will merge them and index ``.
              &quot;A String&quot;,
            ],
            &quot;completableOption&quot;: &quot;A String&quot;, # If completable_option is COMPLETABLE_ENABLED, field values are directly used and returned as suggestions for Autocomplete in CompletionService.CompleteQuery. If completable_option is unset, the server behavior defaults to COMPLETABLE_DISABLED for fields that support setting completable options, which are just `string` fields. For those fields that do not support setting completable options, the server will skip completable option setting, and setting completable_option for those fields will throw `INVALID_ARGUMENT` error.
            &quot;dynamicFacetableOption&quot;: &quot;A String&quot;, # If dynamic_facetable_option is DYNAMIC_FACETABLE_ENABLED, field values are available for dynamic facet. Could only be DYNAMIC_FACETABLE_DISABLED if FieldConfig.indexable_option is INDEXABLE_DISABLED. Otherwise, an `INVALID_ARGUMENT` error will be returned. If dynamic_facetable_option is unset, the server behavior defaults to DYNAMIC_FACETABLE_DISABLED for fields that support setting dynamic facetable options. For those fields that do not support setting dynamic facetable options, such as `object` and `boolean`, the server will skip dynamic facetable option setting, and setting dynamic_facetable_option for those fields will throw `INVALID_ARGUMENT` error.
            &quot;fieldPath&quot;: &quot;A String&quot;, # Required. Field path of the schema field. For example: `title`, `description`, `release_info.release_year`.
            &quot;fieldType&quot;: &quot;A String&quot;, # Output only. Raw type of the field.
            &quot;indexableOption&quot;: &quot;A String&quot;, # If indexable_option is INDEXABLE_ENABLED, field values are indexed so that it can be filtered or faceted in SearchService.Search. If indexable_option is unset, the server behavior defaults to INDEXABLE_DISABLED for fields that support setting indexable options. For those fields that do not support setting indexable options, such as `object` and `boolean` and key properties, the server will skip indexable_option setting, and setting indexable_option for those fields will throw `INVALID_ARGUMENT` error.
            &quot;keyPropertyType&quot;: &quot;A String&quot;, # Output only. Type of the key property that this field is mapped to. Empty string if this is not annotated as mapped to a key property. Example types are `title`, `description`. Full list is defined by `keyPropertyMapping` in the schema field annotation. If the schema field has a `KeyPropertyMapping` annotation, `indexable_option` and `searchable_option` of this field cannot be modified.
            &quot;metatagName&quot;: &quot;A String&quot;, # Optional. The metatag name found in the HTML page. If user defines this field, the value of this metatag name will be used to extract metatag. If the user does not define this field, the FieldConfig.field_path will be used to extract metatag.
            &quot;recsFilterableOption&quot;: &quot;A String&quot;, # If recs_filterable_option is FILTERABLE_ENABLED, field values are filterable by filter expression in RecommendationService.Recommend. If FILTERABLE_ENABLED but the field type is numerical, field values are not filterable by text queries in RecommendationService.Recommend. Only textual fields are supported. If recs_filterable_option is unset, the default setting is FILTERABLE_DISABLED for fields that support setting filterable options. When a field set to [FILTERABLE_DISABLED] is filtered, a warning is generated and an empty result is returned.
            &quot;retrievableOption&quot;: &quot;A String&quot;, # If retrievable_option is RETRIEVABLE_ENABLED, field values are included in the search results. If retrievable_option is unset, the server behavior defaults to RETRIEVABLE_DISABLED for fields that support setting retrievable options. For those fields that do not support setting retrievable options, such as `object` and `boolean`, the server will skip retrievable option setting, and setting retrievable_option for those fields will throw `INVALID_ARGUMENT` error.
            &quot;schemaOrgPaths&quot;: [ # Field paths for indexing custom attribute from schema.org data. More details of schema.org and its defined types can be found at [schema.org](https://schema.org). It is only used on advanced site search schema. Currently only support full path from root. The full path to a field is constructed by concatenating field names, starting from `_root`, with a period `.` as the delimiter. Examples: * Publish date of the root: _root.datePublished * Publish date of the reviews: _root.review.datePublished
              &quot;A String&quot;,
            ],
            &quot;searchableOption&quot;: &quot;A String&quot;, # If searchable_option is SEARCHABLE_ENABLED, field values are searchable by text queries in SearchService.Search. If SEARCHABLE_ENABLED but field type is numerical, field values will not be searchable by text queries in SearchService.Search, as there are no text values associated to numerical fields. If searchable_option is unset, the server behavior defaults to SEARCHABLE_DISABLED for fields that support setting searchable options. Only `string` fields that have no key property mapping support setting searchable_option. For those fields that do not support setting searchable options, the server will skip searchable option setting, and setting searchable_option for those fields will throw `INVALID_ARGUMENT` error.
          },
        ],
        &quot;jsonSchema&quot;: &quot;A String&quot;, # The JSON representation of the schema.
        &quot;name&quot;: &quot;A String&quot;, # Immutable. The full resource name of the schema, in the format of `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/schemas/{schema}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
        &quot;structSchema&quot;: { # The structured representation of the schema.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
      },
    },
  ],
  &quot;errors&quot;: [ # Output only. The errors from initialization or from the latest connector run.
    { # 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;federatedConfig&quot;: { # Any params and credentials used specifically for hybrid connectors supporting FEDERATED mode. # Optional. Any params and credentials used specifically for hybrid connectors supporting FEDERATED mode. This field should only be set if the connector is a hybrid connector and we want to enable FEDERATED mode.
    &quot;additionalParams&quot;: { # Optional. Any additional parameters needed for FEDERATED.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;authParams&quot;: { # Optional. Any authentication parameters specific to FEDERATED connectors.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;jsonAuthParams&quot;: &quot;A String&quot;, # Optional. Any authentication parameters specific to FEDERATED connectors in json string format.
  },
  &quot;hybridIngestionDisabled&quot;: True or False, # Optional. If the connector is a hybrid connector, determines whether ingestion is enabled and appropriate resources are provisioned during connector creation. If the connector is not a hybrid connector, this field is ignored.
  &quot;identityRefreshInterval&quot;: &quot;A String&quot;, # The refresh interval to sync the Access Control List information for the documents ingested by this connector. If not set, the access control list will be refreshed at the default interval of 30 minutes. The identity refresh interval can be at least 30 minutes and at most 7 days.
  &quot;identityScheduleConfig&quot;: { # The configuration for the identity data synchronization runs. # The configuration for the identity data synchronization runs. This contains the refresh interval to sync the Access Control List information for the documents ingested by this connector.
    &quot;nextSyncTime&quot;: { # Represents civil time (or occasionally physical time). This type can represent a civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year, month, or day are 0, the DateTime is considered not to have a specific year, month, or day respectively. This type may also be used to represent a physical time if all the date and time fields are set and either case of the `time_offset` oneof is set. Consider using `Timestamp` message for physical time instead. If your use case also would like to store the user&#x27;s timezone, that can be done in another field. This type is more flexible than some applications may want. Make sure to document and validate your application&#x27;s limitations. # Optional. The UTC time when the next data sync is expected to start for the Data Connector. Customers are only able to specify the hour and minute to schedule the data sync. This is utilized when the data connector has a refresh interval greater than 1 day.
      &quot;day&quot;: 42, # Optional. Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a datetime without a day.
      &quot;hours&quot;: 42, # Optional. Hours of day in 24 hour format. Should be from 0 to 23, defaults to 0 (midnight). An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
      &quot;minutes&quot;: 42, # Optional. Minutes of hour of day. Must be from 0 to 59, defaults to 0.
      &quot;month&quot;: 42, # Optional. Month of year. Must be from 1 to 12, or 0 if specifying a datetime without a month.
      &quot;nanos&quot;: 42, # Optional. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999, defaults to 0.
      &quot;seconds&quot;: 42, # Optional. Seconds of minutes of the time. Must normally be from 0 to 59, defaults to 0. An API may allow the value 60 if it allows leap-seconds.
      &quot;timeZone&quot;: { # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones). # Time zone.
        &quot;id&quot;: &quot;A String&quot;, # IANA Time Zone Database time zone. For example &quot;America/New_York&quot;.
        &quot;version&quot;: &quot;A String&quot;, # Optional. IANA Time Zone Database version number. For example &quot;2019a&quot;.
      },
      &quot;utcOffset&quot;: &quot;A String&quot;, # UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }.
      &quot;year&quot;: 42, # Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.
    },
    &quot;refreshInterval&quot;: &quot;A String&quot;, # Optional. The refresh interval to sync the Access Control List information for the documents ingested by this connector. If not set, the access control list will be refreshed at the default interval of 30 minutes. The identity refresh interval can be at least 30 minutes and at most 7 days.
  },
  &quot;incrementalRefreshInterval&quot;: &quot;A String&quot;, # Optional. The refresh interval specifically for incremental data syncs. If unset, incremental syncs will use the default from env, set to 3hrs. The minimum is 30 minutes and maximum is 7 days. Applicable to only 3P connectors. When the refresh interval is set to the same value as the incremental refresh interval, incremental sync will be disabled.
  &quot;incrementalSyncDisabled&quot;: True or False, # Optional. Indicates whether incremental syncs are paused for this connector. This is independent of auto_run_disabled. Applicable to only 3P connectors. When the refresh interval is set to the same value as the incremental refresh interval, incremental sync will be disabled, i.e. set to true.
  &quot;jsonParams&quot;: &quot;A String&quot;, # Required data connector parameters in json string format.
  &quot;kmsKeyName&quot;: &quot;A String&quot;, # Input only. The KMS key to be used to protect the DataStores managed by this connector. Must be set for requests that need to comply with CMEK Org Policy protections. If this field is set and processed successfully, the DataStores created by this connector will be protected by the KMS key.
  &quot;lastSyncTime&quot;: &quot;A String&quot;, # Output only. For periodic connectors only, the last time a data sync was completed.
  &quot;latestPauseTime&quot;: &quot;A String&quot;, # Output only. The most recent timestamp when this DataConnector was paused, affecting all functionalities such as data synchronization. Pausing a connector has the following effects: - All functionalities, including data synchronization, are halted. - Any ongoing data synchronization job will be canceled. - No future data synchronization runs will be scheduled nor can be triggered.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The full resource name of the Data Connector. Format: `projects/*/locations/*/collections/*/dataConnector`.
  &quot;nextSyncTime&quot;: { # Represents civil time (or occasionally physical time). This type can represent a civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year, month, or day are 0, the DateTime is considered not to have a specific year, month, or day respectively. This type may also be used to represent a physical time if all the date and time fields are set and either case of the `time_offset` oneof is set. Consider using `Timestamp` message for physical time instead. If your use case also would like to store the user&#x27;s timezone, that can be done in another field. This type is more flexible than some applications may want. Make sure to document and validate your application&#x27;s limitations. # Defines the scheduled time for the next data synchronization. This field requires hour , minute, and time_zone from the [IANA Time Zone Database](https://www.iana.org/time-zones). This is utilized when the data connector has a refresh interval greater than 1 day. When the hours or minutes are not specified, we will assume a sync time of 0:00. The user must provide a time zone to avoid ambiguity.
    &quot;day&quot;: 42, # Optional. Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a datetime without a day.
    &quot;hours&quot;: 42, # Optional. Hours of day in 24 hour format. Should be from 0 to 23, defaults to 0 (midnight). An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
    &quot;minutes&quot;: 42, # Optional. Minutes of hour of day. Must be from 0 to 59, defaults to 0.
    &quot;month&quot;: 42, # Optional. Month of year. Must be from 1 to 12, or 0 if specifying a datetime without a month.
    &quot;nanos&quot;: 42, # Optional. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999, defaults to 0.
    &quot;seconds&quot;: 42, # Optional. Seconds of minutes of the time. Must normally be from 0 to 59, defaults to 0. An API may allow the value 60 if it allows leap-seconds.
    &quot;timeZone&quot;: { # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones). # Time zone.
      &quot;id&quot;: &quot;A String&quot;, # IANA Time Zone Database time zone. For example &quot;America/New_York&quot;.
      &quot;version&quot;: &quot;A String&quot;, # Optional. IANA Time Zone Database version number. For example &quot;2019a&quot;.
    },
    &quot;utcOffset&quot;: &quot;A String&quot;, # UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }.
    &quot;year&quot;: 42, # Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.
  },
  &quot;params&quot;: { # Required data connector parameters in structured json format.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
  },
  &quot;privateConnectivityProjectId&quot;: &quot;A String&quot;, # Output only. The tenant project ID associated with private connectivity connectors. This project must be allowlisted by in order for the connector to function.
  &quot;realtimeState&quot;: &quot;A String&quot;, # Output only. real-time sync state
  &quot;realtimeSyncConfig&quot;: { # The configuration for realtime sync to store additional params for realtime sync. # Optional. The configuration for realtime sync.
    &quot;realtimeSyncSecret&quot;: &quot;A String&quot;, # Optional. The ID of the Secret Manager secret used for webhook secret.
    &quot;streamingError&quot;: { # Streaming error details. # Optional. Streaming error details.
      &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). # Optional. Error details.
        &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;streamingErrorReason&quot;: &quot;A String&quot;, # Optional. Streaming error.
    },
    &quot;webhookUri&quot;: &quot;A String&quot;, # Optional. Webhook url for the connector to specify additional params for realtime sync.
  },
  &quot;refreshInterval&quot;: &quot;A String&quot;, # Required. The refresh interval for data sync. If duration is set to 0, the data will be synced in real time. The streaming feature is not supported yet. The minimum is 30 minutes and maximum is 7 days. When the refresh interval is set to the same value as the incremental refresh interval, incremental sync will be disabled.
  &quot;removeParamKeys&quot;: [ # Optional. Specifies keys to be removed from the &#x27;params&#x27; field. This is only active when &#x27;params&#x27; is included in the &#x27;update_mask&#x27; in an UpdateDataConnectorRequest. Deletion takes precedence if a key is both in &#x27;remove_param_keys&#x27; and present in the &#x27;params&#x27; field of the request.
    &quot;A String&quot;,
  ],
  &quot;state&quot;: &quot;A String&quot;, # Output only. State of the connector.
  &quot;staticIpAddresses&quot;: [ # Output only. The static IP addresses used by this connector.
    &quot;A String&quot;,
  ],
  &quot;staticIpEnabled&quot;: True or False, # Optional. Whether customer has enabled static IP addresses for this connector.
  &quot;syncMode&quot;: &quot;A String&quot;, # The data synchronization mode supported by the data connector.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Timestamp the DataConnector was last updated.
}

  collectionDisplayName: string, Required. The display name of the Collection. Should be human readable, used to display collections in the Console Dashboard. UTF-8 encoded string with limit of 1024 characters.
  collectionId: string, Required. The ID to use for the Collection, which will become the final component of the Collection&#x27;s resource name. A new Collection is created as part of the DataConnector setup. DataConnector is a singleton resource under Collection, managing all DataStores of the Collection. 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:

    { # 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="updateAclConfig">updateAclConfig(name, body=None, x__xgafv=None)</code>
  <pre>Default ACL configuration for use in a location of a customer&#x27;s project. Updates will only reflect to new data stores. Existing data stores will still use the old value.

Args:
  name: string, Immutable. The full resource name of the acl configuration. Format: `projects/{project}/locations/{location}/aclConfig`. 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:

{ # Access Control Configuration.
  &quot;idpConfig&quot;: { # Identity Provider Config. # Identity provider config.
    &quot;externalIdpConfig&quot;: { # Third party IDP Config. # External Identity provider config.
      &quot;workforcePoolName&quot;: &quot;A String&quot;, # Workforce pool name. Example: &quot;locations/global/workforcePools/pool_id&quot;
    },
    &quot;idpType&quot;: &quot;A String&quot;, # Identity provider type configured.
  },
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The full resource name of the acl configuration. Format: `projects/{project}/locations/{location}/aclConfig`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
}

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

Returns:
  An object of the form:

    { # Access Control Configuration.
  &quot;idpConfig&quot;: { # Identity Provider Config. # Identity provider config.
    &quot;externalIdpConfig&quot;: { # Third party IDP Config. # External Identity provider config.
      &quot;workforcePoolName&quot;: &quot;A String&quot;, # Workforce pool name. Example: &quot;locations/global/workforcePools/pool_id&quot;
    },
    &quot;idpType&quot;: &quot;A String&quot;, # Identity provider type configured.
  },
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The full resource name of the acl configuration. Format: `projects/{project}/locations/{location}/aclConfig`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.
}</pre>
</div>

<div class="method">
    <code class="details" id="updateCmekConfig">updateCmekConfig(name, body=None, setDefault=None, x__xgafv=None)</code>
  <pre>Provisions a CMEK key for use in a location of a customer&#x27;s project. This method will also conduct location validation on the provided cmekConfig to make sure the key is valid and can be used in the selected location.

Args:
  name: string, Required. The name of the CmekConfig of the form `projects/{project}/locations/{location}/cmekConfig` or `projects/{project}/locations/{location}/cmekConfigs/{cmek_config}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Configurations used to enable CMEK data encryption with Cloud KMS keys.
  &quot;isDefault&quot;: True or False, # Output only. The default CmekConfig for the Customer.
  &quot;kmsKey&quot;: &quot;A String&quot;, # Required. KMS key resource name which will be used to encrypt resources `projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{keyId}`.
  &quot;kmsKeyVersion&quot;: &quot;A String&quot;, # Output only. KMS key version resource name which will be used to encrypt resources `/cryptoKeyVersions/{keyVersion}`.
  &quot;lastRotationTimestampMicros&quot;: &quot;A String&quot;, # Output only. The timestamp of the last key rotation.
  &quot;name&quot;: &quot;A String&quot;, # Required. The name of the CmekConfig of the form `projects/{project}/locations/{location}/cmekConfig` or `projects/{project}/locations/{location}/cmekConfigs/{cmek_config}`.
  &quot;notebooklmState&quot;: &quot;A String&quot;, # Output only. Whether the NotebookLM Corpus is ready to be used.
  &quot;singleRegionKeys&quot;: [ # Optional. Single-regional CMEKs that are required for some VAIS features.
    { # Metadata for single-regional CMEKs.
      &quot;kmsKey&quot;: &quot;A String&quot;, # Required. Single-regional kms key resource name which will be used to encrypt resources `projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{keyId}`.
    },
  ],
  &quot;state&quot;: &quot;A String&quot;, # Output only. The states of the CmekConfig.
}

  setDefault: boolean, Set the following CmekConfig as the default to be used for child resources if one is not specified.
  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>

</body></html>