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