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//  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