xref: /aosp_15_r20/external/googleapis/google/apps/card/v1/card.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.apps.card.v1;
18*d5c09012SAndroid Build Coastguard Worker
19*d5c09012SAndroid Build Coastguard Workerimport "google/type/color.proto";
20*d5c09012SAndroid Build Coastguard Worker
21*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Apps.Card.V1";
22*d5c09012SAndroid Build Coastguard Workeroption go_package = "google.golang.org/genproto/googleapis/apps/card/v1;card";
23*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
24*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "CardProto";
25*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.apps.card.v1";
26*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Apps\\Card\\V1";
27*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Apps::Card::V1";
28*d5c09012SAndroid Build Coastguard Worker
29*d5c09012SAndroid Build Coastguard Worker// A card interface displayed in a Google Chat message or Google Workspace
30*d5c09012SAndroid Build Coastguard Worker// Add-on.
31*d5c09012SAndroid Build Coastguard Worker//
32*d5c09012SAndroid Build Coastguard Worker// Cards support a defined layout, interactive UI elements like buttons, and
33*d5c09012SAndroid Build Coastguard Worker// rich media like images. Use cards to present detailed information,
34*d5c09012SAndroid Build Coastguard Worker// gather information from users, and guide users to take a next step.
35*d5c09012SAndroid Build Coastguard Worker//
36*d5c09012SAndroid Build Coastguard Worker// [Card builder](https://addons.gsuite.google.com/uikit/builder)
37*d5c09012SAndroid Build Coastguard Worker//
38*d5c09012SAndroid Build Coastguard Worker// To learn how
39*d5c09012SAndroid Build Coastguard Worker// to build cards, see the following documentation:
40*d5c09012SAndroid Build Coastguard Worker//
41*d5c09012SAndroid Build Coastguard Worker// * For Google Chat apps, see [Design the components of a card or
42*d5c09012SAndroid Build Coastguard Worker//   dialog](https://developers.google.com/workspace/chat/design-components-card-dialog).
43*d5c09012SAndroid Build Coastguard Worker// * For Google Workspace Add-ons, see [Card-based
44*d5c09012SAndroid Build Coastguard Worker// interfaces](https://developers.google.com/apps-script/add-ons/concepts/cards).
45*d5c09012SAndroid Build Coastguard Worker//
46*d5c09012SAndroid Build Coastguard Worker// **Example: Card message for a Google Chat app**
47*d5c09012SAndroid Build Coastguard Worker//
48*d5c09012SAndroid Build Coastguard Worker// ![Example contact
49*d5c09012SAndroid Build Coastguard Worker// card](https://developers.google.com/workspace/chat/images/card_api_reference.png)
50*d5c09012SAndroid Build Coastguard Worker//
51*d5c09012SAndroid Build Coastguard Worker// To create the sample card message in Google Chat, use the following JSON:
52*d5c09012SAndroid Build Coastguard Worker//
53*d5c09012SAndroid Build Coastguard Worker// ```
54*d5c09012SAndroid Build Coastguard Worker// {
55*d5c09012SAndroid Build Coastguard Worker//   "cardsV2": [
56*d5c09012SAndroid Build Coastguard Worker//     {
57*d5c09012SAndroid Build Coastguard Worker//       "cardId": "unique-card-id",
58*d5c09012SAndroid Build Coastguard Worker//       "card": {
59*d5c09012SAndroid Build Coastguard Worker//         "header": {
60*d5c09012SAndroid Build Coastguard Worker//            "title": "Sasha",
61*d5c09012SAndroid Build Coastguard Worker//            "subtitle": "Software Engineer",
62*d5c09012SAndroid Build Coastguard Worker//            "imageUrl":
63*d5c09012SAndroid Build Coastguard Worker//            "https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png",
64*d5c09012SAndroid Build Coastguard Worker//            "imageType": "CIRCLE",
65*d5c09012SAndroid Build Coastguard Worker//            "imageAltText": "Avatar for Sasha"
66*d5c09012SAndroid Build Coastguard Worker//          },
67*d5c09012SAndroid Build Coastguard Worker//          "sections": [
68*d5c09012SAndroid Build Coastguard Worker//            {
69*d5c09012SAndroid Build Coastguard Worker//              "header": "Contact Info",
70*d5c09012SAndroid Build Coastguard Worker//              "collapsible": true,
71*d5c09012SAndroid Build Coastguard Worker//              "uncollapsibleWidgetsCount": 1,
72*d5c09012SAndroid Build Coastguard Worker//              "widgets": [
73*d5c09012SAndroid Build Coastguard Worker//                {
74*d5c09012SAndroid Build Coastguard Worker//                  "decoratedText": {
75*d5c09012SAndroid Build Coastguard Worker//                    "startIcon": {
76*d5c09012SAndroid Build Coastguard Worker//                      "knownIcon": "EMAIL"
77*d5c09012SAndroid Build Coastguard Worker//                    },
78*d5c09012SAndroid Build Coastguard Worker//                    "text": "[email protected]"
79*d5c09012SAndroid Build Coastguard Worker//                  }
80*d5c09012SAndroid Build Coastguard Worker//                },
81*d5c09012SAndroid Build Coastguard Worker//                {
82*d5c09012SAndroid Build Coastguard Worker//                  "decoratedText": {
83*d5c09012SAndroid Build Coastguard Worker//                    "startIcon": {
84*d5c09012SAndroid Build Coastguard Worker//                      "knownIcon": "PERSON"
85*d5c09012SAndroid Build Coastguard Worker//                    },
86*d5c09012SAndroid Build Coastguard Worker//                    "text": "<font color=\"#80e27e\">Online</font>"
87*d5c09012SAndroid Build Coastguard Worker//                  }
88*d5c09012SAndroid Build Coastguard Worker//                },
89*d5c09012SAndroid Build Coastguard Worker//                {
90*d5c09012SAndroid Build Coastguard Worker//                  "decoratedText": {
91*d5c09012SAndroid Build Coastguard Worker//                    "startIcon": {
92*d5c09012SAndroid Build Coastguard Worker//                      "knownIcon": "PHONE"
93*d5c09012SAndroid Build Coastguard Worker//                    },
94*d5c09012SAndroid Build Coastguard Worker//                    "text": "+1 (555) 555-1234"
95*d5c09012SAndroid Build Coastguard Worker//                  }
96*d5c09012SAndroid Build Coastguard Worker//                },
97*d5c09012SAndroid Build Coastguard Worker//                {
98*d5c09012SAndroid Build Coastguard Worker//                  "buttonList": {
99*d5c09012SAndroid Build Coastguard Worker//                    "buttons": [
100*d5c09012SAndroid Build Coastguard Worker//                      {
101*d5c09012SAndroid Build Coastguard Worker//                        "text": "Share",
102*d5c09012SAndroid Build Coastguard Worker//                        "onClick": {
103*d5c09012SAndroid Build Coastguard Worker//                         "openLink": {
104*d5c09012SAndroid Build Coastguard Worker//                            "url": "https://example.com/share"
105*d5c09012SAndroid Build Coastguard Worker//                          }
106*d5c09012SAndroid Build Coastguard Worker//                        }
107*d5c09012SAndroid Build Coastguard Worker//                      },
108*d5c09012SAndroid Build Coastguard Worker//                      {
109*d5c09012SAndroid Build Coastguard Worker//                        "text": "Edit",
110*d5c09012SAndroid Build Coastguard Worker//                        "onClick": {
111*d5c09012SAndroid Build Coastguard Worker//                          "action": {
112*d5c09012SAndroid Build Coastguard Worker//                            "function": "goToView",
113*d5c09012SAndroid Build Coastguard Worker//                            "parameters": [
114*d5c09012SAndroid Build Coastguard Worker//                              {
115*d5c09012SAndroid Build Coastguard Worker//                                "key": "viewType",
116*d5c09012SAndroid Build Coastguard Worker//                                "value": "EDIT"
117*d5c09012SAndroid Build Coastguard Worker//                              }
118*d5c09012SAndroid Build Coastguard Worker//                            ]
119*d5c09012SAndroid Build Coastguard Worker//                          }
120*d5c09012SAndroid Build Coastguard Worker//                        }
121*d5c09012SAndroid Build Coastguard Worker//                      }
122*d5c09012SAndroid Build Coastguard Worker//                    ]
123*d5c09012SAndroid Build Coastguard Worker//                  }
124*d5c09012SAndroid Build Coastguard Worker//                }
125*d5c09012SAndroid Build Coastguard Worker//              ]
126*d5c09012SAndroid Build Coastguard Worker//            }
127*d5c09012SAndroid Build Coastguard Worker//          ]
128*d5c09012SAndroid Build Coastguard Worker//        }
129*d5c09012SAndroid Build Coastguard Worker//     }
130*d5c09012SAndroid Build Coastguard Worker//   ]
131*d5c09012SAndroid Build Coastguard Worker// }
132*d5c09012SAndroid Build Coastguard Worker// ```
133*d5c09012SAndroid Build Coastguard Workermessage Card {
134*d5c09012SAndroid Build Coastguard Worker  // Represents a card header. For an example in Google Chat apps, see [Add a
135*d5c09012SAndroid Build Coastguard Worker  // header](https://developers.google.com/workspace/chat/design-components-card-dialog#add_a_header).
136*d5c09012SAndroid Build Coastguard Worker  //
137*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
138*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
139*d5c09012SAndroid Build Coastguard Worker  message CardHeader {
140*d5c09012SAndroid Build Coastguard Worker    // Required. The title of the card header.
141*d5c09012SAndroid Build Coastguard Worker    // The header has a fixed height: if both a
142*d5c09012SAndroid Build Coastguard Worker    // title and subtitle are specified, each takes up one line. If only the
143*d5c09012SAndroid Build Coastguard Worker    // title is specified, it takes up both lines.
144*d5c09012SAndroid Build Coastguard Worker    string title = 1;
145*d5c09012SAndroid Build Coastguard Worker
146*d5c09012SAndroid Build Coastguard Worker    // The subtitle of the card header. If specified, appears on its own line
147*d5c09012SAndroid Build Coastguard Worker    // below the `title`.
148*d5c09012SAndroid Build Coastguard Worker    string subtitle = 2;
149*d5c09012SAndroid Build Coastguard Worker
150*d5c09012SAndroid Build Coastguard Worker    // The shape used to crop the image.
151*d5c09012SAndroid Build Coastguard Worker    //
152*d5c09012SAndroid Build Coastguard Worker    // [Google Workspace Add-ons and Chat
153*d5c09012SAndroid Build Coastguard Worker    // apps](https://developers.google.com/workspace/extend):
154*d5c09012SAndroid Build Coastguard Worker    Widget.ImageType image_type = 3;
155*d5c09012SAndroid Build Coastguard Worker
156*d5c09012SAndroid Build Coastguard Worker    // The HTTPS URL of the image in the card header.
157*d5c09012SAndroid Build Coastguard Worker    string image_url = 4;
158*d5c09012SAndroid Build Coastguard Worker
159*d5c09012SAndroid Build Coastguard Worker    // The alternative text of this image that's used for accessibility.
160*d5c09012SAndroid Build Coastguard Worker    string image_alt_text = 5;
161*d5c09012SAndroid Build Coastguard Worker  }
162*d5c09012SAndroid Build Coastguard Worker
163*d5c09012SAndroid Build Coastguard Worker  // A section contains a collection of widgets that are rendered
164*d5c09012SAndroid Build Coastguard Worker  // vertically in the order that they're specified.
165*d5c09012SAndroid Build Coastguard Worker  //
166*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
167*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
168*d5c09012SAndroid Build Coastguard Worker  message Section {
169*d5c09012SAndroid Build Coastguard Worker    // Text that appears at the top of a section.
170*d5c09012SAndroid Build Coastguard Worker    // Supports simple HTML formatted text. For more information
171*d5c09012SAndroid Build Coastguard Worker    // about formatting text, see
172*d5c09012SAndroid Build Coastguard Worker    // [Formatting text in Google Chat
173*d5c09012SAndroid Build Coastguard Worker    // apps](https://developers.google.com/workspace/chat/format-messages#card-formatting)
174*d5c09012SAndroid Build Coastguard Worker    // and
175*d5c09012SAndroid Build Coastguard Worker    // [Formatting
176*d5c09012SAndroid Build Coastguard Worker    // text in Google Workspace
177*d5c09012SAndroid Build Coastguard Worker    // Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).
178*d5c09012SAndroid Build Coastguard Worker    string header = 1;
179*d5c09012SAndroid Build Coastguard Worker
180*d5c09012SAndroid Build Coastguard Worker    // All the widgets in the section.
181*d5c09012SAndroid Build Coastguard Worker    // Must contain at least one widget.
182*d5c09012SAndroid Build Coastguard Worker    repeated Widget widgets = 2;
183*d5c09012SAndroid Build Coastguard Worker
184*d5c09012SAndroid Build Coastguard Worker    // Indicates whether this section is collapsible.
185*d5c09012SAndroid Build Coastguard Worker    //
186*d5c09012SAndroid Build Coastguard Worker    // Collapsible sections hide some or all widgets, but users can expand the
187*d5c09012SAndroid Build Coastguard Worker    // section to reveal the hidden widgets by clicking **Show more**. Users
188*d5c09012SAndroid Build Coastguard Worker    // can hide the widgets again by clicking **Show less**.
189*d5c09012SAndroid Build Coastguard Worker    //
190*d5c09012SAndroid Build Coastguard Worker    // To determine which widgets are hidden, specify
191*d5c09012SAndroid Build Coastguard Worker    // `uncollapsibleWidgetsCount`.
192*d5c09012SAndroid Build Coastguard Worker    bool collapsible = 5;
193*d5c09012SAndroid Build Coastguard Worker
194*d5c09012SAndroid Build Coastguard Worker    // The number of uncollapsible widgets which remain visible even when a
195*d5c09012SAndroid Build Coastguard Worker    // section is collapsed.
196*d5c09012SAndroid Build Coastguard Worker    //
197*d5c09012SAndroid Build Coastguard Worker    // For example, when a section
198*d5c09012SAndroid Build Coastguard Worker    // contains five widgets and the `uncollapsibleWidgetsCount` is set to `2`,
199*d5c09012SAndroid Build Coastguard Worker    // the first two widgets are always shown and the last three are collapsed
200*d5c09012SAndroid Build Coastguard Worker    // by default. The `uncollapsibleWidgetsCount` is taken into account only
201*d5c09012SAndroid Build Coastguard Worker    // when `collapsible` is `true`.
202*d5c09012SAndroid Build Coastguard Worker    int32 uncollapsible_widgets_count = 6;
203*d5c09012SAndroid Build Coastguard Worker  }
204*d5c09012SAndroid Build Coastguard Worker
205*d5c09012SAndroid Build Coastguard Worker  // The divider style of a card. Currently only used for dividers betweens card
206*d5c09012SAndroid Build Coastguard Worker  // sections.
207*d5c09012SAndroid Build Coastguard Worker  //
208*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
209*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
210*d5c09012SAndroid Build Coastguard Worker  enum DividerStyle {
211*d5c09012SAndroid Build Coastguard Worker    // Don't use. Unspecified.
212*d5c09012SAndroid Build Coastguard Worker    DIVIDER_STYLE_UNSPECIFIED = 0;
213*d5c09012SAndroid Build Coastguard Worker
214*d5c09012SAndroid Build Coastguard Worker    // Default option. Render a solid divider between sections.
215*d5c09012SAndroid Build Coastguard Worker    SOLID_DIVIDER = 1;
216*d5c09012SAndroid Build Coastguard Worker
217*d5c09012SAndroid Build Coastguard Worker    // If set, no divider is rendered between sections.
218*d5c09012SAndroid Build Coastguard Worker    NO_DIVIDER = 2;
219*d5c09012SAndroid Build Coastguard Worker  }
220*d5c09012SAndroid Build Coastguard Worker
221*d5c09012SAndroid Build Coastguard Worker  // A card action is the action associated with the card. For example,
222*d5c09012SAndroid Build Coastguard Worker  // an invoice card might include actions such as delete invoice, email
223*d5c09012SAndroid Build Coastguard Worker  // invoice, or open the invoice in a browser.
224*d5c09012SAndroid Build Coastguard Worker  //
225*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace
226*d5c09012SAndroid Build Coastguard Worker  // Add-ons](https://developers.google.com/workspace/add-ons):
227*d5c09012SAndroid Build Coastguard Worker  message CardAction {
228*d5c09012SAndroid Build Coastguard Worker    // The label that displays as the action menu item.
229*d5c09012SAndroid Build Coastguard Worker    string action_label = 1;
230*d5c09012SAndroid Build Coastguard Worker
231*d5c09012SAndroid Build Coastguard Worker    // The `onClick` action for this action item.
232*d5c09012SAndroid Build Coastguard Worker    OnClick on_click = 2;
233*d5c09012SAndroid Build Coastguard Worker  }
234*d5c09012SAndroid Build Coastguard Worker
235*d5c09012SAndroid Build Coastguard Worker  // A persistent (sticky) footer that that appears at the bottom of the card.
236*d5c09012SAndroid Build Coastguard Worker  //
237*d5c09012SAndroid Build Coastguard Worker  // Setting `fixedFooter` without specifying a `primaryButton` or a
238*d5c09012SAndroid Build Coastguard Worker  // `secondaryButton` causes an error.
239*d5c09012SAndroid Build Coastguard Worker  //
240*d5c09012SAndroid Build Coastguard Worker  // For Chat apps, you can use fixed footers in
241*d5c09012SAndroid Build Coastguard Worker  // [dialogs](https://developers.google.com/workspace/chat/dialogs), but not
242*d5c09012SAndroid Build Coastguard Worker  // [card
243*d5c09012SAndroid Build Coastguard Worker  // messages](https://developers.google.com/workspace/chat/create-messages#create).
244*d5c09012SAndroid Build Coastguard Worker  // For an example in Google Chat apps, see [Add a persistent
245*d5c09012SAndroid Build Coastguard Worker  // footer](https://developers.google.com/workspace/chat/design-components-card-dialog#add_a_persistent_footer).
246*d5c09012SAndroid Build Coastguard Worker  //
247*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
248*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
249*d5c09012SAndroid Build Coastguard Worker  message CardFixedFooter {
250*d5c09012SAndroid Build Coastguard Worker    // The primary button of the fixed footer. The button must be a text button
251*d5c09012SAndroid Build Coastguard Worker    // with text and color set.
252*d5c09012SAndroid Build Coastguard Worker    Button primary_button = 1;
253*d5c09012SAndroid Build Coastguard Worker
254*d5c09012SAndroid Build Coastguard Worker    // The secondary button of the fixed footer.  The button must be a text
255*d5c09012SAndroid Build Coastguard Worker    // button with text and color set.
256*d5c09012SAndroid Build Coastguard Worker    // If `secondaryButton` is set, you must also set `primaryButton`.
257*d5c09012SAndroid Build Coastguard Worker    Button secondary_button = 2;
258*d5c09012SAndroid Build Coastguard Worker  }
259*d5c09012SAndroid Build Coastguard Worker
260*d5c09012SAndroid Build Coastguard Worker  // In Google Workspace Add-ons,
261*d5c09012SAndroid Build Coastguard Worker  // determines how a card is displayed.
262*d5c09012SAndroid Build Coastguard Worker  //
263*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace
264*d5c09012SAndroid Build Coastguard Worker  // Add-ons](https://developers.google.com/workspace/add-ons):
265*d5c09012SAndroid Build Coastguard Worker  enum DisplayStyle {
266*d5c09012SAndroid Build Coastguard Worker    // Don't use. Unspecified.
267*d5c09012SAndroid Build Coastguard Worker    DISPLAY_STYLE_UNSPECIFIED = 0;
268*d5c09012SAndroid Build Coastguard Worker
269*d5c09012SAndroid Build Coastguard Worker    // The header of the card appears at the bottom of the
270*d5c09012SAndroid Build Coastguard Worker    // sidebar, partially covering the current top card of the stack. Clicking
271*d5c09012SAndroid Build Coastguard Worker    // the header pops the card into the card stack. If the card has no header,
272*d5c09012SAndroid Build Coastguard Worker    // a generated header is used instead.
273*d5c09012SAndroid Build Coastguard Worker    PEEK = 1;
274*d5c09012SAndroid Build Coastguard Worker
275*d5c09012SAndroid Build Coastguard Worker    // Default value. The card is shown by replacing the view of the top card in
276*d5c09012SAndroid Build Coastguard Worker    // the card stack.
277*d5c09012SAndroid Build Coastguard Worker    REPLACE = 2;
278*d5c09012SAndroid Build Coastguard Worker  }
279*d5c09012SAndroid Build Coastguard Worker
280*d5c09012SAndroid Build Coastguard Worker  // The header of the card. A header usually contains a leading image and a
281*d5c09012SAndroid Build Coastguard Worker  // title. Headers always appear at the top of a card.
282*d5c09012SAndroid Build Coastguard Worker  CardHeader header = 1;
283*d5c09012SAndroid Build Coastguard Worker
284*d5c09012SAndroid Build Coastguard Worker  // Contains a collection of widgets. Each section has its own, optional
285*d5c09012SAndroid Build Coastguard Worker  // header. Sections are visually separated by a line divider. For an example
286*d5c09012SAndroid Build Coastguard Worker  // in Google Chat apps, see [Define a section of a
287*d5c09012SAndroid Build Coastguard Worker  // card](https://developers.google.com/workspace/chat/design-components-card-dialog#define_a_section_of_a_card).
288*d5c09012SAndroid Build Coastguard Worker  repeated Section sections = 2;
289*d5c09012SAndroid Build Coastguard Worker
290*d5c09012SAndroid Build Coastguard Worker  // The divider style between sections.
291*d5c09012SAndroid Build Coastguard Worker  DividerStyle section_divider_style = 9;
292*d5c09012SAndroid Build Coastguard Worker
293*d5c09012SAndroid Build Coastguard Worker  // The card's actions. Actions are added to the card's toolbar menu.
294*d5c09012SAndroid Build Coastguard Worker  //
295*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace
296*d5c09012SAndroid Build Coastguard Worker  // Add-ons](https://developers.google.com/workspace/add-ons):
297*d5c09012SAndroid Build Coastguard Worker  //
298*d5c09012SAndroid Build Coastguard Worker  // For example, the following JSON constructs a card action menu with
299*d5c09012SAndroid Build Coastguard Worker  // `Settings` and `Send Feedback` options:
300*d5c09012SAndroid Build Coastguard Worker  //
301*d5c09012SAndroid Build Coastguard Worker  // ```
302*d5c09012SAndroid Build Coastguard Worker  // "card_actions": [
303*d5c09012SAndroid Build Coastguard Worker  //   {
304*d5c09012SAndroid Build Coastguard Worker  //     "actionLabel": "Settings",
305*d5c09012SAndroid Build Coastguard Worker  //     "onClick": {
306*d5c09012SAndroid Build Coastguard Worker  //       "action": {
307*d5c09012SAndroid Build Coastguard Worker  //         "functionName": "goToView",
308*d5c09012SAndroid Build Coastguard Worker  //         "parameters": [
309*d5c09012SAndroid Build Coastguard Worker  //           {
310*d5c09012SAndroid Build Coastguard Worker  //             "key": "viewType",
311*d5c09012SAndroid Build Coastguard Worker  //             "value": "SETTING"
312*d5c09012SAndroid Build Coastguard Worker  //          }
313*d5c09012SAndroid Build Coastguard Worker  //         ],
314*d5c09012SAndroid Build Coastguard Worker  //         "loadIndicator": "LoadIndicator.SPINNER"
315*d5c09012SAndroid Build Coastguard Worker  //       }
316*d5c09012SAndroid Build Coastguard Worker  //     }
317*d5c09012SAndroid Build Coastguard Worker  //   },
318*d5c09012SAndroid Build Coastguard Worker  //   {
319*d5c09012SAndroid Build Coastguard Worker  //     "actionLabel": "Send Feedback",
320*d5c09012SAndroid Build Coastguard Worker  //     "onClick": {
321*d5c09012SAndroid Build Coastguard Worker  //       "openLink": {
322*d5c09012SAndroid Build Coastguard Worker  //         "url": "https://example.com/feedback"
323*d5c09012SAndroid Build Coastguard Worker  //       }
324*d5c09012SAndroid Build Coastguard Worker  //     }
325*d5c09012SAndroid Build Coastguard Worker  //   }
326*d5c09012SAndroid Build Coastguard Worker  // ]
327*d5c09012SAndroid Build Coastguard Worker  // ```
328*d5c09012SAndroid Build Coastguard Worker  repeated CardAction card_actions = 3;
329*d5c09012SAndroid Build Coastguard Worker
330*d5c09012SAndroid Build Coastguard Worker  // Name of the card. Used as a card identifier in card navigation.
331*d5c09012SAndroid Build Coastguard Worker  //
332*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace
333*d5c09012SAndroid Build Coastguard Worker  // Add-ons](https://developers.google.com/workspace/add-ons):
334*d5c09012SAndroid Build Coastguard Worker  string name = 4;
335*d5c09012SAndroid Build Coastguard Worker
336*d5c09012SAndroid Build Coastguard Worker  // The fixed footer shown at the bottom of this card.
337*d5c09012SAndroid Build Coastguard Worker  //
338*d5c09012SAndroid Build Coastguard Worker  // Setting `fixedFooter` without specifying a `primaryButton` or a
339*d5c09012SAndroid Build Coastguard Worker  // `secondaryButton` causes an error. For Chat apps, you can use fixed footers
340*d5c09012SAndroid Build Coastguard Worker  // in
341*d5c09012SAndroid Build Coastguard Worker  // [dialogs](https://developers.google.com/workspace/chat/dialogs), but not
342*d5c09012SAndroid Build Coastguard Worker  // [card
343*d5c09012SAndroid Build Coastguard Worker  // messages](https://developers.google.com/workspace/chat/create-messages#create).
344*d5c09012SAndroid Build Coastguard Worker  //
345*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
346*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
347*d5c09012SAndroid Build Coastguard Worker  CardFixedFooter fixed_footer = 5;
348*d5c09012SAndroid Build Coastguard Worker
349*d5c09012SAndroid Build Coastguard Worker  // In Google Workspace Add-ons, sets the display properties of the
350*d5c09012SAndroid Build Coastguard Worker  // `peekCardHeader`.
351*d5c09012SAndroid Build Coastguard Worker  //
352*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace
353*d5c09012SAndroid Build Coastguard Worker  // Add-ons](https://developers.google.com/workspace/add-ons):
354*d5c09012SAndroid Build Coastguard Worker  DisplayStyle display_style = 6;
355*d5c09012SAndroid Build Coastguard Worker
356*d5c09012SAndroid Build Coastguard Worker  // When displaying contextual content, the peek card header acts as a
357*d5c09012SAndroid Build Coastguard Worker  // placeholder so that the user can navigate forward between the homepage
358*d5c09012SAndroid Build Coastguard Worker  // cards and the contextual cards.
359*d5c09012SAndroid Build Coastguard Worker  //
360*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace
361*d5c09012SAndroid Build Coastguard Worker  // Add-ons](https://developers.google.com/workspace/add-ons):
362*d5c09012SAndroid Build Coastguard Worker  CardHeader peek_card_header = 7;
363*d5c09012SAndroid Build Coastguard Worker}
364*d5c09012SAndroid Build Coastguard Worker
365*d5c09012SAndroid Build Coastguard Worker// Each card is made up of widgets.
366*d5c09012SAndroid Build Coastguard Worker//
367*d5c09012SAndroid Build Coastguard Worker// A widget is a composite object that can represent one of text, images,
368*d5c09012SAndroid Build Coastguard Worker// buttons, and other object types.
369*d5c09012SAndroid Build Coastguard Workermessage Widget {
370*d5c09012SAndroid Build Coastguard Worker  // The shape used to crop the image.
371*d5c09012SAndroid Build Coastguard Worker  //
372*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
373*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
374*d5c09012SAndroid Build Coastguard Worker  enum ImageType {
375*d5c09012SAndroid Build Coastguard Worker    // Default value. Applies a square mask to the image. For example, a 4x3
376*d5c09012SAndroid Build Coastguard Worker    // image becomes 3x3.
377*d5c09012SAndroid Build Coastguard Worker    SQUARE = 0;
378*d5c09012SAndroid Build Coastguard Worker
379*d5c09012SAndroid Build Coastguard Worker    // Applies a circular mask to the image. For example, a 4x3 image becomes a
380*d5c09012SAndroid Build Coastguard Worker    // circle with a diameter of 3.
381*d5c09012SAndroid Build Coastguard Worker    CIRCLE = 1;
382*d5c09012SAndroid Build Coastguard Worker  }
383*d5c09012SAndroid Build Coastguard Worker
384*d5c09012SAndroid Build Coastguard Worker  // Specifies whether widgets align to the left, right, or center of a column.
385*d5c09012SAndroid Build Coastguard Worker  //
386*d5c09012SAndroid Build Coastguard Worker  // [Google Chat apps](https://developers.google.com/workspace/chat):
387*d5c09012SAndroid Build Coastguard Worker  enum HorizontalAlignment {
388*d5c09012SAndroid Build Coastguard Worker    // Don't use. Unspecified.
389*d5c09012SAndroid Build Coastguard Worker    HORIZONTAL_ALIGNMENT_UNSPECIFIED = 0;
390*d5c09012SAndroid Build Coastguard Worker
391*d5c09012SAndroid Build Coastguard Worker    // Default value. Aligns widgets to the start position of the column. For
392*d5c09012SAndroid Build Coastguard Worker    // left-to-right layouts, aligns to the left. For right-to-left layouts,
393*d5c09012SAndroid Build Coastguard Worker    // aligns to the right.
394*d5c09012SAndroid Build Coastguard Worker    START = 1;
395*d5c09012SAndroid Build Coastguard Worker
396*d5c09012SAndroid Build Coastguard Worker    // Aligns widgets to the center of the column.
397*d5c09012SAndroid Build Coastguard Worker    CENTER = 2;
398*d5c09012SAndroid Build Coastguard Worker
399*d5c09012SAndroid Build Coastguard Worker    // Aligns widgets to the end position of the column. For left-to-right
400*d5c09012SAndroid Build Coastguard Worker    // layouts, aligns widgets to the right. For right-to-left layouts, aligns
401*d5c09012SAndroid Build Coastguard Worker    // widgets to the left.
402*d5c09012SAndroid Build Coastguard Worker    END = 3;
403*d5c09012SAndroid Build Coastguard Worker  }
404*d5c09012SAndroid Build Coastguard Worker
405*d5c09012SAndroid Build Coastguard Worker  // A widget can only have one of the following items. You can use multiple
406*d5c09012SAndroid Build Coastguard Worker  // widget fields to display more items.
407*d5c09012SAndroid Build Coastguard Worker  oneof data {
408*d5c09012SAndroid Build Coastguard Worker    // Displays a text paragraph. Supports simple HTML formatted text. For more
409*d5c09012SAndroid Build Coastguard Worker    // information about formatting text, see
410*d5c09012SAndroid Build Coastguard Worker    // [Formatting text in Google Chat
411*d5c09012SAndroid Build Coastguard Worker    // apps](https://developers.google.com/workspace/chat/format-messages#card-formatting)
412*d5c09012SAndroid Build Coastguard Worker    // and
413*d5c09012SAndroid Build Coastguard Worker    // [Formatting
414*d5c09012SAndroid Build Coastguard Worker    // text in Google Workspace
415*d5c09012SAndroid Build Coastguard Worker    // Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).
416*d5c09012SAndroid Build Coastguard Worker    //
417*d5c09012SAndroid Build Coastguard Worker    // For example, the following JSON creates a bolded text:
418*d5c09012SAndroid Build Coastguard Worker    // ```
419*d5c09012SAndroid Build Coastguard Worker    // "textParagraph": {
420*d5c09012SAndroid Build Coastguard Worker    //   "text": "  <b>bold text</b>"
421*d5c09012SAndroid Build Coastguard Worker    // }
422*d5c09012SAndroid Build Coastguard Worker    // ```
423*d5c09012SAndroid Build Coastguard Worker    TextParagraph text_paragraph = 1;
424*d5c09012SAndroid Build Coastguard Worker
425*d5c09012SAndroid Build Coastguard Worker    // Displays an image.
426*d5c09012SAndroid Build Coastguard Worker    //
427*d5c09012SAndroid Build Coastguard Worker    // For example, the following JSON creates an image with alternative text:
428*d5c09012SAndroid Build Coastguard Worker    // ```
429*d5c09012SAndroid Build Coastguard Worker    // "image": {
430*d5c09012SAndroid Build Coastguard Worker    //   "imageUrl":
431*d5c09012SAndroid Build Coastguard Worker    //   "https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png",
432*d5c09012SAndroid Build Coastguard Worker    //   "altText": "Chat app avatar"
433*d5c09012SAndroid Build Coastguard Worker    // }
434*d5c09012SAndroid Build Coastguard Worker    // ```
435*d5c09012SAndroid Build Coastguard Worker    Image image = 2;
436*d5c09012SAndroid Build Coastguard Worker
437*d5c09012SAndroid Build Coastguard Worker    // Displays a decorated text item.
438*d5c09012SAndroid Build Coastguard Worker    //
439*d5c09012SAndroid Build Coastguard Worker    // For example, the following JSON creates a decorated text widget showing
440*d5c09012SAndroid Build Coastguard Worker    // email address:
441*d5c09012SAndroid Build Coastguard Worker    //
442*d5c09012SAndroid Build Coastguard Worker    // ```
443*d5c09012SAndroid Build Coastguard Worker    // "decoratedText": {
444*d5c09012SAndroid Build Coastguard Worker    //   "icon": {
445*d5c09012SAndroid Build Coastguard Worker    //     "knownIcon": "EMAIL"
446*d5c09012SAndroid Build Coastguard Worker    //   },
447*d5c09012SAndroid Build Coastguard Worker    //   "topLabel": "Email Address",
448*d5c09012SAndroid Build Coastguard Worker    //   "text": "[email protected]",
449*d5c09012SAndroid Build Coastguard Worker    //   "bottomLabel": "This is a new Email address!",
450*d5c09012SAndroid Build Coastguard Worker    //   "switchControl": {
451*d5c09012SAndroid Build Coastguard Worker    //     "name": "has_send_welcome_email_to_sasha",
452*d5c09012SAndroid Build Coastguard Worker    //     "selected": false,
453*d5c09012SAndroid Build Coastguard Worker    //     "controlType": "CHECKBOX"
454*d5c09012SAndroid Build Coastguard Worker    //   }
455*d5c09012SAndroid Build Coastguard Worker    // }
456*d5c09012SAndroid Build Coastguard Worker    // ```
457*d5c09012SAndroid Build Coastguard Worker    DecoratedText decorated_text = 3;
458*d5c09012SAndroid Build Coastguard Worker
459*d5c09012SAndroid Build Coastguard Worker    // A list of buttons.
460*d5c09012SAndroid Build Coastguard Worker    //
461*d5c09012SAndroid Build Coastguard Worker    // For example, the following JSON creates two buttons. The first
462*d5c09012SAndroid Build Coastguard Worker    // is a blue text button and the second is an image button that opens a
463*d5c09012SAndroid Build Coastguard Worker    // link:
464*d5c09012SAndroid Build Coastguard Worker    // ```
465*d5c09012SAndroid Build Coastguard Worker    // "buttonList": {
466*d5c09012SAndroid Build Coastguard Worker    //   "buttons": [
467*d5c09012SAndroid Build Coastguard Worker    //     {
468*d5c09012SAndroid Build Coastguard Worker    //       "text": "Edit",
469*d5c09012SAndroid Build Coastguard Worker    //       "color": {
470*d5c09012SAndroid Build Coastguard Worker    //         "red": 0,
471*d5c09012SAndroid Build Coastguard Worker    //         "green": 0,
472*d5c09012SAndroid Build Coastguard Worker    //         "blue": 1,
473*d5c09012SAndroid Build Coastguard Worker    //         "alpha": 1
474*d5c09012SAndroid Build Coastguard Worker    //       },
475*d5c09012SAndroid Build Coastguard Worker    //       "disabled": true,
476*d5c09012SAndroid Build Coastguard Worker    //     },
477*d5c09012SAndroid Build Coastguard Worker    //     {
478*d5c09012SAndroid Build Coastguard Worker    //       "icon": {
479*d5c09012SAndroid Build Coastguard Worker    //         "knownIcon": "INVITE",
480*d5c09012SAndroid Build Coastguard Worker    //         "altText": "check calendar"
481*d5c09012SAndroid Build Coastguard Worker    //       },
482*d5c09012SAndroid Build Coastguard Worker    //       "onClick": {
483*d5c09012SAndroid Build Coastguard Worker    //         "openLink": {
484*d5c09012SAndroid Build Coastguard Worker    //           "url": "https://example.com/calendar"
485*d5c09012SAndroid Build Coastguard Worker    //         }
486*d5c09012SAndroid Build Coastguard Worker    //       }
487*d5c09012SAndroid Build Coastguard Worker    //     }
488*d5c09012SAndroid Build Coastguard Worker    //   ]
489*d5c09012SAndroid Build Coastguard Worker    // }
490*d5c09012SAndroid Build Coastguard Worker    // ```
491*d5c09012SAndroid Build Coastguard Worker    ButtonList button_list = 4;
492*d5c09012SAndroid Build Coastguard Worker
493*d5c09012SAndroid Build Coastguard Worker    // Displays a text box that users can type into.
494*d5c09012SAndroid Build Coastguard Worker    //
495*d5c09012SAndroid Build Coastguard Worker    // For example, the following JSON creates a text input for an email
496*d5c09012SAndroid Build Coastguard Worker    // address:
497*d5c09012SAndroid Build Coastguard Worker    //
498*d5c09012SAndroid Build Coastguard Worker    // ```
499*d5c09012SAndroid Build Coastguard Worker    // "textInput": {
500*d5c09012SAndroid Build Coastguard Worker    //   "name": "mailing_address",
501*d5c09012SAndroid Build Coastguard Worker    //   "label": "Mailing Address"
502*d5c09012SAndroid Build Coastguard Worker    // }
503*d5c09012SAndroid Build Coastguard Worker    // ```
504*d5c09012SAndroid Build Coastguard Worker    //
505*d5c09012SAndroid Build Coastguard Worker    // As another example, the following JSON creates a text input for a
506*d5c09012SAndroid Build Coastguard Worker    // programming language with static suggestions:
507*d5c09012SAndroid Build Coastguard Worker    // ```
508*d5c09012SAndroid Build Coastguard Worker    // "textInput": {
509*d5c09012SAndroid Build Coastguard Worker    //   "name": "preferred_programing_language",
510*d5c09012SAndroid Build Coastguard Worker    //   "label": "Preferred Language",
511*d5c09012SAndroid Build Coastguard Worker    //   "initialSuggestions": {
512*d5c09012SAndroid Build Coastguard Worker    //     "items": [
513*d5c09012SAndroid Build Coastguard Worker    //       {
514*d5c09012SAndroid Build Coastguard Worker    //         "text": "C++"
515*d5c09012SAndroid Build Coastguard Worker    //       },
516*d5c09012SAndroid Build Coastguard Worker    //       {
517*d5c09012SAndroid Build Coastguard Worker    //         "text": "Java"
518*d5c09012SAndroid Build Coastguard Worker    //       },
519*d5c09012SAndroid Build Coastguard Worker    //       {
520*d5c09012SAndroid Build Coastguard Worker    //         "text": "JavaScript"
521*d5c09012SAndroid Build Coastguard Worker    //       },
522*d5c09012SAndroid Build Coastguard Worker    //       {
523*d5c09012SAndroid Build Coastguard Worker    //         "text": "Python"
524*d5c09012SAndroid Build Coastguard Worker    //       }
525*d5c09012SAndroid Build Coastguard Worker    //     ]
526*d5c09012SAndroid Build Coastguard Worker    //   }
527*d5c09012SAndroid Build Coastguard Worker    // }
528*d5c09012SAndroid Build Coastguard Worker    // ```
529*d5c09012SAndroid Build Coastguard Worker    TextInput text_input = 5;
530*d5c09012SAndroid Build Coastguard Worker
531*d5c09012SAndroid Build Coastguard Worker    // Displays a selection control that lets users select items. Selection
532*d5c09012SAndroid Build Coastguard Worker    // controls can be checkboxes, radio buttons, switches, or dropdown menus.
533*d5c09012SAndroid Build Coastguard Worker    //
534*d5c09012SAndroid Build Coastguard Worker    // For example, the following JSON creates a dropdown menu that lets users
535*d5c09012SAndroid Build Coastguard Worker    // choose a size:
536*d5c09012SAndroid Build Coastguard Worker    //
537*d5c09012SAndroid Build Coastguard Worker    // ```
538*d5c09012SAndroid Build Coastguard Worker    // "selectionInput": {
539*d5c09012SAndroid Build Coastguard Worker    //   "name": "size",
540*d5c09012SAndroid Build Coastguard Worker    //   "label": "Size"
541*d5c09012SAndroid Build Coastguard Worker    //   "type": "DROPDOWN",
542*d5c09012SAndroid Build Coastguard Worker    //   "items": [
543*d5c09012SAndroid Build Coastguard Worker    //     {
544*d5c09012SAndroid Build Coastguard Worker    //       "text": "S",
545*d5c09012SAndroid Build Coastguard Worker    //       "value": "small",
546*d5c09012SAndroid Build Coastguard Worker    //       "selected": false
547*d5c09012SAndroid Build Coastguard Worker    //     },
548*d5c09012SAndroid Build Coastguard Worker    //     {
549*d5c09012SAndroid Build Coastguard Worker    //       "text": "M",
550*d5c09012SAndroid Build Coastguard Worker    //       "value": "medium",
551*d5c09012SAndroid Build Coastguard Worker    //       "selected": true
552*d5c09012SAndroid Build Coastguard Worker    //     },
553*d5c09012SAndroid Build Coastguard Worker    //     {
554*d5c09012SAndroid Build Coastguard Worker    //       "text": "L",
555*d5c09012SAndroid Build Coastguard Worker    //       "value": "large",
556*d5c09012SAndroid Build Coastguard Worker    //       "selected": false
557*d5c09012SAndroid Build Coastguard Worker    //     },
558*d5c09012SAndroid Build Coastguard Worker    //     {
559*d5c09012SAndroid Build Coastguard Worker    //       "text": "XL",
560*d5c09012SAndroid Build Coastguard Worker    //       "value": "extra_large",
561*d5c09012SAndroid Build Coastguard Worker    //       "selected": false
562*d5c09012SAndroid Build Coastguard Worker    //     }
563*d5c09012SAndroid Build Coastguard Worker    //   ]
564*d5c09012SAndroid Build Coastguard Worker    // }
565*d5c09012SAndroid Build Coastguard Worker    // ```
566*d5c09012SAndroid Build Coastguard Worker    SelectionInput selection_input = 6;
567*d5c09012SAndroid Build Coastguard Worker
568*d5c09012SAndroid Build Coastguard Worker    // Displays a widget that lets users input a date, time, or date and time.
569*d5c09012SAndroid Build Coastguard Worker    //
570*d5c09012SAndroid Build Coastguard Worker    // For example, the following JSON creates a date time picker to schedule an
571*d5c09012SAndroid Build Coastguard Worker    // appointment:
572*d5c09012SAndroid Build Coastguard Worker    //
573*d5c09012SAndroid Build Coastguard Worker    //
574*d5c09012SAndroid Build Coastguard Worker    // ```
575*d5c09012SAndroid Build Coastguard Worker    // "dateTimePicker": {
576*d5c09012SAndroid Build Coastguard Worker    //   "name": "appointment_time",
577*d5c09012SAndroid Build Coastguard Worker    //   "label": "Book your appointment at:",
578*d5c09012SAndroid Build Coastguard Worker    //   "type": "DATE_AND_TIME",
579*d5c09012SAndroid Build Coastguard Worker    //   "valueMsEpoch": "796435200000"
580*d5c09012SAndroid Build Coastguard Worker    // }
581*d5c09012SAndroid Build Coastguard Worker    // ```
582*d5c09012SAndroid Build Coastguard Worker    DateTimePicker date_time_picker = 7;
583*d5c09012SAndroid Build Coastguard Worker
584*d5c09012SAndroid Build Coastguard Worker    // Displays a horizontal line divider between widgets.
585*d5c09012SAndroid Build Coastguard Worker    //
586*d5c09012SAndroid Build Coastguard Worker    // For example, the following JSON creates a divider:
587*d5c09012SAndroid Build Coastguard Worker    // ```
588*d5c09012SAndroid Build Coastguard Worker    // "divider": {
589*d5c09012SAndroid Build Coastguard Worker    // }
590*d5c09012SAndroid Build Coastguard Worker    // ```
591*d5c09012SAndroid Build Coastguard Worker    Divider divider = 9;
592*d5c09012SAndroid Build Coastguard Worker
593*d5c09012SAndroid Build Coastguard Worker    // Displays a grid with a collection of items.
594*d5c09012SAndroid Build Coastguard Worker    //
595*d5c09012SAndroid Build Coastguard Worker    // A grid supports any number of columns and items. The number of rows is
596*d5c09012SAndroid Build Coastguard Worker    // determined by the upper bounds of the number items divided by the number
597*d5c09012SAndroid Build Coastguard Worker    // of columns. A grid with 10 items and 2 columns has 5 rows. A grid with 11
598*d5c09012SAndroid Build Coastguard Worker    // items and 2 columns has 6 rows.
599*d5c09012SAndroid Build Coastguard Worker    //
600*d5c09012SAndroid Build Coastguard Worker    // [Google Workspace Add-ons and
601*d5c09012SAndroid Build Coastguard Worker    // Chat apps](https://developers.google.com/workspace/extend):
602*d5c09012SAndroid Build Coastguard Worker    //
603*d5c09012SAndroid Build Coastguard Worker    // For example, the following JSON creates a 2 column grid with a single
604*d5c09012SAndroid Build Coastguard Worker    // item:
605*d5c09012SAndroid Build Coastguard Worker    //
606*d5c09012SAndroid Build Coastguard Worker    // ```
607*d5c09012SAndroid Build Coastguard Worker    // "grid": {
608*d5c09012SAndroid Build Coastguard Worker    //   "title": "A fine collection of items",
609*d5c09012SAndroid Build Coastguard Worker    //   "columnCount": 2,
610*d5c09012SAndroid Build Coastguard Worker    //   "borderStyle": {
611*d5c09012SAndroid Build Coastguard Worker    //     "type": "STROKE",
612*d5c09012SAndroid Build Coastguard Worker    //     "cornerRadius": 4
613*d5c09012SAndroid Build Coastguard Worker    //   },
614*d5c09012SAndroid Build Coastguard Worker    //   "items": [
615*d5c09012SAndroid Build Coastguard Worker    //     {
616*d5c09012SAndroid Build Coastguard Worker    //       "image": {
617*d5c09012SAndroid Build Coastguard Worker    //         "imageUri": "https://www.example.com/image.png",
618*d5c09012SAndroid Build Coastguard Worker    //         "cropStyle": {
619*d5c09012SAndroid Build Coastguard Worker    //           "type": "SQUARE"
620*d5c09012SAndroid Build Coastguard Worker    //         },
621*d5c09012SAndroid Build Coastguard Worker    //         "borderStyle": {
622*d5c09012SAndroid Build Coastguard Worker    //           "type": "STROKE"
623*d5c09012SAndroid Build Coastguard Worker    //         }
624*d5c09012SAndroid Build Coastguard Worker    //       },
625*d5c09012SAndroid Build Coastguard Worker    //       "title": "An item",
626*d5c09012SAndroid Build Coastguard Worker    //       "textAlignment": "CENTER"
627*d5c09012SAndroid Build Coastguard Worker    //     }
628*d5c09012SAndroid Build Coastguard Worker    //   ],
629*d5c09012SAndroid Build Coastguard Worker    //   "onClick": {
630*d5c09012SAndroid Build Coastguard Worker    //     "openLink": {
631*d5c09012SAndroid Build Coastguard Worker    //       "url": "https://www.example.com"
632*d5c09012SAndroid Build Coastguard Worker    //     }
633*d5c09012SAndroid Build Coastguard Worker    //   }
634*d5c09012SAndroid Build Coastguard Worker    // }
635*d5c09012SAndroid Build Coastguard Worker    // ```
636*d5c09012SAndroid Build Coastguard Worker    Grid grid = 10;
637*d5c09012SAndroid Build Coastguard Worker
638*d5c09012SAndroid Build Coastguard Worker    // Displays up to 2 columns.
639*d5c09012SAndroid Build Coastguard Worker    //
640*d5c09012SAndroid Build Coastguard Worker    // To include more than 2 columns, or to use rows, use the `Grid` widget.
641*d5c09012SAndroid Build Coastguard Worker    //
642*d5c09012SAndroid Build Coastguard Worker    // For example, the following JSON creates 2 columns that each contain
643*d5c09012SAndroid Build Coastguard Worker    // text paragraphs:
644*d5c09012SAndroid Build Coastguard Worker    //
645*d5c09012SAndroid Build Coastguard Worker    // ```
646*d5c09012SAndroid Build Coastguard Worker    // "columns": {
647*d5c09012SAndroid Build Coastguard Worker    //   "columnItems": [
648*d5c09012SAndroid Build Coastguard Worker    //     {
649*d5c09012SAndroid Build Coastguard Worker    //       "horizontalSizeStyle": "FILL_AVAILABLE_SPACE",
650*d5c09012SAndroid Build Coastguard Worker    //       "horizontalAlignment": "CENTER",
651*d5c09012SAndroid Build Coastguard Worker    //       "verticalAlignment": "CENTER",
652*d5c09012SAndroid Build Coastguard Worker    //       "widgets": [
653*d5c09012SAndroid Build Coastguard Worker    //         {
654*d5c09012SAndroid Build Coastguard Worker    //           "textParagraph": {
655*d5c09012SAndroid Build Coastguard Worker    //             "text": "First column text paragraph"
656*d5c09012SAndroid Build Coastguard Worker    //           }
657*d5c09012SAndroid Build Coastguard Worker    //         }
658*d5c09012SAndroid Build Coastguard Worker    //       ]
659*d5c09012SAndroid Build Coastguard Worker    //     },
660*d5c09012SAndroid Build Coastguard Worker    //     {
661*d5c09012SAndroid Build Coastguard Worker    //       "horizontalSizeStyle": "FILL_AVAILABLE_SPACE",
662*d5c09012SAndroid Build Coastguard Worker    //       "horizontalAlignment": "CENTER",
663*d5c09012SAndroid Build Coastguard Worker    //       "verticalAlignment": "CENTER",
664*d5c09012SAndroid Build Coastguard Worker    //       "widgets": [
665*d5c09012SAndroid Build Coastguard Worker    //         {
666*d5c09012SAndroid Build Coastguard Worker    //           "textParagraph": {
667*d5c09012SAndroid Build Coastguard Worker    //             "text": "Second column text paragraph"
668*d5c09012SAndroid Build Coastguard Worker    //           }
669*d5c09012SAndroid Build Coastguard Worker    //         }
670*d5c09012SAndroid Build Coastguard Worker    //       ]
671*d5c09012SAndroid Build Coastguard Worker    //     }
672*d5c09012SAndroid Build Coastguard Worker    //   ]
673*d5c09012SAndroid Build Coastguard Worker    // }
674*d5c09012SAndroid Build Coastguard Worker    // ```
675*d5c09012SAndroid Build Coastguard Worker    Columns columns = 11;
676*d5c09012SAndroid Build Coastguard Worker  }
677*d5c09012SAndroid Build Coastguard Worker
678*d5c09012SAndroid Build Coastguard Worker  // Specifies whether widgets align to the left, right, or center of a column.
679*d5c09012SAndroid Build Coastguard Worker  HorizontalAlignment horizontal_alignment = 8;
680*d5c09012SAndroid Build Coastguard Worker}
681*d5c09012SAndroid Build Coastguard Worker
682*d5c09012SAndroid Build Coastguard Worker// A paragraph of text that supports formatting. For an example in
683*d5c09012SAndroid Build Coastguard Worker// Google Chat apps, see [Add a paragraph of formatted
684*d5c09012SAndroid Build Coastguard Worker// text](https://developers.google.com/workspace/chat/add-text-image-card-dialog#add_a_paragraph_of_formatted_text).
685*d5c09012SAndroid Build Coastguard Worker// For more information
686*d5c09012SAndroid Build Coastguard Worker// about formatting text, see
687*d5c09012SAndroid Build Coastguard Worker// [Formatting text in Google Chat
688*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/chat/format-messages#card-formatting)
689*d5c09012SAndroid Build Coastguard Worker// and
690*d5c09012SAndroid Build Coastguard Worker// [Formatting
691*d5c09012SAndroid Build Coastguard Worker// text in Google Workspace
692*d5c09012SAndroid Build Coastguard Worker// Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).
693*d5c09012SAndroid Build Coastguard Worker//
694*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and
695*d5c09012SAndroid Build Coastguard Worker// Chat apps](https://developers.google.com/workspace/extend):
696*d5c09012SAndroid Build Coastguard Workermessage TextParagraph {
697*d5c09012SAndroid Build Coastguard Worker  // The text that's shown in the widget.
698*d5c09012SAndroid Build Coastguard Worker  string text = 1;
699*d5c09012SAndroid Build Coastguard Worker}
700*d5c09012SAndroid Build Coastguard Worker
701*d5c09012SAndroid Build Coastguard Worker// An image that is specified by a URL and can have an `onClick` action. For an
702*d5c09012SAndroid Build Coastguard Worker// example, see [Add an
703*d5c09012SAndroid Build Coastguard Worker// image](https://developers.google.com/workspace/chat/add-text-image-card-dialog#add_an_image).
704*d5c09012SAndroid Build Coastguard Worker//
705*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and Chat
706*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/extend):
707*d5c09012SAndroid Build Coastguard Workermessage Image {
708*d5c09012SAndroid Build Coastguard Worker  // The HTTPS URL that hosts the image.
709*d5c09012SAndroid Build Coastguard Worker  //
710*d5c09012SAndroid Build Coastguard Worker  // For example:
711*d5c09012SAndroid Build Coastguard Worker  //
712*d5c09012SAndroid Build Coastguard Worker  // ```
713*d5c09012SAndroid Build Coastguard Worker  // https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png
714*d5c09012SAndroid Build Coastguard Worker  // ```
715*d5c09012SAndroid Build Coastguard Worker  string image_url = 1;
716*d5c09012SAndroid Build Coastguard Worker
717*d5c09012SAndroid Build Coastguard Worker  // When a user clicks the image, the click triggers this action.
718*d5c09012SAndroid Build Coastguard Worker  OnClick on_click = 2;
719*d5c09012SAndroid Build Coastguard Worker
720*d5c09012SAndroid Build Coastguard Worker  // The alternative text of this image that's used for accessibility.
721*d5c09012SAndroid Build Coastguard Worker  string alt_text = 3;
722*d5c09012SAndroid Build Coastguard Worker}
723*d5c09012SAndroid Build Coastguard Worker
724*d5c09012SAndroid Build Coastguard Worker// Displays a divider between widgets as a horizontal line. For an example in
725*d5c09012SAndroid Build Coastguard Worker// Google Chat apps, see
726*d5c09012SAndroid Build Coastguard Worker// [Add a horizontal divider between
727*d5c09012SAndroid Build Coastguard Worker// widgets](https://developers.google.com/workspace/chat/format-structure-card-dialog#add_a_horizontal_divider_between_widgets).
728*d5c09012SAndroid Build Coastguard Worker//
729*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and Chat
730*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/extend):
731*d5c09012SAndroid Build Coastguard Worker//
732*d5c09012SAndroid Build Coastguard Worker// For example, the following JSON creates a divider:
733*d5c09012SAndroid Build Coastguard Worker//
734*d5c09012SAndroid Build Coastguard Worker// ```
735*d5c09012SAndroid Build Coastguard Worker// "divider": {}
736*d5c09012SAndroid Build Coastguard Worker// ```
737*d5c09012SAndroid Build Coastguard Workermessage Divider {}
738*d5c09012SAndroid Build Coastguard Worker
739*d5c09012SAndroid Build Coastguard Worker// A widget that displays text with optional decorations such as a label above
740*d5c09012SAndroid Build Coastguard Worker// or below the text, an icon in front of the text, a selection widget, or a
741*d5c09012SAndroid Build Coastguard Worker// button after the text. For an example in
742*d5c09012SAndroid Build Coastguard Worker// Google Chat apps, see [Display text with decorative
743*d5c09012SAndroid Build Coastguard Worker// text](https://developers.google.com/workspace/chat/add-text-image-card-dialog#display_text_with_decorative_elements).
744*d5c09012SAndroid Build Coastguard Worker//
745*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and Chat
746*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/extend):
747*d5c09012SAndroid Build Coastguard Workermessage DecoratedText {
748*d5c09012SAndroid Build Coastguard Worker  // Either a toggle-style switch or a checkbox inside a `decoratedText` widget.
749*d5c09012SAndroid Build Coastguard Worker  //
750*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
751*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
752*d5c09012SAndroid Build Coastguard Worker  //
753*d5c09012SAndroid Build Coastguard Worker  // Only supported in the `decoratedText` widget.
754*d5c09012SAndroid Build Coastguard Worker  message SwitchControl {
755*d5c09012SAndroid Build Coastguard Worker    // How the switch appears in the user interface.
756*d5c09012SAndroid Build Coastguard Worker    //
757*d5c09012SAndroid Build Coastguard Worker    // [Google Workspace Add-ons
758*d5c09012SAndroid Build Coastguard Worker    // and Chat apps](https://developers.google.com/workspace/extend):
759*d5c09012SAndroid Build Coastguard Worker    enum ControlType {
760*d5c09012SAndroid Build Coastguard Worker      // A toggle-style switch.
761*d5c09012SAndroid Build Coastguard Worker      SWITCH = 0;
762*d5c09012SAndroid Build Coastguard Worker
763*d5c09012SAndroid Build Coastguard Worker      // Deprecated in favor of `CHECK_BOX`.
764*d5c09012SAndroid Build Coastguard Worker      CHECKBOX = 1;
765*d5c09012SAndroid Build Coastguard Worker
766*d5c09012SAndroid Build Coastguard Worker      // A checkbox.
767*d5c09012SAndroid Build Coastguard Worker      CHECK_BOX = 2;
768*d5c09012SAndroid Build Coastguard Worker    }
769*d5c09012SAndroid Build Coastguard Worker
770*d5c09012SAndroid Build Coastguard Worker    // The name by which the switch widget is identified in a form input event.
771*d5c09012SAndroid Build Coastguard Worker    //
772*d5c09012SAndroid Build Coastguard Worker    // For details about working with form inputs, see [Receive form
773*d5c09012SAndroid Build Coastguard Worker    // data](https://developers.google.com/workspace/chat/read-form-data).
774*d5c09012SAndroid Build Coastguard Worker    string name = 1;
775*d5c09012SAndroid Build Coastguard Worker
776*d5c09012SAndroid Build Coastguard Worker    // The value entered by a user, returned as part of a form input event.
777*d5c09012SAndroid Build Coastguard Worker    //
778*d5c09012SAndroid Build Coastguard Worker    // For details about working with form inputs, see [Receive form
779*d5c09012SAndroid Build Coastguard Worker    // data](https://developers.google.com/workspace/chat/read-form-data).
780*d5c09012SAndroid Build Coastguard Worker    string value = 2;
781*d5c09012SAndroid Build Coastguard Worker
782*d5c09012SAndroid Build Coastguard Worker    // When `true`, the switch is selected.
783*d5c09012SAndroid Build Coastguard Worker    bool selected = 3;
784*d5c09012SAndroid Build Coastguard Worker
785*d5c09012SAndroid Build Coastguard Worker    // The action to perform when the switch state is changed, such as what
786*d5c09012SAndroid Build Coastguard Worker    //  function to run.
787*d5c09012SAndroid Build Coastguard Worker    Action on_change_action = 4;
788*d5c09012SAndroid Build Coastguard Worker
789*d5c09012SAndroid Build Coastguard Worker    // How the switch appears in the user interface.
790*d5c09012SAndroid Build Coastguard Worker    //
791*d5c09012SAndroid Build Coastguard Worker    // [Google Workspace Add-ons
792*d5c09012SAndroid Build Coastguard Worker    // and Chat apps](https://developers.google.com/workspace/extend):
793*d5c09012SAndroid Build Coastguard Worker    ControlType control_type = 5;
794*d5c09012SAndroid Build Coastguard Worker  }
795*d5c09012SAndroid Build Coastguard Worker
796*d5c09012SAndroid Build Coastguard Worker  // Deprecated in favor of `startIcon`.
797*d5c09012SAndroid Build Coastguard Worker  Icon icon = 1 [deprecated = true];
798*d5c09012SAndroid Build Coastguard Worker
799*d5c09012SAndroid Build Coastguard Worker  // The icon displayed in front of the text.
800*d5c09012SAndroid Build Coastguard Worker  Icon start_icon = 12;
801*d5c09012SAndroid Build Coastguard Worker
802*d5c09012SAndroid Build Coastguard Worker  // The text that appears above `text`. Always truncates.
803*d5c09012SAndroid Build Coastguard Worker  string top_label = 3;
804*d5c09012SAndroid Build Coastguard Worker
805*d5c09012SAndroid Build Coastguard Worker  // Required. The primary text.
806*d5c09012SAndroid Build Coastguard Worker  //
807*d5c09012SAndroid Build Coastguard Worker  // Supports simple formatting. For more information
808*d5c09012SAndroid Build Coastguard Worker  // about formatting text, see
809*d5c09012SAndroid Build Coastguard Worker  // [Formatting text in Google Chat
810*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/chat/format-messages#card-formatting)
811*d5c09012SAndroid Build Coastguard Worker  // and
812*d5c09012SAndroid Build Coastguard Worker  // [Formatting
813*d5c09012SAndroid Build Coastguard Worker  // text in Google Workspace
814*d5c09012SAndroid Build Coastguard Worker  // Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).
815*d5c09012SAndroid Build Coastguard Worker  string text = 4;
816*d5c09012SAndroid Build Coastguard Worker
817*d5c09012SAndroid Build Coastguard Worker  // The wrap text setting. If `true`, the text wraps and displays on
818*d5c09012SAndroid Build Coastguard Worker  // multiple lines. Otherwise, the text is truncated.
819*d5c09012SAndroid Build Coastguard Worker  //
820*d5c09012SAndroid Build Coastguard Worker  // Only applies to `text`, not `topLabel` and `bottomLabel`.
821*d5c09012SAndroid Build Coastguard Worker  bool wrap_text = 5;
822*d5c09012SAndroid Build Coastguard Worker
823*d5c09012SAndroid Build Coastguard Worker  // The text that appears below `text`. Always wraps.
824*d5c09012SAndroid Build Coastguard Worker  string bottom_label = 6;
825*d5c09012SAndroid Build Coastguard Worker
826*d5c09012SAndroid Build Coastguard Worker  // This action is triggered when users click `topLabel` or `bottomLabel`.
827*d5c09012SAndroid Build Coastguard Worker  OnClick on_click = 7;
828*d5c09012SAndroid Build Coastguard Worker
829*d5c09012SAndroid Build Coastguard Worker  // A button, switch, checkbox, or image that appears to the right-hand side
830*d5c09012SAndroid Build Coastguard Worker  // of text in the `decoratedText` widget.
831*d5c09012SAndroid Build Coastguard Worker  oneof control {
832*d5c09012SAndroid Build Coastguard Worker    // A button that a user can click to trigger an action.
833*d5c09012SAndroid Build Coastguard Worker    Button button = 8;
834*d5c09012SAndroid Build Coastguard Worker
835*d5c09012SAndroid Build Coastguard Worker    // A switch widget that a user can click to change its state and trigger an
836*d5c09012SAndroid Build Coastguard Worker    // action.
837*d5c09012SAndroid Build Coastguard Worker    SwitchControl switch_control = 9;
838*d5c09012SAndroid Build Coastguard Worker
839*d5c09012SAndroid Build Coastguard Worker    // An icon displayed after the text.
840*d5c09012SAndroid Build Coastguard Worker    //
841*d5c09012SAndroid Build Coastguard Worker    // Supports
842*d5c09012SAndroid Build Coastguard Worker    // [built-in](https://developers.google.com/workspace/chat/format-messages#builtinicons)
843*d5c09012SAndroid Build Coastguard Worker    // and
844*d5c09012SAndroid Build Coastguard Worker    // [custom](https://developers.google.com/workspace/chat/format-messages#customicons)
845*d5c09012SAndroid Build Coastguard Worker    // icons.
846*d5c09012SAndroid Build Coastguard Worker    Icon end_icon = 11;
847*d5c09012SAndroid Build Coastguard Worker  }
848*d5c09012SAndroid Build Coastguard Worker}
849*d5c09012SAndroid Build Coastguard Worker
850*d5c09012SAndroid Build Coastguard Worker// A field in which users can enter text. Supports suggestions and on-change
851*d5c09012SAndroid Build Coastguard Worker// actions. For an example in Google Chat apps, see [Add a field in which a user
852*d5c09012SAndroid Build Coastguard Worker// can enter
853*d5c09012SAndroid Build Coastguard Worker// text](https://developers.google.com/workspace/chat/design-interactive-card-dialog#add_a_field_in_which_a_user_can_enter_text).
854*d5c09012SAndroid Build Coastguard Worker//
855*d5c09012SAndroid Build Coastguard Worker// Chat apps receive and can process the value of entered text during form input
856*d5c09012SAndroid Build Coastguard Worker// events. For details about working with form inputs, see [Receive form
857*d5c09012SAndroid Build Coastguard Worker// data](https://developers.google.com/workspace/chat/read-form-data).
858*d5c09012SAndroid Build Coastguard Worker//
859*d5c09012SAndroid Build Coastguard Worker// When you need to collect undefined or abstract data from users,
860*d5c09012SAndroid Build Coastguard Worker// use a text input. To collect defined or enumerated data from users, use the
861*d5c09012SAndroid Build Coastguard Worker// [SelectionInput][google.apps.card.v1.SelectionInput] widget.
862*d5c09012SAndroid Build Coastguard Worker//
863*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and Chat
864*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/extend):
865*d5c09012SAndroid Build Coastguard Workermessage TextInput {
866*d5c09012SAndroid Build Coastguard Worker  // How a text input field appears in the user interface. For example,
867*d5c09012SAndroid Build Coastguard Worker  // whether it's a single line input field, or a multi-line input. If
868*d5c09012SAndroid Build Coastguard Worker  // `initialSuggestions` is specified, `type` is always `SINGLE_LINE`,
869*d5c09012SAndroid Build Coastguard Worker  // even if it's set to `MULTIPLE_LINE`.
870*d5c09012SAndroid Build Coastguard Worker  //
871*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
872*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
873*d5c09012SAndroid Build Coastguard Worker  enum Type {
874*d5c09012SAndroid Build Coastguard Worker    // The text input field has a fixed height of one line.
875*d5c09012SAndroid Build Coastguard Worker    SINGLE_LINE = 0;
876*d5c09012SAndroid Build Coastguard Worker
877*d5c09012SAndroid Build Coastguard Worker    // The text input field has a fixed height of multiple lines.
878*d5c09012SAndroid Build Coastguard Worker    MULTIPLE_LINE = 1;
879*d5c09012SAndroid Build Coastguard Worker  }
880*d5c09012SAndroid Build Coastguard Worker
881*d5c09012SAndroid Build Coastguard Worker  // The name by which the text input is identified in a form input event.
882*d5c09012SAndroid Build Coastguard Worker  //
883*d5c09012SAndroid Build Coastguard Worker  // For details about working with form inputs, see [Receive form
884*d5c09012SAndroid Build Coastguard Worker  // data](https://developers.google.com/workspace/chat/read-form-data).
885*d5c09012SAndroid Build Coastguard Worker  string name = 1;
886*d5c09012SAndroid Build Coastguard Worker
887*d5c09012SAndroid Build Coastguard Worker  // The text that appears above the text input field in the user interface.
888*d5c09012SAndroid Build Coastguard Worker  //
889*d5c09012SAndroid Build Coastguard Worker  // Specify text that helps the user enter the information your app needs.
890*d5c09012SAndroid Build Coastguard Worker  // For example, if you are asking someone's name, but specifically need their
891*d5c09012SAndroid Build Coastguard Worker  // surname, write `surname` instead of `name`.
892*d5c09012SAndroid Build Coastguard Worker  //
893*d5c09012SAndroid Build Coastguard Worker  // Required if `hintText` is unspecified. Otherwise, optional.
894*d5c09012SAndroid Build Coastguard Worker  string label = 2;
895*d5c09012SAndroid Build Coastguard Worker
896*d5c09012SAndroid Build Coastguard Worker  // Text that appears below the text input field meant to assist users by
897*d5c09012SAndroid Build Coastguard Worker  // prompting them to enter a certain value. This text is always visible.
898*d5c09012SAndroid Build Coastguard Worker  //
899*d5c09012SAndroid Build Coastguard Worker  // Required if `label` is unspecified. Otherwise, optional.
900*d5c09012SAndroid Build Coastguard Worker  string hint_text = 3;
901*d5c09012SAndroid Build Coastguard Worker
902*d5c09012SAndroid Build Coastguard Worker  // The value entered by a user, returned as part of a form input event.
903*d5c09012SAndroid Build Coastguard Worker  //
904*d5c09012SAndroid Build Coastguard Worker  // For details about working with form inputs, see [Receive form
905*d5c09012SAndroid Build Coastguard Worker  // data](https://developers.google.com/workspace/chat/read-form-data).
906*d5c09012SAndroid Build Coastguard Worker  string value = 4;
907*d5c09012SAndroid Build Coastguard Worker
908*d5c09012SAndroid Build Coastguard Worker  // How a text input field appears in the user interface.
909*d5c09012SAndroid Build Coastguard Worker  // For example, whether the field is single or multi-line.
910*d5c09012SAndroid Build Coastguard Worker  Type type = 5;
911*d5c09012SAndroid Build Coastguard Worker
912*d5c09012SAndroid Build Coastguard Worker  // What to do when a change occurs in the text input field. For example, a
913*d5c09012SAndroid Build Coastguard Worker  // user adding to the field or deleting text.
914*d5c09012SAndroid Build Coastguard Worker  //
915*d5c09012SAndroid Build Coastguard Worker  // Examples of actions to take include running a custom function or opening
916*d5c09012SAndroid Build Coastguard Worker  // a [dialog](https://developers.google.com/workspace/chat/dialogs)
917*d5c09012SAndroid Build Coastguard Worker  // in Google Chat.
918*d5c09012SAndroid Build Coastguard Worker  Action on_change_action = 6;
919*d5c09012SAndroid Build Coastguard Worker
920*d5c09012SAndroid Build Coastguard Worker  // Suggested values that users can enter. These values appear when users click
921*d5c09012SAndroid Build Coastguard Worker  // inside the text input field. As users type, the suggested values
922*d5c09012SAndroid Build Coastguard Worker  // dynamically filter to match what the users have typed.
923*d5c09012SAndroid Build Coastguard Worker  //
924*d5c09012SAndroid Build Coastguard Worker  // For example, a text input field for programming language might suggest
925*d5c09012SAndroid Build Coastguard Worker  // Java, JavaScript, Python, and C++. When users start typing `Jav`, the list
926*d5c09012SAndroid Build Coastguard Worker  // of suggestions filters to show just `Java` and `JavaScript`.
927*d5c09012SAndroid Build Coastguard Worker  //
928*d5c09012SAndroid Build Coastguard Worker  // Suggested values help guide users to enter values that your app can make
929*d5c09012SAndroid Build Coastguard Worker  // sense of. When referring to JavaScript, some users might enter `javascript`
930*d5c09012SAndroid Build Coastguard Worker  // and others `java script`. Suggesting `JavaScript` can standardize how users
931*d5c09012SAndroid Build Coastguard Worker  // interact with your app.
932*d5c09012SAndroid Build Coastguard Worker  //
933*d5c09012SAndroid Build Coastguard Worker  // When specified, `TextInput.type` is always `SINGLE_LINE`, even if it's set
934*d5c09012SAndroid Build Coastguard Worker  // to `MULTIPLE_LINE`.
935*d5c09012SAndroid Build Coastguard Worker  //
936*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace
937*d5c09012SAndroid Build Coastguard Worker  // Add-ons and Chat apps](https://developers.google.com/workspace/extend):
938*d5c09012SAndroid Build Coastguard Worker  Suggestions initial_suggestions = 7;
939*d5c09012SAndroid Build Coastguard Worker
940*d5c09012SAndroid Build Coastguard Worker  // Optional. Specify what action to take when the text input field provides
941*d5c09012SAndroid Build Coastguard Worker  // suggestions to users who interact with it.
942*d5c09012SAndroid Build Coastguard Worker  //
943*d5c09012SAndroid Build Coastguard Worker  // If unspecified, the suggestions are set by `initialSuggestions` and
944*d5c09012SAndroid Build Coastguard Worker  // are processed by the client.
945*d5c09012SAndroid Build Coastguard Worker  //
946*d5c09012SAndroid Build Coastguard Worker  // If specified, the app takes the action specified here, such as running
947*d5c09012SAndroid Build Coastguard Worker  // a custom function.
948*d5c09012SAndroid Build Coastguard Worker  //
949*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace
950*d5c09012SAndroid Build Coastguard Worker  // Add-ons](https://developers.google.com/workspace/add-ons):
951*d5c09012SAndroid Build Coastguard Worker  Action auto_complete_action = 8;
952*d5c09012SAndroid Build Coastguard Worker
953*d5c09012SAndroid Build Coastguard Worker  // Text that appears in the text input field when the field is empty.
954*d5c09012SAndroid Build Coastguard Worker  // Use this text to prompt users to enter a value. For example, `Enter a
955*d5c09012SAndroid Build Coastguard Worker  // number from 0 to 100`.
956*d5c09012SAndroid Build Coastguard Worker  //
957*d5c09012SAndroid Build Coastguard Worker  // [Google Chat apps](https://developers.google.com/workspace/chat):
958*d5c09012SAndroid Build Coastguard Worker  string placeholder_text = 12;
959*d5c09012SAndroid Build Coastguard Worker}
960*d5c09012SAndroid Build Coastguard Worker
961*d5c09012SAndroid Build Coastguard Worker// Suggested values that users can enter. These values appear when users click
962*d5c09012SAndroid Build Coastguard Worker// inside the text input field. As users type, the suggested values
963*d5c09012SAndroid Build Coastguard Worker// dynamically filter to match what the users have typed.
964*d5c09012SAndroid Build Coastguard Worker//
965*d5c09012SAndroid Build Coastguard Worker// For example, a text input field for programming language might suggest
966*d5c09012SAndroid Build Coastguard Worker// Java, JavaScript, Python, and C++. When users start typing `Jav`, the list
967*d5c09012SAndroid Build Coastguard Worker// of suggestions filters to show `Java` and `JavaScript`.
968*d5c09012SAndroid Build Coastguard Worker//
969*d5c09012SAndroid Build Coastguard Worker// Suggested values help guide users to enter values that your app can make
970*d5c09012SAndroid Build Coastguard Worker// sense of. When referring to JavaScript, some users might enter `javascript`
971*d5c09012SAndroid Build Coastguard Worker// and others `java script`. Suggesting `JavaScript` can standardize how users
972*d5c09012SAndroid Build Coastguard Worker// interact with your app.
973*d5c09012SAndroid Build Coastguard Worker//
974*d5c09012SAndroid Build Coastguard Worker// When specified, `TextInput.type` is always `SINGLE_LINE`, even if it's set
975*d5c09012SAndroid Build Coastguard Worker// to `MULTIPLE_LINE`.
976*d5c09012SAndroid Build Coastguard Worker//
977*d5c09012SAndroid Build Coastguard Worker// [Google Workspace
978*d5c09012SAndroid Build Coastguard Worker// Add-ons and Chat apps](https://developers.google.com/workspace/extend):
979*d5c09012SAndroid Build Coastguard Workermessage Suggestions {
980*d5c09012SAndroid Build Coastguard Worker  // One suggested value that users can enter in a text input field.
981*d5c09012SAndroid Build Coastguard Worker  //
982*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
983*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
984*d5c09012SAndroid Build Coastguard Worker  message SuggestionItem {
985*d5c09012SAndroid Build Coastguard Worker    oneof content {
986*d5c09012SAndroid Build Coastguard Worker      // The value of a suggested input to a text input field. This is
987*d5c09012SAndroid Build Coastguard Worker      // equivalent to what users enter themselves.
988*d5c09012SAndroid Build Coastguard Worker      string text = 1;
989*d5c09012SAndroid Build Coastguard Worker    }
990*d5c09012SAndroid Build Coastguard Worker  }
991*d5c09012SAndroid Build Coastguard Worker
992*d5c09012SAndroid Build Coastguard Worker  // A list of suggestions used for autocomplete recommendations in text input
993*d5c09012SAndroid Build Coastguard Worker  // fields.
994*d5c09012SAndroid Build Coastguard Worker  repeated SuggestionItem items = 1;
995*d5c09012SAndroid Build Coastguard Worker}
996*d5c09012SAndroid Build Coastguard Worker
997*d5c09012SAndroid Build Coastguard Worker// A list of buttons layed out horizontally. For an example in
998*d5c09012SAndroid Build Coastguard Worker// Google Chat apps, see
999*d5c09012SAndroid Build Coastguard Worker// [Add a
1000*d5c09012SAndroid Build Coastguard Worker// button](https://developers.google.com/workspace/chat/design-interactive-card-dialog#add_a_button).
1001*d5c09012SAndroid Build Coastguard Worker//
1002*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and Chat
1003*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/extend):
1004*d5c09012SAndroid Build Coastguard Workermessage ButtonList {
1005*d5c09012SAndroid Build Coastguard Worker  // An array of buttons.
1006*d5c09012SAndroid Build Coastguard Worker  repeated Button buttons = 1;
1007*d5c09012SAndroid Build Coastguard Worker}
1008*d5c09012SAndroid Build Coastguard Worker
1009*d5c09012SAndroid Build Coastguard Worker// A widget that creates one or more UI items that users can select.
1010*d5c09012SAndroid Build Coastguard Worker// For example, a dropdown menu or checkboxes. You can use this widget to
1011*d5c09012SAndroid Build Coastguard Worker// collect data that can be predicted or enumerated. For an example in Google
1012*d5c09012SAndroid Build Coastguard Worker// Chat apps, see [Add selectable UI
1013*d5c09012SAndroid Build Coastguard Worker// elements](/workspace/chat/design-interactive-card-dialog#add_selectable_ui_elements).
1014*d5c09012SAndroid Build Coastguard Worker//
1015*d5c09012SAndroid Build Coastguard Worker// Chat apps can process the value of items that users select or input. For
1016*d5c09012SAndroid Build Coastguard Worker// details about working with form inputs, see [Receive form
1017*d5c09012SAndroid Build Coastguard Worker// data](https://developers.google.com/workspace/chat/read-form-data).
1018*d5c09012SAndroid Build Coastguard Worker//
1019*d5c09012SAndroid Build Coastguard Worker// To collect undefined or abstract data from users, use
1020*d5c09012SAndroid Build Coastguard Worker// the [TextInput][google.apps.card.v1.TextInput] widget.
1021*d5c09012SAndroid Build Coastguard Worker//
1022*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons
1023*d5c09012SAndroid Build Coastguard Worker// and Chat apps](https://developers.google.com/workspace/extend):
1024*d5c09012SAndroid Build Coastguard Workermessage SelectionInput {
1025*d5c09012SAndroid Build Coastguard Worker  // The format for the items that users can select. Different options support
1026*d5c09012SAndroid Build Coastguard Worker  // different types of interactions. For example, users can select multiple
1027*d5c09012SAndroid Build Coastguard Worker  // checkboxes, but can only select one item from a dropdown menu.
1028*d5c09012SAndroid Build Coastguard Worker  //
1029*d5c09012SAndroid Build Coastguard Worker  // Each selection input supports one type of selection. Mixing checkboxes
1030*d5c09012SAndroid Build Coastguard Worker  // and switches, for example, isn't supported.
1031*d5c09012SAndroid Build Coastguard Worker  //
1032*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
1033*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
1034*d5c09012SAndroid Build Coastguard Worker  enum SelectionType {
1035*d5c09012SAndroid Build Coastguard Worker    // A set of checkboxes. Users can select one or more checkboxes.
1036*d5c09012SAndroid Build Coastguard Worker    CHECK_BOX = 0;
1037*d5c09012SAndroid Build Coastguard Worker
1038*d5c09012SAndroid Build Coastguard Worker    // A set of radio buttons. Users can select one radio button.
1039*d5c09012SAndroid Build Coastguard Worker    RADIO_BUTTON = 1;
1040*d5c09012SAndroid Build Coastguard Worker
1041*d5c09012SAndroid Build Coastguard Worker    // A set of switches. Users can turn on one or more switches.
1042*d5c09012SAndroid Build Coastguard Worker    SWITCH = 2;
1043*d5c09012SAndroid Build Coastguard Worker
1044*d5c09012SAndroid Build Coastguard Worker    // A dropdown menu. Users can select one item from the menu.
1045*d5c09012SAndroid Build Coastguard Worker    DROPDOWN = 3;
1046*d5c09012SAndroid Build Coastguard Worker
1047*d5c09012SAndroid Build Coastguard Worker    // A multiselect menu for static or dynamic data. From the menu bar,
1048*d5c09012SAndroid Build Coastguard Worker    // users select one or more items. Users can also input values to populate
1049*d5c09012SAndroid Build Coastguard Worker    // dynamic data. For example, users can start typing the name of a Google
1050*d5c09012SAndroid Build Coastguard Worker    // Chat space and the widget autosuggests the space.
1051*d5c09012SAndroid Build Coastguard Worker    //
1052*d5c09012SAndroid Build Coastguard Worker    // To populate items for a multiselect menu, you can use one of the
1053*d5c09012SAndroid Build Coastguard Worker    // following types of data sources:
1054*d5c09012SAndroid Build Coastguard Worker    //
1055*d5c09012SAndroid Build Coastguard Worker    //  * Static data: Items are specified as `SelectionItem` objects in the
1056*d5c09012SAndroid Build Coastguard Worker    //    widget. Up to 100 items.
1057*d5c09012SAndroid Build Coastguard Worker    //  * Google Workspace data: Items are populated using data from Google
1058*d5c09012SAndroid Build Coastguard Worker    //    Workspace, such as Google Workspace users or Google Chat spaces.
1059*d5c09012SAndroid Build Coastguard Worker    //  * External data: Items are populated from an external data
1060*d5c09012SAndroid Build Coastguard Worker    //    source outside of Google Workspace.
1061*d5c09012SAndroid Build Coastguard Worker    //
1062*d5c09012SAndroid Build Coastguard Worker    // For examples of how to implement multiselect menus, see
1063*d5c09012SAndroid Build Coastguard Worker    // [Add a multiselect
1064*d5c09012SAndroid Build Coastguard Worker    // menu](https://developers.google.com/workspace/chat/design-interactive-card-dialog#multiselect-menu).
1065*d5c09012SAndroid Build Coastguard Worker    //
1066*d5c09012SAndroid Build Coastguard Worker    // [Google Workspace Add-ons and Chat
1067*d5c09012SAndroid Build Coastguard Worker    // apps](https://developers.google.com/workspace/extend):
1068*d5c09012SAndroid Build Coastguard Worker    // Multiselect for Google Workspace Add-ons are in
1069*d5c09012SAndroid Build Coastguard Worker    // Developer Preview.
1070*d5c09012SAndroid Build Coastguard Worker    MULTI_SELECT = 4;
1071*d5c09012SAndroid Build Coastguard Worker  }
1072*d5c09012SAndroid Build Coastguard Worker
1073*d5c09012SAndroid Build Coastguard Worker  // An item that users can select in a selection input, such as a checkbox
1074*d5c09012SAndroid Build Coastguard Worker  // or switch.
1075*d5c09012SAndroid Build Coastguard Worker  //
1076*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
1077*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
1078*d5c09012SAndroid Build Coastguard Worker  message SelectionItem {
1079*d5c09012SAndroid Build Coastguard Worker    // The text that identifies or describes the item to users.
1080*d5c09012SAndroid Build Coastguard Worker    string text = 1;
1081*d5c09012SAndroid Build Coastguard Worker
1082*d5c09012SAndroid Build Coastguard Worker    // The value associated with this item. The client should use this as a form
1083*d5c09012SAndroid Build Coastguard Worker    // input value.
1084*d5c09012SAndroid Build Coastguard Worker    //
1085*d5c09012SAndroid Build Coastguard Worker    // For details about working with form inputs, see [Receive form
1086*d5c09012SAndroid Build Coastguard Worker    // data](https://developers.google.com/workspace/chat/read-form-data).
1087*d5c09012SAndroid Build Coastguard Worker    string value = 2;
1088*d5c09012SAndroid Build Coastguard Worker
1089*d5c09012SAndroid Build Coastguard Worker    // Whether the item is selected by default. If the selection input only
1090*d5c09012SAndroid Build Coastguard Worker    // accepts one value (such as for radio buttons or a dropdown menu), only
1091*d5c09012SAndroid Build Coastguard Worker    // set this field for one item.
1092*d5c09012SAndroid Build Coastguard Worker    bool selected = 3;
1093*d5c09012SAndroid Build Coastguard Worker
1094*d5c09012SAndroid Build Coastguard Worker    // For multiselect menus, the URL for the icon displayed next to
1095*d5c09012SAndroid Build Coastguard Worker    // the item's `text` field. Supports PNG and JPEG files. Must be an `HTTPS`
1096*d5c09012SAndroid Build Coastguard Worker    // URL. For example,
1097*d5c09012SAndroid Build Coastguard Worker    // `https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png`.
1098*d5c09012SAndroid Build Coastguard Worker    string start_icon_uri = 4;
1099*d5c09012SAndroid Build Coastguard Worker
1100*d5c09012SAndroid Build Coastguard Worker    // For multiselect menus, a text description or label that's
1101*d5c09012SAndroid Build Coastguard Worker    // displayed below the item's `text` field.
1102*d5c09012SAndroid Build Coastguard Worker    string bottom_text = 5;
1103*d5c09012SAndroid Build Coastguard Worker  }
1104*d5c09012SAndroid Build Coastguard Worker
1105*d5c09012SAndroid Build Coastguard Worker  // For a
1106*d5c09012SAndroid Build Coastguard Worker  // [`SelectionInput`][google.apps.card.v1.SelectionInput] widget that uses a
1107*d5c09012SAndroid Build Coastguard Worker  // multiselect menu, a data source from Google Workspace. Used to populate
1108*d5c09012SAndroid Build Coastguard Worker  // items in a multiselect menu.
1109*d5c09012SAndroid Build Coastguard Worker  //
1110*d5c09012SAndroid Build Coastguard Worker  // [Google Chat apps](https://developers.google.com/workspace/chat):
1111*d5c09012SAndroid Build Coastguard Worker  message PlatformDataSource {
1112*d5c09012SAndroid Build Coastguard Worker    // A data source shared by all [Google Workspace
1113*d5c09012SAndroid Build Coastguard Worker    // applications]
1114*d5c09012SAndroid Build Coastguard Worker    // (https://developers.google.com/workspace/chat/api/reference/rest/v1/HostApp).
1115*d5c09012SAndroid Build Coastguard Worker    //
1116*d5c09012SAndroid Build Coastguard Worker    // [Google Chat apps](https://developers.google.com/workspace/chat):
1117*d5c09012SAndroid Build Coastguard Worker    enum CommonDataSource {
1118*d5c09012SAndroid Build Coastguard Worker      // Default value. Don't use.
1119*d5c09012SAndroid Build Coastguard Worker      UNKNOWN = 0;
1120*d5c09012SAndroid Build Coastguard Worker
1121*d5c09012SAndroid Build Coastguard Worker      // Google Workspace users. The user can only view and select users from
1122*d5c09012SAndroid Build Coastguard Worker      // their Google Workspace organization.
1123*d5c09012SAndroid Build Coastguard Worker      USER = 1;
1124*d5c09012SAndroid Build Coastguard Worker    }
1125*d5c09012SAndroid Build Coastguard Worker
1126*d5c09012SAndroid Build Coastguard Worker    // The data source.
1127*d5c09012SAndroid Build Coastguard Worker    oneof data_source {
1128*d5c09012SAndroid Build Coastguard Worker      // A data source shared by all Google Workspace applications, such as
1129*d5c09012SAndroid Build Coastguard Worker      // users in a Google Workspace organization.
1130*d5c09012SAndroid Build Coastguard Worker      CommonDataSource common_data_source = 1;
1131*d5c09012SAndroid Build Coastguard Worker    }
1132*d5c09012SAndroid Build Coastguard Worker  }
1133*d5c09012SAndroid Build Coastguard Worker
1134*d5c09012SAndroid Build Coastguard Worker  // The name that identifies the selection input in a form input event.
1135*d5c09012SAndroid Build Coastguard Worker  //
1136*d5c09012SAndroid Build Coastguard Worker  // For details about working with form inputs, see [Receive form
1137*d5c09012SAndroid Build Coastguard Worker  // data](https://developers.google.com/workspace/chat/read-form-data).
1138*d5c09012SAndroid Build Coastguard Worker  string name = 1;
1139*d5c09012SAndroid Build Coastguard Worker
1140*d5c09012SAndroid Build Coastguard Worker  // The text that appears above the selection input field in the user
1141*d5c09012SAndroid Build Coastguard Worker  // interface.
1142*d5c09012SAndroid Build Coastguard Worker  //
1143*d5c09012SAndroid Build Coastguard Worker  // Specify text that helps the user enter the information your app needs.
1144*d5c09012SAndroid Build Coastguard Worker  // For example, if users are selecting the urgency of a work ticket from a
1145*d5c09012SAndroid Build Coastguard Worker  // drop-down menu, the label might be "Urgency" or "Select urgency".
1146*d5c09012SAndroid Build Coastguard Worker  string label = 2;
1147*d5c09012SAndroid Build Coastguard Worker
1148*d5c09012SAndroid Build Coastguard Worker  // The type of items that are displayed to users in a `SelectionInput` widget.
1149*d5c09012SAndroid Build Coastguard Worker  // Selection types support different types of interactions. For example, users
1150*d5c09012SAndroid Build Coastguard Worker  // can select one or more checkboxes, but they can only select one value from
1151*d5c09012SAndroid Build Coastguard Worker  // a dropdown menu.
1152*d5c09012SAndroid Build Coastguard Worker  SelectionType type = 3;
1153*d5c09012SAndroid Build Coastguard Worker
1154*d5c09012SAndroid Build Coastguard Worker  // An array of selectable items. For example, an array of radio buttons or
1155*d5c09012SAndroid Build Coastguard Worker  // checkboxes. Supports up to 100 items.
1156*d5c09012SAndroid Build Coastguard Worker  repeated SelectionItem items = 4;
1157*d5c09012SAndroid Build Coastguard Worker
1158*d5c09012SAndroid Build Coastguard Worker  // If specified, the form is submitted when the selection changes. If not
1159*d5c09012SAndroid Build Coastguard Worker  // specified, you must specify a separate button that submits the form.
1160*d5c09012SAndroid Build Coastguard Worker  //
1161*d5c09012SAndroid Build Coastguard Worker  // For details about working with form inputs, see [Receive form
1162*d5c09012SAndroid Build Coastguard Worker  // data](https://developers.google.com/workspace/chat/read-form-data).
1163*d5c09012SAndroid Build Coastguard Worker  Action on_change_action = 5;
1164*d5c09012SAndroid Build Coastguard Worker
1165*d5c09012SAndroid Build Coastguard Worker  // For multiselect menus, the maximum number of items that a user can select.
1166*d5c09012SAndroid Build Coastguard Worker  // Minimum value is 1 item. If unspecified, defaults to 3 items.
1167*d5c09012SAndroid Build Coastguard Worker  int32 multi_select_max_selected_items = 6;
1168*d5c09012SAndroid Build Coastguard Worker
1169*d5c09012SAndroid Build Coastguard Worker  // For multiselect menus, the number of text characters that a user inputs
1170*d5c09012SAndroid Build Coastguard Worker  // before the app queries autocomplete and displays suggested items
1171*d5c09012SAndroid Build Coastguard Worker  // in the menu.
1172*d5c09012SAndroid Build Coastguard Worker  //
1173*d5c09012SAndroid Build Coastguard Worker  // If unspecified, defaults to 0 characters for static data sources and 3
1174*d5c09012SAndroid Build Coastguard Worker  // characters for external data sources.
1175*d5c09012SAndroid Build Coastguard Worker  int32 multi_select_min_query_length = 7;
1176*d5c09012SAndroid Build Coastguard Worker
1177*d5c09012SAndroid Build Coastguard Worker  // For a multiselect menu, the data source that populates
1178*d5c09012SAndroid Build Coastguard Worker  // selection items.
1179*d5c09012SAndroid Build Coastguard Worker  //
1180*d5c09012SAndroid Build Coastguard Worker  // [Google Chat apps](https://developers.google.com/workspace/chat):
1181*d5c09012SAndroid Build Coastguard Worker  oneof multi_select_data_source {
1182*d5c09012SAndroid Build Coastguard Worker    // An external data source, such as a relational data base.
1183*d5c09012SAndroid Build Coastguard Worker    Action external_data_source = 8;
1184*d5c09012SAndroid Build Coastguard Worker
1185*d5c09012SAndroid Build Coastguard Worker    // A data source from Google Workspace.
1186*d5c09012SAndroid Build Coastguard Worker    PlatformDataSource platform_data_source = 9;
1187*d5c09012SAndroid Build Coastguard Worker  }
1188*d5c09012SAndroid Build Coastguard Worker}
1189*d5c09012SAndroid Build Coastguard Worker
1190*d5c09012SAndroid Build Coastguard Worker// Lets users input a date, a time, or both a date and a time. For an example in
1191*d5c09012SAndroid Build Coastguard Worker// Google Chat apps, see [Let a user pick a date and
1192*d5c09012SAndroid Build Coastguard Worker// time](https://developers.google.com/workspace/chat/design-interactive-card-dialog#let_a_user_pick_a_date_and_time).
1193*d5c09012SAndroid Build Coastguard Worker//
1194*d5c09012SAndroid Build Coastguard Worker// Users can input text or use the picker to select dates and times. If users
1195*d5c09012SAndroid Build Coastguard Worker// input an invalid date or time, the picker shows an error that prompts users
1196*d5c09012SAndroid Build Coastguard Worker// to input the information correctly.
1197*d5c09012SAndroid Build Coastguard Worker//
1198*d5c09012SAndroid Build Coastguard Worker// [Google Workspace
1199*d5c09012SAndroid Build Coastguard Worker// Add-ons and Chat apps](https://developers.google.com/workspace/extend):
1200*d5c09012SAndroid Build Coastguard Workermessage DateTimePicker {
1201*d5c09012SAndroid Build Coastguard Worker  // The format for the date and time in the `DateTimePicker` widget.
1202*d5c09012SAndroid Build Coastguard Worker  // Determines whether users can input a date, a time, or both a date and time.
1203*d5c09012SAndroid Build Coastguard Worker  //
1204*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
1205*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
1206*d5c09012SAndroid Build Coastguard Worker  enum DateTimePickerType {
1207*d5c09012SAndroid Build Coastguard Worker    // Users input a date and time.
1208*d5c09012SAndroid Build Coastguard Worker    DATE_AND_TIME = 0;
1209*d5c09012SAndroid Build Coastguard Worker
1210*d5c09012SAndroid Build Coastguard Worker    // Users input a date.
1211*d5c09012SAndroid Build Coastguard Worker    DATE_ONLY = 1;
1212*d5c09012SAndroid Build Coastguard Worker
1213*d5c09012SAndroid Build Coastguard Worker    // Users input a time.
1214*d5c09012SAndroid Build Coastguard Worker    TIME_ONLY = 2;
1215*d5c09012SAndroid Build Coastguard Worker  }
1216*d5c09012SAndroid Build Coastguard Worker
1217*d5c09012SAndroid Build Coastguard Worker  // The name by which the `DateTimePicker` is identified in a form input event.
1218*d5c09012SAndroid Build Coastguard Worker  //
1219*d5c09012SAndroid Build Coastguard Worker  // For details about working with form inputs, see [Receive form
1220*d5c09012SAndroid Build Coastguard Worker  // data](https://developers.google.com/workspace/chat/read-form-data).
1221*d5c09012SAndroid Build Coastguard Worker  string name = 1;
1222*d5c09012SAndroid Build Coastguard Worker
1223*d5c09012SAndroid Build Coastguard Worker  // The text that prompts users to input a date, a time, or a date and time.
1224*d5c09012SAndroid Build Coastguard Worker  // For example, if users are scheduling an appointment, use a label such as
1225*d5c09012SAndroid Build Coastguard Worker  // `Appointment date` or `Appointment date and time`.
1226*d5c09012SAndroid Build Coastguard Worker  string label = 2;
1227*d5c09012SAndroid Build Coastguard Worker
1228*d5c09012SAndroid Build Coastguard Worker  // Whether the widget supports inputting a date, a time, or the date and time.
1229*d5c09012SAndroid Build Coastguard Worker  DateTimePickerType type = 3;
1230*d5c09012SAndroid Build Coastguard Worker
1231*d5c09012SAndroid Build Coastguard Worker  // The default value displayed in the widget, in milliseconds since [Unix
1232*d5c09012SAndroid Build Coastguard Worker  // epoch time](https://en.wikipedia.org/wiki/Unix_time).
1233*d5c09012SAndroid Build Coastguard Worker  //
1234*d5c09012SAndroid Build Coastguard Worker  // Specify the value based on the type of picker (`DateTimePickerType`):
1235*d5c09012SAndroid Build Coastguard Worker  //
1236*d5c09012SAndroid Build Coastguard Worker  // * `DATE_AND_TIME`: a calendar date and time in UTC. For example, to
1237*d5c09012SAndroid Build Coastguard Worker  //   represent January 1, 2023 at 12:00 PM UTC, use `1672574400000`.
1238*d5c09012SAndroid Build Coastguard Worker  // * `DATE_ONLY`: a calendar date at 00:00:00 UTC. For example, to represent
1239*d5c09012SAndroid Build Coastguard Worker  //   January 1, 2023, use `1672531200000`.
1240*d5c09012SAndroid Build Coastguard Worker  // * `TIME_ONLY`: a time in UTC. For example, to represent 12:00 PM, use
1241*d5c09012SAndroid Build Coastguard Worker  //   `43200000` (or `12 * 60 * 60 * 1000`).
1242*d5c09012SAndroid Build Coastguard Worker  int64 value_ms_epoch = 4;
1243*d5c09012SAndroid Build Coastguard Worker
1244*d5c09012SAndroid Build Coastguard Worker  // The number representing the time zone offset from UTC, in minutes.
1245*d5c09012SAndroid Build Coastguard Worker  // If set, the `value_ms_epoch` is displayed in the specified time zone.
1246*d5c09012SAndroid Build Coastguard Worker  // If unset, the value defaults to the user's time zone setting.
1247*d5c09012SAndroid Build Coastguard Worker  int32 timezone_offset_date = 5;
1248*d5c09012SAndroid Build Coastguard Worker
1249*d5c09012SAndroid Build Coastguard Worker  // Triggered when the user clicks **Save** or **Clear** from the
1250*d5c09012SAndroid Build Coastguard Worker  // `DateTimePicker` interface.
1251*d5c09012SAndroid Build Coastguard Worker  Action on_change_action = 6;
1252*d5c09012SAndroid Build Coastguard Worker}
1253*d5c09012SAndroid Build Coastguard Worker
1254*d5c09012SAndroid Build Coastguard Worker// A text, icon, or text and icon button that users can click. For an example in
1255*d5c09012SAndroid Build Coastguard Worker// Google Chat apps, see
1256*d5c09012SAndroid Build Coastguard Worker// [Add a
1257*d5c09012SAndroid Build Coastguard Worker// button](https://developers.google.com/workspace/chat/design-interactive-card-dialog#add_a_button).
1258*d5c09012SAndroid Build Coastguard Worker//
1259*d5c09012SAndroid Build Coastguard Worker// To make an image a clickable button, specify an
1260*d5c09012SAndroid Build Coastguard Worker// [`Image`][google.apps.card.v1.Image] (not an
1261*d5c09012SAndroid Build Coastguard Worker// [`ImageComponent`][google.apps.card.v1.ImageComponent]) and set an
1262*d5c09012SAndroid Build Coastguard Worker// `onClick` action.
1263*d5c09012SAndroid Build Coastguard Worker//
1264*d5c09012SAndroid Build Coastguard Worker// [Google Workspace
1265*d5c09012SAndroid Build Coastguard Worker// Add-ons and Chat apps](https://developers.google.com/workspace/extend):
1266*d5c09012SAndroid Build Coastguard Workermessage Button {
1267*d5c09012SAndroid Build Coastguard Worker  // The text displayed inside the button.
1268*d5c09012SAndroid Build Coastguard Worker  string text = 1;
1269*d5c09012SAndroid Build Coastguard Worker
1270*d5c09012SAndroid Build Coastguard Worker  // The icon image. If both `icon` and `text` are set, then the icon appears
1271*d5c09012SAndroid Build Coastguard Worker  // before the text.
1272*d5c09012SAndroid Build Coastguard Worker  Icon icon = 2;
1273*d5c09012SAndroid Build Coastguard Worker
1274*d5c09012SAndroid Build Coastguard Worker  // If set, the button is filled with a solid background color and the font
1275*d5c09012SAndroid Build Coastguard Worker  // color changes to maintain contrast with the background color. For example,
1276*d5c09012SAndroid Build Coastguard Worker  // setting a blue background likely results in white text.
1277*d5c09012SAndroid Build Coastguard Worker  //
1278*d5c09012SAndroid Build Coastguard Worker  // If unset, the image background is white and the font color is blue.
1279*d5c09012SAndroid Build Coastguard Worker  //
1280*d5c09012SAndroid Build Coastguard Worker  // For red, green, and blue, the value of each field is a `float` number that
1281*d5c09012SAndroid Build Coastguard Worker  // you can express in either of two ways: as a number between 0 and 255
1282*d5c09012SAndroid Build Coastguard Worker  // divided by 255 (153/255), or as a value between 0 and 1 (0.6). 0 represents
1283*d5c09012SAndroid Build Coastguard Worker  // the absence of a color and 1 or 255/255 represent the full presence of that
1284*d5c09012SAndroid Build Coastguard Worker  // color on the RGB scale.
1285*d5c09012SAndroid Build Coastguard Worker  //
1286*d5c09012SAndroid Build Coastguard Worker  // Optionally set `alpha`, which sets a level of transparency using this
1287*d5c09012SAndroid Build Coastguard Worker  // equation:
1288*d5c09012SAndroid Build Coastguard Worker  //
1289*d5c09012SAndroid Build Coastguard Worker  // ```
1290*d5c09012SAndroid Build Coastguard Worker  // pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
1291*d5c09012SAndroid Build Coastguard Worker  // ```
1292*d5c09012SAndroid Build Coastguard Worker  //
1293*d5c09012SAndroid Build Coastguard Worker  // For `alpha`, a value of `1` corresponds with a solid color, and a value of
1294*d5c09012SAndroid Build Coastguard Worker  // `0` corresponds with a completely transparent color.
1295*d5c09012SAndroid Build Coastguard Worker  //
1296*d5c09012SAndroid Build Coastguard Worker  // For example, the following color represents a half transparent red:
1297*d5c09012SAndroid Build Coastguard Worker  //
1298*d5c09012SAndroid Build Coastguard Worker  // ```
1299*d5c09012SAndroid Build Coastguard Worker  // "color": {
1300*d5c09012SAndroid Build Coastguard Worker  //    "red": 1,
1301*d5c09012SAndroid Build Coastguard Worker  //    "green": 0,
1302*d5c09012SAndroid Build Coastguard Worker  //    "blue": 0,
1303*d5c09012SAndroid Build Coastguard Worker  //    "alpha": 0.5
1304*d5c09012SAndroid Build Coastguard Worker  // }
1305*d5c09012SAndroid Build Coastguard Worker  // ```
1306*d5c09012SAndroid Build Coastguard Worker  google.type.Color color = 3;
1307*d5c09012SAndroid Build Coastguard Worker
1308*d5c09012SAndroid Build Coastguard Worker  // Required. The action to perform when a user clicks the button, such as
1309*d5c09012SAndroid Build Coastguard Worker  // opening a hyperlink or running a custom function.
1310*d5c09012SAndroid Build Coastguard Worker  OnClick on_click = 4;
1311*d5c09012SAndroid Build Coastguard Worker
1312*d5c09012SAndroid Build Coastguard Worker  // If `true`, the button is displayed in an inactive state and doesn't respond
1313*d5c09012SAndroid Build Coastguard Worker  // to user actions.
1314*d5c09012SAndroid Build Coastguard Worker  bool disabled = 5;
1315*d5c09012SAndroid Build Coastguard Worker
1316*d5c09012SAndroid Build Coastguard Worker  // The alternative text that's used for accessibility.
1317*d5c09012SAndroid Build Coastguard Worker  //
1318*d5c09012SAndroid Build Coastguard Worker  // Set descriptive text that lets users know what the button does. For
1319*d5c09012SAndroid Build Coastguard Worker  // example, if a button opens a hyperlink, you might write: "Opens a new
1320*d5c09012SAndroid Build Coastguard Worker  // browser tab and navigates to the Google Chat developer documentation at
1321*d5c09012SAndroid Build Coastguard Worker  // https://developers.google.com/workspace/chat".
1322*d5c09012SAndroid Build Coastguard Worker  string alt_text = 6;
1323*d5c09012SAndroid Build Coastguard Worker}
1324*d5c09012SAndroid Build Coastguard Worker
1325*d5c09012SAndroid Build Coastguard Worker// An icon displayed in a widget on a card. For an example in Google Chat apps,
1326*d5c09012SAndroid Build Coastguard Worker// see [Add an
1327*d5c09012SAndroid Build Coastguard Worker// icon](https://developers.google.com/workspace/chat/add-text-image-card-dialog#add_an_icon).
1328*d5c09012SAndroid Build Coastguard Worker//
1329*d5c09012SAndroid Build Coastguard Worker// Supports
1330*d5c09012SAndroid Build Coastguard Worker// [built-in](https://developers.google.com/workspace/chat/format-messages#builtinicons)
1331*d5c09012SAndroid Build Coastguard Worker// and
1332*d5c09012SAndroid Build Coastguard Worker// [custom](https://developers.google.com/workspace/chat/format-messages#customicons)
1333*d5c09012SAndroid Build Coastguard Worker// icons.
1334*d5c09012SAndroid Build Coastguard Worker//
1335*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and Chat
1336*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/extend):
1337*d5c09012SAndroid Build Coastguard Workermessage Icon {
1338*d5c09012SAndroid Build Coastguard Worker  // The icon displayed in the widget on the card.
1339*d5c09012SAndroid Build Coastguard Worker  oneof icons {
1340*d5c09012SAndroid Build Coastguard Worker    // Display one of the built-in icons provided by Google Workspace.
1341*d5c09012SAndroid Build Coastguard Worker    //
1342*d5c09012SAndroid Build Coastguard Worker    // For example, to display an airplane icon, specify `AIRPLANE`.
1343*d5c09012SAndroid Build Coastguard Worker    // For a bus, specify `BUS`.
1344*d5c09012SAndroid Build Coastguard Worker    //
1345*d5c09012SAndroid Build Coastguard Worker    // For a full list of supported icons, see [built-in
1346*d5c09012SAndroid Build Coastguard Worker    // icons](https://developers.google.com/workspace/chat/format-messages#builtinicons).
1347*d5c09012SAndroid Build Coastguard Worker    string known_icon = 1;
1348*d5c09012SAndroid Build Coastguard Worker
1349*d5c09012SAndroid Build Coastguard Worker    // Display a custom icon hosted at an HTTPS URL.
1350*d5c09012SAndroid Build Coastguard Worker    //
1351*d5c09012SAndroid Build Coastguard Worker    // For example:
1352*d5c09012SAndroid Build Coastguard Worker    //
1353*d5c09012SAndroid Build Coastguard Worker    // ```
1354*d5c09012SAndroid Build Coastguard Worker    // "iconUrl":
1355*d5c09012SAndroid Build Coastguard Worker    // "https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png"
1356*d5c09012SAndroid Build Coastguard Worker    // ```
1357*d5c09012SAndroid Build Coastguard Worker    //
1358*d5c09012SAndroid Build Coastguard Worker    // Supported file types include `.png` and `.jpg`.
1359*d5c09012SAndroid Build Coastguard Worker    string icon_url = 2;
1360*d5c09012SAndroid Build Coastguard Worker
1361*d5c09012SAndroid Build Coastguard Worker    // Display one of the [Google Material
1362*d5c09012SAndroid Build Coastguard Worker    // Icons](https://fonts.google.com/icons).
1363*d5c09012SAndroid Build Coastguard Worker    //
1364*d5c09012SAndroid Build Coastguard Worker    // For example, to display a [checkbox
1365*d5c09012SAndroid Build Coastguard Worker    // icon](https://fonts.google.com/icons?selected=Material%20Symbols%20Outlined%3Acheck_box%3AFILL%400%3Bwght%40400%3BGRAD%400%3Bopsz%4048),
1366*d5c09012SAndroid Build Coastguard Worker    // use
1367*d5c09012SAndroid Build Coastguard Worker    // ```
1368*d5c09012SAndroid Build Coastguard Worker    // "material_icon": {
1369*d5c09012SAndroid Build Coastguard Worker    //   "name": "check_box"
1370*d5c09012SAndroid Build Coastguard Worker    // }
1371*d5c09012SAndroid Build Coastguard Worker    // ```
1372*d5c09012SAndroid Build Coastguard Worker    //
1373*d5c09012SAndroid Build Coastguard Worker    // [Google Chat apps](https://developers.google.com/workspace/chat):
1374*d5c09012SAndroid Build Coastguard Worker    MaterialIcon material_icon = 5;
1375*d5c09012SAndroid Build Coastguard Worker  }
1376*d5c09012SAndroid Build Coastguard Worker
1377*d5c09012SAndroid Build Coastguard Worker  // Optional. A description of the icon used for accessibility.
1378*d5c09012SAndroid Build Coastguard Worker  // If unspecified, the default value `Button` is provided. As a best practice,
1379*d5c09012SAndroid Build Coastguard Worker  // you should set a helpful description for what the icon displays, and if
1380*d5c09012SAndroid Build Coastguard Worker  // applicable, what it does. For example, `A user's account portrait`, or
1381*d5c09012SAndroid Build Coastguard Worker  // `Opens a new browser tab and navigates to the Google Chat developer
1382*d5c09012SAndroid Build Coastguard Worker  // documentation at https://developers.google.com/workspace/chat`.
1383*d5c09012SAndroid Build Coastguard Worker  //
1384*d5c09012SAndroid Build Coastguard Worker  // If the icon is set in a [`Button`][google.apps.card.v1.Button], the
1385*d5c09012SAndroid Build Coastguard Worker  // `altText` appears as helper text when the user hovers over the button.
1386*d5c09012SAndroid Build Coastguard Worker  // However, if the button also sets `text`, the icon's `altText` is ignored.
1387*d5c09012SAndroid Build Coastguard Worker  string alt_text = 3;
1388*d5c09012SAndroid Build Coastguard Worker
1389*d5c09012SAndroid Build Coastguard Worker  // The crop style applied to the image. In some cases, applying a
1390*d5c09012SAndroid Build Coastguard Worker  // `CIRCLE` crop causes the image to be drawn larger than a built-in
1391*d5c09012SAndroid Build Coastguard Worker  // icon.
1392*d5c09012SAndroid Build Coastguard Worker  Widget.ImageType image_type = 4;
1393*d5c09012SAndroid Build Coastguard Worker}
1394*d5c09012SAndroid Build Coastguard Worker
1395*d5c09012SAndroid Build Coastguard Worker// A [Google Material Icon](https://fonts.google.com/icons), which includes over
1396*d5c09012SAndroid Build Coastguard Worker// 2500+ options.
1397*d5c09012SAndroid Build Coastguard Worker//
1398*d5c09012SAndroid Build Coastguard Worker// For example, to display a [checkbox
1399*d5c09012SAndroid Build Coastguard Worker// icon](https://fonts.google.com/icons?selected=Material%20Symbols%20Outlined%3Acheck_box%3AFILL%400%3Bwght%40400%3BGRAD%400%3Bopsz%4048)
1400*d5c09012SAndroid Build Coastguard Worker// with customized weight and grade, write the following:
1401*d5c09012SAndroid Build Coastguard Worker//
1402*d5c09012SAndroid Build Coastguard Worker// ```
1403*d5c09012SAndroid Build Coastguard Worker// {
1404*d5c09012SAndroid Build Coastguard Worker//   "name": "check_box",
1405*d5c09012SAndroid Build Coastguard Worker//   "fill": true,
1406*d5c09012SAndroid Build Coastguard Worker//   "weight": 300,
1407*d5c09012SAndroid Build Coastguard Worker//   "grade": -25
1408*d5c09012SAndroid Build Coastguard Worker// }
1409*d5c09012SAndroid Build Coastguard Worker// ```
1410*d5c09012SAndroid Build Coastguard Worker//
1411*d5c09012SAndroid Build Coastguard Worker// [Google Chat apps](https://developers.google.com/workspace/chat):
1412*d5c09012SAndroid Build Coastguard Workermessage MaterialIcon {
1413*d5c09012SAndroid Build Coastguard Worker  // The icon name defined in the [Google Material
1414*d5c09012SAndroid Build Coastguard Worker  // Icon](https://fonts.google.com/icons), for example, `check_box`. Any
1415*d5c09012SAndroid Build Coastguard Worker  // invalid names are abandoned and replaced with empty string and
1416*d5c09012SAndroid Build Coastguard Worker  // results in the icon failing to render.
1417*d5c09012SAndroid Build Coastguard Worker  string name = 1;
1418*d5c09012SAndroid Build Coastguard Worker
1419*d5c09012SAndroid Build Coastguard Worker  // Whether the icon renders as filled. Default value is false.
1420*d5c09012SAndroid Build Coastguard Worker  //
1421*d5c09012SAndroid Build Coastguard Worker  // To preview different icon settings, go to
1422*d5c09012SAndroid Build Coastguard Worker  // [Google Font Icons](https://fonts.google.com/icons) and adjust the
1423*d5c09012SAndroid Build Coastguard Worker  // settings under **Customize**.
1424*d5c09012SAndroid Build Coastguard Worker  bool fill = 2;
1425*d5c09012SAndroid Build Coastguard Worker
1426*d5c09012SAndroid Build Coastguard Worker  // The stroke weight of the icon. Choose from {100, 200, 300, 400,
1427*d5c09012SAndroid Build Coastguard Worker  // 500, 600, 700}. If absent, default value is 400. If any other value is
1428*d5c09012SAndroid Build Coastguard Worker  // specified, the default value is used.
1429*d5c09012SAndroid Build Coastguard Worker  //
1430*d5c09012SAndroid Build Coastguard Worker  // To preview different icon settings, go to
1431*d5c09012SAndroid Build Coastguard Worker  // [Google Font Icons](https://fonts.google.com/icons) and adjust the
1432*d5c09012SAndroid Build Coastguard Worker  // settings under **Customize**.
1433*d5c09012SAndroid Build Coastguard Worker  int32 weight = 3;
1434*d5c09012SAndroid Build Coastguard Worker
1435*d5c09012SAndroid Build Coastguard Worker  // Weight and grade affect a symbol’s thickness. Adjustments to grade are more
1436*d5c09012SAndroid Build Coastguard Worker  // granular than adjustments to weight and have a small impact on the size of
1437*d5c09012SAndroid Build Coastguard Worker  // the symbol. Choose from {-25, 0, 200}. If absent, default value is 0. If
1438*d5c09012SAndroid Build Coastguard Worker  // any other value is specified, the default value is used.
1439*d5c09012SAndroid Build Coastguard Worker  //
1440*d5c09012SAndroid Build Coastguard Worker  // To preview different icon settings, go to
1441*d5c09012SAndroid Build Coastguard Worker  // [Google Font Icons](https://fonts.google.com/icons) and adjust the
1442*d5c09012SAndroid Build Coastguard Worker  // settings under **Customize**.
1443*d5c09012SAndroid Build Coastguard Worker  int32 grade = 4;
1444*d5c09012SAndroid Build Coastguard Worker}
1445*d5c09012SAndroid Build Coastguard Worker
1446*d5c09012SAndroid Build Coastguard Worker// Represents the crop style applied to an image.
1447*d5c09012SAndroid Build Coastguard Worker//
1448*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and
1449*d5c09012SAndroid Build Coastguard Worker// Chat apps](https://developers.google.com/workspace/extend):
1450*d5c09012SAndroid Build Coastguard Worker//
1451*d5c09012SAndroid Build Coastguard Worker// For example, here's how to apply a 16:9 aspect ratio:
1452*d5c09012SAndroid Build Coastguard Worker//
1453*d5c09012SAndroid Build Coastguard Worker// ```
1454*d5c09012SAndroid Build Coastguard Worker// cropStyle {
1455*d5c09012SAndroid Build Coastguard Worker//  "type": "RECTANGLE_CUSTOM",
1456*d5c09012SAndroid Build Coastguard Worker//  "aspectRatio": 16/9
1457*d5c09012SAndroid Build Coastguard Worker// }
1458*d5c09012SAndroid Build Coastguard Worker// ```
1459*d5c09012SAndroid Build Coastguard Workermessage ImageCropStyle {
1460*d5c09012SAndroid Build Coastguard Worker  // Represents the crop style applied to an image.
1461*d5c09012SAndroid Build Coastguard Worker  //
1462*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons
1463*d5c09012SAndroid Build Coastguard Worker  // and Chat apps](https://developers.google.com/workspace/extend):
1464*d5c09012SAndroid Build Coastguard Worker  enum ImageCropType {
1465*d5c09012SAndroid Build Coastguard Worker    // Don't use. Unspecified.
1466*d5c09012SAndroid Build Coastguard Worker    IMAGE_CROP_TYPE_UNSPECIFIED = 0;
1467*d5c09012SAndroid Build Coastguard Worker
1468*d5c09012SAndroid Build Coastguard Worker    // Default value. Applies a square crop.
1469*d5c09012SAndroid Build Coastguard Worker    SQUARE = 1;
1470*d5c09012SAndroid Build Coastguard Worker
1471*d5c09012SAndroid Build Coastguard Worker    // Applies a circular crop.
1472*d5c09012SAndroid Build Coastguard Worker    CIRCLE = 2;
1473*d5c09012SAndroid Build Coastguard Worker
1474*d5c09012SAndroid Build Coastguard Worker    // Applies a rectangular crop with a custom aspect ratio. Set the custom
1475*d5c09012SAndroid Build Coastguard Worker    // aspect ratio with `aspectRatio`.
1476*d5c09012SAndroid Build Coastguard Worker    RECTANGLE_CUSTOM = 3;
1477*d5c09012SAndroid Build Coastguard Worker
1478*d5c09012SAndroid Build Coastguard Worker    // Applies a rectangular crop with a 4:3 aspect ratio.
1479*d5c09012SAndroid Build Coastguard Worker    RECTANGLE_4_3 = 4;
1480*d5c09012SAndroid Build Coastguard Worker  }
1481*d5c09012SAndroid Build Coastguard Worker
1482*d5c09012SAndroid Build Coastguard Worker  // The crop type.
1483*d5c09012SAndroid Build Coastguard Worker  ImageCropType type = 1;
1484*d5c09012SAndroid Build Coastguard Worker
1485*d5c09012SAndroid Build Coastguard Worker  // The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
1486*d5c09012SAndroid Build Coastguard Worker  //
1487*d5c09012SAndroid Build Coastguard Worker  // For example, here's how to apply a 16:9 aspect ratio:
1488*d5c09012SAndroid Build Coastguard Worker  //
1489*d5c09012SAndroid Build Coastguard Worker  // ```
1490*d5c09012SAndroid Build Coastguard Worker  // cropStyle {
1491*d5c09012SAndroid Build Coastguard Worker  //  "type": "RECTANGLE_CUSTOM",
1492*d5c09012SAndroid Build Coastguard Worker  //  "aspectRatio": 16/9
1493*d5c09012SAndroid Build Coastguard Worker  // }
1494*d5c09012SAndroid Build Coastguard Worker  // ```
1495*d5c09012SAndroid Build Coastguard Worker  double aspect_ratio = 2;
1496*d5c09012SAndroid Build Coastguard Worker}
1497*d5c09012SAndroid Build Coastguard Worker
1498*d5c09012SAndroid Build Coastguard Worker// The style options for the border of a card or widget, including the border
1499*d5c09012SAndroid Build Coastguard Worker// type and color.
1500*d5c09012SAndroid Build Coastguard Worker//
1501*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and Chat
1502*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/extend):
1503*d5c09012SAndroid Build Coastguard Workermessage BorderStyle {
1504*d5c09012SAndroid Build Coastguard Worker  // Represents the border types applied to widgets.
1505*d5c09012SAndroid Build Coastguard Worker  //
1506*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons
1507*d5c09012SAndroid Build Coastguard Worker  // and Chat apps](https://developers.google.com/workspace/extend):
1508*d5c09012SAndroid Build Coastguard Worker  enum BorderType {
1509*d5c09012SAndroid Build Coastguard Worker    // Don't use. Unspecified.
1510*d5c09012SAndroid Build Coastguard Worker    BORDER_TYPE_UNSPECIFIED = 0;
1511*d5c09012SAndroid Build Coastguard Worker
1512*d5c09012SAndroid Build Coastguard Worker    // Default value. No border.
1513*d5c09012SAndroid Build Coastguard Worker    NO_BORDER = 1;
1514*d5c09012SAndroid Build Coastguard Worker
1515*d5c09012SAndroid Build Coastguard Worker    // Outline.
1516*d5c09012SAndroid Build Coastguard Worker    STROKE = 2;
1517*d5c09012SAndroid Build Coastguard Worker  }
1518*d5c09012SAndroid Build Coastguard Worker
1519*d5c09012SAndroid Build Coastguard Worker  // The border type.
1520*d5c09012SAndroid Build Coastguard Worker  BorderType type = 1;
1521*d5c09012SAndroid Build Coastguard Worker
1522*d5c09012SAndroid Build Coastguard Worker  // The colors to use when the type is `BORDER_TYPE_STROKE`.
1523*d5c09012SAndroid Build Coastguard Worker  google.type.Color stroke_color = 2;
1524*d5c09012SAndroid Build Coastguard Worker
1525*d5c09012SAndroid Build Coastguard Worker  // The corner radius for the border.
1526*d5c09012SAndroid Build Coastguard Worker  int32 corner_radius = 3;
1527*d5c09012SAndroid Build Coastguard Worker}
1528*d5c09012SAndroid Build Coastguard Worker
1529*d5c09012SAndroid Build Coastguard Worker// Represents an image.
1530*d5c09012SAndroid Build Coastguard Worker//
1531*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and Chat
1532*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/extend):
1533*d5c09012SAndroid Build Coastguard Workermessage ImageComponent {
1534*d5c09012SAndroid Build Coastguard Worker  // The image URL.
1535*d5c09012SAndroid Build Coastguard Worker  string image_uri = 1;
1536*d5c09012SAndroid Build Coastguard Worker
1537*d5c09012SAndroid Build Coastguard Worker  // The accessibility label for the image.
1538*d5c09012SAndroid Build Coastguard Worker  string alt_text = 2;
1539*d5c09012SAndroid Build Coastguard Worker
1540*d5c09012SAndroid Build Coastguard Worker  // The crop style to apply to the image.
1541*d5c09012SAndroid Build Coastguard Worker  ImageCropStyle crop_style = 3;
1542*d5c09012SAndroid Build Coastguard Worker
1543*d5c09012SAndroid Build Coastguard Worker  // The border style to apply to the image.
1544*d5c09012SAndroid Build Coastguard Worker  BorderStyle border_style = 4;
1545*d5c09012SAndroid Build Coastguard Worker}
1546*d5c09012SAndroid Build Coastguard Worker
1547*d5c09012SAndroid Build Coastguard Worker// Displays a grid with a collection of items. Items can only include text or
1548*d5c09012SAndroid Build Coastguard Worker// images. For responsive columns, or to include more than text or images, use
1549*d5c09012SAndroid Build Coastguard Worker// [`Columns`][google.apps.card.v1.Columns]. For an example in Google Chat apps,
1550*d5c09012SAndroid Build Coastguard Worker// see [Display a Grid with a collection of
1551*d5c09012SAndroid Build Coastguard Worker// items](https://developers.google.com/workspace/chat/format-structure-card-dialog#display_a_grid_with_a_collection_of_items).
1552*d5c09012SAndroid Build Coastguard Worker//
1553*d5c09012SAndroid Build Coastguard Worker// A grid supports any number of columns and items. The number of rows is
1554*d5c09012SAndroid Build Coastguard Worker// determined by items divided by columns. A grid with
1555*d5c09012SAndroid Build Coastguard Worker// 10 items and 2 columns has 5 rows. A grid with 11 items and 2 columns
1556*d5c09012SAndroid Build Coastguard Worker// has 6 rows.
1557*d5c09012SAndroid Build Coastguard Worker//
1558*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and Chat
1559*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/extend):
1560*d5c09012SAndroid Build Coastguard Worker//
1561*d5c09012SAndroid Build Coastguard Worker// For example, the following JSON creates a 2 column grid with a single
1562*d5c09012SAndroid Build Coastguard Worker// item:
1563*d5c09012SAndroid Build Coastguard Worker//
1564*d5c09012SAndroid Build Coastguard Worker// ```
1565*d5c09012SAndroid Build Coastguard Worker// "grid": {
1566*d5c09012SAndroid Build Coastguard Worker//   "title": "A fine collection of items",
1567*d5c09012SAndroid Build Coastguard Worker//   "columnCount": 2,
1568*d5c09012SAndroid Build Coastguard Worker//   "borderStyle": {
1569*d5c09012SAndroid Build Coastguard Worker//     "type": "STROKE",
1570*d5c09012SAndroid Build Coastguard Worker//     "cornerRadius": 4
1571*d5c09012SAndroid Build Coastguard Worker//   },
1572*d5c09012SAndroid Build Coastguard Worker//   "items": [
1573*d5c09012SAndroid Build Coastguard Worker//     {
1574*d5c09012SAndroid Build Coastguard Worker//       "image": {
1575*d5c09012SAndroid Build Coastguard Worker//         "imageUri": "https://www.example.com/image.png",
1576*d5c09012SAndroid Build Coastguard Worker//         "cropStyle": {
1577*d5c09012SAndroid Build Coastguard Worker//           "type": "SQUARE"
1578*d5c09012SAndroid Build Coastguard Worker//         },
1579*d5c09012SAndroid Build Coastguard Worker//         "borderStyle": {
1580*d5c09012SAndroid Build Coastguard Worker//           "type": "STROKE"
1581*d5c09012SAndroid Build Coastguard Worker//         }
1582*d5c09012SAndroid Build Coastguard Worker//       },
1583*d5c09012SAndroid Build Coastguard Worker//       "title": "An item",
1584*d5c09012SAndroid Build Coastguard Worker//       "textAlignment": "CENTER"
1585*d5c09012SAndroid Build Coastguard Worker//     }
1586*d5c09012SAndroid Build Coastguard Worker//   ],
1587*d5c09012SAndroid Build Coastguard Worker//   "onClick": {
1588*d5c09012SAndroid Build Coastguard Worker//     "openLink": {
1589*d5c09012SAndroid Build Coastguard Worker//       "url": "https://www.example.com"
1590*d5c09012SAndroid Build Coastguard Worker//     }
1591*d5c09012SAndroid Build Coastguard Worker//   }
1592*d5c09012SAndroid Build Coastguard Worker// }
1593*d5c09012SAndroid Build Coastguard Worker// ```
1594*d5c09012SAndroid Build Coastguard Workermessage Grid {
1595*d5c09012SAndroid Build Coastguard Worker  // Represents an item in a grid layout. Items can contain text, an image, or
1596*d5c09012SAndroid Build Coastguard Worker  // both text and an image.
1597*d5c09012SAndroid Build Coastguard Worker  //
1598*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
1599*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
1600*d5c09012SAndroid Build Coastguard Worker  message GridItem {
1601*d5c09012SAndroid Build Coastguard Worker    // Represents the various layout options available for a grid item.
1602*d5c09012SAndroid Build Coastguard Worker    //
1603*d5c09012SAndroid Build Coastguard Worker    // [Google Workspace Add-ons and Chat
1604*d5c09012SAndroid Build Coastguard Worker    // apps](https://developers.google.com/workspace/extend):
1605*d5c09012SAndroid Build Coastguard Worker    enum GridItemLayout {
1606*d5c09012SAndroid Build Coastguard Worker      // Don't use. Unspecified.
1607*d5c09012SAndroid Build Coastguard Worker      GRID_ITEM_LAYOUT_UNSPECIFIED = 0;
1608*d5c09012SAndroid Build Coastguard Worker
1609*d5c09012SAndroid Build Coastguard Worker      // The title and subtitle are shown below the grid item's image.
1610*d5c09012SAndroid Build Coastguard Worker      TEXT_BELOW = 1;
1611*d5c09012SAndroid Build Coastguard Worker
1612*d5c09012SAndroid Build Coastguard Worker      // The title and subtitle are shown above the grid item's image.
1613*d5c09012SAndroid Build Coastguard Worker      TEXT_ABOVE = 2;
1614*d5c09012SAndroid Build Coastguard Worker    }
1615*d5c09012SAndroid Build Coastguard Worker
1616*d5c09012SAndroid Build Coastguard Worker    // A user-specified identifier for this grid item. This identifier is
1617*d5c09012SAndroid Build Coastguard Worker    // returned in the parent grid's `onClick` callback parameters.
1618*d5c09012SAndroid Build Coastguard Worker    string id = 1;
1619*d5c09012SAndroid Build Coastguard Worker
1620*d5c09012SAndroid Build Coastguard Worker    // The image that displays in the grid item.
1621*d5c09012SAndroid Build Coastguard Worker    ImageComponent image = 2;
1622*d5c09012SAndroid Build Coastguard Worker
1623*d5c09012SAndroid Build Coastguard Worker    // The grid item's title.
1624*d5c09012SAndroid Build Coastguard Worker    string title = 3;
1625*d5c09012SAndroid Build Coastguard Worker
1626*d5c09012SAndroid Build Coastguard Worker    // The grid item's subtitle.
1627*d5c09012SAndroid Build Coastguard Worker    string subtitle = 4;
1628*d5c09012SAndroid Build Coastguard Worker
1629*d5c09012SAndroid Build Coastguard Worker    // The layout to use for the grid item.
1630*d5c09012SAndroid Build Coastguard Worker    GridItemLayout layout = 9;
1631*d5c09012SAndroid Build Coastguard Worker  }
1632*d5c09012SAndroid Build Coastguard Worker
1633*d5c09012SAndroid Build Coastguard Worker  // The text that displays in the grid header.
1634*d5c09012SAndroid Build Coastguard Worker  string title = 1;
1635*d5c09012SAndroid Build Coastguard Worker
1636*d5c09012SAndroid Build Coastguard Worker  // The items to display in the grid.
1637*d5c09012SAndroid Build Coastguard Worker  repeated GridItem items = 2;
1638*d5c09012SAndroid Build Coastguard Worker
1639*d5c09012SAndroid Build Coastguard Worker  // The border style to apply to each grid item.
1640*d5c09012SAndroid Build Coastguard Worker  BorderStyle border_style = 3;
1641*d5c09012SAndroid Build Coastguard Worker
1642*d5c09012SAndroid Build Coastguard Worker  // The number of columns to display in the grid. A default value
1643*d5c09012SAndroid Build Coastguard Worker  // is used if this field isn't specified, and that default value is
1644*d5c09012SAndroid Build Coastguard Worker  // different depending on where the grid is shown (dialog versus companion).
1645*d5c09012SAndroid Build Coastguard Worker  int32 column_count = 4;
1646*d5c09012SAndroid Build Coastguard Worker
1647*d5c09012SAndroid Build Coastguard Worker  // This callback is reused by each individual grid item, but with the
1648*d5c09012SAndroid Build Coastguard Worker  // item's identifier and index in the items list added to the callback's
1649*d5c09012SAndroid Build Coastguard Worker  // parameters.
1650*d5c09012SAndroid Build Coastguard Worker  OnClick on_click = 5;
1651*d5c09012SAndroid Build Coastguard Worker}
1652*d5c09012SAndroid Build Coastguard Worker
1653*d5c09012SAndroid Build Coastguard Worker// The `Columns` widget displays up to 2 columns in a card or dialog. You can
1654*d5c09012SAndroid Build Coastguard Worker// add widgets to each column; the widgets appear in the order that they are
1655*d5c09012SAndroid Build Coastguard Worker// specified. For an example in Google Chat apps, see
1656*d5c09012SAndroid Build Coastguard Worker// [Display cards and dialogs in
1657*d5c09012SAndroid Build Coastguard Worker// columns](https://developers.google.com/workspace/chat/format-structure-card-dialog#display_cards_and_dialogs_in_columns).
1658*d5c09012SAndroid Build Coastguard Worker//
1659*d5c09012SAndroid Build Coastguard Worker// The height of each column is determined by the taller column. For example, if
1660*d5c09012SAndroid Build Coastguard Worker// the first column is taller than the second column, both columns have the
1661*d5c09012SAndroid Build Coastguard Worker// height of the first column. Because each column can contain a different
1662*d5c09012SAndroid Build Coastguard Worker// number of widgets, you can't define rows or align widgets between the
1663*d5c09012SAndroid Build Coastguard Worker// columns.
1664*d5c09012SAndroid Build Coastguard Worker//
1665*d5c09012SAndroid Build Coastguard Worker// Columns are displayed side-by-side. You can customize the width of each
1666*d5c09012SAndroid Build Coastguard Worker// column using the `HorizontalSizeStyle` field. If the user's
1667*d5c09012SAndroid Build Coastguard Worker// screen width is too narrow, the second column wraps below the first:
1668*d5c09012SAndroid Build Coastguard Worker//
1669*d5c09012SAndroid Build Coastguard Worker// * On web, the second column wraps if the screen width is less than or equal
1670*d5c09012SAndroid Build Coastguard Worker//   to 480 pixels.
1671*d5c09012SAndroid Build Coastguard Worker// * On iOS devices, the second column wraps if the screen width is
1672*d5c09012SAndroid Build Coastguard Worker//   less than or equal to 300 pt.
1673*d5c09012SAndroid Build Coastguard Worker// * On Android devices, the second column wraps if the screen width is
1674*d5c09012SAndroid Build Coastguard Worker//   less than or equal to 320 dp.
1675*d5c09012SAndroid Build Coastguard Worker//
1676*d5c09012SAndroid Build Coastguard Worker// To include more than 2 columns, or to use rows, use the
1677*d5c09012SAndroid Build Coastguard Worker// [`Grid`][google.apps.card.v1.Grid] widget.
1678*d5c09012SAndroid Build Coastguard Worker//
1679*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and Chat
1680*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/extend):
1681*d5c09012SAndroid Build Coastguard Worker// Columns for Google Workspace Add-ons are in
1682*d5c09012SAndroid Build Coastguard Worker// Developer Preview.
1683*d5c09012SAndroid Build Coastguard Workermessage Columns {
1684*d5c09012SAndroid Build Coastguard Worker  // A column.
1685*d5c09012SAndroid Build Coastguard Worker  //
1686*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
1687*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
1688*d5c09012SAndroid Build Coastguard Worker  // Columns for Google Workspace Add-ons are in
1689*d5c09012SAndroid Build Coastguard Worker  // Developer Preview.
1690*d5c09012SAndroid Build Coastguard Worker  message Column {
1691*d5c09012SAndroid Build Coastguard Worker    // Specifies how a column fills the width of the card. The width of each
1692*d5c09012SAndroid Build Coastguard Worker    // column depends on both the `HorizontalSizeStyle` and the width of the
1693*d5c09012SAndroid Build Coastguard Worker    // widgets within the column.
1694*d5c09012SAndroid Build Coastguard Worker    //
1695*d5c09012SAndroid Build Coastguard Worker    // [Google Workspace Add-ons and Chat
1696*d5c09012SAndroid Build Coastguard Worker    // apps](https://developers.google.com/workspace/extend):
1697*d5c09012SAndroid Build Coastguard Worker    // Columns for Google Workspace Add-ons are in
1698*d5c09012SAndroid Build Coastguard Worker    // Developer Preview.
1699*d5c09012SAndroid Build Coastguard Worker    enum HorizontalSizeStyle {
1700*d5c09012SAndroid Build Coastguard Worker      // Don't use. Unspecified.
1701*d5c09012SAndroid Build Coastguard Worker      HORIZONTAL_SIZE_STYLE_UNSPECIFIED = 0;
1702*d5c09012SAndroid Build Coastguard Worker
1703*d5c09012SAndroid Build Coastguard Worker      // Default value. Column fills the available space, up to 70% of the
1704*d5c09012SAndroid Build Coastguard Worker      // card's width. If both columns are set to `FILL_AVAILABLE_SPACE`, each
1705*d5c09012SAndroid Build Coastguard Worker      // column fills 50% of the space.
1706*d5c09012SAndroid Build Coastguard Worker      FILL_AVAILABLE_SPACE = 1;
1707*d5c09012SAndroid Build Coastguard Worker
1708*d5c09012SAndroid Build Coastguard Worker      // Column fills the least amount of space possible and no more than 30% of
1709*d5c09012SAndroid Build Coastguard Worker      // the card's width.
1710*d5c09012SAndroid Build Coastguard Worker      FILL_MINIMUM_SPACE = 2;
1711*d5c09012SAndroid Build Coastguard Worker    }
1712*d5c09012SAndroid Build Coastguard Worker
1713*d5c09012SAndroid Build Coastguard Worker    // Specifies whether widgets align to the top, bottom, or center of a
1714*d5c09012SAndroid Build Coastguard Worker    // column.
1715*d5c09012SAndroid Build Coastguard Worker    //
1716*d5c09012SAndroid Build Coastguard Worker    // [Google Workspace Add-ons and Chat
1717*d5c09012SAndroid Build Coastguard Worker    // apps](https://developers.google.com/workspace/extend):
1718*d5c09012SAndroid Build Coastguard Worker    // Columns for Google Workspace Add-ons are in
1719*d5c09012SAndroid Build Coastguard Worker    // Developer Preview.
1720*d5c09012SAndroid Build Coastguard Worker    enum VerticalAlignment {
1721*d5c09012SAndroid Build Coastguard Worker      // Don't use. Unspecified.
1722*d5c09012SAndroid Build Coastguard Worker      VERTICAL_ALIGNMENT_UNSPECIFIED = 0;
1723*d5c09012SAndroid Build Coastguard Worker
1724*d5c09012SAndroid Build Coastguard Worker      // Default value. Aligns widgets to the center of a column.
1725*d5c09012SAndroid Build Coastguard Worker      CENTER = 1;
1726*d5c09012SAndroid Build Coastguard Worker
1727*d5c09012SAndroid Build Coastguard Worker      // Aligns widgets to the top of a column.
1728*d5c09012SAndroid Build Coastguard Worker      TOP = 2;
1729*d5c09012SAndroid Build Coastguard Worker
1730*d5c09012SAndroid Build Coastguard Worker      // Aligns widgets to the bottom of a column.
1731*d5c09012SAndroid Build Coastguard Worker      BOTTOM = 3;
1732*d5c09012SAndroid Build Coastguard Worker    }
1733*d5c09012SAndroid Build Coastguard Worker
1734*d5c09012SAndroid Build Coastguard Worker    // The supported widgets that you can include in a column.
1735*d5c09012SAndroid Build Coastguard Worker    //
1736*d5c09012SAndroid Build Coastguard Worker    // [Google Workspace Add-ons and Chat
1737*d5c09012SAndroid Build Coastguard Worker    // apps](https://developers.google.com/workspace/extend):
1738*d5c09012SAndroid Build Coastguard Worker    // Columns for Google Workspace Add-ons are in
1739*d5c09012SAndroid Build Coastguard Worker    // Developer Preview.
1740*d5c09012SAndroid Build Coastguard Worker    message Widgets {
1741*d5c09012SAndroid Build Coastguard Worker      oneof data {
1742*d5c09012SAndroid Build Coastguard Worker        // [TextParagraph][google.apps.card.v1.TextParagraph] widget.
1743*d5c09012SAndroid Build Coastguard Worker        TextParagraph text_paragraph = 1;
1744*d5c09012SAndroid Build Coastguard Worker
1745*d5c09012SAndroid Build Coastguard Worker        // [Image][google.apps.card.v1.Image] widget.
1746*d5c09012SAndroid Build Coastguard Worker        Image image = 2;
1747*d5c09012SAndroid Build Coastguard Worker
1748*d5c09012SAndroid Build Coastguard Worker        // [DecoratedText][google.apps.card.v1.DecoratedText] widget.
1749*d5c09012SAndroid Build Coastguard Worker        DecoratedText decorated_text = 3;
1750*d5c09012SAndroid Build Coastguard Worker
1751*d5c09012SAndroid Build Coastguard Worker        // [ButtonList][google.apps.card.v1.ButtonList] widget.
1752*d5c09012SAndroid Build Coastguard Worker        ButtonList button_list = 4;
1753*d5c09012SAndroid Build Coastguard Worker
1754*d5c09012SAndroid Build Coastguard Worker        // [TextInput][google.apps.card.v1.TextInput] widget.
1755*d5c09012SAndroid Build Coastguard Worker        TextInput text_input = 5;
1756*d5c09012SAndroid Build Coastguard Worker
1757*d5c09012SAndroid Build Coastguard Worker        // [SelectionInput][google.apps.card.v1.SelectionInput] widget.
1758*d5c09012SAndroid Build Coastguard Worker        SelectionInput selection_input = 6;
1759*d5c09012SAndroid Build Coastguard Worker
1760*d5c09012SAndroid Build Coastguard Worker        // [DateTimePicker][google.apps.card.v1.DateTimePicker] widget.
1761*d5c09012SAndroid Build Coastguard Worker        DateTimePicker date_time_picker = 7;
1762*d5c09012SAndroid Build Coastguard Worker      }
1763*d5c09012SAndroid Build Coastguard Worker    }
1764*d5c09012SAndroid Build Coastguard Worker
1765*d5c09012SAndroid Build Coastguard Worker    // Specifies how a column fills the width of the card.
1766*d5c09012SAndroid Build Coastguard Worker    HorizontalSizeStyle horizontal_size_style = 1;
1767*d5c09012SAndroid Build Coastguard Worker
1768*d5c09012SAndroid Build Coastguard Worker    // Specifies whether widgets align to the left, right, or center of a
1769*d5c09012SAndroid Build Coastguard Worker    // column.
1770*d5c09012SAndroid Build Coastguard Worker    Widget.HorizontalAlignment horizontal_alignment = 2;
1771*d5c09012SAndroid Build Coastguard Worker
1772*d5c09012SAndroid Build Coastguard Worker    // Specifies whether widgets align to the top, bottom, or center of a
1773*d5c09012SAndroid Build Coastguard Worker    // column.
1774*d5c09012SAndroid Build Coastguard Worker    VerticalAlignment vertical_alignment = 3;
1775*d5c09012SAndroid Build Coastguard Worker
1776*d5c09012SAndroid Build Coastguard Worker    // An array of widgets included in a column. Widgets appear in the order
1777*d5c09012SAndroid Build Coastguard Worker    // that they are specified.
1778*d5c09012SAndroid Build Coastguard Worker    repeated Widgets widgets = 4;
1779*d5c09012SAndroid Build Coastguard Worker  }
1780*d5c09012SAndroid Build Coastguard Worker
1781*d5c09012SAndroid Build Coastguard Worker  // An array of columns. You can include up to 2 columns in a card or dialog.
1782*d5c09012SAndroid Build Coastguard Worker  repeated Column column_items = 2;
1783*d5c09012SAndroid Build Coastguard Worker}
1784*d5c09012SAndroid Build Coastguard Worker
1785*d5c09012SAndroid Build Coastguard Worker// Represents how to respond when users click an interactive element on
1786*d5c09012SAndroid Build Coastguard Worker// a card, such as a button.
1787*d5c09012SAndroid Build Coastguard Worker//
1788*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and Chat
1789*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/extend):
1790*d5c09012SAndroid Build Coastguard Workermessage OnClick {
1791*d5c09012SAndroid Build Coastguard Worker  oneof data {
1792*d5c09012SAndroid Build Coastguard Worker    // If specified, an action is triggered by this `onClick`.
1793*d5c09012SAndroid Build Coastguard Worker    Action action = 1;
1794*d5c09012SAndroid Build Coastguard Worker
1795*d5c09012SAndroid Build Coastguard Worker    // If specified, this `onClick` triggers an open link action.
1796*d5c09012SAndroid Build Coastguard Worker    OpenLink open_link = 2;
1797*d5c09012SAndroid Build Coastguard Worker
1798*d5c09012SAndroid Build Coastguard Worker    // An add-on triggers this action when the action needs to open a
1799*d5c09012SAndroid Build Coastguard Worker    // link. This differs from the `open_link` above in that this needs to talk
1800*d5c09012SAndroid Build Coastguard Worker    // to server to get the link. Thus some preparation work is required for
1801*d5c09012SAndroid Build Coastguard Worker    // web client to do before the open link action response comes back.
1802*d5c09012SAndroid Build Coastguard Worker    //
1803*d5c09012SAndroid Build Coastguard Worker    // [Google Workspace
1804*d5c09012SAndroid Build Coastguard Worker    // Add-ons](https://developers.google.com/workspace/add-ons):
1805*d5c09012SAndroid Build Coastguard Worker    Action open_dynamic_link_action = 3;
1806*d5c09012SAndroid Build Coastguard Worker
1807*d5c09012SAndroid Build Coastguard Worker    // A new card is pushed to the card stack after clicking if specified.
1808*d5c09012SAndroid Build Coastguard Worker    //
1809*d5c09012SAndroid Build Coastguard Worker    // [Google Workspace
1810*d5c09012SAndroid Build Coastguard Worker    // Add-ons](https://developers.google.com/workspace/add-ons):
1811*d5c09012SAndroid Build Coastguard Worker    Card card = 4;
1812*d5c09012SAndroid Build Coastguard Worker  }
1813*d5c09012SAndroid Build Coastguard Worker}
1814*d5c09012SAndroid Build Coastguard Worker
1815*d5c09012SAndroid Build Coastguard Worker// Represents an `onClick` event that opens a hyperlink.
1816*d5c09012SAndroid Build Coastguard Worker//
1817*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and Chat
1818*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/extend):
1819*d5c09012SAndroid Build Coastguard Workermessage OpenLink {
1820*d5c09012SAndroid Build Coastguard Worker  // When an `OnClick` action opens a link, then the client can either open it
1821*d5c09012SAndroid Build Coastguard Worker  // as a full-size window (if that's the frame used by the client), or an
1822*d5c09012SAndroid Build Coastguard Worker  // overlay (such as a pop-up). The implementation depends on the client
1823*d5c09012SAndroid Build Coastguard Worker  // platform capabilities, and the value selected might be ignored if the
1824*d5c09012SAndroid Build Coastguard Worker  // client doesn't support it. `FULL_SIZE` is supported by all clients.
1825*d5c09012SAndroid Build Coastguard Worker  //
1826*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace
1827*d5c09012SAndroid Build Coastguard Worker  // Add-ons](https://developers.google.com/workspace/add-ons):
1828*d5c09012SAndroid Build Coastguard Worker  enum OpenAs {
1829*d5c09012SAndroid Build Coastguard Worker    // The link opens as a full-size window (if that's the frame used by the
1830*d5c09012SAndroid Build Coastguard Worker    // client).
1831*d5c09012SAndroid Build Coastguard Worker    FULL_SIZE = 0;
1832*d5c09012SAndroid Build Coastguard Worker
1833*d5c09012SAndroid Build Coastguard Worker    // The link opens as an overlay, such as a pop-up.
1834*d5c09012SAndroid Build Coastguard Worker    OVERLAY = 1;
1835*d5c09012SAndroid Build Coastguard Worker  }
1836*d5c09012SAndroid Build Coastguard Worker
1837*d5c09012SAndroid Build Coastguard Worker  // What the client does when a link opened by an `OnClick` action is closed.
1838*d5c09012SAndroid Build Coastguard Worker  //
1839*d5c09012SAndroid Build Coastguard Worker  // Implementation depends on client platform capabilities. For example, a web
1840*d5c09012SAndroid Build Coastguard Worker  // browser might open a link in a pop-up window with an `OnClose` handler.
1841*d5c09012SAndroid Build Coastguard Worker  //
1842*d5c09012SAndroid Build Coastguard Worker  // If both `OnOpen` and `OnClose` handlers are set, and the client platform
1843*d5c09012SAndroid Build Coastguard Worker  // can't support both values, `OnClose` takes precedence.
1844*d5c09012SAndroid Build Coastguard Worker  //
1845*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace
1846*d5c09012SAndroid Build Coastguard Worker  // Add-ons](https://developers.google.com/workspace/add-ons):
1847*d5c09012SAndroid Build Coastguard Worker  enum OnClose {
1848*d5c09012SAndroid Build Coastguard Worker    // Default value. The card doesn't reload; nothing happens.
1849*d5c09012SAndroid Build Coastguard Worker    NOTHING = 0;
1850*d5c09012SAndroid Build Coastguard Worker
1851*d5c09012SAndroid Build Coastguard Worker    // Reloads the card after the child window closes.
1852*d5c09012SAndroid Build Coastguard Worker    //
1853*d5c09012SAndroid Build Coastguard Worker    // If used in conjunction with
1854*d5c09012SAndroid Build Coastguard Worker    // [`OpenAs.OVERLAY`](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#openas),
1855*d5c09012SAndroid Build Coastguard Worker    // the child window acts as a modal dialog and the parent card is blocked
1856*d5c09012SAndroid Build Coastguard Worker    // until the child window closes.
1857*d5c09012SAndroid Build Coastguard Worker    RELOAD = 1;
1858*d5c09012SAndroid Build Coastguard Worker  }
1859*d5c09012SAndroid Build Coastguard Worker
1860*d5c09012SAndroid Build Coastguard Worker  // The URL to open.
1861*d5c09012SAndroid Build Coastguard Worker  string url = 1;
1862*d5c09012SAndroid Build Coastguard Worker
1863*d5c09012SAndroid Build Coastguard Worker  // How to open a link.
1864*d5c09012SAndroid Build Coastguard Worker  //
1865*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace
1866*d5c09012SAndroid Build Coastguard Worker  // Add-ons](https://developers.google.com/workspace/add-ons):
1867*d5c09012SAndroid Build Coastguard Worker  OpenAs open_as = 2;
1868*d5c09012SAndroid Build Coastguard Worker
1869*d5c09012SAndroid Build Coastguard Worker  // Whether the client forgets about a link after opening it, or observes it
1870*d5c09012SAndroid Build Coastguard Worker  // until the window closes.
1871*d5c09012SAndroid Build Coastguard Worker  //
1872*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace
1873*d5c09012SAndroid Build Coastguard Worker  // Add-ons](https://developers.google.com/workspace/add-ons):
1874*d5c09012SAndroid Build Coastguard Worker  OnClose on_close = 3;
1875*d5c09012SAndroid Build Coastguard Worker}
1876*d5c09012SAndroid Build Coastguard Worker
1877*d5c09012SAndroid Build Coastguard Worker// An action that describes the behavior when the form is submitted.
1878*d5c09012SAndroid Build Coastguard Worker// For example, you can invoke an Apps Script script to handle the form.
1879*d5c09012SAndroid Build Coastguard Worker// If the action is triggered, the form values are sent to the server.
1880*d5c09012SAndroid Build Coastguard Worker//
1881*d5c09012SAndroid Build Coastguard Worker// [Google Workspace Add-ons and Chat
1882*d5c09012SAndroid Build Coastguard Worker// apps](https://developers.google.com/workspace/extend):
1883*d5c09012SAndroid Build Coastguard Workermessage Action {
1884*d5c09012SAndroid Build Coastguard Worker  // List of string parameters to supply when the action method is invoked.
1885*d5c09012SAndroid Build Coastguard Worker  // For example, consider three snooze buttons: snooze now, snooze one day,
1886*d5c09012SAndroid Build Coastguard Worker  // or snooze next week. You might use `action method = snooze()`, passing the
1887*d5c09012SAndroid Build Coastguard Worker  // snooze type and snooze time in the list of string parameters.
1888*d5c09012SAndroid Build Coastguard Worker  //
1889*d5c09012SAndroid Build Coastguard Worker  // To learn more, see
1890*d5c09012SAndroid Build Coastguard Worker  // [`CommonEventObject`](https://developers.google.com/workspace/chat/api/reference/rest/v1/Event#commoneventobject).
1891*d5c09012SAndroid Build Coastguard Worker  //
1892*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
1893*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
1894*d5c09012SAndroid Build Coastguard Worker  message ActionParameter {
1895*d5c09012SAndroid Build Coastguard Worker    // The name of the parameter for the action script.
1896*d5c09012SAndroid Build Coastguard Worker    string key = 1;
1897*d5c09012SAndroid Build Coastguard Worker
1898*d5c09012SAndroid Build Coastguard Worker    // The value of the parameter.
1899*d5c09012SAndroid Build Coastguard Worker    string value = 2;
1900*d5c09012SAndroid Build Coastguard Worker  }
1901*d5c09012SAndroid Build Coastguard Worker
1902*d5c09012SAndroid Build Coastguard Worker  // Specifies the loading indicator that the action displays while
1903*d5c09012SAndroid Build Coastguard Worker  // making the call to the action.
1904*d5c09012SAndroid Build Coastguard Worker  //
1905*d5c09012SAndroid Build Coastguard Worker  // [Google Workspace Add-ons and Chat
1906*d5c09012SAndroid Build Coastguard Worker  // apps](https://developers.google.com/workspace/extend):
1907*d5c09012SAndroid Build Coastguard Worker  enum LoadIndicator {
1908*d5c09012SAndroid Build Coastguard Worker    // Displays a spinner to indicate that content is loading.
1909*d5c09012SAndroid Build Coastguard Worker    SPINNER = 0;
1910*d5c09012SAndroid Build Coastguard Worker
1911*d5c09012SAndroid Build Coastguard Worker    // Nothing is displayed.
1912*d5c09012SAndroid Build Coastguard Worker    NONE = 1;
1913*d5c09012SAndroid Build Coastguard Worker  }
1914*d5c09012SAndroid Build Coastguard Worker
1915*d5c09012SAndroid Build Coastguard Worker  // Optional. Required when opening a
1916*d5c09012SAndroid Build Coastguard Worker  // [dialog](https://developers.google.com/workspace/chat/dialogs).
1917*d5c09012SAndroid Build Coastguard Worker  //
1918*d5c09012SAndroid Build Coastguard Worker  // What to do in response to an interaction with a user, such as a user
1919*d5c09012SAndroid Build Coastguard Worker  // clicking a button in a card message.
1920*d5c09012SAndroid Build Coastguard Worker  //
1921*d5c09012SAndroid Build Coastguard Worker  // If unspecified, the app responds by executing an `action`—like opening a
1922*d5c09012SAndroid Build Coastguard Worker  // link or running a function—as normal.
1923*d5c09012SAndroid Build Coastguard Worker  //
1924*d5c09012SAndroid Build Coastguard Worker  // By specifying an `interaction`, the app can respond in special interactive
1925*d5c09012SAndroid Build Coastguard Worker  // ways. For example, by setting `interaction` to `OPEN_DIALOG`, the app can
1926*d5c09012SAndroid Build Coastguard Worker  // open a [dialog](https://developers.google.com/workspace/chat/dialogs).
1927*d5c09012SAndroid Build Coastguard Worker  //
1928*d5c09012SAndroid Build Coastguard Worker  // When specified, a loading indicator isn't shown. If specified for
1929*d5c09012SAndroid Build Coastguard Worker  // an add-on, the entire card is stripped and nothing is shown in the client.
1930*d5c09012SAndroid Build Coastguard Worker  //
1931*d5c09012SAndroid Build Coastguard Worker  // [Google Chat apps](https://developers.google.com/workspace/chat):
1932*d5c09012SAndroid Build Coastguard Worker  enum Interaction {
1933*d5c09012SAndroid Build Coastguard Worker    // Default value. The `action` executes as normal.
1934*d5c09012SAndroid Build Coastguard Worker    INTERACTION_UNSPECIFIED = 0;
1935*d5c09012SAndroid Build Coastguard Worker
1936*d5c09012SAndroid Build Coastguard Worker    // Opens a [dialog](https://developers.google.com/workspace/chat/dialogs), a
1937*d5c09012SAndroid Build Coastguard Worker    // windowed, card-based interface that Chat apps use to interact with users.
1938*d5c09012SAndroid Build Coastguard Worker    //
1939*d5c09012SAndroid Build Coastguard Worker    // Only supported by Chat apps in response to button-clicks on card
1940*d5c09012SAndroid Build Coastguard Worker    // messages. If specified for
1941*d5c09012SAndroid Build Coastguard Worker    // an add-on, the entire card is stripped and nothing is shown in the
1942*d5c09012SAndroid Build Coastguard Worker    // client.
1943*d5c09012SAndroid Build Coastguard Worker    //
1944*d5c09012SAndroid Build Coastguard Worker    // [Google Chat apps](https://developers.google.com/workspace/chat):
1945*d5c09012SAndroid Build Coastguard Worker    OPEN_DIALOG = 1;
1946*d5c09012SAndroid Build Coastguard Worker  }
1947*d5c09012SAndroid Build Coastguard Worker
1948*d5c09012SAndroid Build Coastguard Worker  // A custom function to invoke when the containing element is
1949*d5c09012SAndroid Build Coastguard Worker  // clicked or othrwise activated.
1950*d5c09012SAndroid Build Coastguard Worker  //
1951*d5c09012SAndroid Build Coastguard Worker  // For example usage, see [Read form
1952*d5c09012SAndroid Build Coastguard Worker  // data](https://developers.google.com/workspace/chat/read-form-data).
1953*d5c09012SAndroid Build Coastguard Worker  string function = 1;
1954*d5c09012SAndroid Build Coastguard Worker
1955*d5c09012SAndroid Build Coastguard Worker  // List of action parameters.
1956*d5c09012SAndroid Build Coastguard Worker  repeated ActionParameter parameters = 2;
1957*d5c09012SAndroid Build Coastguard Worker
1958*d5c09012SAndroid Build Coastguard Worker  // Specifies the loading indicator that the action displays while
1959*d5c09012SAndroid Build Coastguard Worker  // making the call to the action.
1960*d5c09012SAndroid Build Coastguard Worker  LoadIndicator load_indicator = 3;
1961*d5c09012SAndroid Build Coastguard Worker
1962*d5c09012SAndroid Build Coastguard Worker  // Indicates whether form values persist after the action. The default value
1963*d5c09012SAndroid Build Coastguard Worker  // is `false`.
1964*d5c09012SAndroid Build Coastguard Worker  //
1965*d5c09012SAndroid Build Coastguard Worker  // If `true`, form values remain after the action is triggered. To let the
1966*d5c09012SAndroid Build Coastguard Worker  // user make changes while the action is being processed, set
1967*d5c09012SAndroid Build Coastguard Worker  // [`LoadIndicator`](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#loadindicator)
1968*d5c09012SAndroid Build Coastguard Worker  // to `NONE`. For [card
1969*d5c09012SAndroid Build Coastguard Worker  // messages](https://developers.google.com/workspace/chat/api/guides/v1/messages/create#create)
1970*d5c09012SAndroid Build Coastguard Worker  // in Chat apps, you must also set the action's
1971*d5c09012SAndroid Build Coastguard Worker  // [`ResponseType`](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages#responsetype)
1972*d5c09012SAndroid Build Coastguard Worker  // to `UPDATE_MESSAGE` and use the same
1973*d5c09012SAndroid Build Coastguard Worker  // [`card_id`](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages#CardWithId)
1974*d5c09012SAndroid Build Coastguard Worker  // from the card that contained the action.
1975*d5c09012SAndroid Build Coastguard Worker  //
1976*d5c09012SAndroid Build Coastguard Worker  // If `false`, the form values are cleared when the action is triggered.
1977*d5c09012SAndroid Build Coastguard Worker  // To prevent the user from making changes while the action is being
1978*d5c09012SAndroid Build Coastguard Worker  // processed, set
1979*d5c09012SAndroid Build Coastguard Worker  // [`LoadIndicator`](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#loadindicator)
1980*d5c09012SAndroid Build Coastguard Worker  // to `SPINNER`.
1981*d5c09012SAndroid Build Coastguard Worker  bool persist_values = 4;
1982*d5c09012SAndroid Build Coastguard Worker
1983*d5c09012SAndroid Build Coastguard Worker  // Optional. Required when opening a
1984*d5c09012SAndroid Build Coastguard Worker  // [dialog](https://developers.google.com/workspace/chat/dialogs).
1985*d5c09012SAndroid Build Coastguard Worker  //
1986*d5c09012SAndroid Build Coastguard Worker  // What to do in response to an interaction with a user, such as a user
1987*d5c09012SAndroid Build Coastguard Worker  // clicking a button in a card message.
1988*d5c09012SAndroid Build Coastguard Worker  //
1989*d5c09012SAndroid Build Coastguard Worker  // If unspecified, the app responds by executing an `action`—like opening a
1990*d5c09012SAndroid Build Coastguard Worker  // link or running a function—as normal.
1991*d5c09012SAndroid Build Coastguard Worker  //
1992*d5c09012SAndroid Build Coastguard Worker  // By specifying an `interaction`, the app can respond in special interactive
1993*d5c09012SAndroid Build Coastguard Worker  // ways. For example, by setting `interaction` to `OPEN_DIALOG`, the app can
1994*d5c09012SAndroid Build Coastguard Worker  // open a [dialog](https://developers.google.com/workspace/chat/dialogs). When
1995*d5c09012SAndroid Build Coastguard Worker  // specified, a loading indicator isn't shown. If specified for
1996*d5c09012SAndroid Build Coastguard Worker  // an add-on, the entire card is stripped and nothing is shown in the client.
1997*d5c09012SAndroid Build Coastguard Worker  //
1998*d5c09012SAndroid Build Coastguard Worker  // [Google Chat apps](https://developers.google.com/workspace/chat):
1999*d5c09012SAndroid Build Coastguard Worker  Interaction interaction = 5;
2000*d5c09012SAndroid Build Coastguard Worker}
2001