google.cloud.dialogflow.cx.v3beta1.flow.proto Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of proto-google-cloud-dialogflow-cx-v3beta1 Show documentation
Show all versions of proto-google-cloud-dialogflow-cx-v3beta1 Show documentation
PROTO library for proto-google-cloud-dialogflow-cx-v3beta1
The newest version!
// Copyright 2024 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.dialogflow.cx.v3beta1;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/cloud/dialogflow/cx/v3beta1/advanced_settings.proto";
import "google/cloud/dialogflow/cx/v3beta1/import_strategy.proto";
import "google/cloud/dialogflow/cx/v3beta1/page.proto";
import "google/cloud/dialogflow/cx/v3beta1/validation_message.proto";
import "google/longrunning/operations.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/timestamp.proto";
option cc_enable_arenas = true;
option csharp_namespace = "Google.Cloud.Dialogflow.Cx.V3Beta1";
option go_package = "cloud.google.com/go/dialogflow/cx/apiv3beta1/cxpb;cxpb";
option java_multiple_files = true;
option java_outer_classname = "FlowProto";
option java_package = "com.google.cloud.dialogflow.cx.v3beta1";
option objc_class_prefix = "DF";
option ruby_package = "Google::Cloud::Dialogflow::CX::V3beta1";
// Service for managing [Flows][google.cloud.dialogflow.cx.v3beta1.Flow].
service Flows {
option (google.api.default_host) = "dialogflow.googleapis.com";
option (google.api.oauth_scopes) =
"https://www.googleapis.com/auth/cloud-platform,"
"https://www.googleapis.com/auth/dialogflow";
// Creates a flow in the specified agent.
//
// Note: You should always train a flow prior to sending it queries. See the
// [training
// documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).
rpc CreateFlow(CreateFlowRequest) returns (Flow) {
option (google.api.http) = {
post: "/v3beta1/{parent=projects/*/locations/*/agents/*}/flows"
body: "flow"
};
option (google.api.method_signature) = "parent,flow";
}
// Deletes a specified flow.
rpc DeleteFlow(DeleteFlowRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v3beta1/{name=projects/*/locations/*/agents/*/flows/*}"
};
option (google.api.method_signature) = "name";
}
// Returns the list of all flows in the specified agent.
rpc ListFlows(ListFlowsRequest) returns (ListFlowsResponse) {
option (google.api.http) = {
get: "/v3beta1/{parent=projects/*/locations/*/agents/*}/flows"
};
option (google.api.method_signature) = "parent";
}
// Retrieves the specified flow.
rpc GetFlow(GetFlowRequest) returns (Flow) {
option (google.api.http) = {
get: "/v3beta1/{name=projects/*/locations/*/agents/*/flows/*}"
};
option (google.api.method_signature) = "name";
}
// Updates the specified flow.
//
// Note: You should always train a flow prior to sending it queries. See the
// [training
// documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).
rpc UpdateFlow(UpdateFlowRequest) returns (Flow) {
option (google.api.http) = {
patch: "/v3beta1/{flow.name=projects/*/locations/*/agents/*/flows/*}"
body: "flow"
};
option (google.api.method_signature) = "flow,update_mask";
}
// Trains the specified flow. Note that only the flow in 'draft' environment
// is trained.
//
// This method is a [long-running
// operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation).
// The returned `Operation` type has the following method-specific fields:
//
// - `metadata`: An empty [Struct
// message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct)
// - `response`: An [Empty
// message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty)
//
// Note: You should always train a flow prior to sending it queries. See the
// [training
// documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).
rpc TrainFlow(TrainFlowRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v3beta1/{name=projects/*/locations/*/agents/*/flows/*}:train"
body: "*"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "google.protobuf.Empty"
metadata_type: "google.protobuf.Struct"
};
}
// Validates the specified flow and creates or updates validation results.
// Please call this API after the training is completed to get the complete
// validation results.
rpc ValidateFlow(ValidateFlowRequest) returns (FlowValidationResult) {
option (google.api.http) = {
post: "/v3beta1/{name=projects/*/locations/*/agents/*/flows/*}:validate"
body: "*"
};
}
// Gets the latest flow validation result. Flow validation is performed
// when ValidateFlow is called.
rpc GetFlowValidationResult(GetFlowValidationResultRequest)
returns (FlowValidationResult) {
option (google.api.http) = {
get: "/v3beta1/{name=projects/*/locations/*/agents/*/flows/*/validationResult}"
};
option (google.api.method_signature) = "name";
}
// Imports the specified flow to the specified agent from a binary file.
//
// This method is a [long-running
// operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation).
// The returned `Operation` type has the following method-specific fields:
//
// - `metadata`: An empty [Struct
// message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct)
// - `response`:
// [ImportFlowResponse][google.cloud.dialogflow.cx.v3beta1.ImportFlowResponse]
//
// Note: You should always train a flow prior to sending it queries. See the
// [training
// documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).
rpc ImportFlow(ImportFlowRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v3beta1/{parent=projects/*/locations/*/agents/*}/flows:import"
body: "*"
};
option (google.longrunning.operation_info) = {
response_type: "ImportFlowResponse"
metadata_type: "google.protobuf.Struct"
};
}
// Exports the specified flow to a binary file.
//
// This method is a [long-running
// operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation).
// The returned `Operation` type has the following method-specific fields:
//
// - `metadata`: An empty [Struct
// message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct)
// - `response`:
// [ExportFlowResponse][google.cloud.dialogflow.cx.v3beta1.ExportFlowResponse]
//
// Note that resources (e.g. intents, entities, webhooks) that the flow
// references will also be exported.
rpc ExportFlow(ExportFlowRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v3beta1/{name=projects/*/locations/*/agents/*/flows/*}:export"
body: "*"
};
option (google.longrunning.operation_info) = {
response_type: "ExportFlowResponse"
metadata_type: "google.protobuf.Struct"
};
}
}
// Settings related to NLU.
message NluSettings {
// NLU model type.
enum ModelType {
// Not specified. `MODEL_TYPE_STANDARD` will be used.
MODEL_TYPE_UNSPECIFIED = 0;
// Use standard NLU model.
MODEL_TYPE_STANDARD = 1;
// Use advanced NLU model.
MODEL_TYPE_ADVANCED = 3;
}
// NLU model training mode.
enum ModelTrainingMode {
// Not specified. `MODEL_TRAINING_MODE_AUTOMATIC` will be used.
MODEL_TRAINING_MODE_UNSPECIFIED = 0;
// NLU model training is automatically triggered when a flow gets modified.
// User can also manually trigger model training in this mode.
MODEL_TRAINING_MODE_AUTOMATIC = 1;
// User needs to manually trigger NLU model training. Best for large flows
// whose models take long time to train.
MODEL_TRAINING_MODE_MANUAL = 2;
}
// Indicates the type of NLU model.
ModelType model_type = 1;
// To filter out false positive results and still get variety in matched
// natural language inputs for your agent, you can tune the machine learning
// classification threshold. If the returned score value is less than the
// threshold value, then a no-match event will be triggered. The score values
// range from 0.0 (completely uncertain) to 1.0 (completely certain). If set
// to 0.0, the default of 0.3 is used. You can set a separate classification
// threshold for the flow in each language enabled for the agent.
float classification_threshold = 3;
// Indicates NLU model training mode.
ModelTrainingMode model_training_mode = 4;
}
// Flows represents the conversation flows when you build your chatbot agent.
//
// A flow consists of many pages connected by the transition routes.
// Conversations always start with the built-in Start Flow (with an all-0 ID).
// Transition routes can direct the conversation session from the current flow
// (parent flow) to another flow (sub flow). When the sub flow is finished,
// Dialogflow will bring the session back to the parent flow, where the sub flow
// is started.
//
// Usually, when a transition route is followed by a matched intent, the intent
// will be "consumed". This means the intent won't activate more transition
// routes. However, when the followed transition route moves the conversation
// session into a different flow, the matched intent can be carried over and to
// be consumed in the target flow.
message Flow {
option (google.api.resource) = {
type: "dialogflow.googleapis.com/Flow"
pattern: "projects/{project}/locations/{location}/agents/{agent}/flows/{flow}"
};
// Settings for multi-lingual agents.
message MultiLanguageSettings {
// Optional. Enable multi-language detection for this flow. This can be set
// only if [agent level multi language
// setting][Agent.enable_multi_language_training] is enabled.
bool enable_multi_language_detection = 1
[(google.api.field_behavior) = OPTIONAL];
// Optional. Agent will respond in the detected language if the detected
// language code is in the supported resolved languages for this flow. This
// will be used only if multi-language training is enabled in the
// [agent][google.cloud.dialogflow.cx.v3beta1.Agent.enable_multi_language_training]
// and multi-language detection is enabled in the
// [flow][google.cloud.dialogflow.cx.v3beta1.Flow.MultiLanguageSettings.enable_multi_language_detection].
// The supported languages must be a subset of the languages supported by
// the agent.
repeated string supported_response_language_codes = 2
[(google.api.field_behavior) = OPTIONAL];
}
// The unique identifier of the flow.
// Format:
// `projects//locations//agents//flows/`.
string name = 1;
// Required. The human-readable name of the flow.
string display_name = 2 [(google.api.field_behavior) = REQUIRED];
// The description of the flow. The maximum length is 500 characters. If
// exceeded, the request is rejected.
string description = 3;
// A flow's transition routes serve two purposes:
//
// * They are responsible for matching the user's first utterances in the
// flow.
// * They are inherited by every page's [transition
// routes][Page.transition_routes] and can support use cases such as the user
// saying "help" or "can I talk to a human?", which can be handled in a common
// way regardless of the current page. Transition routes defined in the page
// have higher priority than those defined in the flow.
//
// TransitionRoutes are evalauted in the following order:
//
// * TransitionRoutes with intent specified.
// * TransitionRoutes with only condition specified.
//
// TransitionRoutes with intent specified are inherited by pages in the flow.
repeated TransitionRoute transition_routes = 4;
// A flow's event handlers serve two purposes:
//
// * They are responsible for handling events (e.g. no match,
// webhook errors) in the flow.
// * They are inherited by every page's [event
// handlers][Page.event_handlers], which can be used to handle common events
// regardless of the current page. Event handlers defined in the page
// have higher priority than those defined in the flow.
//
// Unlike
// [transition_routes][google.cloud.dialogflow.cx.v3beta1.Flow.transition_routes],
// these handlers are evaluated on a first-match basis. The first one that
// matches the event get executed, with the rest being ignored.
repeated EventHandler event_handlers = 10;
// A flow's transition route group serve two purposes:
//
// * They are responsible for matching the user's first utterances in the
// flow.
// * They are inherited by every page's [transition
// route groups][Page.transition_route_groups]. Transition route groups
// defined in the page have higher priority than those defined in the flow.
//
// Format:`projects//locations//agents//flows//transitionRouteGroups/`
// or
// `projects//locations//agents//transitionRouteGroups/`
// for agent-level groups.
repeated string transition_route_groups = 15
[(google.api.resource_reference) = {
type: "dialogflow.googleapis.com/TransitionRouteGroup"
}];
// NLU related settings of the flow.
NluSettings nlu_settings = 11;
// Hierarchical advanced settings for this flow. The settings exposed at the
// lower level overrides the settings exposed at the higher level.
AdvancedSettings advanced_settings = 14;
// Optional. Knowledge connector configuration.
KnowledgeConnectorSettings knowledge_connector_settings = 18
[(google.api.field_behavior) = OPTIONAL];
// Optional. Multi-lingual agent settings for this flow.
MultiLanguageSettings multi_language_settings = 28
[(google.api.field_behavior) = OPTIONAL];
// Indicates whether the flow is locked for changes. If the flow is locked,
// modifications to the flow will be rejected.
bool locked = 30;
}
// The request message for
// [Flows.CreateFlow][google.cloud.dialogflow.cx.v3beta1.Flows.CreateFlow].
message CreateFlowRequest {
// Required. The agent to create a flow for.
// Format: `projects//locations//agents/`.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "dialogflow.googleapis.com/Flow"
}
];
// Required. The flow to create.
Flow flow = 2 [(google.api.field_behavior) = REQUIRED];
// The language of the following fields in `flow`:
//
// * `Flow.event_handlers.trigger_fulfillment.messages`
// * `Flow.event_handlers.trigger_fulfillment.conditional_cases`
// * `Flow.transition_routes.trigger_fulfillment.messages`
// * `Flow.transition_routes.trigger_fulfillment.conditional_cases`
//
// If not specified, the agent's default language is used.
// [Many
// languages](https://cloud.google.com/dialogflow/cx/docs/reference/language)
// are supported.
// Note: languages must be enabled in the agent before they can be used.
string language_code = 3;
}
// The request message for
// [Flows.DeleteFlow][google.cloud.dialogflow.cx.v3beta1.Flows.DeleteFlow].
message DeleteFlowRequest {
// Required. The name of the flow to delete.
// Format:
// `projects//locations//agents//flows/`.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = { type: "dialogflow.googleapis.com/Flow" }
];
// This field has no effect for flows with no incoming transitions.
// For flows with incoming transitions:
//
// * If `force` is set to false, an error will be returned with message
// indicating the incoming transitions.
// * If `force` is set to true, Dialogflow will remove the flow, as well as
// any transitions to the flow (i.e. [Target
// flow][EventHandler.target_flow] in event handlers or [Target
// flow][TransitionRoute.target_flow] in transition routes that point to
// this flow will be cleared).
bool force = 2;
}
// The request message for
// [Flows.ListFlows][google.cloud.dialogflow.cx.v3beta1.Flows.ListFlows].
message ListFlowsRequest {
// Required. The agent containing the flows.
// Format: `projects//locations//agents/`.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "dialogflow.googleapis.com/Flow"
}
];
// The maximum number of items to return in a single page. By default 100 and
// at most 1000.
int32 page_size = 2;
// The next_page_token value returned from a previous list request.
string page_token = 3;
// The language to list flows for. The following fields are language
// dependent:
//
// * `Flow.event_handlers.trigger_fulfillment.messages`
// * `Flow.event_handlers.trigger_fulfillment.conditional_cases`
// * `Flow.transition_routes.trigger_fulfillment.messages`
// * `Flow.transition_routes.trigger_fulfillment.conditional_cases`
//
// If not specified, the agent's default language is used.
// [Many
// languages](https://cloud.google.com/dialogflow/cx/docs/reference/language)
// are supported.
// Note: languages must be enabled in the agent before they can be used.
string language_code = 4;
}
// The response message for
// [Flows.ListFlows][google.cloud.dialogflow.cx.v3beta1.Flows.ListFlows].
message ListFlowsResponse {
// The list of flows. There will be a maximum number of items returned based
// on the page_size field in the request.
repeated Flow flows = 1;
// Token to retrieve the next page of results, or empty if there are no more
// results in the list.
string next_page_token = 2;
}
// The response message for
// [Flows.GetFlow][google.cloud.dialogflow.cx.v3beta1.Flows.GetFlow].
message GetFlowRequest {
// Required. The name of the flow to get.
// Format:
// `projects//locations//agents//flows/`.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = { type: "dialogflow.googleapis.com/Flow" }
];
// The language to retrieve the flow for. The following fields are language
// dependent:
//
// * `Flow.event_handlers.trigger_fulfillment.messages`
// * `Flow.event_handlers.trigger_fulfillment.conditional_cases`
// * `Flow.transition_routes.trigger_fulfillment.messages`
// * `Flow.transition_routes.trigger_fulfillment.conditional_cases`
//
// If not specified, the agent's default language is used.
// [Many
// languages](https://cloud.google.com/dialogflow/cx/docs/reference/language)
// are supported.
// Note: languages must be enabled in the agent before they can be used.
string language_code = 2;
}
// The request message for
// [Flows.UpdateFlow][google.cloud.dialogflow.cx.v3beta1.Flows.UpdateFlow].
message UpdateFlowRequest {
// Required. The flow to update.
Flow flow = 1 [(google.api.field_behavior) = REQUIRED];
// The mask to control which fields get updated. If the mask is not present,
// all fields will be updated.
google.protobuf.FieldMask update_mask = 2;
// The language of the following fields in `flow`:
//
// * `Flow.event_handlers.trigger_fulfillment.messages`
// * `Flow.event_handlers.trigger_fulfillment.conditional_cases`
// * `Flow.transition_routes.trigger_fulfillment.messages`
// * `Flow.transition_routes.trigger_fulfillment.conditional_cases`
//
// If not specified, the agent's default language is used.
// [Many
// languages](https://cloud.google.com/dialogflow/cx/docs/reference/language)
// are supported.
// Note: languages must be enabled in the agent before they can be used.
string language_code = 3;
}
// The request message for
// [Flows.TrainFlow][google.cloud.dialogflow.cx.v3beta1.Flows.TrainFlow].
message TrainFlowRequest {
// Required. The flow to train.
// Format:
// `projects//locations//agents//flows/`.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = { type: "dialogflow.googleapis.com/Flow" }
];
}
// The request message for
// [Flows.ValidateFlow][google.cloud.dialogflow.cx.v3beta1.Flows.ValidateFlow].
message ValidateFlowRequest {
// Required. The flow to validate.
// Format:
// `projects//locations//agents//flows/`.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = { type: "dialogflow.googleapis.com/Flow" }
];
// If not specified, the agent's default language is used.
string language_code = 2;
}
// The request message for
// [Flows.GetFlowValidationResult][google.cloud.dialogflow.cx.v3beta1.Flows.GetFlowValidationResult].
message GetFlowValidationResultRequest {
// Required. The flow name.
// Format:
// `projects//locations//agents//flows//validationResult`.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "dialogflow.googleapis.com/FlowValidationResult"
}
];
// If not specified, the agent's default language is used.
string language_code = 2;
}
// The response message for
// [Flows.GetFlowValidationResult][google.cloud.dialogflow.cx.v3beta1.Flows.GetFlowValidationResult].
message FlowValidationResult {
option (google.api.resource) = {
type: "dialogflow.googleapis.com/FlowValidationResult"
pattern: "projects/{project}/locations/{location}/agents/{agent}/flows/{flow}/validationResult"
};
// The unique identifier of the flow validation result.
// Format:
// `projects//locations//agents//flows//validationResult`.
string name = 1;
// Contains all validation messages.
repeated ValidationMessage validation_messages = 2;
// Last time the flow was validated.
google.protobuf.Timestamp update_time = 3;
}
// The request message for
// [Flows.ImportFlow][google.cloud.dialogflow.cx.v3beta1.Flows.ImportFlow].
message ImportFlowRequest {
// Import option.
enum ImportOption {
// Unspecified. Treated as `KEEP`.
IMPORT_OPTION_UNSPECIFIED = 0;
// Always respect settings in exported flow content. It may cause a
// import failure if some settings (e.g. custom NLU) are not supported in
// the agent to import into.
KEEP = 1;
// Fallback to default settings if some settings are not supported in the
// agent to import into. E.g. Standard NLU will be used if custom NLU is
// not available.
FALLBACK = 2;
}
// Required. The agent to import the flow into.
// Format: `projects//locations//agents/`.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "dialogflow.googleapis.com/Flow"
}
];
// Required. The flow to import.
oneof flow {
// The [Google Cloud Storage](https://cloud.google.com/storage/docs/) URI
// to import flow from. The format of this URI must be
// `gs:///`.
//
// Dialogflow performs a read operation for the Cloud Storage object
// on the caller's behalf, so your request authentication must
// have read permissions for the object. For more information, see
// [Dialogflow access
// control](https://cloud.google.com/dialogflow/cx/docs/concept/access-control#storage).
string flow_uri = 2;
// Uncompressed raw byte content for flow.
bytes flow_content = 3;
}
// Flow import mode. If not specified, `KEEP` is assumed.
ImportOption import_option = 4;
// Optional. Specifies the import strategy used when resolving resource
// conflicts.
FlowImportStrategy flow_import_strategy = 5
[(google.api.field_behavior) = OPTIONAL];
}
// The flow import strategy used for resource conflict resolution associated
// with an
// [ImportFlowRequest][google.cloud.dialogflow.cx.v3beta1.ImportFlowRequest].
message FlowImportStrategy {
// Optional. Global flow import strategy for resource conflict resolution. The
// import Import strategy for resource conflict resolution, applied globally
// throughout the flow. It will be applied for all
// display name conflicts in the imported content. If not specified,
// 'CREATE_NEW' is assumed.
ImportStrategy global_import_strategy = 1
[(google.api.field_behavior) = OPTIONAL];
}
// The response message for
// [Flows.ImportFlow][google.cloud.dialogflow.cx.v3beta1.Flows.ImportFlow].
message ImportFlowResponse {
// The unique identifier of the new flow.
// Format:
// `projects//locations//agents//flows/`.
string flow = 1 [
(google.api.resource_reference) = { type: "dialogflow.googleapis.com/Flow" }
];
}
// The request message for
// [Flows.ExportFlow][google.cloud.dialogflow.cx.v3beta1.Flows.ExportFlow].
message ExportFlowRequest {
// Required. The name of the flow to export.
// Format:
// `projects//locations//agents//flows/`.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = { type: "dialogflow.googleapis.com/Flow" }
];
// Optional. The [Google Cloud
// Storage](https://cloud.google.com/storage/docs/) URI to export the flow to.
// The format of this URI must be `gs:///`. If left
// unspecified, the serialized flow is returned inline.
//
// Dialogflow performs a write operation for the Cloud Storage object
// on the caller's behalf, so your request authentication must
// have write permissions for the object. For more information, see
// [Dialogflow access
// control](https://cloud.google.com/dialogflow/cx/docs/concept/access-control#storage).
string flow_uri = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Whether to export flows referenced by the specified flow.
bool include_referenced_flows = 4 [(google.api.field_behavior) = OPTIONAL];
}
// The response message for
// [Flows.ExportFlow][google.cloud.dialogflow.cx.v3beta1.Flows.ExportFlow].
message ExportFlowResponse {
// The exported flow.
oneof flow {
// The URI to a file containing the exported flow. This field is populated
// only if `flow_uri` is specified in
// [ExportFlowRequest][google.cloud.dialogflow.cx.v3beta1.ExportFlowRequest].
string flow_uri = 1;
// Uncompressed raw byte content for flow.
bytes flow_content = 2;
}
}