xref: /aosp_15_r20/external/googleapis/google/chat/v1/widgets.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC
2*d5c09012SAndroid Build Coastguard Worker//
3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*d5c09012SAndroid Build Coastguard Worker//
7*d5c09012SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*d5c09012SAndroid Build Coastguard Worker//
9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*d5c09012SAndroid Build Coastguard Worker// limitations under the License.
14*d5c09012SAndroid Build Coastguard Worker
15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3";
16*d5c09012SAndroid Build Coastguard Worker
17*d5c09012SAndroid Build Coastguard Workerpackage google.chat.v1;
18*d5c09012SAndroid Build Coastguard Worker
19*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Apps.Chat.V1";
20*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/chat/apiv1/chatpb;chatpb";
21*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
22*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "WidgetsProto";
23*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.chat.v1";
24*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Apps\\Chat\\V1";
25*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Apps::Chat::V1";
26*d5c09012SAndroid Build Coastguard Worker
27*d5c09012SAndroid Build Coastguard Worker// A widget is a UI element that presents text and images.
28*d5c09012SAndroid Build Coastguard Workermessage WidgetMarkup {
29*d5c09012SAndroid Build Coastguard Worker  // A paragraph of text. Formatted text supported. For more information
30*d5c09012SAndroid Build Coastguard Worker  // about formatting text, see
31*d5c09012SAndroid Build Coastguard Worker  // [Formatting text in Google Chat
32*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/chat/format-messages#card-formatting)
33*d5c09012SAndroid Build Coastguard Worker  // and
34*d5c09012SAndroid Build Coastguard Worker  // [Formatting
35*d5c09012SAndroid Build Coastguard Worker  // text in Google Workspace
36*d5c09012SAndroid Build Coastguard Worker  // Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).
37*d5c09012SAndroid Build Coastguard Worker  message TextParagraph {
38*d5c09012SAndroid Build Coastguard Worker    string text = 1;
39*d5c09012SAndroid Build Coastguard Worker  }
40*d5c09012SAndroid Build Coastguard Worker
41*d5c09012SAndroid Build Coastguard Worker  // The set of supported icons.
42*d5c09012SAndroid Build Coastguard Worker  enum Icon {
43*d5c09012SAndroid Build Coastguard Worker    ICON_UNSPECIFIED = 0;
44*d5c09012SAndroid Build Coastguard Worker
45*d5c09012SAndroid Build Coastguard Worker    AIRPLANE = 1;
46*d5c09012SAndroid Build Coastguard Worker
47*d5c09012SAndroid Build Coastguard Worker    BOOKMARK = 26;
48*d5c09012SAndroid Build Coastguard Worker
49*d5c09012SAndroid Build Coastguard Worker    BUS = 25;
50*d5c09012SAndroid Build Coastguard Worker
51*d5c09012SAndroid Build Coastguard Worker    CAR = 9;
52*d5c09012SAndroid Build Coastguard Worker
53*d5c09012SAndroid Build Coastguard Worker    CLOCK = 2;
54*d5c09012SAndroid Build Coastguard Worker
55*d5c09012SAndroid Build Coastguard Worker    CONFIRMATION_NUMBER_ICON = 12;
56*d5c09012SAndroid Build Coastguard Worker
57*d5c09012SAndroid Build Coastguard Worker    DOLLAR = 14;
58*d5c09012SAndroid Build Coastguard Worker
59*d5c09012SAndroid Build Coastguard Worker    DESCRIPTION = 27;
60*d5c09012SAndroid Build Coastguard Worker
61*d5c09012SAndroid Build Coastguard Worker    EMAIL = 10;
62*d5c09012SAndroid Build Coastguard Worker
63*d5c09012SAndroid Build Coastguard Worker    EVENT_PERFORMER = 20;
64*d5c09012SAndroid Build Coastguard Worker
65*d5c09012SAndroid Build Coastguard Worker    EVENT_SEAT = 21;
66*d5c09012SAndroid Build Coastguard Worker
67*d5c09012SAndroid Build Coastguard Worker    FLIGHT_ARRIVAL = 16;
68*d5c09012SAndroid Build Coastguard Worker
69*d5c09012SAndroid Build Coastguard Worker    FLIGHT_DEPARTURE = 15;
70*d5c09012SAndroid Build Coastguard Worker
71*d5c09012SAndroid Build Coastguard Worker    HOTEL = 6;
72*d5c09012SAndroid Build Coastguard Worker
73*d5c09012SAndroid Build Coastguard Worker    HOTEL_ROOM_TYPE = 17;
74*d5c09012SAndroid Build Coastguard Worker
75*d5c09012SAndroid Build Coastguard Worker    INVITE = 19;
76*d5c09012SAndroid Build Coastguard Worker
77*d5c09012SAndroid Build Coastguard Worker    MAP_PIN = 3;
78*d5c09012SAndroid Build Coastguard Worker
79*d5c09012SAndroid Build Coastguard Worker    MEMBERSHIP = 24;
80*d5c09012SAndroid Build Coastguard Worker
81*d5c09012SAndroid Build Coastguard Worker    MULTIPLE_PEOPLE = 18;
82*d5c09012SAndroid Build Coastguard Worker
83*d5c09012SAndroid Build Coastguard Worker    OFFER = 30;
84*d5c09012SAndroid Build Coastguard Worker
85*d5c09012SAndroid Build Coastguard Worker    PERSON = 11;
86*d5c09012SAndroid Build Coastguard Worker
87*d5c09012SAndroid Build Coastguard Worker    PHONE = 13;
88*d5c09012SAndroid Build Coastguard Worker
89*d5c09012SAndroid Build Coastguard Worker    RESTAURANT_ICON = 7;
90*d5c09012SAndroid Build Coastguard Worker
91*d5c09012SAndroid Build Coastguard Worker    SHOPPING_CART = 8;
92*d5c09012SAndroid Build Coastguard Worker
93*d5c09012SAndroid Build Coastguard Worker    STAR = 5;
94*d5c09012SAndroid Build Coastguard Worker
95*d5c09012SAndroid Build Coastguard Worker    STORE = 22;
96*d5c09012SAndroid Build Coastguard Worker
97*d5c09012SAndroid Build Coastguard Worker    TICKET = 4;
98*d5c09012SAndroid Build Coastguard Worker
99*d5c09012SAndroid Build Coastguard Worker    TRAIN = 23;
100*d5c09012SAndroid Build Coastguard Worker
101*d5c09012SAndroid Build Coastguard Worker    VIDEO_CAMERA = 28;
102*d5c09012SAndroid Build Coastguard Worker
103*d5c09012SAndroid Build Coastguard Worker    VIDEO_PLAY = 29;
104*d5c09012SAndroid Build Coastguard Worker  }
105*d5c09012SAndroid Build Coastguard Worker
106*d5c09012SAndroid Build Coastguard Worker  // A button. Can be a text button or an image button.
107*d5c09012SAndroid Build Coastguard Worker  message Button {
108*d5c09012SAndroid Build Coastguard Worker    oneof type {
109*d5c09012SAndroid Build Coastguard Worker      // A button with text and `onclick` action.
110*d5c09012SAndroid Build Coastguard Worker      TextButton text_button = 1;
111*d5c09012SAndroid Build Coastguard Worker
112*d5c09012SAndroid Build Coastguard Worker      // A button with image and `onclick` action.
113*d5c09012SAndroid Build Coastguard Worker      ImageButton image_button = 2;
114*d5c09012SAndroid Build Coastguard Worker    }
115*d5c09012SAndroid Build Coastguard Worker  }
116*d5c09012SAndroid Build Coastguard Worker
117*d5c09012SAndroid Build Coastguard Worker  // A button with text and `onclick` action.
118*d5c09012SAndroid Build Coastguard Worker  message TextButton {
119*d5c09012SAndroid Build Coastguard Worker    // The text of the button.
120*d5c09012SAndroid Build Coastguard Worker    string text = 1;
121*d5c09012SAndroid Build Coastguard Worker
122*d5c09012SAndroid Build Coastguard Worker    // The `onclick` action of the button.
123*d5c09012SAndroid Build Coastguard Worker    OnClick on_click = 2;
124*d5c09012SAndroid Build Coastguard Worker  }
125*d5c09012SAndroid Build Coastguard Worker
126*d5c09012SAndroid Build Coastguard Worker  // A UI element contains a key (label) and a value (content). This
127*d5c09012SAndroid Build Coastguard Worker  // element can also contain some actions such as `onclick` button.
128*d5c09012SAndroid Build Coastguard Worker  message KeyValue {
129*d5c09012SAndroid Build Coastguard Worker    // At least one of icons, `top_label` and `bottom_label` must be defined.
130*d5c09012SAndroid Build Coastguard Worker    oneof icons {
131*d5c09012SAndroid Build Coastguard Worker      // An enum value that's replaced by the Chat API with the
132*d5c09012SAndroid Build Coastguard Worker      // corresponding icon image.
133*d5c09012SAndroid Build Coastguard Worker      Icon icon = 1;
134*d5c09012SAndroid Build Coastguard Worker
135*d5c09012SAndroid Build Coastguard Worker      // The icon specified by a URL.
136*d5c09012SAndroid Build Coastguard Worker      string icon_url = 2;
137*d5c09012SAndroid Build Coastguard Worker    }
138*d5c09012SAndroid Build Coastguard Worker
139*d5c09012SAndroid Build Coastguard Worker    // The text of the top label. Formatted text supported. For more information
140*d5c09012SAndroid Build Coastguard Worker    // about formatting text, see
141*d5c09012SAndroid Build Coastguard Worker    // [Formatting text in Google Chat
142*d5c09012SAndroid Build Coastguard Worker    // apps](https://developers.google.com/workspace/chat/format-messages#card-formatting)
143*d5c09012SAndroid Build Coastguard Worker    // and
144*d5c09012SAndroid Build Coastguard Worker    // [Formatting
145*d5c09012SAndroid Build Coastguard Worker    // text in Google Workspace
146*d5c09012SAndroid Build Coastguard Worker    // Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).
147*d5c09012SAndroid Build Coastguard Worker    string top_label = 3;
148*d5c09012SAndroid Build Coastguard Worker
149*d5c09012SAndroid Build Coastguard Worker    // The text of the content. Formatted text supported and always required.
150*d5c09012SAndroid Build Coastguard Worker    // For more information
151*d5c09012SAndroid Build Coastguard Worker    // about formatting text, see
152*d5c09012SAndroid Build Coastguard Worker    // [Formatting text in Google Chat
153*d5c09012SAndroid Build Coastguard Worker    // apps](https://developers.google.com/workspace/chat/format-messages#card-formatting)
154*d5c09012SAndroid Build Coastguard Worker    // and
155*d5c09012SAndroid Build Coastguard Worker    // [Formatting
156*d5c09012SAndroid Build Coastguard Worker    // text in Google Workspace
157*d5c09012SAndroid Build Coastguard Worker    // Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).
158*d5c09012SAndroid Build Coastguard Worker    string content = 4;
159*d5c09012SAndroid Build Coastguard Worker
160*d5c09012SAndroid Build Coastguard Worker    // If the content should be multiline.
161*d5c09012SAndroid Build Coastguard Worker    bool content_multiline = 9;
162*d5c09012SAndroid Build Coastguard Worker
163*d5c09012SAndroid Build Coastguard Worker    // The text of the bottom label. Formatted text supported. For more
164*d5c09012SAndroid Build Coastguard Worker    // information about formatting text, see [Formatting text in Google Chat
165*d5c09012SAndroid Build Coastguard Worker    // apps](https://developers.google.com/workspace/chat/format-messages#card-formatting)
166*d5c09012SAndroid Build Coastguard Worker    // and
167*d5c09012SAndroid Build Coastguard Worker    // [Formatting
168*d5c09012SAndroid Build Coastguard Worker    // text in Google Workspace
169*d5c09012SAndroid Build Coastguard Worker    // Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).
170*d5c09012SAndroid Build Coastguard Worker    string bottom_label = 5;
171*d5c09012SAndroid Build Coastguard Worker
172*d5c09012SAndroid Build Coastguard Worker    // The `onclick` action. Only the top label, bottom label, and content
173*d5c09012SAndroid Build Coastguard Worker    // region are clickable.
174*d5c09012SAndroid Build Coastguard Worker    OnClick on_click = 6;
175*d5c09012SAndroid Build Coastguard Worker
176*d5c09012SAndroid Build Coastguard Worker    // A control widget. You can set either `button` or `switch_widget`,
177*d5c09012SAndroid Build Coastguard Worker    // but not both.
178*d5c09012SAndroid Build Coastguard Worker    oneof control {
179*d5c09012SAndroid Build Coastguard Worker      // A button that can be clicked to trigger an action.
180*d5c09012SAndroid Build Coastguard Worker      Button button = 7;
181*d5c09012SAndroid Build Coastguard Worker    }
182*d5c09012SAndroid Build Coastguard Worker  }
183*d5c09012SAndroid Build Coastguard Worker
184*d5c09012SAndroid Build Coastguard Worker  // An image that's specified by a URL and can have an `onclick` action.
185*d5c09012SAndroid Build Coastguard Worker  message Image {
186*d5c09012SAndroid Build Coastguard Worker    // The URL of the image.
187*d5c09012SAndroid Build Coastguard Worker    string image_url = 1;
188*d5c09012SAndroid Build Coastguard Worker
189*d5c09012SAndroid Build Coastguard Worker    // The `onclick` action.
190*d5c09012SAndroid Build Coastguard Worker    OnClick on_click = 2;
191*d5c09012SAndroid Build Coastguard Worker
192*d5c09012SAndroid Build Coastguard Worker    // The aspect ratio of this image (width and height). This field lets you
193*d5c09012SAndroid Build Coastguard Worker    // reserve the right height for the image while waiting for it to load.
194*d5c09012SAndroid Build Coastguard Worker    // It's not meant to override the built-in aspect ratio of the image.
195*d5c09012SAndroid Build Coastguard Worker    // If unset, the server fills it by prefetching the image.
196*d5c09012SAndroid Build Coastguard Worker    double aspect_ratio = 3;
197*d5c09012SAndroid Build Coastguard Worker  }
198*d5c09012SAndroid Build Coastguard Worker
199*d5c09012SAndroid Build Coastguard Worker  // An image button with an `onclick` action.
200*d5c09012SAndroid Build Coastguard Worker  message ImageButton {
201*d5c09012SAndroid Build Coastguard Worker    // The icon can be specified by an `Icon` `enum` or a URL.
202*d5c09012SAndroid Build Coastguard Worker    oneof icons {
203*d5c09012SAndroid Build Coastguard Worker      // The icon specified by an `enum` that indices to an icon provided by
204*d5c09012SAndroid Build Coastguard Worker      // Chat API.
205*d5c09012SAndroid Build Coastguard Worker      Icon icon = 1;
206*d5c09012SAndroid Build Coastguard Worker
207*d5c09012SAndroid Build Coastguard Worker      // The icon specified by a URL.
208*d5c09012SAndroid Build Coastguard Worker      string icon_url = 3;
209*d5c09012SAndroid Build Coastguard Worker    }
210*d5c09012SAndroid Build Coastguard Worker
211*d5c09012SAndroid Build Coastguard Worker    // The `onclick` action.
212*d5c09012SAndroid Build Coastguard Worker    OnClick on_click = 2;
213*d5c09012SAndroid Build Coastguard Worker
214*d5c09012SAndroid Build Coastguard Worker    // The name of this `image_button` that's used for accessibility.
215*d5c09012SAndroid Build Coastguard Worker    // Default value is provided if this name isn't specified.
216*d5c09012SAndroid Build Coastguard Worker    string name = 4;
217*d5c09012SAndroid Build Coastguard Worker  }
218*d5c09012SAndroid Build Coastguard Worker
219*d5c09012SAndroid Build Coastguard Worker  // An `onclick` action (for example, open a link).
220*d5c09012SAndroid Build Coastguard Worker  message OnClick {
221*d5c09012SAndroid Build Coastguard Worker    oneof data {
222*d5c09012SAndroid Build Coastguard Worker      // A form action is triggered by this `onclick` action if specified.
223*d5c09012SAndroid Build Coastguard Worker      FormAction action = 1;
224*d5c09012SAndroid Build Coastguard Worker
225*d5c09012SAndroid Build Coastguard Worker      // This `onclick` action triggers an open link action if specified.
226*d5c09012SAndroid Build Coastguard Worker      OpenLink open_link = 2;
227*d5c09012SAndroid Build Coastguard Worker    }
228*d5c09012SAndroid Build Coastguard Worker  }
229*d5c09012SAndroid Build Coastguard Worker
230*d5c09012SAndroid Build Coastguard Worker  // A link that opens a new window.
231*d5c09012SAndroid Build Coastguard Worker  message OpenLink {
232*d5c09012SAndroid Build Coastguard Worker    // The URL to open.
233*d5c09012SAndroid Build Coastguard Worker    string url = 1;
234*d5c09012SAndroid Build Coastguard Worker  }
235*d5c09012SAndroid Build Coastguard Worker
236*d5c09012SAndroid Build Coastguard Worker  // A form action describes the behavior when the form is submitted.
237*d5c09012SAndroid Build Coastguard Worker  // For example, you can invoke Apps Script to handle the form.
238*d5c09012SAndroid Build Coastguard Worker  message FormAction {
239*d5c09012SAndroid Build Coastguard Worker    // List of string parameters to supply when the action method is invoked.
240*d5c09012SAndroid Build Coastguard Worker    // For example, consider three snooze buttons: snooze now, snooze one day,
241*d5c09012SAndroid Build Coastguard Worker    // snooze next week. You might use `action method = snooze()`, passing the
242*d5c09012SAndroid Build Coastguard Worker    // snooze type and snooze time in the list of string parameters.
243*d5c09012SAndroid Build Coastguard Worker    message ActionParameter {
244*d5c09012SAndroid Build Coastguard Worker      // The name of the parameter for the action script.
245*d5c09012SAndroid Build Coastguard Worker      string key = 1;
246*d5c09012SAndroid Build Coastguard Worker
247*d5c09012SAndroid Build Coastguard Worker      // The value of the parameter.
248*d5c09012SAndroid Build Coastguard Worker      string value = 2;
249*d5c09012SAndroid Build Coastguard Worker    }
250*d5c09012SAndroid Build Coastguard Worker
251*d5c09012SAndroid Build Coastguard Worker    // The method name is used to identify which part of the form triggered the
252*d5c09012SAndroid Build Coastguard Worker    // form submission. This information is echoed back to the Chat app as part
253*d5c09012SAndroid Build Coastguard Worker    // of the card click event. You can use the same method name for several
254*d5c09012SAndroid Build Coastguard Worker    // elements that trigger a common behavior.
255*d5c09012SAndroid Build Coastguard Worker    string action_method_name = 1;
256*d5c09012SAndroid Build Coastguard Worker
257*d5c09012SAndroid Build Coastguard Worker    // List of action parameters.
258*d5c09012SAndroid Build Coastguard Worker    repeated ActionParameter parameters = 2;
259*d5c09012SAndroid Build Coastguard Worker  }
260*d5c09012SAndroid Build Coastguard Worker
261*d5c09012SAndroid Build Coastguard Worker  // A `WidgetMarkup` can only have one of the following items. You can use
262*d5c09012SAndroid Build Coastguard Worker  // multiple `WidgetMarkup` fields to display more items.
263*d5c09012SAndroid Build Coastguard Worker  oneof data {
264*d5c09012SAndroid Build Coastguard Worker    // Display a text paragraph in this widget.
265*d5c09012SAndroid Build Coastguard Worker    TextParagraph text_paragraph = 1;
266*d5c09012SAndroid Build Coastguard Worker
267*d5c09012SAndroid Build Coastguard Worker    // Display an image in this widget.
268*d5c09012SAndroid Build Coastguard Worker    Image image = 2;
269*d5c09012SAndroid Build Coastguard Worker
270*d5c09012SAndroid Build Coastguard Worker    // Display a key value item in this widget.
271*d5c09012SAndroid Build Coastguard Worker    KeyValue key_value = 3;
272*d5c09012SAndroid Build Coastguard Worker  }
273*d5c09012SAndroid Build Coastguard Worker
274*d5c09012SAndroid Build Coastguard Worker  // A list of buttons. Buttons is also `oneof data` and only one of these
275*d5c09012SAndroid Build Coastguard Worker  // fields should be set.
276*d5c09012SAndroid Build Coastguard Worker  repeated Button buttons = 6;
277*d5c09012SAndroid Build Coastguard Worker}
278