googleapis/google/cloud/discoveryengine/v1beta/project.proto
Google APIs f054d2af61 feat(discoveryengine): regenerate v1beta proto snapshot for feature parity with v1
Publishes the full v1beta API surface including services and methods present
in v1main but missing from the stale v1beta snapshot (engine_service,
control_service, data_store_service, project_service, site_search_engine_service,
rank_service, grounded_generation_service, search_tuning_service, etc.),
plus v1beta-specific fields like region_code on SearchRequest.

PiperOrigin-RevId: 932931724
2026-06-16 00:57:55 -07:00

331 lines
15 KiB
Protocol Buffer

// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.cloud.discoveryengine.v1beta;
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/cloud/discoveryengine/v1beta/logging.proto";
import "google/protobuf/timestamp.proto";
option csharp_namespace = "Google.Cloud.DiscoveryEngine.V1Beta";
option go_package = "cloud.google.com/go/discoveryengine/apiv1beta/discoveryenginepb;discoveryenginepb";
option java_multiple_files = true;
option java_outer_classname = "ProjectProto";
option java_package = "com.google.cloud.discoveryengine.v1beta";
option objc_class_prefix = "DISCOVERYENGINE";
option php_namespace = "Google\\Cloud\\DiscoveryEngine\\V1beta";
option ruby_package = "Google::Cloud::DiscoveryEngine::V1beta";
// Metadata and configurations for a Google Cloud project in the service.
message Project {
option (google.api.resource) = {
type: "discoveryengine.googleapis.com/Project"
pattern: "projects/{project}"
};
// Metadata about the terms of service.
message ServiceTerms {
// The agreement states this terms of service.
enum State {
// The default value of the enum. This value is not actually used.
STATE_UNSPECIFIED = 0;
// The project has given consent to the terms of service.
TERMS_ACCEPTED = 1;
// The project is pending to review and accept the terms of service.
TERMS_PENDING = 2;
// The project has declined or revoked the agreement to terms of service.
TERMS_DECLINED = 3;
}
// The unique identifier of this terms of service.
// Available terms:
//
// * `GA_DATA_USE_TERMS`: [Terms for data
// use](https://cloud.google.com/retail/data-use-terms). When using this as
// `id`, the acceptable
// [version][google.cloud.discoveryengine.v1beta.Project.ServiceTerms.version]
// to provide is `2022-11-23`.
string id = 1;
// The version string of the terms of service.
// For acceptable values, see the comments for
// [id][google.cloud.discoveryengine.v1beta.Project.ServiceTerms.id] above.
string version = 2;
// Whether the project has accepted/rejected the service terms or it is
// still pending.
State state = 4;
// The last time when the project agreed to the terms of service.
google.protobuf.Timestamp accept_time = 5;
// The last time when the project declined or revoked the agreement to terms
// of service.
google.protobuf.Timestamp decline_time = 6;
}
// Customer provided configurations.
message CustomerProvidedConfig {
// Configuration for NotebookLM.
message NotebooklmConfig {
// Configuration for customer defined Model Armor templates to be used for
// sanitizing user prompts and LLM responses.
message ModelArmorConfig {
// Optional. The resource name of the Model Armor Template for
// sanitizing user prompts. Format:
// projects/{project}/locations/{location}/templates/{template_id}
// If not specified, no sanitization will be applied to the user prompt.
string user_prompt_template = 1 [
(google.api.field_behavior) = OPTIONAL,
(google.api.resource_reference) = {
type: "modelarmor.googleapis.com/Template"
}
];
// Optional. The resource name of the Model Armor Template for
// sanitizing LLM responses. Format:
// projects/{project}/locations/{location}/templates/{template_id}
// If not specified, no sanitization will be applied to the LLM
// response.
string response_template = 2 [
(google.api.field_behavior) = OPTIONAL,
(google.api.resource_reference) = {
type: "modelarmor.googleapis.com/Template"
}
];
}
// Data protection policy config for NotebookLM.
message DataProtectionPolicy {
// Specifies a Sensitive Data Protection
// (https://cloud.google.com/sensitive-data-protection/docs/sensitive-data-protection-overview)
// policy.
message SensitiveDataProtectionPolicy {
// Optional. The Sensitive Data Protection policy resource name.
string policy = 1 [
(google.api.field_behavior) = OPTIONAL,
(google.api.resource_reference) = {
type: "dlp.googleapis.com/ContentPolicy"
}
];
}
// Optional. The sensitive data protection policy.
SensitiveDataProtectionPolicy sensitive_data_protection_policy = 1
[(google.api.field_behavior) = OPTIONAL];
}
// Model Armor configuration to be used for sanitizing user prompts and
// LLM responses.
ModelArmorConfig model_armor_config = 1;
// Optional. Whether to disable the notebook sharing feature for the
// project. Default to false if not specified.
bool opt_out_notebook_sharing = 2
[(google.api.field_behavior) = OPTIONAL];
// Optional. Specifies the data protection policy for NotebookLM.
DataProtectionPolicy data_protection_policy = 5
[(google.api.field_behavior) = OPTIONAL];
// Optional. Observability config for NotebookLM.
ObservabilityConfig observability_config = 6
[(google.api.field_behavior) = OPTIONAL];
}
// Optional. Configuration for NotebookLM settings.
NotebooklmConfig notebooklm_config = 3
[(google.api.field_behavior) = OPTIONAL];
}
// Represents the currently effective configurable billing parameters.
// These values are derived from the customer's subscription history stored
// internally and reflect the thresholds actively being used for billing
// purposes at the time of the GetProject call. This includes the start_time
// of the subscription and may differ from the values in
// `customer_provided_config` due to billing rules
// (e.g., scale-downs taking effect only at the start of a new month).
// We also include the update type to indicate the type of update performed on
// the configurable billing configuration in the UpdateProject operation.
message ConfigurableBillingStatus {
// Per-model Agent Search TPM subscription status. One entry per active
// `core_subscription.agent_search_token_subscriptions[*]` entry in the
// customer-provided config; populated by UpdateProject and GetProject.
//
// The lifecycle scalars on this message (`start_time`, `terminate_time`,
// `update_type`, `tpm_threshold_next_update_time`) are per (project,
// model_version) — siblings of the whole-relationship `start_time` /
// `terminate_time` / `update_type` on the enclosing
// ConfigurableBillingStatus, but scoped to this specific Agent Search
// TPM subscription instead of to the overall customer-configurable-
// pricing relationship. This per-instance granularity is intentional:
// the underlying SubV3 storage is per-(project, model_version), so
// each model has its own activation, termination, and deferred-update
// clock; surfacing that on the response gives customers the granularity
// they need to manage per-model commitments independently. QPM /
// IndexingCore differ — their storage is one row per (project,
// location), so their lifecycle is represented only by the whole-
// relationship scalars on ConfigurableBillingStatus.
message AgentSearchTokenSubscriptionStatus {
// Output only. The Gemini model version this status corresponds to.
// Matches CoreSubscription.AgentSearchTokenSubscription.model_version (a
// stable Gemini model version from the Gemini Enterprise Agent Platform
// model-versions registry; see
// https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/model-versions#gemini-models).
string model_version = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The currently effective TPM threshold. Reflects scale-up
// immediately and scale-down at the next billing cycle, matching
// `effective_search_qpm_threshold` semantics.
int64 effective_tpm_threshold = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The earliest next update time for the TPM subscription
// threshold for this (project, model_version). Populated only after a
// successful update.
google.protobuf.Timestamp tpm_threshold_next_update_time = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. When this (project, model_version) Agent Search TPM
// subscription was first activated. Set once on first activation of this
// model version and never moved by subsequent threshold updates; on
// termination + re-activation a new value is recorded. Does NOT move
// the whole-relationship `start_time` on the enclosing
// ConfigurableBillingStatus, which continues to represent the first
// activation of the overall customer-configurable-pricing
// relationship.
google.protobuf.Timestamp start_time = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. If set, the scheduled effective time at which this
// (project, model_version) Agent Search TPM subscription will terminate.
// Populated when the customer removes this entry from
// `core_subscription.agent_search_token_subscriptions[*]`. Does NOT move
// the whole-relationship `terminate_time` on the enclosing
// ConfigurableBillingStatus, which is populated only when the entire
// customer-configurable-pricing relationship is being torn down.
google.protobuf.Timestamp terminate_time = 5
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The type of the most recent update to this (project,
// model_version) subscription, as performed by the most recent
// UpdateProject call. `UPDATE_TYPE_UNSPECIFIED` indicates this
// model_version was not touched by the most recent UpdateProject (its
// `effective_tpm_threshold` reflects an earlier update). The
// whole-relationship `update_type` on the enclosing
// ConfigurableBillingStatus continues to summarize the direction of
// the most recent update across all surfaces in the project (QPM,
// IndexingCore, and Agent Search TPM together).
UpdateType update_type = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// The type of update performed on the configurable billing configuration.
enum UpdateType {
// Unspecified update type.
UPDATE_TYPE_UNSPECIFIED = 0;
// Configurable billing was created/enabled.
CREATE = 1;
// Configurable billing was deleted/disabled.
DELETE = 2;
// Subscription was scaled up (thresholds increased).
SCALE_UP = 3;
// Subscription was scaled down (thresholds decreased).
SCALE_DOWN = 4;
}
// Optional. The currently effective Search QPM threshold in queries per
// minute. This is the threshold against which QPM usage is compared for
// overage calculations.
int64 effective_search_qpm_threshold = 1
[(google.api.field_behavior) = OPTIONAL];
// Optional. The currently effective Indexing Core threshold.
// This is the threshold against which Indexing Core usage is compared
// for overage calculations.
int64 effective_indexing_core_threshold = 2
[(google.api.field_behavior) = OPTIONAL];
// Optional. The start time of the currently active billing subscription.
google.protobuf.Timestamp start_time = 3
[(google.api.field_behavior) = OPTIONAL];
// Output only. The latest terminate effective time of search qpm and
// indexing core subscriptions.
google.protobuf.Timestamp terminate_time = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The earliest next update time for the search QPM
// subscription threshold. This is based on the next_update_time returned by
// the underlying Cloud Billing Subscription V3 API. This field is populated
// only if an update QPM subscription threshold request is succeeded.
google.protobuf.Timestamp search_qpm_threshold_next_update_time = 5
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The earliest next update time for the indexing core
// subscription threshold. This is based on the next_update_time returned by
// the underlying Cloud Billing Subscription V3 API. This field is populated
// only if an update indexing core subscription threshold
// request is succeeded.
google.protobuf.Timestamp indexing_core_threshold_next_update_time = 6
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The type of update performed in this operation.
// This field is populated in the response of UpdateProject.
UpdateType update_type = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Per-model Agent Search TPM subscription status.
repeated AgentSearchTokenSubscriptionStatus
agent_search_token_subscription_statuses = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Output only. Full resource name of the project, for example
// `projects/{project}`.
// Note that when making requests, project number and project id are both
// acceptable, but the server will always respond in project number.
string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The timestamp when this project is created.
google.protobuf.Timestamp create_time = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The timestamp when this project is successfully provisioned.
// Empty value means this project is still provisioning and is not ready for
// use.
google.protobuf.Timestamp provision_completion_time = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. A map of terms of services. The key is the `id` of
// [ServiceTerms][google.cloud.discoveryengine.v1beta.Project.ServiceTerms].
map<string, ServiceTerms> service_terms_map = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. Customer provided configurations.
CustomerProvidedConfig customer_provided_config = 6
[(google.api.field_behavior) = OPTIONAL];
// Output only. The current status of the project's configurable billing.
ConfigurableBillingStatus configurable_billing_status = 10
[(google.api.field_behavior) = OUTPUT_ONLY];
}