1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.cloud.dialogflow.cx.v3;
18
19import "google/api/annotations.proto";
20import "google/api/client.proto";
21import "google/api/field_behavior.proto";
22import "google/api/resource.proto";
23import "google/cloud/dialogflow/cx/v3/fulfillment.proto";
24import "google/protobuf/empty.proto";
25import "google/protobuf/field_mask.proto";
26import "google/protobuf/struct.proto";
27
28option cc_enable_arenas = true;
29option csharp_namespace = "Google.Cloud.Dialogflow.Cx.V3";
30option go_package = "cloud.google.com/go/dialogflow/cx/apiv3/cxpb;cxpb";
31option java_multiple_files = true;
32option java_outer_classname = "PageProto";
33option java_package = "com.google.cloud.dialogflow.cx.v3";
34option objc_class_prefix = "DF";
35option ruby_package = "Google::Cloud::Dialogflow::CX::V3";
36
37// Service for managing [Pages][google.cloud.dialogflow.cx.v3.Page].
38service Pages {
39  option (google.api.default_host) = "dialogflow.googleapis.com";
40  option (google.api.oauth_scopes) =
41      "https://www.googleapis.com/auth/cloud-platform,"
42      "https://www.googleapis.com/auth/dialogflow";
43
44  // Returns the list of all pages in the specified flow.
45  rpc ListPages(ListPagesRequest) returns (ListPagesResponse) {
46    option (google.api.http) = {
47      get: "/v3/{parent=projects/*/locations/*/agents/*/flows/*}/pages"
48    };
49    option (google.api.method_signature) = "parent";
50  }
51
52  // Retrieves the specified page.
53  rpc GetPage(GetPageRequest) returns (Page) {
54    option (google.api.http) = {
55      get: "/v3/{name=projects/*/locations/*/agents/*/flows/*/pages/*}"
56    };
57    option (google.api.method_signature) = "name";
58  }
59
60  // Creates a page in the specified flow.
61  //
62  // Note: You should always train a flow prior to sending it queries. See the
63  // [training
64  // documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).
65  rpc CreatePage(CreatePageRequest) returns (Page) {
66    option (google.api.http) = {
67      post: "/v3/{parent=projects/*/locations/*/agents/*/flows/*}/pages"
68      body: "page"
69    };
70    option (google.api.method_signature) = "parent,page";
71  }
72
73  // Updates the specified page.
74  //
75  // Note: You should always train a flow prior to sending it queries. See the
76  // [training
77  // documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).
78  rpc UpdatePage(UpdatePageRequest) returns (Page) {
79    option (google.api.http) = {
80      patch: "/v3/{page.name=projects/*/locations/*/agents/*/flows/*/pages/*}"
81      body: "page"
82    };
83    option (google.api.method_signature) = "page,update_mask";
84  }
85
86  // Deletes the specified page.
87  //
88  // Note: You should always train a flow prior to sending it queries. See the
89  // [training
90  // documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).
91  rpc DeletePage(DeletePageRequest) returns (google.protobuf.Empty) {
92    option (google.api.http) = {
93      delete: "/v3/{name=projects/*/locations/*/agents/*/flows/*/pages/*}"
94    };
95    option (google.api.method_signature) = "name";
96  }
97}
98
99// A Dialogflow CX conversation (session) can be described and visualized as a
100// state machine. The states of a CX session are represented by pages.
101//
102// For each flow, you define many pages, where your combined pages can handle a
103// complete conversation on the topics the flow is designed for. At any given
104// moment, exactly one page is the current page, the current page is considered
105// active, and the flow associated with that page is considered active. Every
106// flow has a special start page. When a flow initially becomes active, the
107// start page page becomes the current page. For each conversational turn, the
108// current page will either stay the same or transition to another page.
109//
110// You configure each page to collect information from the end-user that is
111// relevant for the conversational state represented by the page.
112//
113// For more information, see the
114// [Page guide](https://cloud.google.com/dialogflow/cx/docs/concept/page).
115message Page {
116  option (google.api.resource) = {
117    type: "dialogflow.googleapis.com/Page"
118    pattern: "projects/{project}/locations/{location}/agents/{agent}/flows/{flow}/pages/{page}"
119  };
120
121  // The unique identifier of the page.
122  // Required for the
123  // [Pages.UpdatePage][google.cloud.dialogflow.cx.v3.Pages.UpdatePage] method.
124  // [Pages.CreatePage][google.cloud.dialogflow.cx.v3.Pages.CreatePage]
125  // populates the name automatically.
126  // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
127  // ID>/flows/<Flow ID>/pages/<Page ID>`.
128  string name = 1;
129
130  // Required. The human-readable name of the page, unique within the flow.
131  string display_name = 2 [(google.api.field_behavior) = REQUIRED];
132
133  // The fulfillment to call when the session is entering the page.
134  Fulfillment entry_fulfillment = 7;
135
136  // The form associated with the page, used for collecting parameters
137  // relevant to the page.
138  Form form = 4;
139
140  // Ordered list of
141  // [`TransitionRouteGroups`][google.cloud.dialogflow.cx.v3.TransitionRouteGroup]
142  // associated with the page. Transition route groups must be unique within a
143  // page.
144  //
145  // *   If multiple transition routes within a page scope refer to the same
146  //     intent, then the precedence order is: page's transition route -> page's
147  //     transition route group -> flow's transition routes.
148  //
149  // *   If multiple transition route groups within a page contain the same
150  //     intent, then the first group in the ordered list takes precedence.
151  //
152  // Format:`projects/<Project ID>/locations/<Location ID>/agents/<Agent
153  // ID>/flows/<Flow ID>/transitionRouteGroups/<TransitionRouteGroup ID>`.
154  repeated string transition_route_groups = 11
155      [(google.api.resource_reference) = {
156        type: "dialogflow.googleapis.com/TransitionRouteGroup"
157      }];
158
159  // A list of transitions for the transition rules of this page.
160  // They route the conversation to another page in the same flow, or another
161  // flow.
162  //
163  // When we are in a certain page, the TransitionRoutes are evalauted in the
164  // following order:
165  //
166  // *   TransitionRoutes defined in the page with intent specified.
167  // *   TransitionRoutes defined in the
168  //     [transition route
169  //     groups][google.cloud.dialogflow.cx.v3.Page.transition_route_groups]
170  //     with intent specified.
171  // *   TransitionRoutes defined in flow with intent specified.
172  // *   TransitionRoutes defined in the
173  //     [transition route
174  //     groups][google.cloud.dialogflow.cx.v3.Flow.transition_route_groups]
175  //     with intent specified.
176  // *   TransitionRoutes defined in the page with only condition specified.
177  // *   TransitionRoutes defined in the
178  //     [transition route
179  //     groups][google.cloud.dialogflow.cx.v3.Page.transition_route_groups]
180  //     with only condition specified.
181  repeated TransitionRoute transition_routes = 9;
182
183  // Handlers associated with the page to handle events such as webhook errors,
184  // no match or no input.
185  repeated EventHandler event_handlers = 10;
186}
187
188// A form is a data model that groups related parameters that can be collected
189// from the user. The process in which the agent prompts the user and collects
190// parameter values from the user is called form filling. A form can be added to
191// a [page][google.cloud.dialogflow.cx.v3.Page]. When form filling is done, the
192// filled parameters will be written to the
193// [session][google.cloud.dialogflow.cx.v3.SessionInfo.parameters].
194message Form {
195  // Represents a form parameter.
196  message Parameter {
197    // Configuration for how the filling of a parameter should be handled.
198    message FillBehavior {
199      // Required. The fulfillment to provide the initial prompt that the agent
200      // can present to the user in order to fill the parameter.
201      Fulfillment initial_prompt_fulfillment = 3
202          [(google.api.field_behavior) = REQUIRED];
203
204      // The handlers for parameter-level events, used to provide reprompt for
205      // the parameter or transition to a different page/flow. The supported
206      // events are:
207      // *   `sys.no-match-<N>`, where N can be from 1 to 6
208      // *   `sys.no-match-default`
209      // *   `sys.no-input-<N>`, where N can be from 1 to 6
210      // *   `sys.no-input-default`
211      // *   `sys.invalid-parameter`
212      //
213      // `initial_prompt_fulfillment` provides the first prompt for the
214      // parameter.
215      //
216      // If the user's response does not fill the parameter, a
217      // no-match/no-input event will be triggered, and the fulfillment
218      // associated with the `sys.no-match-1`/`sys.no-input-1` handler (if
219      // defined) will be called to provide a prompt. The
220      // `sys.no-match-2`/`sys.no-input-2` handler (if defined) will respond to
221      // the next no-match/no-input event, and so on.
222      //
223      // A `sys.no-match-default` or `sys.no-input-default` handler will be used
224      // to handle all following no-match/no-input events after all numbered
225      // no-match/no-input handlers for the parameter are consumed.
226      //
227      // A `sys.invalid-parameter` handler can be defined to handle the case
228      // where the parameter values have been `invalidated` by webhook. For
229      // example, if the user's response fill the parameter, however the
230      // parameter was invalidated by webhook, the fulfillment associated with
231      // the `sys.invalid-parameter` handler (if defined) will be called to
232      // provide a prompt.
233      //
234      // If the event handler for the corresponding event can't be found on the
235      // parameter, `initial_prompt_fulfillment` will be re-prompted.
236      repeated EventHandler reprompt_event_handlers = 5;
237    }
238
239    // Required. The human-readable name of the parameter, unique within the
240    // form.
241    string display_name = 1 [(google.api.field_behavior) = REQUIRED];
242
243    // Indicates whether the parameter is required. Optional parameters will not
244    // trigger prompts; however, they are filled if the user specifies them.
245    // Required parameters must be filled before form filling concludes.
246    bool required = 2;
247
248    // Required. The entity type of the parameter.
249    // Format: `projects/-/locations/-/agents/-/entityTypes/<System Entity Type
250    // ID>` for system entity types (for example,
251    // `projects/-/locations/-/agents/-/entityTypes/sys.date`), or
252    // `projects/<Project ID>/locations/<Location ID>/agents/<Agent
253    // ID>/entityTypes/<Entity Type ID>` for developer entity types.
254    string entity_type = 3 [
255      (google.api.field_behavior) = REQUIRED,
256      (google.api.resource_reference) = {
257        type: "dialogflow.googleapis.com/EntityType"
258      }
259    ];
260
261    // Indicates whether the parameter represents a list of values.
262    bool is_list = 4;
263
264    // Required. Defines fill behavior for the parameter.
265    FillBehavior fill_behavior = 7 [(google.api.field_behavior) = REQUIRED];
266
267    // The default value of an optional parameter. If the parameter is required,
268    // the default value will be ignored.
269    google.protobuf.Value default_value = 9;
270
271    // Indicates whether the parameter content should be redacted in log.  If
272    // redaction is enabled, the parameter content will be replaced by parameter
273    // name during logging.
274    // Note: the parameter content is subject to redaction if either parameter
275    // level redaction or [entity type level
276    // redaction][google.cloud.dialogflow.cx.v3.EntityType.redact] is enabled.
277    bool redact = 11;
278  }
279
280  // Parameters to collect from the user.
281  repeated Parameter parameters = 1;
282}
283
284// An event handler specifies an
285// [event][google.cloud.dialogflow.cx.v3.EventHandler.event] that can be handled
286// during a session. When the specified event happens, the following actions are
287// taken in order:
288//
289// *   If there is a
290// [`trigger_fulfillment`][google.cloud.dialogflow.cx.v3.EventHandler.trigger_fulfillment]
291// associated with the event, it will be called.
292// *   If there is a
293// [`target_page`][google.cloud.dialogflow.cx.v3.EventHandler.target_page]
294// associated with the event, the session will transition into the specified
295// page.
296// *   If there is a
297// [`target_flow`][google.cloud.dialogflow.cx.v3.EventHandler.target_flow]
298// associated with the event, the session will transition into the specified
299// flow.
300message EventHandler {
301  // Output only. The unique identifier of this event handler.
302  string name = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
303
304  // Required. The name of the event to handle.
305  string event = 4 [(google.api.field_behavior) = REQUIRED];
306
307  // The fulfillment to call when the event occurs.
308  // Handling webhook errors with a fulfillment enabled with webhook could
309  // cause infinite loop. It is invalid to specify such fulfillment for a
310  // handler handling webhooks.
311  Fulfillment trigger_fulfillment = 5;
312
313  // The target to transition to, either a page in the same host flow (the flow
314  // that owns this
315  // [TransitionRoute][google.cloud.dialogflow.cx.v3.TransitionRoute]), or
316  // another flow in the same agent.
317  oneof target {
318    // The target page to transition to.
319    // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
320    // ID>/flows/<Flow ID>/pages/<Page ID>`.
321    string target_page = 2 [(google.api.resource_reference) = {
322      type: "dialogflow.googleapis.com/Page"
323    }];
324
325    // The target flow to transition to.
326    // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
327    // ID>/flows/<Flow ID>`.
328    string target_flow = 3 [(google.api.resource_reference) = {
329      type: "dialogflow.googleapis.com/Flow"
330    }];
331  }
332}
333
334// A transition route specifies a [intent][google.cloud.dialogflow.cx.v3.Intent]
335// that can be matched and/or a data condition that can be evaluated during a
336// session. When a specified transition is matched, the following actions are
337// taken in order:
338//
339// *   If there is a
340// [`trigger_fulfillment`][google.cloud.dialogflow.cx.v3.TransitionRoute.trigger_fulfillment]
341// associated with the transition, it will be called.
342// *   If there is a
343// [`target_page`][google.cloud.dialogflow.cx.v3.TransitionRoute.target_page]
344// associated with the transition, the session will transition into the
345// specified page.
346// *   If there is a
347// [`target_flow`][google.cloud.dialogflow.cx.v3.TransitionRoute.target_flow]
348// associated with the transition, the session will transition into the
349// specified flow.
350message TransitionRoute {
351  // Output only. The unique identifier of this transition route.
352  string name = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
353
354  // The unique identifier of an [Intent][google.cloud.dialogflow.cx.v3.Intent].
355  // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
356  // ID>/intents/<Intent ID>`.
357  // Indicates that the transition can only happen when the given intent is
358  // matched.
359  // At least one of `intent` or `condition` must be specified. When both
360  // `intent` and `condition` are specified, the transition can only happen
361  // when both are fulfilled.
362  string intent = 1 [(google.api.resource_reference) = {
363    type: "dialogflow.googleapis.com/Intent"
364  }];
365
366  // The condition to evaluate against [form
367  // parameters][google.cloud.dialogflow.cx.v3.Form.parameters] or [session
368  // parameters][google.cloud.dialogflow.cx.v3.SessionInfo.parameters].
369  //
370  // See the [conditions
371  // reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
372  // At least one of `intent` or `condition` must be specified. When both
373  // `intent` and `condition` are specified, the transition can only happen
374  // when both are fulfilled.
375  string condition = 2;
376
377  // The fulfillment to call when the condition is satisfied. At least one of
378  // `trigger_fulfillment` and `target` must be specified. When both are
379  // defined, `trigger_fulfillment` is executed first.
380  Fulfillment trigger_fulfillment = 3;
381
382  // The target to transition to, either a page in the same host flow (the flow
383  // that owns this
384  // [TransitionRoute][google.cloud.dialogflow.cx.v3.TransitionRoute]), or
385  // another flow in the same agent.
386  oneof target {
387    // The target page to transition to.
388    // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
389    // ID>/flows/<Flow ID>/pages/<Page ID>`.
390    string target_page = 4 [(google.api.resource_reference) = {
391      type: "dialogflow.googleapis.com/Page"
392    }];
393
394    // The target flow to transition to.
395    // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
396    // ID>/flows/<Flow ID>`.
397    string target_flow = 5 [(google.api.resource_reference) = {
398      type: "dialogflow.googleapis.com/Flow"
399    }];
400  }
401}
402
403// The request message for
404// [Pages.ListPages][google.cloud.dialogflow.cx.v3.Pages.ListPages].
405message ListPagesRequest {
406  // Required. The flow to list all pages for.
407  // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
408  // ID>/flows/<Flow ID>`.
409  string parent = 1 [
410    (google.api.field_behavior) = REQUIRED,
411    (google.api.resource_reference) = {
412      child_type: "dialogflow.googleapis.com/Page"
413    }
414  ];
415
416  // The language to list pages for. The following fields are language
417  // dependent:
418  //
419  // *  `Page.entry_fulfillment.messages`
420  // *  `Page.entry_fulfillment.conditional_cases`
421  // *  `Page.event_handlers.trigger_fulfillment.messages`
422  // *  `Page.event_handlers.trigger_fulfillment.conditional_cases`
423  // *  `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages`
424  // *
425  // `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases`
426  // *  `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages`
427  // *
428  // `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases`
429  // *  `Page.transition_routes.trigger_fulfillment.messages`
430  // *  `Page.transition_routes.trigger_fulfillment.conditional_cases`
431  //
432  // If not specified, the agent's default language is used.
433  // [Many
434  // languages](https://cloud.google.com/dialogflow/cx/docs/reference/language)
435  // are supported.
436  // Note: languages must be enabled in the agent before they can be used.
437  string language_code = 2;
438
439  // The maximum number of items to return in a single page. By default 100 and
440  // at most 1000.
441  int32 page_size = 3;
442
443  // The next_page_token value returned from a previous list request.
444  string page_token = 4;
445}
446
447// The response message for
448// [Pages.ListPages][google.cloud.dialogflow.cx.v3.Pages.ListPages].
449message ListPagesResponse {
450  // The list of pages. There will be a maximum number of items returned based
451  // on the page_size field in the request.
452  repeated Page pages = 1;
453
454  // Token to retrieve the next page of results, or empty if there are no more
455  // results in the list.
456  string next_page_token = 2;
457}
458
459// The request message for
460// [Pages.GetPage][google.cloud.dialogflow.cx.v3.Pages.GetPage].
461message GetPageRequest {
462  // Required. The name of the page.
463  // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
464  // ID>/flows/<Flow ID>/pages/<Page ID>`.
465  string name = 1 [
466    (google.api.field_behavior) = REQUIRED,
467    (google.api.resource_reference) = { type: "dialogflow.googleapis.com/Page" }
468  ];
469
470  // The language to retrieve the page for. The following fields are language
471  // dependent:
472  //
473  // *  `Page.entry_fulfillment.messages`
474  // *  `Page.entry_fulfillment.conditional_cases`
475  // *  `Page.event_handlers.trigger_fulfillment.messages`
476  // *  `Page.event_handlers.trigger_fulfillment.conditional_cases`
477  // *  `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages`
478  // *
479  // `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases`
480  // *  `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages`
481  // *
482  // `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases`
483  // *  `Page.transition_routes.trigger_fulfillment.messages`
484  // *  `Page.transition_routes.trigger_fulfillment.conditional_cases`
485  //
486  // If not specified, the agent's default language is used.
487  // [Many
488  // languages](https://cloud.google.com/dialogflow/cx/docs/reference/language)
489  // are supported.
490  // Note: languages must be enabled in the agent before they can be used.
491  string language_code = 2;
492}
493
494// The request message for
495// [Pages.CreatePage][google.cloud.dialogflow.cx.v3.Pages.CreatePage].
496message CreatePageRequest {
497  // Required. The flow to create a page for.
498  // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
499  // ID>/flows/<Flow ID>`.
500  string parent = 1 [
501    (google.api.field_behavior) = REQUIRED,
502    (google.api.resource_reference) = {
503      child_type: "dialogflow.googleapis.com/Page"
504    }
505  ];
506
507  // Required. The page to create.
508  Page page = 2 [(google.api.field_behavior) = REQUIRED];
509
510  // The language of the following fields in `page`:
511  //
512  // *  `Page.entry_fulfillment.messages`
513  // *  `Page.entry_fulfillment.conditional_cases`
514  // *  `Page.event_handlers.trigger_fulfillment.messages`
515  // *  `Page.event_handlers.trigger_fulfillment.conditional_cases`
516  // *  `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages`
517  // *
518  // `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases`
519  // *  `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages`
520  // *
521  // `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases`
522  // *  `Page.transition_routes.trigger_fulfillment.messages`
523  // *  `Page.transition_routes.trigger_fulfillment.conditional_cases`
524  //
525  // If not specified, the agent's default language is used.
526  // [Many
527  // languages](https://cloud.google.com/dialogflow/cx/docs/reference/language)
528  // are supported.
529  // Note: languages must be enabled in the agent before they can be used.
530  string language_code = 3;
531}
532
533// The request message for
534// [Pages.UpdatePage][google.cloud.dialogflow.cx.v3.Pages.UpdatePage].
535message UpdatePageRequest {
536  // Required. The page to update.
537  Page page = 1 [(google.api.field_behavior) = REQUIRED];
538
539  // The language of the following fields in `page`:
540  //
541  // *  `Page.entry_fulfillment.messages`
542  // *  `Page.entry_fulfillment.conditional_cases`
543  // *  `Page.event_handlers.trigger_fulfillment.messages`
544  // *  `Page.event_handlers.trigger_fulfillment.conditional_cases`
545  // *  `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages`
546  // *
547  // `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases`
548  // *  `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages`
549  // *
550  // `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases`
551  // *  `Page.transition_routes.trigger_fulfillment.messages`
552  // *  `Page.transition_routes.trigger_fulfillment.conditional_cases`
553  //
554  // If not specified, the agent's default language is used.
555  // [Many
556  // languages](https://cloud.google.com/dialogflow/cx/docs/reference/language)
557  // are supported.
558  // Note: languages must be enabled in the agent before they can be used.
559  string language_code = 2;
560
561  // The mask to control which fields get updated. If the mask is not present,
562  // all fields will be updated.
563  google.protobuf.FieldMask update_mask = 3;
564}
565
566// The request message for
567// [Pages.DeletePage][google.cloud.dialogflow.cx.v3.Pages.DeletePage].
568message DeletePageRequest {
569  // Required. The name of the page to delete.
570  // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
571  // ID>/Flows/<flow ID>/pages/<Page ID>`.
572  string name = 1 [
573    (google.api.field_behavior) = REQUIRED,
574    (google.api.resource_reference) = { type: "dialogflow.googleapis.com/Page" }
575  ];
576
577  // This field has no effect for pages with no incoming transitions.
578  // For pages with incoming transitions:
579  //
580  // *  If `force` is set to false, an error will be returned with message
581  //    indicating the incoming transitions.
582  // *  If `force` is set to true, Dialogflow will remove the page, as well as
583  //    any transitions to the page (i.e. [Target
584  //    page][EventHandler.target_page] in event handlers or [Target
585  //    page][TransitionRoute.target_page] in transition routes that point to
586  //    this page will be cleared).
587  bool force = 2;
588}
589