google-apps-card-v1 0.1.0

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