| // Copyright 2023 Google LLC |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| // Code generated by protoc-gen-go. DO NOT EDIT. |
| // versions: |
| // protoc-gen-go v1.26.0 |
| // protoc v4.24.4 |
| // source: google/apps/card/v1/card.proto |
| |
| package card |
| |
| import ( |
| reflect "reflect" |
| sync "sync" |
| |
| color "google.golang.org/genproto/googleapis/type/color" |
| protoreflect "google.golang.org/protobuf/reflect/protoreflect" |
| protoimpl "google.golang.org/protobuf/runtime/protoimpl" |
| ) |
| |
| const ( |
| // Verify that this generated code is sufficiently up-to-date. |
| _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) |
| // Verify that runtime/protoimpl is sufficiently up-to-date. |
| _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) |
| ) |
| |
| // The divider style of a card. Currently only used for dividers betweens card |
| // sections. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type Card_DividerStyle int32 |
| |
| const ( |
| // Don't use. Unspecified. |
| Card_DIVIDER_STYLE_UNSPECIFIED Card_DividerStyle = 0 |
| // Default option. Render a solid divider between sections. |
| Card_SOLID_DIVIDER Card_DividerStyle = 1 |
| // If set, no divider is rendered between sections. |
| Card_NO_DIVIDER Card_DividerStyle = 2 |
| ) |
| |
| // Enum value maps for Card_DividerStyle. |
| var ( |
| Card_DividerStyle_name = map[int32]string{ |
| 0: "DIVIDER_STYLE_UNSPECIFIED", |
| 1: "SOLID_DIVIDER", |
| 2: "NO_DIVIDER", |
| } |
| Card_DividerStyle_value = map[string]int32{ |
| "DIVIDER_STYLE_UNSPECIFIED": 0, |
| "SOLID_DIVIDER": 1, |
| "NO_DIVIDER": 2, |
| } |
| ) |
| |
| func (x Card_DividerStyle) Enum() *Card_DividerStyle { |
| p := new(Card_DividerStyle) |
| *p = x |
| return p |
| } |
| |
| func (x Card_DividerStyle) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (Card_DividerStyle) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[0].Descriptor() |
| } |
| |
| func (Card_DividerStyle) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[0] |
| } |
| |
| func (x Card_DividerStyle) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use Card_DividerStyle.Descriptor instead. |
| func (Card_DividerStyle) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0, 0} |
| } |
| |
| // In Google Workspace Add-ons, |
| // determines how a card is displayed. |
| // |
| // [Google Workspace |
| // Add-ons](https://developers.google.com/workspace/add-ons): |
| type Card_DisplayStyle int32 |
| |
| const ( |
| // Don't use. Unspecified. |
| Card_DISPLAY_STYLE_UNSPECIFIED Card_DisplayStyle = 0 |
| // The header of the card appears at the bottom of the |
| // sidebar, partially covering the current top card of the stack. Clicking |
| // the header pops the card into the card stack. If the card has no header, |
| // a generated header is used instead. |
| Card_PEEK Card_DisplayStyle = 1 |
| // Default value. The card is shown by replacing the view of the top card in |
| // the card stack. |
| Card_REPLACE Card_DisplayStyle = 2 |
| ) |
| |
| // Enum value maps for Card_DisplayStyle. |
| var ( |
| Card_DisplayStyle_name = map[int32]string{ |
| 0: "DISPLAY_STYLE_UNSPECIFIED", |
| 1: "PEEK", |
| 2: "REPLACE", |
| } |
| Card_DisplayStyle_value = map[string]int32{ |
| "DISPLAY_STYLE_UNSPECIFIED": 0, |
| "PEEK": 1, |
| "REPLACE": 2, |
| } |
| ) |
| |
| func (x Card_DisplayStyle) Enum() *Card_DisplayStyle { |
| p := new(Card_DisplayStyle) |
| *p = x |
| return p |
| } |
| |
| func (x Card_DisplayStyle) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (Card_DisplayStyle) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[1].Descriptor() |
| } |
| |
| func (Card_DisplayStyle) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[1] |
| } |
| |
| func (x Card_DisplayStyle) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use Card_DisplayStyle.Descriptor instead. |
| func (Card_DisplayStyle) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0, 1} |
| } |
| |
| // The shape used to crop the image. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type Widget_ImageType int32 |
| |
| const ( |
| // Default value. Applies a square mask to the image. For example, a 4x3 |
| // image becomes 3x3. |
| Widget_SQUARE Widget_ImageType = 0 |
| // Applies a circular mask to the image. For example, a 4x3 image becomes a |
| // circle with a diameter of 3. |
| Widget_CIRCLE Widget_ImageType = 1 |
| ) |
| |
| // Enum value maps for Widget_ImageType. |
| var ( |
| Widget_ImageType_name = map[int32]string{ |
| 0: "SQUARE", |
| 1: "CIRCLE", |
| } |
| Widget_ImageType_value = map[string]int32{ |
| "SQUARE": 0, |
| "CIRCLE": 1, |
| } |
| ) |
| |
| func (x Widget_ImageType) Enum() *Widget_ImageType { |
| p := new(Widget_ImageType) |
| *p = x |
| return p |
| } |
| |
| func (x Widget_ImageType) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (Widget_ImageType) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[2].Descriptor() |
| } |
| |
| func (Widget_ImageType) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[2] |
| } |
| |
| func (x Widget_ImageType) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use Widget_ImageType.Descriptor instead. |
| func (Widget_ImageType) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{1, 0} |
| } |
| |
| // Specifies whether widgets align to the left, right, or center of a column. |
| // |
| // [Google Chat apps](https://developers.google.com/workspace/chat): |
| type Widget_HorizontalAlignment int32 |
| |
| const ( |
| // Don't use. Unspecified. |
| Widget_HORIZONTAL_ALIGNMENT_UNSPECIFIED Widget_HorizontalAlignment = 0 |
| // Default value. Aligns widgets to the start position of the column. For |
| // left-to-right layouts, aligns to the left. For right-to-left layouts, |
| // aligns to the right. |
| Widget_START Widget_HorizontalAlignment = 1 |
| // Aligns widgets to the center of the column. |
| Widget_CENTER Widget_HorizontalAlignment = 2 |
| // Aligns widgets to the end position of the column. For left-to-right |
| // layouts, aligns widgets to the right. For right-to-left layouts, aligns |
| // widgets to the left. |
| Widget_END Widget_HorizontalAlignment = 3 |
| ) |
| |
| // Enum value maps for Widget_HorizontalAlignment. |
| var ( |
| Widget_HorizontalAlignment_name = map[int32]string{ |
| 0: "HORIZONTAL_ALIGNMENT_UNSPECIFIED", |
| 1: "START", |
| 2: "CENTER", |
| 3: "END", |
| } |
| Widget_HorizontalAlignment_value = map[string]int32{ |
| "HORIZONTAL_ALIGNMENT_UNSPECIFIED": 0, |
| "START": 1, |
| "CENTER": 2, |
| "END": 3, |
| } |
| ) |
| |
| func (x Widget_HorizontalAlignment) Enum() *Widget_HorizontalAlignment { |
| p := new(Widget_HorizontalAlignment) |
| *p = x |
| return p |
| } |
| |
| func (x Widget_HorizontalAlignment) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (Widget_HorizontalAlignment) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[3].Descriptor() |
| } |
| |
| func (Widget_HorizontalAlignment) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[3] |
| } |
| |
| func (x Widget_HorizontalAlignment) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use Widget_HorizontalAlignment.Descriptor instead. |
| func (Widget_HorizontalAlignment) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{1, 1} |
| } |
| |
| // How the switch appears in the user interface. |
| // |
| // [Google Workspace Add-ons |
| // and Chat apps](https://developers.google.com/workspace/extend): |
| type DecoratedText_SwitchControl_ControlType int32 |
| |
| const ( |
| // A toggle-style switch. |
| DecoratedText_SwitchControl_SWITCH DecoratedText_SwitchControl_ControlType = 0 |
| // Deprecated in favor of `CHECK_BOX`. |
| DecoratedText_SwitchControl_CHECKBOX DecoratedText_SwitchControl_ControlType = 1 |
| // A checkbox. |
| DecoratedText_SwitchControl_CHECK_BOX DecoratedText_SwitchControl_ControlType = 2 |
| ) |
| |
| // Enum value maps for DecoratedText_SwitchControl_ControlType. |
| var ( |
| DecoratedText_SwitchControl_ControlType_name = map[int32]string{ |
| 0: "SWITCH", |
| 1: "CHECKBOX", |
| 2: "CHECK_BOX", |
| } |
| DecoratedText_SwitchControl_ControlType_value = map[string]int32{ |
| "SWITCH": 0, |
| "CHECKBOX": 1, |
| "CHECK_BOX": 2, |
| } |
| ) |
| |
| func (x DecoratedText_SwitchControl_ControlType) Enum() *DecoratedText_SwitchControl_ControlType { |
| p := new(DecoratedText_SwitchControl_ControlType) |
| *p = x |
| return p |
| } |
| |
| func (x DecoratedText_SwitchControl_ControlType) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (DecoratedText_SwitchControl_ControlType) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[4].Descriptor() |
| } |
| |
| func (DecoratedText_SwitchControl_ControlType) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[4] |
| } |
| |
| func (x DecoratedText_SwitchControl_ControlType) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use DecoratedText_SwitchControl_ControlType.Descriptor instead. |
| func (DecoratedText_SwitchControl_ControlType) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{5, 0, 0} |
| } |
| |
| // How a text input field appears in the user interface. For example, |
| // whether it's a single line input field, or a multi-line input. If |
| // `initialSuggestions` is specified, `type` is always `SINGLE_LINE`, |
| // even if it's set to `MULTIPLE_LINE`. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type TextInput_Type int32 |
| |
| const ( |
| // The text input field has a fixed height of one line. |
| TextInput_SINGLE_LINE TextInput_Type = 0 |
| // The text input field has a fixed height of multiple lines. |
| TextInput_MULTIPLE_LINE TextInput_Type = 1 |
| ) |
| |
| // Enum value maps for TextInput_Type. |
| var ( |
| TextInput_Type_name = map[int32]string{ |
| 0: "SINGLE_LINE", |
| 1: "MULTIPLE_LINE", |
| } |
| TextInput_Type_value = map[string]int32{ |
| "SINGLE_LINE": 0, |
| "MULTIPLE_LINE": 1, |
| } |
| ) |
| |
| func (x TextInput_Type) Enum() *TextInput_Type { |
| p := new(TextInput_Type) |
| *p = x |
| return p |
| } |
| |
| func (x TextInput_Type) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (TextInput_Type) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[5].Descriptor() |
| } |
| |
| func (TextInput_Type) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[5] |
| } |
| |
| func (x TextInput_Type) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use TextInput_Type.Descriptor instead. |
| func (TextInput_Type) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{6, 0} |
| } |
| |
| // The format for the items that users can select. Different options support |
| // different types of interactions. For example, users can select multiple |
| // checkboxes, but can only select one item from a dropdown menu. |
| // |
| // Each selection input supports one type of selection. Mixing checkboxes |
| // and switches, for example, isn't supported. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type SelectionInput_SelectionType int32 |
| |
| const ( |
| // A set of checkboxes. Users can select one or more checkboxes. |
| SelectionInput_CHECK_BOX SelectionInput_SelectionType = 0 |
| // A set of radio buttons. Users can select one radio button. |
| SelectionInput_RADIO_BUTTON SelectionInput_SelectionType = 1 |
| // A set of switches. Users can turn on one or more switches. |
| SelectionInput_SWITCH SelectionInput_SelectionType = 2 |
| // A dropdown menu. Users can select one item from the menu. |
| SelectionInput_DROPDOWN SelectionInput_SelectionType = 3 |
| // A multiselect menu for static or dynamic data. From the menu bar, |
| // users select one or more items. Users can also input values to populate |
| // dynamic data. For example, users can start typing the name of a Google |
| // Chat space and the widget autosuggests the space. |
| // |
| // To populate items for a multiselect menu, you can use one of the |
| // following types of data sources: |
| // |
| // - Static data: Items are specified as `SelectionItem` objects in the |
| // widget. Up to 100 items. |
| // - Google Workspace data: Items are populated using data from Google |
| // Workspace, such as Google Workspace users or Google Chat spaces. |
| // - External data: Items are populated from an external data |
| // source outside of Google Workspace. |
| // |
| // For examples of how to implement multiselect menus, see |
| // [Add a multiselect |
| // menu](https://developers.google.com/workspace/chat/design-interactive-card-dialog#multiselect-menu). |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| // Multiselect for Google Workspace Add-ons are in |
| // Developer Preview. |
| SelectionInput_MULTI_SELECT SelectionInput_SelectionType = 4 |
| ) |
| |
| // Enum value maps for SelectionInput_SelectionType. |
| var ( |
| SelectionInput_SelectionType_name = map[int32]string{ |
| 0: "CHECK_BOX", |
| 1: "RADIO_BUTTON", |
| 2: "SWITCH", |
| 3: "DROPDOWN", |
| 4: "MULTI_SELECT", |
| } |
| SelectionInput_SelectionType_value = map[string]int32{ |
| "CHECK_BOX": 0, |
| "RADIO_BUTTON": 1, |
| "SWITCH": 2, |
| "DROPDOWN": 3, |
| "MULTI_SELECT": 4, |
| } |
| ) |
| |
| func (x SelectionInput_SelectionType) Enum() *SelectionInput_SelectionType { |
| p := new(SelectionInput_SelectionType) |
| *p = x |
| return p |
| } |
| |
| func (x SelectionInput_SelectionType) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (SelectionInput_SelectionType) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[6].Descriptor() |
| } |
| |
| func (SelectionInput_SelectionType) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[6] |
| } |
| |
| func (x SelectionInput_SelectionType) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use SelectionInput_SelectionType.Descriptor instead. |
| func (SelectionInput_SelectionType) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{9, 0} |
| } |
| |
| // A data source shared by all [Google Workspace |
| // applications] |
| // (https://developers.google.com/workspace/chat/api/reference/rest/v1/HostApp). |
| // |
| // [Google Chat apps](https://developers.google.com/workspace/chat): |
| type SelectionInput_PlatformDataSource_CommonDataSource int32 |
| |
| const ( |
| // Default value. Don't use. |
| SelectionInput_PlatformDataSource_UNKNOWN SelectionInput_PlatformDataSource_CommonDataSource = 0 |
| // Google Workspace users. The user can only view and select users from |
| // their Google Workspace organization. |
| SelectionInput_PlatformDataSource_USER SelectionInput_PlatformDataSource_CommonDataSource = 1 |
| ) |
| |
| // Enum value maps for SelectionInput_PlatformDataSource_CommonDataSource. |
| var ( |
| SelectionInput_PlatformDataSource_CommonDataSource_name = map[int32]string{ |
| 0: "UNKNOWN", |
| 1: "USER", |
| } |
| SelectionInput_PlatformDataSource_CommonDataSource_value = map[string]int32{ |
| "UNKNOWN": 0, |
| "USER": 1, |
| } |
| ) |
| |
| func (x SelectionInput_PlatformDataSource_CommonDataSource) Enum() *SelectionInput_PlatformDataSource_CommonDataSource { |
| p := new(SelectionInput_PlatformDataSource_CommonDataSource) |
| *p = x |
| return p |
| } |
| |
| func (x SelectionInput_PlatformDataSource_CommonDataSource) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (SelectionInput_PlatformDataSource_CommonDataSource) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[7].Descriptor() |
| } |
| |
| func (SelectionInput_PlatformDataSource_CommonDataSource) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[7] |
| } |
| |
| func (x SelectionInput_PlatformDataSource_CommonDataSource) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use SelectionInput_PlatformDataSource_CommonDataSource.Descriptor instead. |
| func (SelectionInput_PlatformDataSource_CommonDataSource) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{9, 1, 0} |
| } |
| |
| // The format for the date and time in the `DateTimePicker` widget. |
| // Determines whether users can input a date, a time, or both a date and time. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type DateTimePicker_DateTimePickerType int32 |
| |
| const ( |
| // Users input a date and time. |
| DateTimePicker_DATE_AND_TIME DateTimePicker_DateTimePickerType = 0 |
| // Users input a date. |
| DateTimePicker_DATE_ONLY DateTimePicker_DateTimePickerType = 1 |
| // Users input a time. |
| DateTimePicker_TIME_ONLY DateTimePicker_DateTimePickerType = 2 |
| ) |
| |
| // Enum value maps for DateTimePicker_DateTimePickerType. |
| var ( |
| DateTimePicker_DateTimePickerType_name = map[int32]string{ |
| 0: "DATE_AND_TIME", |
| 1: "DATE_ONLY", |
| 2: "TIME_ONLY", |
| } |
| DateTimePicker_DateTimePickerType_value = map[string]int32{ |
| "DATE_AND_TIME": 0, |
| "DATE_ONLY": 1, |
| "TIME_ONLY": 2, |
| } |
| ) |
| |
| func (x DateTimePicker_DateTimePickerType) Enum() *DateTimePicker_DateTimePickerType { |
| p := new(DateTimePicker_DateTimePickerType) |
| *p = x |
| return p |
| } |
| |
| func (x DateTimePicker_DateTimePickerType) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (DateTimePicker_DateTimePickerType) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[8].Descriptor() |
| } |
| |
| func (DateTimePicker_DateTimePickerType) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[8] |
| } |
| |
| func (x DateTimePicker_DateTimePickerType) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use DateTimePicker_DateTimePickerType.Descriptor instead. |
| func (DateTimePicker_DateTimePickerType) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{10, 0} |
| } |
| |
| // Represents the crop style applied to an image. |
| // |
| // [Google Workspace Add-ons |
| // and Chat apps](https://developers.google.com/workspace/extend): |
| type ImageCropStyle_ImageCropType int32 |
| |
| const ( |
| // Don't use. Unspecified. |
| ImageCropStyle_IMAGE_CROP_TYPE_UNSPECIFIED ImageCropStyle_ImageCropType = 0 |
| // Default value. Applies a square crop. |
| ImageCropStyle_SQUARE ImageCropStyle_ImageCropType = 1 |
| // Applies a circular crop. |
| ImageCropStyle_CIRCLE ImageCropStyle_ImageCropType = 2 |
| // Applies a rectangular crop with a custom aspect ratio. Set the custom |
| // aspect ratio with `aspectRatio`. |
| ImageCropStyle_RECTANGLE_CUSTOM ImageCropStyle_ImageCropType = 3 |
| // Applies a rectangular crop with a 4:3 aspect ratio. |
| ImageCropStyle_RECTANGLE_4_3 ImageCropStyle_ImageCropType = 4 |
| ) |
| |
| // Enum value maps for ImageCropStyle_ImageCropType. |
| var ( |
| ImageCropStyle_ImageCropType_name = map[int32]string{ |
| 0: "IMAGE_CROP_TYPE_UNSPECIFIED", |
| 1: "SQUARE", |
| 2: "CIRCLE", |
| 3: "RECTANGLE_CUSTOM", |
| 4: "RECTANGLE_4_3", |
| } |
| ImageCropStyle_ImageCropType_value = map[string]int32{ |
| "IMAGE_CROP_TYPE_UNSPECIFIED": 0, |
| "SQUARE": 1, |
| "CIRCLE": 2, |
| "RECTANGLE_CUSTOM": 3, |
| "RECTANGLE_4_3": 4, |
| } |
| ) |
| |
| func (x ImageCropStyle_ImageCropType) Enum() *ImageCropStyle_ImageCropType { |
| p := new(ImageCropStyle_ImageCropType) |
| *p = x |
| return p |
| } |
| |
| func (x ImageCropStyle_ImageCropType) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (ImageCropStyle_ImageCropType) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[9].Descriptor() |
| } |
| |
| func (ImageCropStyle_ImageCropType) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[9] |
| } |
| |
| func (x ImageCropStyle_ImageCropType) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use ImageCropStyle_ImageCropType.Descriptor instead. |
| func (ImageCropStyle_ImageCropType) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{14, 0} |
| } |
| |
| // Represents the border types applied to widgets. |
| // |
| // [Google Workspace Add-ons |
| // and Chat apps](https://developers.google.com/workspace/extend): |
| type BorderStyle_BorderType int32 |
| |
| const ( |
| // Don't use. Unspecified. |
| BorderStyle_BORDER_TYPE_UNSPECIFIED BorderStyle_BorderType = 0 |
| // Default value. No border. |
| BorderStyle_NO_BORDER BorderStyle_BorderType = 1 |
| // Outline. |
| BorderStyle_STROKE BorderStyle_BorderType = 2 |
| ) |
| |
| // Enum value maps for BorderStyle_BorderType. |
| var ( |
| BorderStyle_BorderType_name = map[int32]string{ |
| 0: "BORDER_TYPE_UNSPECIFIED", |
| 1: "NO_BORDER", |
| 2: "STROKE", |
| } |
| BorderStyle_BorderType_value = map[string]int32{ |
| "BORDER_TYPE_UNSPECIFIED": 0, |
| "NO_BORDER": 1, |
| "STROKE": 2, |
| } |
| ) |
| |
| func (x BorderStyle_BorderType) Enum() *BorderStyle_BorderType { |
| p := new(BorderStyle_BorderType) |
| *p = x |
| return p |
| } |
| |
| func (x BorderStyle_BorderType) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (BorderStyle_BorderType) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[10].Descriptor() |
| } |
| |
| func (BorderStyle_BorderType) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[10] |
| } |
| |
| func (x BorderStyle_BorderType) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use BorderStyle_BorderType.Descriptor instead. |
| func (BorderStyle_BorderType) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{15, 0} |
| } |
| |
| // Represents the various layout options available for a grid item. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type Grid_GridItem_GridItemLayout int32 |
| |
| const ( |
| // Don't use. Unspecified. |
| Grid_GridItem_GRID_ITEM_LAYOUT_UNSPECIFIED Grid_GridItem_GridItemLayout = 0 |
| // The title and subtitle are shown below the grid item's image. |
| Grid_GridItem_TEXT_BELOW Grid_GridItem_GridItemLayout = 1 |
| // The title and subtitle are shown above the grid item's image. |
| Grid_GridItem_TEXT_ABOVE Grid_GridItem_GridItemLayout = 2 |
| ) |
| |
| // Enum value maps for Grid_GridItem_GridItemLayout. |
| var ( |
| Grid_GridItem_GridItemLayout_name = map[int32]string{ |
| 0: "GRID_ITEM_LAYOUT_UNSPECIFIED", |
| 1: "TEXT_BELOW", |
| 2: "TEXT_ABOVE", |
| } |
| Grid_GridItem_GridItemLayout_value = map[string]int32{ |
| "GRID_ITEM_LAYOUT_UNSPECIFIED": 0, |
| "TEXT_BELOW": 1, |
| "TEXT_ABOVE": 2, |
| } |
| ) |
| |
| func (x Grid_GridItem_GridItemLayout) Enum() *Grid_GridItem_GridItemLayout { |
| p := new(Grid_GridItem_GridItemLayout) |
| *p = x |
| return p |
| } |
| |
| func (x Grid_GridItem_GridItemLayout) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (Grid_GridItem_GridItemLayout) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[11].Descriptor() |
| } |
| |
| func (Grid_GridItem_GridItemLayout) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[11] |
| } |
| |
| func (x Grid_GridItem_GridItemLayout) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use Grid_GridItem_GridItemLayout.Descriptor instead. |
| func (Grid_GridItem_GridItemLayout) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{17, 0, 0} |
| } |
| |
| // Specifies how a column fills the width of the card. The width of each |
| // column depends on both the `HorizontalSizeStyle` and the width of the |
| // widgets within the column. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| // Columns for Google Workspace Add-ons are in |
| // Developer Preview. |
| type Columns_Column_HorizontalSizeStyle int32 |
| |
| const ( |
| // Don't use. Unspecified. |
| Columns_Column_HORIZONTAL_SIZE_STYLE_UNSPECIFIED Columns_Column_HorizontalSizeStyle = 0 |
| // Default value. Column fills the available space, up to 70% of the |
| // card's width. If both columns are set to `FILL_AVAILABLE_SPACE`, each |
| // column fills 50% of the space. |
| Columns_Column_FILL_AVAILABLE_SPACE Columns_Column_HorizontalSizeStyle = 1 |
| // Column fills the least amount of space possible and no more than 30% of |
| // the card's width. |
| Columns_Column_FILL_MINIMUM_SPACE Columns_Column_HorizontalSizeStyle = 2 |
| ) |
| |
| // Enum value maps for Columns_Column_HorizontalSizeStyle. |
| var ( |
| Columns_Column_HorizontalSizeStyle_name = map[int32]string{ |
| 0: "HORIZONTAL_SIZE_STYLE_UNSPECIFIED", |
| 1: "FILL_AVAILABLE_SPACE", |
| 2: "FILL_MINIMUM_SPACE", |
| } |
| Columns_Column_HorizontalSizeStyle_value = map[string]int32{ |
| "HORIZONTAL_SIZE_STYLE_UNSPECIFIED": 0, |
| "FILL_AVAILABLE_SPACE": 1, |
| "FILL_MINIMUM_SPACE": 2, |
| } |
| ) |
| |
| func (x Columns_Column_HorizontalSizeStyle) Enum() *Columns_Column_HorizontalSizeStyle { |
| p := new(Columns_Column_HorizontalSizeStyle) |
| *p = x |
| return p |
| } |
| |
| func (x Columns_Column_HorizontalSizeStyle) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (Columns_Column_HorizontalSizeStyle) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[12].Descriptor() |
| } |
| |
| func (Columns_Column_HorizontalSizeStyle) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[12] |
| } |
| |
| func (x Columns_Column_HorizontalSizeStyle) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use Columns_Column_HorizontalSizeStyle.Descriptor instead. |
| func (Columns_Column_HorizontalSizeStyle) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{18, 0, 0} |
| } |
| |
| // Specifies whether widgets align to the top, bottom, or center of a |
| // column. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| // Columns for Google Workspace Add-ons are in |
| // Developer Preview. |
| type Columns_Column_VerticalAlignment int32 |
| |
| const ( |
| // Don't use. Unspecified. |
| Columns_Column_VERTICAL_ALIGNMENT_UNSPECIFIED Columns_Column_VerticalAlignment = 0 |
| // Default value. Aligns widgets to the center of a column. |
| Columns_Column_CENTER Columns_Column_VerticalAlignment = 1 |
| // Aligns widgets to the top of a column. |
| Columns_Column_TOP Columns_Column_VerticalAlignment = 2 |
| // Aligns widgets to the bottom of a column. |
| Columns_Column_BOTTOM Columns_Column_VerticalAlignment = 3 |
| ) |
| |
| // Enum value maps for Columns_Column_VerticalAlignment. |
| var ( |
| Columns_Column_VerticalAlignment_name = map[int32]string{ |
| 0: "VERTICAL_ALIGNMENT_UNSPECIFIED", |
| 1: "CENTER", |
| 2: "TOP", |
| 3: "BOTTOM", |
| } |
| Columns_Column_VerticalAlignment_value = map[string]int32{ |
| "VERTICAL_ALIGNMENT_UNSPECIFIED": 0, |
| "CENTER": 1, |
| "TOP": 2, |
| "BOTTOM": 3, |
| } |
| ) |
| |
| func (x Columns_Column_VerticalAlignment) Enum() *Columns_Column_VerticalAlignment { |
| p := new(Columns_Column_VerticalAlignment) |
| *p = x |
| return p |
| } |
| |
| func (x Columns_Column_VerticalAlignment) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (Columns_Column_VerticalAlignment) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[13].Descriptor() |
| } |
| |
| func (Columns_Column_VerticalAlignment) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[13] |
| } |
| |
| func (x Columns_Column_VerticalAlignment) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use Columns_Column_VerticalAlignment.Descriptor instead. |
| func (Columns_Column_VerticalAlignment) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{18, 0, 1} |
| } |
| |
| // When an `OnClick` action opens a link, then the client can either open it |
| // as a full-size window (if that's the frame used by the client), or an |
| // overlay (such as a pop-up). The implementation depends on the client |
| // platform capabilities, and the value selected might be ignored if the |
| // client doesn't support it. `FULL_SIZE` is supported by all clients. |
| // |
| // [Google Workspace |
| // Add-ons](https://developers.google.com/workspace/add-ons): |
| type OpenLink_OpenAs int32 |
| |
| const ( |
| // The link opens as a full-size window (if that's the frame used by the |
| // client). |
| OpenLink_FULL_SIZE OpenLink_OpenAs = 0 |
| // The link opens as an overlay, such as a pop-up. |
| OpenLink_OVERLAY OpenLink_OpenAs = 1 |
| ) |
| |
| // Enum value maps for OpenLink_OpenAs. |
| var ( |
| OpenLink_OpenAs_name = map[int32]string{ |
| 0: "FULL_SIZE", |
| 1: "OVERLAY", |
| } |
| OpenLink_OpenAs_value = map[string]int32{ |
| "FULL_SIZE": 0, |
| "OVERLAY": 1, |
| } |
| ) |
| |
| func (x OpenLink_OpenAs) Enum() *OpenLink_OpenAs { |
| p := new(OpenLink_OpenAs) |
| *p = x |
| return p |
| } |
| |
| func (x OpenLink_OpenAs) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (OpenLink_OpenAs) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[14].Descriptor() |
| } |
| |
| func (OpenLink_OpenAs) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[14] |
| } |
| |
| func (x OpenLink_OpenAs) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use OpenLink_OpenAs.Descriptor instead. |
| func (OpenLink_OpenAs) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{20, 0} |
| } |
| |
| // What the client does when a link opened by an `OnClick` action is closed. |
| // |
| // Implementation depends on client platform capabilities. For example, a web |
| // browser might open a link in a pop-up window with an `OnClose` handler. |
| // |
| // If both `OnOpen` and `OnClose` handlers are set, and the client platform |
| // can't support both values, `OnClose` takes precedence. |
| // |
| // [Google Workspace |
| // Add-ons](https://developers.google.com/workspace/add-ons): |
| type OpenLink_OnClose int32 |
| |
| const ( |
| // Default value. The card doesn't reload; nothing happens. |
| OpenLink_NOTHING OpenLink_OnClose = 0 |
| // Reloads the card after the child window closes. |
| // |
| // If used in conjunction with |
| // [`OpenAs.OVERLAY`](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#openas), |
| // the child window acts as a modal dialog and the parent card is blocked |
| // until the child window closes. |
| OpenLink_RELOAD OpenLink_OnClose = 1 |
| ) |
| |
| // Enum value maps for OpenLink_OnClose. |
| var ( |
| OpenLink_OnClose_name = map[int32]string{ |
| 0: "NOTHING", |
| 1: "RELOAD", |
| } |
| OpenLink_OnClose_value = map[string]int32{ |
| "NOTHING": 0, |
| "RELOAD": 1, |
| } |
| ) |
| |
| func (x OpenLink_OnClose) Enum() *OpenLink_OnClose { |
| p := new(OpenLink_OnClose) |
| *p = x |
| return p |
| } |
| |
| func (x OpenLink_OnClose) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (OpenLink_OnClose) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[15].Descriptor() |
| } |
| |
| func (OpenLink_OnClose) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[15] |
| } |
| |
| func (x OpenLink_OnClose) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use OpenLink_OnClose.Descriptor instead. |
| func (OpenLink_OnClose) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{20, 1} |
| } |
| |
| // Specifies the loading indicator that the action displays while |
| // making the call to the action. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type Action_LoadIndicator int32 |
| |
| const ( |
| // Displays a spinner to indicate that content is loading. |
| Action_SPINNER Action_LoadIndicator = 0 |
| // Nothing is displayed. |
| Action_NONE Action_LoadIndicator = 1 |
| ) |
| |
| // Enum value maps for Action_LoadIndicator. |
| var ( |
| Action_LoadIndicator_name = map[int32]string{ |
| 0: "SPINNER", |
| 1: "NONE", |
| } |
| Action_LoadIndicator_value = map[string]int32{ |
| "SPINNER": 0, |
| "NONE": 1, |
| } |
| ) |
| |
| func (x Action_LoadIndicator) Enum() *Action_LoadIndicator { |
| p := new(Action_LoadIndicator) |
| *p = x |
| return p |
| } |
| |
| func (x Action_LoadIndicator) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (Action_LoadIndicator) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[16].Descriptor() |
| } |
| |
| func (Action_LoadIndicator) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[16] |
| } |
| |
| func (x Action_LoadIndicator) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use Action_LoadIndicator.Descriptor instead. |
| func (Action_LoadIndicator) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{21, 0} |
| } |
| |
| // Optional. Required when opening a |
| // [dialog](https://developers.google.com/workspace/chat/dialogs). |
| // |
| // What to do in response to an interaction with a user, such as a user |
| // clicking a button in a card message. |
| // |
| // If unspecified, the app responds by executing an `action`—like opening a |
| // link or running a function—as normal. |
| // |
| // By specifying an `interaction`, the app can respond in special interactive |
| // ways. For example, by setting `interaction` to `OPEN_DIALOG`, the app can |
| // open a [dialog](https://developers.google.com/workspace/chat/dialogs). |
| // |
| // When specified, a loading indicator isn't shown. If specified for |
| // an add-on, the entire card is stripped and nothing is shown in the client. |
| // |
| // [Google Chat apps](https://developers.google.com/workspace/chat): |
| type Action_Interaction int32 |
| |
| const ( |
| // Default value. The `action` executes as normal. |
| Action_INTERACTION_UNSPECIFIED Action_Interaction = 0 |
| // Opens a [dialog](https://developers.google.com/workspace/chat/dialogs), a |
| // windowed, card-based interface that Chat apps use to interact with users. |
| // |
| // Only supported by Chat apps in response to button-clicks on card |
| // messages. If specified for |
| // an add-on, the entire card is stripped and nothing is shown in the |
| // client. |
| // |
| // [Google Chat apps](https://developers.google.com/workspace/chat): |
| Action_OPEN_DIALOG Action_Interaction = 1 |
| ) |
| |
| // Enum value maps for Action_Interaction. |
| var ( |
| Action_Interaction_name = map[int32]string{ |
| 0: "INTERACTION_UNSPECIFIED", |
| 1: "OPEN_DIALOG", |
| } |
| Action_Interaction_value = map[string]int32{ |
| "INTERACTION_UNSPECIFIED": 0, |
| "OPEN_DIALOG": 1, |
| } |
| ) |
| |
| func (x Action_Interaction) Enum() *Action_Interaction { |
| p := new(Action_Interaction) |
| *p = x |
| return p |
| } |
| |
| func (x Action_Interaction) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (Action_Interaction) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_apps_card_v1_card_proto_enumTypes[17].Descriptor() |
| } |
| |
| func (Action_Interaction) Type() protoreflect.EnumType { |
| return &file_google_apps_card_v1_card_proto_enumTypes[17] |
| } |
| |
| func (x Action_Interaction) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use Action_Interaction.Descriptor instead. |
| func (Action_Interaction) EnumDescriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{21, 1} |
| } |
| |
| // A card interface displayed in a Google Chat message or Google Workspace |
| // Add-on. |
| // |
| // Cards support a defined layout, interactive UI elements like buttons, and |
| // rich media like images. Use cards to present detailed information, |
| // gather information from users, and guide users to take a next step. |
| // |
| // [Card builder](https://addons.gsuite.google.com/uikit/builder) |
| // |
| // To learn how |
| // to build cards, see the following documentation: |
| // |
| // - For Google Chat apps, see [Design the components of a card or |
| // dialog](https://developers.google.com/workspace/chat/design-components-card-dialog). |
| // - For Google Workspace Add-ons, see [Card-based |
| // |
| // interfaces](https://developers.google.com/apps-script/add-ons/concepts/cards). |
| // |
| // **Example: Card message for a Google Chat app** |
| // |
| // ![Example contact |
| // card](https://developers.google.com/workspace/chat/images/card_api_reference.png) |
| // |
| // To create the sample card message in Google Chat, use the following JSON: |
| // |
| // ``` |
| // |
| // { |
| // "cardsV2": [ |
| // { |
| // "cardId": "unique-card-id", |
| // "card": { |
| // "header": { |
| // "title": "Sasha", |
| // "subtitle": "Software Engineer", |
| // "imageUrl": |
| // "https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png", |
| // "imageType": "CIRCLE", |
| // "imageAltText": "Avatar for Sasha" |
| // }, |
| // "sections": [ |
| // { |
| // "header": "Contact Info", |
| // "collapsible": true, |
| // "uncollapsibleWidgetsCount": 1, |
| // "widgets": [ |
| // { |
| // "decoratedText": { |
| // "startIcon": { |
| // "knownIcon": "EMAIL" |
| // }, |
| // "text": "sasha@example.com" |
| // } |
| // }, |
| // { |
| // "decoratedText": { |
| // "startIcon": { |
| // "knownIcon": "PERSON" |
| // }, |
| // "text": "<font color=\"#80e27e\">Online</font>" |
| // } |
| // }, |
| // { |
| // "decoratedText": { |
| // "startIcon": { |
| // "knownIcon": "PHONE" |
| // }, |
| // "text": "+1 (555) 555-1234" |
| // } |
| // }, |
| // { |
| // "buttonList": { |
| // "buttons": [ |
| // { |
| // "text": "Share", |
| // "onClick": { |
| // "openLink": { |
| // "url": "https://example.com/share" |
| // } |
| // } |
| // }, |
| // { |
| // "text": "Edit", |
| // "onClick": { |
| // "action": { |
| // "function": "goToView", |
| // "parameters": [ |
| // { |
| // "key": "viewType", |
| // "value": "EDIT" |
| // } |
| // ] |
| // } |
| // } |
| // } |
| // ] |
| // } |
| // } |
| // ] |
| // } |
| // ] |
| // } |
| // } |
| // ] |
| // } |
| // |
| // ``` |
| type Card struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The header of the card. A header usually contains a leading image and a |
| // title. Headers always appear at the top of a card. |
| Header *Card_CardHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` |
| // Contains a collection of widgets. Each section has its own, optional |
| // header. Sections are visually separated by a line divider. For an example |
| // in Google Chat apps, see [Define a section of a |
| // card](https://developers.google.com/workspace/chat/design-components-card-dialog#define_a_section_of_a_card). |
| Sections []*Card_Section `protobuf:"bytes,2,rep,name=sections,proto3" json:"sections,omitempty"` |
| // The divider style between sections. |
| SectionDividerStyle Card_DividerStyle `protobuf:"varint,9,opt,name=section_divider_style,json=sectionDividerStyle,proto3,enum=google.apps.card.v1.Card_DividerStyle" json:"section_divider_style,omitempty"` |
| // The card's actions. Actions are added to the card's toolbar menu. |
| // |
| // [Google Workspace |
| // Add-ons](https://developers.google.com/workspace/add-ons): |
| // |
| // For example, the following JSON constructs a card action menu with |
| // `Settings` and `Send Feedback` options: |
| // |
| // ``` |
| // "card_actions": [ |
| // |
| // { |
| // "actionLabel": "Settings", |
| // "onClick": { |
| // "action": { |
| // "functionName": "goToView", |
| // "parameters": [ |
| // { |
| // "key": "viewType", |
| // "value": "SETTING" |
| // } |
| // ], |
| // "loadIndicator": "LoadIndicator.SPINNER" |
| // } |
| // } |
| // }, |
| // { |
| // "actionLabel": "Send Feedback", |
| // "onClick": { |
| // "openLink": { |
| // "url": "https://example.com/feedback" |
| // } |
| // } |
| // } |
| // |
| // ] |
| // ``` |
| CardActions []*Card_CardAction `protobuf:"bytes,3,rep,name=card_actions,json=cardActions,proto3" json:"card_actions,omitempty"` |
| // Name of the card. Used as a card identifier in card navigation. |
| // |
| // [Google Workspace |
| // Add-ons](https://developers.google.com/workspace/add-ons): |
| Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` |
| // The fixed footer shown at the bottom of this card. |
| // |
| // Setting `fixedFooter` without specifying a `primaryButton` or a |
| // `secondaryButton` causes an error. For Chat apps, you can use fixed footers |
| // in |
| // [dialogs](https://developers.google.com/workspace/chat/dialogs), but not |
| // [card |
| // messages](https://developers.google.com/workspace/chat/create-messages#create). |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| FixedFooter *Card_CardFixedFooter `protobuf:"bytes,5,opt,name=fixed_footer,json=fixedFooter,proto3" json:"fixed_footer,omitempty"` |
| // In Google Workspace Add-ons, sets the display properties of the |
| // `peekCardHeader`. |
| // |
| // [Google Workspace |
| // Add-ons](https://developers.google.com/workspace/add-ons): |
| DisplayStyle Card_DisplayStyle `protobuf:"varint,6,opt,name=display_style,json=displayStyle,proto3,enum=google.apps.card.v1.Card_DisplayStyle" json:"display_style,omitempty"` |
| // When displaying contextual content, the peek card header acts as a |
| // placeholder so that the user can navigate forward between the homepage |
| // cards and the contextual cards. |
| // |
| // [Google Workspace |
| // Add-ons](https://developers.google.com/workspace/add-ons): |
| PeekCardHeader *Card_CardHeader `protobuf:"bytes,7,opt,name=peek_card_header,json=peekCardHeader,proto3" json:"peek_card_header,omitempty"` |
| } |
| |
| func (x *Card) Reset() { |
| *x = Card{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[0] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Card) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Card) ProtoMessage() {} |
| |
| func (x *Card) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[0] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Card.ProtoReflect.Descriptor instead. |
| func (*Card) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0} |
| } |
| |
| func (x *Card) GetHeader() *Card_CardHeader { |
| if x != nil { |
| return x.Header |
| } |
| return nil |
| } |
| |
| func (x *Card) GetSections() []*Card_Section { |
| if x != nil { |
| return x.Sections |
| } |
| return nil |
| } |
| |
| func (x *Card) GetSectionDividerStyle() Card_DividerStyle { |
| if x != nil { |
| return x.SectionDividerStyle |
| } |
| return Card_DIVIDER_STYLE_UNSPECIFIED |
| } |
| |
| func (x *Card) GetCardActions() []*Card_CardAction { |
| if x != nil { |
| return x.CardActions |
| } |
| return nil |
| } |
| |
| func (x *Card) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *Card) GetFixedFooter() *Card_CardFixedFooter { |
| if x != nil { |
| return x.FixedFooter |
| } |
| return nil |
| } |
| |
| func (x *Card) GetDisplayStyle() Card_DisplayStyle { |
| if x != nil { |
| return x.DisplayStyle |
| } |
| return Card_DISPLAY_STYLE_UNSPECIFIED |
| } |
| |
| func (x *Card) GetPeekCardHeader() *Card_CardHeader { |
| if x != nil { |
| return x.PeekCardHeader |
| } |
| return nil |
| } |
| |
| // Each card is made up of widgets. |
| // |
| // A widget is a composite object that can represent one of text, images, |
| // buttons, and other object types. |
| type Widget struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // A widget can only have one of the following items. You can use multiple |
| // widget fields to display more items. |
| // |
| // Types that are assignable to Data: |
| // |
| // *Widget_TextParagraph |
| // *Widget_Image |
| // *Widget_DecoratedText |
| // *Widget_ButtonList |
| // *Widget_TextInput |
| // *Widget_SelectionInput |
| // *Widget_DateTimePicker |
| // *Widget_Divider |
| // *Widget_Grid |
| // *Widget_Columns |
| Data isWidget_Data `protobuf_oneof:"data"` |
| // Specifies whether widgets align to the left, right, or center of a column. |
| HorizontalAlignment Widget_HorizontalAlignment `protobuf:"varint,8,opt,name=horizontal_alignment,json=horizontalAlignment,proto3,enum=google.apps.card.v1.Widget_HorizontalAlignment" json:"horizontal_alignment,omitempty"` |
| } |
| |
| func (x *Widget) Reset() { |
| *x = Widget{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[1] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Widget) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Widget) ProtoMessage() {} |
| |
| func (x *Widget) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[1] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Widget.ProtoReflect.Descriptor instead. |
| func (*Widget) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{1} |
| } |
| |
| func (m *Widget) GetData() isWidget_Data { |
| if m != nil { |
| return m.Data |
| } |
| return nil |
| } |
| |
| func (x *Widget) GetTextParagraph() *TextParagraph { |
| if x, ok := x.GetData().(*Widget_TextParagraph); ok { |
| return x.TextParagraph |
| } |
| return nil |
| } |
| |
| func (x *Widget) GetImage() *Image { |
| if x, ok := x.GetData().(*Widget_Image); ok { |
| return x.Image |
| } |
| return nil |
| } |
| |
| func (x *Widget) GetDecoratedText() *DecoratedText { |
| if x, ok := x.GetData().(*Widget_DecoratedText); ok { |
| return x.DecoratedText |
| } |
| return nil |
| } |
| |
| func (x *Widget) GetButtonList() *ButtonList { |
| if x, ok := x.GetData().(*Widget_ButtonList); ok { |
| return x.ButtonList |
| } |
| return nil |
| } |
| |
| func (x *Widget) GetTextInput() *TextInput { |
| if x, ok := x.GetData().(*Widget_TextInput); ok { |
| return x.TextInput |
| } |
| return nil |
| } |
| |
| func (x *Widget) GetSelectionInput() *SelectionInput { |
| if x, ok := x.GetData().(*Widget_SelectionInput); ok { |
| return x.SelectionInput |
| } |
| return nil |
| } |
| |
| func (x *Widget) GetDateTimePicker() *DateTimePicker { |
| if x, ok := x.GetData().(*Widget_DateTimePicker); ok { |
| return x.DateTimePicker |
| } |
| return nil |
| } |
| |
| func (x *Widget) GetDivider() *Divider { |
| if x, ok := x.GetData().(*Widget_Divider); ok { |
| return x.Divider |
| } |
| return nil |
| } |
| |
| func (x *Widget) GetGrid() *Grid { |
| if x, ok := x.GetData().(*Widget_Grid); ok { |
| return x.Grid |
| } |
| return nil |
| } |
| |
| func (x *Widget) GetColumns() *Columns { |
| if x, ok := x.GetData().(*Widget_Columns); ok { |
| return x.Columns |
| } |
| return nil |
| } |
| |
| func (x *Widget) GetHorizontalAlignment() Widget_HorizontalAlignment { |
| if x != nil { |
| return x.HorizontalAlignment |
| } |
| return Widget_HORIZONTAL_ALIGNMENT_UNSPECIFIED |
| } |
| |
| type isWidget_Data interface { |
| isWidget_Data() |
| } |
| |
| type Widget_TextParagraph struct { |
| // Displays a text paragraph. Supports simple HTML formatted text. For more |
| // information about formatting text, see |
| // [Formatting text in Google Chat |
| // apps](https://developers.google.com/workspace/chat/format-messages#card-formatting) |
| // and |
| // [Formatting |
| // text in Google Workspace |
| // Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting). |
| // |
| // For example, the following JSON creates a bolded text: |
| // ``` |
| // |
| // "textParagraph": { |
| // "text": " <b>bold text</b>" |
| // } |
| // |
| // ``` |
| TextParagraph *TextParagraph `protobuf:"bytes,1,opt,name=text_paragraph,json=textParagraph,proto3,oneof"` |
| } |
| |
| type Widget_Image struct { |
| // Displays an image. |
| // |
| // For example, the following JSON creates an image with alternative text: |
| // ``` |
| // |
| // "image": { |
| // "imageUrl": |
| // "https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png", |
| // "altText": "Chat app avatar" |
| // } |
| // |
| // ``` |
| Image *Image `protobuf:"bytes,2,opt,name=image,proto3,oneof"` |
| } |
| |
| type Widget_DecoratedText struct { |
| // Displays a decorated text item. |
| // |
| // For example, the following JSON creates a decorated text widget showing |
| // email address: |
| // |
| // ``` |
| // |
| // "decoratedText": { |
| // "icon": { |
| // "knownIcon": "EMAIL" |
| // }, |
| // "topLabel": "Email Address", |
| // "text": "sasha@example.com", |
| // "bottomLabel": "This is a new Email address!", |
| // "switchControl": { |
| // "name": "has_send_welcome_email_to_sasha", |
| // "selected": false, |
| // "controlType": "CHECKBOX" |
| // } |
| // } |
| // |
| // ``` |
| DecoratedText *DecoratedText `protobuf:"bytes,3,opt,name=decorated_text,json=decoratedText,proto3,oneof"` |
| } |
| |
| type Widget_ButtonList struct { |
| // A list of buttons. |
| // |
| // For example, the following JSON creates two buttons. The first |
| // is a blue text button and the second is an image button that opens a |
| // link: |
| // ``` |
| // |
| // "buttonList": { |
| // "buttons": [ |
| // { |
| // "text": "Edit", |
| // "color": { |
| // "red": 0, |
| // "green": 0, |
| // "blue": 1, |
| // "alpha": 1 |
| // }, |
| // "disabled": true, |
| // }, |
| // { |
| // "icon": { |
| // "knownIcon": "INVITE", |
| // "altText": "check calendar" |
| // }, |
| // "onClick": { |
| // "openLink": { |
| // "url": "https://example.com/calendar" |
| // } |
| // } |
| // } |
| // ] |
| // } |
| // |
| // ``` |
| ButtonList *ButtonList `protobuf:"bytes,4,opt,name=button_list,json=buttonList,proto3,oneof"` |
| } |
| |
| type Widget_TextInput struct { |
| // Displays a text box that users can type into. |
| // |
| // For example, the following JSON creates a text input for an email |
| // address: |
| // |
| // ``` |
| // |
| // "textInput": { |
| // "name": "mailing_address", |
| // "label": "Mailing Address" |
| // } |
| // |
| // ``` |
| // |
| // As another example, the following JSON creates a text input for a |
| // programming language with static suggestions: |
| // ``` |
| // |
| // "textInput": { |
| // "name": "preferred_programing_language", |
| // "label": "Preferred Language", |
| // "initialSuggestions": { |
| // "items": [ |
| // { |
| // "text": "C++" |
| // }, |
| // { |
| // "text": "Java" |
| // }, |
| // { |
| // "text": "JavaScript" |
| // }, |
| // { |
| // "text": "Python" |
| // } |
| // ] |
| // } |
| // } |
| // |
| // ``` |
| TextInput *TextInput `protobuf:"bytes,5,opt,name=text_input,json=textInput,proto3,oneof"` |
| } |
| |
| type Widget_SelectionInput struct { |
| // Displays a selection control that lets users select items. Selection |
| // controls can be checkboxes, radio buttons, switches, or dropdown menus. |
| // |
| // For example, the following JSON creates a dropdown menu that lets users |
| // choose a size: |
| // |
| // ``` |
| // |
| // "selectionInput": { |
| // "name": "size", |
| // "label": "Size" |
| // "type": "DROPDOWN", |
| // "items": [ |
| // { |
| // "text": "S", |
| // "value": "small", |
| // "selected": false |
| // }, |
| // { |
| // "text": "M", |
| // "value": "medium", |
| // "selected": true |
| // }, |
| // { |
| // "text": "L", |
| // "value": "large", |
| // "selected": false |
| // }, |
| // { |
| // "text": "XL", |
| // "value": "extra_large", |
| // "selected": false |
| // } |
| // ] |
| // } |
| // |
| // ``` |
| SelectionInput *SelectionInput `protobuf:"bytes,6,opt,name=selection_input,json=selectionInput,proto3,oneof"` |
| } |
| |
| type Widget_DateTimePicker struct { |
| // Displays a widget that lets users input a date, time, or date and time. |
| // |
| // For example, the following JSON creates a date time picker to schedule an |
| // appointment: |
| // |
| // ``` |
| // |
| // "dateTimePicker": { |
| // "name": "appointment_time", |
| // "label": "Book your appointment at:", |
| // "type": "DATE_AND_TIME", |
| // "valueMsEpoch": "796435200000" |
| // } |
| // |
| // ``` |
| DateTimePicker *DateTimePicker `protobuf:"bytes,7,opt,name=date_time_picker,json=dateTimePicker,proto3,oneof"` |
| } |
| |
| type Widget_Divider struct { |
| // Displays a horizontal line divider between widgets. |
| // |
| // For example, the following JSON creates a divider: |
| // ``` |
| // "divider": { |
| // } |
| // ``` |
| Divider *Divider `protobuf:"bytes,9,opt,name=divider,proto3,oneof"` |
| } |
| |
| type Widget_Grid struct { |
| // Displays a grid with a collection of items. |
| // |
| // A grid supports any number of columns and items. The number of rows is |
| // determined by the upper bounds of the number items divided by the number |
| // of columns. A grid with 10 items and 2 columns has 5 rows. A grid with 11 |
| // items and 2 columns has 6 rows. |
| // |
| // [Google Workspace Add-ons and |
| // Chat apps](https://developers.google.com/workspace/extend): |
| // |
| // For example, the following JSON creates a 2 column grid with a single |
| // item: |
| // |
| // ``` |
| // |
| // "grid": { |
| // "title": "A fine collection of items", |
| // "columnCount": 2, |
| // "borderStyle": { |
| // "type": "STROKE", |
| // "cornerRadius": 4 |
| // }, |
| // "items": [ |
| // { |
| // "image": { |
| // "imageUri": "https://www.example.com/image.png", |
| // "cropStyle": { |
| // "type": "SQUARE" |
| // }, |
| // "borderStyle": { |
| // "type": "STROKE" |
| // } |
| // }, |
| // "title": "An item", |
| // "textAlignment": "CENTER" |
| // } |
| // ], |
| // "onClick": { |
| // "openLink": { |
| // "url": "https://www.example.com" |
| // } |
| // } |
| // } |
| // |
| // ``` |
| Grid *Grid `protobuf:"bytes,10,opt,name=grid,proto3,oneof"` |
| } |
| |
| type Widget_Columns struct { |
| // Displays up to 2 columns. |
| // |
| // To include more than 2 columns, or to use rows, use the `Grid` widget. |
| // |
| // For example, the following JSON creates 2 columns that each contain |
| // text paragraphs: |
| // |
| // ``` |
| // |
| // "columns": { |
| // "columnItems": [ |
| // { |
| // "horizontalSizeStyle": "FILL_AVAILABLE_SPACE", |
| // "horizontalAlignment": "CENTER", |
| // "verticalAlignment": "CENTER", |
| // "widgets": [ |
| // { |
| // "textParagraph": { |
| // "text": "First column text paragraph" |
| // } |
| // } |
| // ] |
| // }, |
| // { |
| // "horizontalSizeStyle": "FILL_AVAILABLE_SPACE", |
| // "horizontalAlignment": "CENTER", |
| // "verticalAlignment": "CENTER", |
| // "widgets": [ |
| // { |
| // "textParagraph": { |
| // "text": "Second column text paragraph" |
| // } |
| // } |
| // ] |
| // } |
| // ] |
| // } |
| // |
| // ``` |
| Columns *Columns `protobuf:"bytes,11,opt,name=columns,proto3,oneof"` |
| } |
| |
| func (*Widget_TextParagraph) isWidget_Data() {} |
| |
| func (*Widget_Image) isWidget_Data() {} |
| |
| func (*Widget_DecoratedText) isWidget_Data() {} |
| |
| func (*Widget_ButtonList) isWidget_Data() {} |
| |
| func (*Widget_TextInput) isWidget_Data() {} |
| |
| func (*Widget_SelectionInput) isWidget_Data() {} |
| |
| func (*Widget_DateTimePicker) isWidget_Data() {} |
| |
| func (*Widget_Divider) isWidget_Data() {} |
| |
| func (*Widget_Grid) isWidget_Data() {} |
| |
| func (*Widget_Columns) isWidget_Data() {} |
| |
| // A paragraph of text that supports formatting. For an example in |
| // Google Chat apps, see [Add a paragraph of formatted |
| // text](https://developers.google.com/workspace/chat/add-text-image-card-dialog#add_a_paragraph_of_formatted_text). |
| // For more information |
| // about formatting text, see |
| // [Formatting text in Google Chat |
| // apps](https://developers.google.com/workspace/chat/format-messages#card-formatting) |
| // and |
| // [Formatting |
| // text in Google Workspace |
| // Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting). |
| // |
| // [Google Workspace Add-ons and |
| // Chat apps](https://developers.google.com/workspace/extend): |
| type TextParagraph struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The text that's shown in the widget. |
| Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` |
| } |
| |
| func (x *TextParagraph) Reset() { |
| *x = TextParagraph{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[2] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *TextParagraph) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*TextParagraph) ProtoMessage() {} |
| |
| func (x *TextParagraph) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[2] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use TextParagraph.ProtoReflect.Descriptor instead. |
| func (*TextParagraph) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{2} |
| } |
| |
| func (x *TextParagraph) GetText() string { |
| if x != nil { |
| return x.Text |
| } |
| return "" |
| } |
| |
| // An image that is specified by a URL and can have an `onClick` action. For an |
| // example, see [Add an |
| // image](https://developers.google.com/workspace/chat/add-text-image-card-dialog#add_an_image). |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type Image struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The HTTPS URL that hosts the image. |
| // |
| // For example: |
| // |
| // ``` |
| // https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png |
| // ``` |
| ImageUrl string `protobuf:"bytes,1,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` |
| // When a user clicks the image, the click triggers this action. |
| OnClick *OnClick `protobuf:"bytes,2,opt,name=on_click,json=onClick,proto3" json:"on_click,omitempty"` |
| // The alternative text of this image that's used for accessibility. |
| AltText string `protobuf:"bytes,3,opt,name=alt_text,json=altText,proto3" json:"alt_text,omitempty"` |
| } |
| |
| func (x *Image) Reset() { |
| *x = Image{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[3] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Image) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Image) ProtoMessage() {} |
| |
| func (x *Image) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[3] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Image.ProtoReflect.Descriptor instead. |
| func (*Image) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{3} |
| } |
| |
| func (x *Image) GetImageUrl() string { |
| if x != nil { |
| return x.ImageUrl |
| } |
| return "" |
| } |
| |
| func (x *Image) GetOnClick() *OnClick { |
| if x != nil { |
| return x.OnClick |
| } |
| return nil |
| } |
| |
| func (x *Image) GetAltText() string { |
| if x != nil { |
| return x.AltText |
| } |
| return "" |
| } |
| |
| // Displays a divider between widgets as a horizontal line. For an example in |
| // Google Chat apps, see |
| // [Add a horizontal divider between |
| // widgets](https://developers.google.com/workspace/chat/format-structure-card-dialog#add_a_horizontal_divider_between_widgets). |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| // |
| // For example, the following JSON creates a divider: |
| // |
| // ``` |
| // "divider": {} |
| // ``` |
| type Divider struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| } |
| |
| func (x *Divider) Reset() { |
| *x = Divider{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[4] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Divider) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Divider) ProtoMessage() {} |
| |
| func (x *Divider) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[4] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Divider.ProtoReflect.Descriptor instead. |
| func (*Divider) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{4} |
| } |
| |
| // A widget that displays text with optional decorations such as a label above |
| // or below the text, an icon in front of the text, a selection widget, or a |
| // button after the text. For an example in |
| // Google Chat apps, see [Display text with decorative |
| // text](https://developers.google.com/workspace/chat/add-text-image-card-dialog#display_text_with_decorative_elements). |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type DecoratedText struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Deprecated in favor of `startIcon`. |
| // |
| // Deprecated: Do not use. |
| Icon *Icon `protobuf:"bytes,1,opt,name=icon,proto3" json:"icon,omitempty"` |
| // The icon displayed in front of the text. |
| StartIcon *Icon `protobuf:"bytes,12,opt,name=start_icon,json=startIcon,proto3" json:"start_icon,omitempty"` |
| // The text that appears above `text`. Always truncates. |
| TopLabel string `protobuf:"bytes,3,opt,name=top_label,json=topLabel,proto3" json:"top_label,omitempty"` |
| // Required. The primary text. |
| // |
| // Supports simple formatting. For more information |
| // about formatting text, see |
| // [Formatting text in Google Chat |
| // apps](https://developers.google.com/workspace/chat/format-messages#card-formatting) |
| // and |
| // [Formatting |
| // text in Google Workspace |
| // Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting). |
| Text string `protobuf:"bytes,4,opt,name=text,proto3" json:"text,omitempty"` |
| // The wrap text setting. If `true`, the text wraps and displays on |
| // multiple lines. Otherwise, the text is truncated. |
| // |
| // Only applies to `text`, not `topLabel` and `bottomLabel`. |
| WrapText bool `protobuf:"varint,5,opt,name=wrap_text,json=wrapText,proto3" json:"wrap_text,omitempty"` |
| // The text that appears below `text`. Always wraps. |
| BottomLabel string `protobuf:"bytes,6,opt,name=bottom_label,json=bottomLabel,proto3" json:"bottom_label,omitempty"` |
| // This action is triggered when users click `topLabel` or `bottomLabel`. |
| OnClick *OnClick `protobuf:"bytes,7,opt,name=on_click,json=onClick,proto3" json:"on_click,omitempty"` |
| // A button, switch, checkbox, or image that appears to the right-hand side |
| // of text in the `decoratedText` widget. |
| // |
| // Types that are assignable to Control: |
| // |
| // *DecoratedText_Button |
| // *DecoratedText_SwitchControl_ |
| // *DecoratedText_EndIcon |
| Control isDecoratedText_Control `protobuf_oneof:"control"` |
| } |
| |
| func (x *DecoratedText) Reset() { |
| *x = DecoratedText{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[5] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *DecoratedText) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*DecoratedText) ProtoMessage() {} |
| |
| func (x *DecoratedText) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[5] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use DecoratedText.ProtoReflect.Descriptor instead. |
| func (*DecoratedText) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{5} |
| } |
| |
| // Deprecated: Do not use. |
| func (x *DecoratedText) GetIcon() *Icon { |
| if x != nil { |
| return x.Icon |
| } |
| return nil |
| } |
| |
| func (x *DecoratedText) GetStartIcon() *Icon { |
| if x != nil { |
| return x.StartIcon |
| } |
| return nil |
| } |
| |
| func (x *DecoratedText) GetTopLabel() string { |
| if x != nil { |
| return x.TopLabel |
| } |
| return "" |
| } |
| |
| func (x *DecoratedText) GetText() string { |
| if x != nil { |
| return x.Text |
| } |
| return "" |
| } |
| |
| func (x *DecoratedText) GetWrapText() bool { |
| if x != nil { |
| return x.WrapText |
| } |
| return false |
| } |
| |
| func (x *DecoratedText) GetBottomLabel() string { |
| if x != nil { |
| return x.BottomLabel |
| } |
| return "" |
| } |
| |
| func (x *DecoratedText) GetOnClick() *OnClick { |
| if x != nil { |
| return x.OnClick |
| } |
| return nil |
| } |
| |
| func (m *DecoratedText) GetControl() isDecoratedText_Control { |
| if m != nil { |
| return m.Control |
| } |
| return nil |
| } |
| |
| func (x *DecoratedText) GetButton() *Button { |
| if x, ok := x.GetControl().(*DecoratedText_Button); ok { |
| return x.Button |
| } |
| return nil |
| } |
| |
| func (x *DecoratedText) GetSwitchControl() *DecoratedText_SwitchControl { |
| if x, ok := x.GetControl().(*DecoratedText_SwitchControl_); ok { |
| return x.SwitchControl |
| } |
| return nil |
| } |
| |
| func (x *DecoratedText) GetEndIcon() *Icon { |
| if x, ok := x.GetControl().(*DecoratedText_EndIcon); ok { |
| return x.EndIcon |
| } |
| return nil |
| } |
| |
| type isDecoratedText_Control interface { |
| isDecoratedText_Control() |
| } |
| |
| type DecoratedText_Button struct { |
| // A button that a user can click to trigger an action. |
| Button *Button `protobuf:"bytes,8,opt,name=button,proto3,oneof"` |
| } |
| |
| type DecoratedText_SwitchControl_ struct { |
| // A switch widget that a user can click to change its state and trigger an |
| // action. |
| SwitchControl *DecoratedText_SwitchControl `protobuf:"bytes,9,opt,name=switch_control,json=switchControl,proto3,oneof"` |
| } |
| |
| type DecoratedText_EndIcon struct { |
| // An icon displayed after the text. |
| // |
| // Supports |
| // [built-in](https://developers.google.com/workspace/chat/format-messages#builtinicons) |
| // and |
| // [custom](https://developers.google.com/workspace/chat/format-messages#customicons) |
| // icons. |
| EndIcon *Icon `protobuf:"bytes,11,opt,name=end_icon,json=endIcon,proto3,oneof"` |
| } |
| |
| func (*DecoratedText_Button) isDecoratedText_Control() {} |
| |
| func (*DecoratedText_SwitchControl_) isDecoratedText_Control() {} |
| |
| func (*DecoratedText_EndIcon) isDecoratedText_Control() {} |
| |
| // A field in which users can enter text. Supports suggestions and on-change |
| // actions. For an example in Google Chat apps, see [Add a field in which a user |
| // can enter |
| // text](https://developers.google.com/workspace/chat/design-interactive-card-dialog#add_a_field_in_which_a_user_can_enter_text). |
| // |
| // Chat apps receive and can process the value of entered text during form input |
| // events. For details about working with form inputs, see [Receive form |
| // data](https://developers.google.com/workspace/chat/read-form-data). |
| // |
| // When you need to collect undefined or abstract data from users, |
| // use a text input. To collect defined or enumerated data from users, use the |
| // [SelectionInput][google.apps.card.v1.SelectionInput] widget. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type TextInput struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The name by which the text input is identified in a form input event. |
| // |
| // For details about working with form inputs, see [Receive form |
| // data](https://developers.google.com/workspace/chat/read-form-data). |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // The text that appears above the text input field in the user interface. |
| // |
| // Specify text that helps the user enter the information your app needs. |
| // For example, if you are asking someone's name, but specifically need their |
| // surname, write `surname` instead of `name`. |
| // |
| // Required if `hintText` is unspecified. Otherwise, optional. |
| Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` |
| // Text that appears below the text input field meant to assist users by |
| // prompting them to enter a certain value. This text is always visible. |
| // |
| // Required if `label` is unspecified. Otherwise, optional. |
| HintText string `protobuf:"bytes,3,opt,name=hint_text,json=hintText,proto3" json:"hint_text,omitempty"` |
| // The value entered by a user, returned as part of a form input event. |
| // |
| // For details about working with form inputs, see [Receive form |
| // data](https://developers.google.com/workspace/chat/read-form-data). |
| Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` |
| // How a text input field appears in the user interface. |
| // For example, whether the field is single or multi-line. |
| Type TextInput_Type `protobuf:"varint,5,opt,name=type,proto3,enum=google.apps.card.v1.TextInput_Type" json:"type,omitempty"` |
| // What to do when a change occurs in the text input field. For example, a |
| // user adding to the field or deleting text. |
| // |
| // Examples of actions to take include running a custom function or opening |
| // a [dialog](https://developers.google.com/workspace/chat/dialogs) |
| // in Google Chat. |
| OnChangeAction *Action `protobuf:"bytes,6,opt,name=on_change_action,json=onChangeAction,proto3" json:"on_change_action,omitempty"` |
| // Suggested values that users can enter. These values appear when users click |
| // inside the text input field. As users type, the suggested values |
| // dynamically filter to match what the users have typed. |
| // |
| // For example, a text input field for programming language might suggest |
| // Java, JavaScript, Python, and C++. When users start typing `Jav`, the list |
| // of suggestions filters to show just `Java` and `JavaScript`. |
| // |
| // Suggested values help guide users to enter values that your app can make |
| // sense of. When referring to JavaScript, some users might enter `javascript` |
| // and others `java script`. Suggesting `JavaScript` can standardize how users |
| // interact with your app. |
| // |
| // When specified, `TextInput.type` is always `SINGLE_LINE`, even if it's set |
| // to `MULTIPLE_LINE`. |
| // |
| // [Google Workspace |
| // Add-ons and Chat apps](https://developers.google.com/workspace/extend): |
| InitialSuggestions *Suggestions `protobuf:"bytes,7,opt,name=initial_suggestions,json=initialSuggestions,proto3" json:"initial_suggestions,omitempty"` |
| // Optional. Specify what action to take when the text input field provides |
| // suggestions to users who interact with it. |
| // |
| // If unspecified, the suggestions are set by `initialSuggestions` and |
| // are processed by the client. |
| // |
| // If specified, the app takes the action specified here, such as running |
| // a custom function. |
| // |
| // [Google Workspace |
| // Add-ons](https://developers.google.com/workspace/add-ons): |
| AutoCompleteAction *Action `protobuf:"bytes,8,opt,name=auto_complete_action,json=autoCompleteAction,proto3" json:"auto_complete_action,omitempty"` |
| // Text that appears in the text input field when the field is empty. |
| // Use this text to prompt users to enter a value. For example, `Enter a |
| // number from 0 to 100`. |
| // |
| // [Google Chat apps](https://developers.google.com/workspace/chat): |
| PlaceholderText string `protobuf:"bytes,12,opt,name=placeholder_text,json=placeholderText,proto3" json:"placeholder_text,omitempty"` |
| } |
| |
| func (x *TextInput) Reset() { |
| *x = TextInput{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[6] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *TextInput) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*TextInput) ProtoMessage() {} |
| |
| func (x *TextInput) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[6] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use TextInput.ProtoReflect.Descriptor instead. |
| func (*TextInput) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{6} |
| } |
| |
| func (x *TextInput) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *TextInput) GetLabel() string { |
| if x != nil { |
| return x.Label |
| } |
| return "" |
| } |
| |
| func (x *TextInput) GetHintText() string { |
| if x != nil { |
| return x.HintText |
| } |
| return "" |
| } |
| |
| func (x *TextInput) GetValue() string { |
| if x != nil { |
| return x.Value |
| } |
| return "" |
| } |
| |
| func (x *TextInput) GetType() TextInput_Type { |
| if x != nil { |
| return x.Type |
| } |
| return TextInput_SINGLE_LINE |
| } |
| |
| func (x *TextInput) GetOnChangeAction() *Action { |
| if x != nil { |
| return x.OnChangeAction |
| } |
| return nil |
| } |
| |
| func (x *TextInput) GetInitialSuggestions() *Suggestions { |
| if x != nil { |
| return x.InitialSuggestions |
| } |
| return nil |
| } |
| |
| func (x *TextInput) GetAutoCompleteAction() *Action { |
| if x != nil { |
| return x.AutoCompleteAction |
| } |
| return nil |
| } |
| |
| func (x *TextInput) GetPlaceholderText() string { |
| if x != nil { |
| return x.PlaceholderText |
| } |
| return "" |
| } |
| |
| // Suggested values that users can enter. These values appear when users click |
| // inside the text input field. As users type, the suggested values |
| // dynamically filter to match what the users have typed. |
| // |
| // For example, a text input field for programming language might suggest |
| // Java, JavaScript, Python, and C++. When users start typing `Jav`, the list |
| // of suggestions filters to show `Java` and `JavaScript`. |
| // |
| // Suggested values help guide users to enter values that your app can make |
| // sense of. When referring to JavaScript, some users might enter `javascript` |
| // and others `java script`. Suggesting `JavaScript` can standardize how users |
| // interact with your app. |
| // |
| // When specified, `TextInput.type` is always `SINGLE_LINE`, even if it's set |
| // to `MULTIPLE_LINE`. |
| // |
| // [Google Workspace |
| // Add-ons and Chat apps](https://developers.google.com/workspace/extend): |
| type Suggestions struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // A list of suggestions used for autocomplete recommendations in text input |
| // fields. |
| Items []*Suggestions_SuggestionItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` |
| } |
| |
| func (x *Suggestions) Reset() { |
| *x = Suggestions{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[7] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Suggestions) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Suggestions) ProtoMessage() {} |
| |
| func (x *Suggestions) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[7] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Suggestions.ProtoReflect.Descriptor instead. |
| func (*Suggestions) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{7} |
| } |
| |
| func (x *Suggestions) GetItems() []*Suggestions_SuggestionItem { |
| if x != nil { |
| return x.Items |
| } |
| return nil |
| } |
| |
| // A list of buttons layed out horizontally. For an example in |
| // Google Chat apps, see |
| // [Add a |
| // button](https://developers.google.com/workspace/chat/design-interactive-card-dialog#add_a_button). |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type ButtonList struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // An array of buttons. |
| Buttons []*Button `protobuf:"bytes,1,rep,name=buttons,proto3" json:"buttons,omitempty"` |
| } |
| |
| func (x *ButtonList) Reset() { |
| *x = ButtonList{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[8] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ButtonList) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ButtonList) ProtoMessage() {} |
| |
| func (x *ButtonList) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[8] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ButtonList.ProtoReflect.Descriptor instead. |
| func (*ButtonList) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{8} |
| } |
| |
| func (x *ButtonList) GetButtons() []*Button { |
| if x != nil { |
| return x.Buttons |
| } |
| return nil |
| } |
| |
| // A widget that creates one or more UI items that users can select. |
| // For example, a dropdown menu or checkboxes. You can use this widget to |
| // collect data that can be predicted or enumerated. For an example in Google |
| // Chat apps, see [Add selectable UI |
| // elements](/workspace/chat/design-interactive-card-dialog#add_selectable_ui_elements). |
| // |
| // Chat apps can process the value of items that users select or input. For |
| // details about working with form inputs, see [Receive form |
| // data](https://developers.google.com/workspace/chat/read-form-data). |
| // |
| // To collect undefined or abstract data from users, use |
| // the [TextInput][google.apps.card.v1.TextInput] widget. |
| // |
| // [Google Workspace Add-ons |
| // and Chat apps](https://developers.google.com/workspace/extend): |
| type SelectionInput struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The name that identifies the selection input in a form input event. |
| // |
| // For details about working with form inputs, see [Receive form |
| // data](https://developers.google.com/workspace/chat/read-form-data). |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // The text that appears above the selection input field in the user |
| // interface. |
| // |
| // Specify text that helps the user enter the information your app needs. |
| // For example, if users are selecting the urgency of a work ticket from a |
| // drop-down menu, the label might be "Urgency" or "Select urgency". |
| Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` |
| // The type of items that are displayed to users in a `SelectionInput` widget. |
| // Selection types support different types of interactions. For example, users |
| // can select one or more checkboxes, but they can only select one value from |
| // a dropdown menu. |
| Type SelectionInput_SelectionType `protobuf:"varint,3,opt,name=type,proto3,enum=google.apps.card.v1.SelectionInput_SelectionType" json:"type,omitempty"` |
| // An array of selectable items. For example, an array of radio buttons or |
| // checkboxes. Supports up to 100 items. |
| Items []*SelectionInput_SelectionItem `protobuf:"bytes,4,rep,name=items,proto3" json:"items,omitempty"` |
| // If specified, the form is submitted when the selection changes. If not |
| // specified, you must specify a separate button that submits the form. |
| // |
| // For details about working with form inputs, see [Receive form |
| // data](https://developers.google.com/workspace/chat/read-form-data). |
| OnChangeAction *Action `protobuf:"bytes,5,opt,name=on_change_action,json=onChangeAction,proto3" json:"on_change_action,omitempty"` |
| // For multiselect menus, the maximum number of items that a user can select. |
| // Minimum value is 1 item. If unspecified, defaults to 3 items. |
| MultiSelectMaxSelectedItems int32 `protobuf:"varint,6,opt,name=multi_select_max_selected_items,json=multiSelectMaxSelectedItems,proto3" json:"multi_select_max_selected_items,omitempty"` |
| // For multiselect menus, the number of text characters that a user inputs |
| // before the app queries autocomplete and displays suggested items |
| // in the menu. |
| // |
| // If unspecified, defaults to 0 characters for static data sources and 3 |
| // characters for external data sources. |
| MultiSelectMinQueryLength int32 `protobuf:"varint,7,opt,name=multi_select_min_query_length,json=multiSelectMinQueryLength,proto3" json:"multi_select_min_query_length,omitempty"` |
| // For a multiselect menu, the data source that populates |
| // selection items. |
| // |
| // [Google Chat apps](https://developers.google.com/workspace/chat): |
| // |
| // Types that are assignable to MultiSelectDataSource: |
| // |
| // *SelectionInput_ExternalDataSource |
| // *SelectionInput_PlatformDataSource_ |
| MultiSelectDataSource isSelectionInput_MultiSelectDataSource `protobuf_oneof:"multi_select_data_source"` |
| } |
| |
| func (x *SelectionInput) Reset() { |
| *x = SelectionInput{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[9] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SelectionInput) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SelectionInput) ProtoMessage() {} |
| |
| func (x *SelectionInput) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[9] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SelectionInput.ProtoReflect.Descriptor instead. |
| func (*SelectionInput) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{9} |
| } |
| |
| func (x *SelectionInput) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *SelectionInput) GetLabel() string { |
| if x != nil { |
| return x.Label |
| } |
| return "" |
| } |
| |
| func (x *SelectionInput) GetType() SelectionInput_SelectionType { |
| if x != nil { |
| return x.Type |
| } |
| return SelectionInput_CHECK_BOX |
| } |
| |
| func (x *SelectionInput) GetItems() []*SelectionInput_SelectionItem { |
| if x != nil { |
| return x.Items |
| } |
| return nil |
| } |
| |
| func (x *SelectionInput) GetOnChangeAction() *Action { |
| if x != nil { |
| return x.OnChangeAction |
| } |
| return nil |
| } |
| |
| func (x *SelectionInput) GetMultiSelectMaxSelectedItems() int32 { |
| if x != nil { |
| return x.MultiSelectMaxSelectedItems |
| } |
| return 0 |
| } |
| |
| func (x *SelectionInput) GetMultiSelectMinQueryLength() int32 { |
| if x != nil { |
| return x.MultiSelectMinQueryLength |
| } |
| return 0 |
| } |
| |
| func (m *SelectionInput) GetMultiSelectDataSource() isSelectionInput_MultiSelectDataSource { |
| if m != nil { |
| return m.MultiSelectDataSource |
| } |
| return nil |
| } |
| |
| func (x *SelectionInput) GetExternalDataSource() *Action { |
| if x, ok := x.GetMultiSelectDataSource().(*SelectionInput_ExternalDataSource); ok { |
| return x.ExternalDataSource |
| } |
| return nil |
| } |
| |
| func (x *SelectionInput) GetPlatformDataSource() *SelectionInput_PlatformDataSource { |
| if x, ok := x.GetMultiSelectDataSource().(*SelectionInput_PlatformDataSource_); ok { |
| return x.PlatformDataSource |
| } |
| return nil |
| } |
| |
| type isSelectionInput_MultiSelectDataSource interface { |
| isSelectionInput_MultiSelectDataSource() |
| } |
| |
| type SelectionInput_ExternalDataSource struct { |
| // An external data source, such as a relational data base. |
| ExternalDataSource *Action `protobuf:"bytes,8,opt,name=external_data_source,json=externalDataSource,proto3,oneof"` |
| } |
| |
| type SelectionInput_PlatformDataSource_ struct { |
| // A data source from Google Workspace. |
| PlatformDataSource *SelectionInput_PlatformDataSource `protobuf:"bytes,9,opt,name=platform_data_source,json=platformDataSource,proto3,oneof"` |
| } |
| |
| func (*SelectionInput_ExternalDataSource) isSelectionInput_MultiSelectDataSource() {} |
| |
| func (*SelectionInput_PlatformDataSource_) isSelectionInput_MultiSelectDataSource() {} |
| |
| // Lets users input a date, a time, or both a date and a time. For an example in |
| // Google Chat apps, see [Let a user pick a date and |
| // time](https://developers.google.com/workspace/chat/design-interactive-card-dialog#let_a_user_pick_a_date_and_time). |
| // |
| // Users can input text or use the picker to select dates and times. If users |
| // input an invalid date or time, the picker shows an error that prompts users |
| // to input the information correctly. |
| // |
| // [Google Workspace |
| // Add-ons and Chat apps](https://developers.google.com/workspace/extend): |
| type DateTimePicker struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The name by which the `DateTimePicker` is identified in a form input event. |
| // |
| // For details about working with form inputs, see [Receive form |
| // data](https://developers.google.com/workspace/chat/read-form-data). |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // The text that prompts users to input a date, a time, or a date and time. |
| // For example, if users are scheduling an appointment, use a label such as |
| // `Appointment date` or `Appointment date and time`. |
| Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` |
| // Whether the widget supports inputting a date, a time, or the date and time. |
| Type DateTimePicker_DateTimePickerType `protobuf:"varint,3,opt,name=type,proto3,enum=google.apps.card.v1.DateTimePicker_DateTimePickerType" json:"type,omitempty"` |
| // The default value displayed in the widget, in milliseconds since [Unix |
| // epoch time](https://en.wikipedia.org/wiki/Unix_time). |
| // |
| // Specify the value based on the type of picker (`DateTimePickerType`): |
| // |
| // - `DATE_AND_TIME`: a calendar date and time in UTC. For example, to |
| // represent January 1, 2023 at 12:00 PM UTC, use `1672574400000`. |
| // - `DATE_ONLY`: a calendar date at 00:00:00 UTC. For example, to represent |
| // January 1, 2023, use `1672531200000`. |
| // - `TIME_ONLY`: a time in UTC. For example, to represent 12:00 PM, use |
| // `43200000` (or `12 * 60 * 60 * 1000`). |
| ValueMsEpoch int64 `protobuf:"varint,4,opt,name=value_ms_epoch,json=valueMsEpoch,proto3" json:"value_ms_epoch,omitempty"` |
| // The number representing the time zone offset from UTC, in minutes. |
| // If set, the `value_ms_epoch` is displayed in the specified time zone. |
| // If unset, the value defaults to the user's time zone setting. |
| TimezoneOffsetDate int32 `protobuf:"varint,5,opt,name=timezone_offset_date,json=timezoneOffsetDate,proto3" json:"timezone_offset_date,omitempty"` |
| // Triggered when the user clicks **Save** or **Clear** from the |
| // `DateTimePicker` interface. |
| OnChangeAction *Action `protobuf:"bytes,6,opt,name=on_change_action,json=onChangeAction,proto3" json:"on_change_action,omitempty"` |
| } |
| |
| func (x *DateTimePicker) Reset() { |
| *x = DateTimePicker{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[10] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *DateTimePicker) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*DateTimePicker) ProtoMessage() {} |
| |
| func (x *DateTimePicker) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[10] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use DateTimePicker.ProtoReflect.Descriptor instead. |
| func (*DateTimePicker) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{10} |
| } |
| |
| func (x *DateTimePicker) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *DateTimePicker) GetLabel() string { |
| if x != nil { |
| return x.Label |
| } |
| return "" |
| } |
| |
| func (x *DateTimePicker) GetType() DateTimePicker_DateTimePickerType { |
| if x != nil { |
| return x.Type |
| } |
| return DateTimePicker_DATE_AND_TIME |
| } |
| |
| func (x *DateTimePicker) GetValueMsEpoch() int64 { |
| if x != nil { |
| return x.ValueMsEpoch |
| } |
| return 0 |
| } |
| |
| func (x *DateTimePicker) GetTimezoneOffsetDate() int32 { |
| if x != nil { |
| return x.TimezoneOffsetDate |
| } |
| return 0 |
| } |
| |
| func (x *DateTimePicker) GetOnChangeAction() *Action { |
| if x != nil { |
| return x.OnChangeAction |
| } |
| return nil |
| } |
| |
| // A text, icon, or text and icon button that users can click. For an example in |
| // Google Chat apps, see |
| // [Add a |
| // button](https://developers.google.com/workspace/chat/design-interactive-card-dialog#add_a_button). |
| // |
| // To make an image a clickable button, specify an |
| // [`Image`][google.apps.card.v1.Image] (not an |
| // [`ImageComponent`][google.apps.card.v1.ImageComponent]) and set an |
| // `onClick` action. |
| // |
| // [Google Workspace |
| // Add-ons and Chat apps](https://developers.google.com/workspace/extend): |
| type Button struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The text displayed inside the button. |
| Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` |
| // The icon image. If both `icon` and `text` are set, then the icon appears |
| // before the text. |
| Icon *Icon `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"` |
| // If set, the button is filled with a solid background color and the font |
| // color changes to maintain contrast with the background color. For example, |
| // setting a blue background likely results in white text. |
| // |
| // If unset, the image background is white and the font color is blue. |
| // |
| // For red, green, and blue, the value of each field is a `float` number that |
| // you can express in either of two ways: as a number between 0 and 255 |
| // divided by 255 (153/255), or as a value between 0 and 1 (0.6). 0 represents |
| // the absence of a color and 1 or 255/255 represent the full presence of that |
| // color on the RGB scale. |
| // |
| // Optionally set `alpha`, which sets a level of transparency using this |
| // equation: |
| // |
| // ``` |
| // pixel color = alpha * (this color) + (1.0 - alpha) * (background color) |
| // ``` |
| // |
| // For `alpha`, a value of `1` corresponds with a solid color, and a value of |
| // `0` corresponds with a completely transparent color. |
| // |
| // For example, the following color represents a half transparent red: |
| // |
| // ``` |
| // |
| // "color": { |
| // "red": 1, |
| // "green": 0, |
| // "blue": 0, |
| // "alpha": 0.5 |
| // } |
| // |
| // ``` |
| Color *color.Color `protobuf:"bytes,3,opt,name=color,proto3" json:"color,omitempty"` |
| // Required. The action to perform when a user clicks the button, such as |
| // opening a hyperlink or running a custom function. |
| OnClick *OnClick `protobuf:"bytes,4,opt,name=on_click,json=onClick,proto3" json:"on_click,omitempty"` |
| // If `true`, the button is displayed in an inactive state and doesn't respond |
| // to user actions. |
| Disabled bool `protobuf:"varint,5,opt,name=disabled,proto3" json:"disabled,omitempty"` |
| // The alternative text that's used for accessibility. |
| // |
| // Set descriptive text that lets users know what the button does. For |
| // example, if a button opens a hyperlink, you might write: "Opens a new |
| // browser tab and navigates to the Google Chat developer documentation at |
| // https://developers.google.com/workspace/chat". |
| AltText string `protobuf:"bytes,6,opt,name=alt_text,json=altText,proto3" json:"alt_text,omitempty"` |
| } |
| |
| func (x *Button) Reset() { |
| *x = Button{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[11] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Button) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Button) ProtoMessage() {} |
| |
| func (x *Button) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[11] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Button.ProtoReflect.Descriptor instead. |
| func (*Button) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{11} |
| } |
| |
| func (x *Button) GetText() string { |
| if x != nil { |
| return x.Text |
| } |
| return "" |
| } |
| |
| func (x *Button) GetIcon() *Icon { |
| if x != nil { |
| return x.Icon |
| } |
| return nil |
| } |
| |
| func (x *Button) GetColor() *color.Color { |
| if x != nil { |
| return x.Color |
| } |
| return nil |
| } |
| |
| func (x *Button) GetOnClick() *OnClick { |
| if x != nil { |
| return x.OnClick |
| } |
| return nil |
| } |
| |
| func (x *Button) GetDisabled() bool { |
| if x != nil { |
| return x.Disabled |
| } |
| return false |
| } |
| |
| func (x *Button) GetAltText() string { |
| if x != nil { |
| return x.AltText |
| } |
| return "" |
| } |
| |
| // An icon displayed in a widget on a card. For an example in Google Chat apps, |
| // see [Add an |
| // icon](https://developers.google.com/workspace/chat/add-text-image-card-dialog#add_an_icon). |
| // |
| // Supports |
| // [built-in](https://developers.google.com/workspace/chat/format-messages#builtinicons) |
| // and |
| // [custom](https://developers.google.com/workspace/chat/format-messages#customicons) |
| // icons. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type Icon struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The icon displayed in the widget on the card. |
| // |
| // Types that are assignable to Icons: |
| // |
| // *Icon_KnownIcon |
| // *Icon_IconUrl |
| // *Icon_MaterialIcon |
| Icons isIcon_Icons `protobuf_oneof:"icons"` |
| // Optional. A description of the icon used for accessibility. |
| // If unspecified, the default value `Button` is provided. As a best practice, |
| // you should set a helpful description for what the icon displays, and if |
| // applicable, what it does. For example, `A user's account portrait`, or |
| // `Opens a new browser tab and navigates to the Google Chat developer |
| // documentation at https://developers.google.com/workspace/chat`. |
| // |
| // If the icon is set in a [`Button`][google.apps.card.v1.Button], the |
| // `altText` appears as helper text when the user hovers over the button. |
| // However, if the button also sets `text`, the icon's `altText` is ignored. |
| AltText string `protobuf:"bytes,3,opt,name=alt_text,json=altText,proto3" json:"alt_text,omitempty"` |
| // The crop style applied to the image. In some cases, applying a |
| // `CIRCLE` crop causes the image to be drawn larger than a built-in |
| // icon. |
| ImageType Widget_ImageType `protobuf:"varint,4,opt,name=image_type,json=imageType,proto3,enum=google.apps.card.v1.Widget_ImageType" json:"image_type,omitempty"` |
| } |
| |
| func (x *Icon) Reset() { |
| *x = Icon{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[12] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Icon) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Icon) ProtoMessage() {} |
| |
| func (x *Icon) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[12] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Icon.ProtoReflect.Descriptor instead. |
| func (*Icon) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{12} |
| } |
| |
| func (m *Icon) GetIcons() isIcon_Icons { |
| if m != nil { |
| return m.Icons |
| } |
| return nil |
| } |
| |
| func (x *Icon) GetKnownIcon() string { |
| if x, ok := x.GetIcons().(*Icon_KnownIcon); ok { |
| return x.KnownIcon |
| } |
| return "" |
| } |
| |
| func (x *Icon) GetIconUrl() string { |
| if x, ok := x.GetIcons().(*Icon_IconUrl); ok { |
| return x.IconUrl |
| } |
| return "" |
| } |
| |
| func (x *Icon) GetMaterialIcon() *MaterialIcon { |
| if x, ok := x.GetIcons().(*Icon_MaterialIcon); ok { |
| return x.MaterialIcon |
| } |
| return nil |
| } |
| |
| func (x *Icon) GetAltText() string { |
| if x != nil { |
| return x.AltText |
| } |
| return "" |
| } |
| |
| func (x *Icon) GetImageType() Widget_ImageType { |
| if x != nil { |
| return x.ImageType |
| } |
| return Widget_SQUARE |
| } |
| |
| type isIcon_Icons interface { |
| isIcon_Icons() |
| } |
| |
| type Icon_KnownIcon struct { |
| // Display one of the built-in icons provided by Google Workspace. |
| // |
| // For example, to display an airplane icon, specify `AIRPLANE`. |
| // For a bus, specify `BUS`. |
| // |
| // For a full list of supported icons, see [built-in |
| // icons](https://developers.google.com/workspace/chat/format-messages#builtinicons). |
| KnownIcon string `protobuf:"bytes,1,opt,name=known_icon,json=knownIcon,proto3,oneof"` |
| } |
| |
| type Icon_IconUrl struct { |
| // Display a custom icon hosted at an HTTPS URL. |
| // |
| // For example: |
| // |
| // ``` |
| // "iconUrl": |
| // "https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png" |
| // ``` |
| // |
| // Supported file types include `.png` and `.jpg`. |
| IconUrl string `protobuf:"bytes,2,opt,name=icon_url,json=iconUrl,proto3,oneof"` |
| } |
| |
| type Icon_MaterialIcon struct { |
| // Display one of the [Google Material |
| // Icons](https://fonts.google.com/icons). |
| // |
| // For example, to display a [checkbox |
| // icon](https://fonts.google.com/icons?selected=Material%20Symbols%20Outlined%3Acheck_box%3AFILL%400%3Bwght%40400%3BGRAD%400%3Bopsz%4048), |
| // use |
| // ``` |
| // |
| // "material_icon": { |
| // "name": "check_box" |
| // } |
| // |
| // ``` |
| // |
| // [Google Chat apps](https://developers.google.com/workspace/chat): |
| MaterialIcon *MaterialIcon `protobuf:"bytes,5,opt,name=material_icon,json=materialIcon,proto3,oneof"` |
| } |
| |
| func (*Icon_KnownIcon) isIcon_Icons() {} |
| |
| func (*Icon_IconUrl) isIcon_Icons() {} |
| |
| func (*Icon_MaterialIcon) isIcon_Icons() {} |
| |
| // A [Google Material Icon](https://fonts.google.com/icons), which includes over |
| // 2500+ options. |
| // |
| // For example, to display a [checkbox |
| // icon](https://fonts.google.com/icons?selected=Material%20Symbols%20Outlined%3Acheck_box%3AFILL%400%3Bwght%40400%3BGRAD%400%3Bopsz%4048) |
| // with customized weight and grade, write the following: |
| // |
| // ``` |
| // |
| // { |
| // "name": "check_box", |
| // "fill": true, |
| // "weight": 300, |
| // "grade": -25 |
| // } |
| // |
| // ``` |
| // |
| // [Google Chat apps](https://developers.google.com/workspace/chat): |
| type MaterialIcon struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The icon name defined in the [Google Material |
| // Icon](https://fonts.google.com/icons), for example, `check_box`. Any |
| // invalid names are abandoned and replaced with empty string and |
| // results in the icon failing to render. |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // Whether the icon renders as filled. Default value is false. |
| // |
| // To preview different icon settings, go to |
| // [Google Font Icons](https://fonts.google.com/icons) and adjust the |
| // settings under **Customize**. |
| Fill bool `protobuf:"varint,2,opt,name=fill,proto3" json:"fill,omitempty"` |
| // The stroke weight of the icon. Choose from {100, 200, 300, 400, |
| // 500, 600, 700}. If absent, default value is 400. If any other value is |
| // specified, the default value is used. |
| // |
| // To preview different icon settings, go to |
| // [Google Font Icons](https://fonts.google.com/icons) and adjust the |
| // settings under **Customize**. |
| Weight int32 `protobuf:"varint,3,opt,name=weight,proto3" json:"weight,omitempty"` |
| // Weight and grade affect a symbol’s thickness. Adjustments to grade are more |
| // granular than adjustments to weight and have a small impact on the size of |
| // the symbol. Choose from {-25, 0, 200}. If absent, default value is 0. If |
| // any other value is specified, the default value is used. |
| // |
| // To preview different icon settings, go to |
| // [Google Font Icons](https://fonts.google.com/icons) and adjust the |
| // settings under **Customize**. |
| Grade int32 `protobuf:"varint,4,opt,name=grade,proto3" json:"grade,omitempty"` |
| } |
| |
| func (x *MaterialIcon) Reset() { |
| *x = MaterialIcon{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[13] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *MaterialIcon) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*MaterialIcon) ProtoMessage() {} |
| |
| func (x *MaterialIcon) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[13] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use MaterialIcon.ProtoReflect.Descriptor instead. |
| func (*MaterialIcon) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{13} |
| } |
| |
| func (x *MaterialIcon) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *MaterialIcon) GetFill() bool { |
| if x != nil { |
| return x.Fill |
| } |
| return false |
| } |
| |
| func (x *MaterialIcon) GetWeight() int32 { |
| if x != nil { |
| return x.Weight |
| } |
| return 0 |
| } |
| |
| func (x *MaterialIcon) GetGrade() int32 { |
| if x != nil { |
| return x.Grade |
| } |
| return 0 |
| } |
| |
| // Represents the crop style applied to an image. |
| // |
| // [Google Workspace Add-ons and |
| // Chat apps](https://developers.google.com/workspace/extend): |
| // |
| // For example, here's how to apply a 16:9 aspect ratio: |
| // |
| // ``` |
| // |
| // cropStyle { |
| // "type": "RECTANGLE_CUSTOM", |
| // "aspectRatio": 16/9 |
| // } |
| // |
| // ``` |
| type ImageCropStyle struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The crop type. |
| Type ImageCropStyle_ImageCropType `protobuf:"varint,1,opt,name=type,proto3,enum=google.apps.card.v1.ImageCropStyle_ImageCropType" json:"type,omitempty"` |
| // The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`. |
| // |
| // For example, here's how to apply a 16:9 aspect ratio: |
| // |
| // ``` |
| // |
| // cropStyle { |
| // "type": "RECTANGLE_CUSTOM", |
| // "aspectRatio": 16/9 |
| // } |
| // |
| // ``` |
| AspectRatio float64 `protobuf:"fixed64,2,opt,name=aspect_ratio,json=aspectRatio,proto3" json:"aspect_ratio,omitempty"` |
| } |
| |
| func (x *ImageCropStyle) Reset() { |
| *x = ImageCropStyle{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[14] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ImageCropStyle) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ImageCropStyle) ProtoMessage() {} |
| |
| func (x *ImageCropStyle) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[14] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ImageCropStyle.ProtoReflect.Descriptor instead. |
| func (*ImageCropStyle) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{14} |
| } |
| |
| func (x *ImageCropStyle) GetType() ImageCropStyle_ImageCropType { |
| if x != nil { |
| return x.Type |
| } |
| return ImageCropStyle_IMAGE_CROP_TYPE_UNSPECIFIED |
| } |
| |
| func (x *ImageCropStyle) GetAspectRatio() float64 { |
| if x != nil { |
| return x.AspectRatio |
| } |
| return 0 |
| } |
| |
| // The style options for the border of a card or widget, including the border |
| // type and color. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type BorderStyle struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The border type. |
| Type BorderStyle_BorderType `protobuf:"varint,1,opt,name=type,proto3,enum=google.apps.card.v1.BorderStyle_BorderType" json:"type,omitempty"` |
| // The colors to use when the type is `BORDER_TYPE_STROKE`. |
| StrokeColor *color.Color `protobuf:"bytes,2,opt,name=stroke_color,json=strokeColor,proto3" json:"stroke_color,omitempty"` |
| // The corner radius for the border. |
| CornerRadius int32 `protobuf:"varint,3,opt,name=corner_radius,json=cornerRadius,proto3" json:"corner_radius,omitempty"` |
| } |
| |
| func (x *BorderStyle) Reset() { |
| *x = BorderStyle{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[15] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *BorderStyle) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*BorderStyle) ProtoMessage() {} |
| |
| func (x *BorderStyle) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[15] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use BorderStyle.ProtoReflect.Descriptor instead. |
| func (*BorderStyle) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{15} |
| } |
| |
| func (x *BorderStyle) GetType() BorderStyle_BorderType { |
| if x != nil { |
| return x.Type |
| } |
| return BorderStyle_BORDER_TYPE_UNSPECIFIED |
| } |
| |
| func (x *BorderStyle) GetStrokeColor() *color.Color { |
| if x != nil { |
| return x.StrokeColor |
| } |
| return nil |
| } |
| |
| func (x *BorderStyle) GetCornerRadius() int32 { |
| if x != nil { |
| return x.CornerRadius |
| } |
| return 0 |
| } |
| |
| // Represents an image. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type ImageComponent struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The image URL. |
| ImageUri string `protobuf:"bytes,1,opt,name=image_uri,json=imageUri,proto3" json:"image_uri,omitempty"` |
| // The accessibility label for the image. |
| AltText string `protobuf:"bytes,2,opt,name=alt_text,json=altText,proto3" json:"alt_text,omitempty"` |
| // The crop style to apply to the image. |
| CropStyle *ImageCropStyle `protobuf:"bytes,3,opt,name=crop_style,json=cropStyle,proto3" json:"crop_style,omitempty"` |
| // The border style to apply to the image. |
| BorderStyle *BorderStyle `protobuf:"bytes,4,opt,name=border_style,json=borderStyle,proto3" json:"border_style,omitempty"` |
| } |
| |
| func (x *ImageComponent) Reset() { |
| *x = ImageComponent{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[16] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ImageComponent) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ImageComponent) ProtoMessage() {} |
| |
| func (x *ImageComponent) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[16] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ImageComponent.ProtoReflect.Descriptor instead. |
| func (*ImageComponent) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{16} |
| } |
| |
| func (x *ImageComponent) GetImageUri() string { |
| if x != nil { |
| return x.ImageUri |
| } |
| return "" |
| } |
| |
| func (x *ImageComponent) GetAltText() string { |
| if x != nil { |
| return x.AltText |
| } |
| return "" |
| } |
| |
| func (x *ImageComponent) GetCropStyle() *ImageCropStyle { |
| if x != nil { |
| return x.CropStyle |
| } |
| return nil |
| } |
| |
| func (x *ImageComponent) GetBorderStyle() *BorderStyle { |
| if x != nil { |
| return x.BorderStyle |
| } |
| return nil |
| } |
| |
| // Displays a grid with a collection of items. Items can only include text or |
| // images. For responsive columns, or to include more than text or images, use |
| // [`Columns`][google.apps.card.v1.Columns]. For an example in Google Chat apps, |
| // see [Display a Grid with a collection of |
| // items](https://developers.google.com/workspace/chat/format-structure-card-dialog#display_a_grid_with_a_collection_of_items). |
| // |
| // A grid supports any number of columns and items. The number of rows is |
| // determined by items divided by columns. A grid with |
| // 10 items and 2 columns has 5 rows. A grid with 11 items and 2 columns |
| // has 6 rows. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| // |
| // For example, the following JSON creates a 2 column grid with a single |
| // item: |
| // |
| // ``` |
| // |
| // "grid": { |
| // "title": "A fine collection of items", |
| // "columnCount": 2, |
| // "borderStyle": { |
| // "type": "STROKE", |
| // "cornerRadius": 4 |
| // }, |
| // "items": [ |
| // { |
| // "image": { |
| // "imageUri": "https://www.example.com/image.png", |
| // "cropStyle": { |
| // "type": "SQUARE" |
| // }, |
| // "borderStyle": { |
| // "type": "STROKE" |
| // } |
| // }, |
| // "title": "An item", |
| // "textAlignment": "CENTER" |
| // } |
| // ], |
| // "onClick": { |
| // "openLink": { |
| // "url": "https://www.example.com" |
| // } |
| // } |
| // } |
| // |
| // ``` |
| type Grid struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The text that displays in the grid header. |
| Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` |
| // The items to display in the grid. |
| Items []*Grid_GridItem `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"` |
| // The border style to apply to each grid item. |
| BorderStyle *BorderStyle `protobuf:"bytes,3,opt,name=border_style,json=borderStyle,proto3" json:"border_style,omitempty"` |
| // The number of columns to display in the grid. A default value |
| // is used if this field isn't specified, and that default value is |
| // different depending on where the grid is shown (dialog versus companion). |
| ColumnCount int32 `protobuf:"varint,4,opt,name=column_count,json=columnCount,proto3" json:"column_count,omitempty"` |
| // This callback is reused by each individual grid item, but with the |
| // item's identifier and index in the items list added to the callback's |
| // parameters. |
| OnClick *OnClick `protobuf:"bytes,5,opt,name=on_click,json=onClick,proto3" json:"on_click,omitempty"` |
| } |
| |
| func (x *Grid) Reset() { |
| *x = Grid{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[17] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Grid) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Grid) ProtoMessage() {} |
| |
| func (x *Grid) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[17] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Grid.ProtoReflect.Descriptor instead. |
| func (*Grid) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{17} |
| } |
| |
| func (x *Grid) GetTitle() string { |
| if x != nil { |
| return x.Title |
| } |
| return "" |
| } |
| |
| func (x *Grid) GetItems() []*Grid_GridItem { |
| if x != nil { |
| return x.Items |
| } |
| return nil |
| } |
| |
| func (x *Grid) GetBorderStyle() *BorderStyle { |
| if x != nil { |
| return x.BorderStyle |
| } |
| return nil |
| } |
| |
| func (x *Grid) GetColumnCount() int32 { |
| if x != nil { |
| return x.ColumnCount |
| } |
| return 0 |
| } |
| |
| func (x *Grid) GetOnClick() *OnClick { |
| if x != nil { |
| return x.OnClick |
| } |
| return nil |
| } |
| |
| // The `Columns` widget displays up to 2 columns in a card or dialog. You can |
| // add widgets to each column; the widgets appear in the order that they are |
| // specified. For an example in Google Chat apps, see |
| // [Display cards and dialogs in |
| // columns](https://developers.google.com/workspace/chat/format-structure-card-dialog#display_cards_and_dialogs_in_columns). |
| // |
| // The height of each column is determined by the taller column. For example, if |
| // the first column is taller than the second column, both columns have the |
| // height of the first column. Because each column can contain a different |
| // number of widgets, you can't define rows or align widgets between the |
| // columns. |
| // |
| // Columns are displayed side-by-side. You can customize the width of each |
| // column using the `HorizontalSizeStyle` field. If the user's |
| // screen width is too narrow, the second column wraps below the first: |
| // |
| // - On web, the second column wraps if the screen width is less than or equal |
| // to 480 pixels. |
| // - On iOS devices, the second column wraps if the screen width is |
| // less than or equal to 300 pt. |
| // - On Android devices, the second column wraps if the screen width is |
| // less than or equal to 320 dp. |
| // |
| // To include more than 2 columns, or to use rows, use the |
| // [`Grid`][google.apps.card.v1.Grid] widget. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| // Columns for Google Workspace Add-ons are in |
| // Developer Preview. |
| type Columns struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // An array of columns. You can include up to 2 columns in a card or dialog. |
| ColumnItems []*Columns_Column `protobuf:"bytes,2,rep,name=column_items,json=columnItems,proto3" json:"column_items,omitempty"` |
| } |
| |
| func (x *Columns) Reset() { |
| *x = Columns{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[18] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Columns) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Columns) ProtoMessage() {} |
| |
| func (x *Columns) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[18] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Columns.ProtoReflect.Descriptor instead. |
| func (*Columns) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{18} |
| } |
| |
| func (x *Columns) GetColumnItems() []*Columns_Column { |
| if x != nil { |
| return x.ColumnItems |
| } |
| return nil |
| } |
| |
| // Represents how to respond when users click an interactive element on |
| // a card, such as a button. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type OnClick struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Types that are assignable to Data: |
| // |
| // *OnClick_Action |
| // *OnClick_OpenLink |
| // *OnClick_OpenDynamicLinkAction |
| // *OnClick_Card |
| Data isOnClick_Data `protobuf_oneof:"data"` |
| } |
| |
| func (x *OnClick) Reset() { |
| *x = OnClick{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[19] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *OnClick) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*OnClick) ProtoMessage() {} |
| |
| func (x *OnClick) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[19] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use OnClick.ProtoReflect.Descriptor instead. |
| func (*OnClick) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{19} |
| } |
| |
| func (m *OnClick) GetData() isOnClick_Data { |
| if m != nil { |
| return m.Data |
| } |
| return nil |
| } |
| |
| func (x *OnClick) GetAction() *Action { |
| if x, ok := x.GetData().(*OnClick_Action); ok { |
| return x.Action |
| } |
| return nil |
| } |
| |
| func (x *OnClick) GetOpenLink() *OpenLink { |
| if x, ok := x.GetData().(*OnClick_OpenLink); ok { |
| return x.OpenLink |
| } |
| return nil |
| } |
| |
| func (x *OnClick) GetOpenDynamicLinkAction() *Action { |
| if x, ok := x.GetData().(*OnClick_OpenDynamicLinkAction); ok { |
| return x.OpenDynamicLinkAction |
| } |
| return nil |
| } |
| |
| func (x *OnClick) GetCard() *Card { |
| if x, ok := x.GetData().(*OnClick_Card); ok { |
| return x.Card |
| } |
| return nil |
| } |
| |
| type isOnClick_Data interface { |
| isOnClick_Data() |
| } |
| |
| type OnClick_Action struct { |
| // If specified, an action is triggered by this `onClick`. |
| Action *Action `protobuf:"bytes,1,opt,name=action,proto3,oneof"` |
| } |
| |
| type OnClick_OpenLink struct { |
| // If specified, this `onClick` triggers an open link action. |
| OpenLink *OpenLink `protobuf:"bytes,2,opt,name=open_link,json=openLink,proto3,oneof"` |
| } |
| |
| type OnClick_OpenDynamicLinkAction struct { |
| // An add-on triggers this action when the action needs to open a |
| // link. This differs from the `open_link` above in that this needs to talk |
| // to server to get the link. Thus some preparation work is required for |
| // web client to do before the open link action response comes back. |
| // |
| // [Google Workspace |
| // Add-ons](https://developers.google.com/workspace/add-ons): |
| OpenDynamicLinkAction *Action `protobuf:"bytes,3,opt,name=open_dynamic_link_action,json=openDynamicLinkAction,proto3,oneof"` |
| } |
| |
| type OnClick_Card struct { |
| // A new card is pushed to the card stack after clicking if specified. |
| // |
| // [Google Workspace |
| // Add-ons](https://developers.google.com/workspace/add-ons): |
| Card *Card `protobuf:"bytes,4,opt,name=card,proto3,oneof"` |
| } |
| |
| func (*OnClick_Action) isOnClick_Data() {} |
| |
| func (*OnClick_OpenLink) isOnClick_Data() {} |
| |
| func (*OnClick_OpenDynamicLinkAction) isOnClick_Data() {} |
| |
| func (*OnClick_Card) isOnClick_Data() {} |
| |
| // Represents an `onClick` event that opens a hyperlink. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type OpenLink struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The URL to open. |
| Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` |
| // How to open a link. |
| // |
| // [Google Workspace |
| // Add-ons](https://developers.google.com/workspace/add-ons): |
| OpenAs OpenLink_OpenAs `protobuf:"varint,2,opt,name=open_as,json=openAs,proto3,enum=google.apps.card.v1.OpenLink_OpenAs" json:"open_as,omitempty"` |
| // Whether the client forgets about a link after opening it, or observes it |
| // until the window closes. |
| // |
| // [Google Workspace |
| // Add-ons](https://developers.google.com/workspace/add-ons): |
| OnClose OpenLink_OnClose `protobuf:"varint,3,opt,name=on_close,json=onClose,proto3,enum=google.apps.card.v1.OpenLink_OnClose" json:"on_close,omitempty"` |
| } |
| |
| func (x *OpenLink) Reset() { |
| *x = OpenLink{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[20] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *OpenLink) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*OpenLink) ProtoMessage() {} |
| |
| func (x *OpenLink) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[20] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use OpenLink.ProtoReflect.Descriptor instead. |
| func (*OpenLink) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{20} |
| } |
| |
| func (x *OpenLink) GetUrl() string { |
| if x != nil { |
| return x.Url |
| } |
| return "" |
| } |
| |
| func (x *OpenLink) GetOpenAs() OpenLink_OpenAs { |
| if x != nil { |
| return x.OpenAs |
| } |
| return OpenLink_FULL_SIZE |
| } |
| |
| func (x *OpenLink) GetOnClose() OpenLink_OnClose { |
| if x != nil { |
| return x.OnClose |
| } |
| return OpenLink_NOTHING |
| } |
| |
| // An action that describes the behavior when the form is submitted. |
| // For example, you can invoke an Apps Script script to handle the form. |
| // If the action is triggered, the form values are sent to the server. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type Action struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // A custom function to invoke when the containing element is |
| // clicked or othrwise activated. |
| // |
| // For example usage, see [Read form |
| // data](https://developers.google.com/workspace/chat/read-form-data). |
| Function string `protobuf:"bytes,1,opt,name=function,proto3" json:"function,omitempty"` |
| // List of action parameters. |
| Parameters []*Action_ActionParameter `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty"` |
| // Specifies the loading indicator that the action displays while |
| // making the call to the action. |
| LoadIndicator Action_LoadIndicator `protobuf:"varint,3,opt,name=load_indicator,json=loadIndicator,proto3,enum=google.apps.card.v1.Action_LoadIndicator" json:"load_indicator,omitempty"` |
| // Indicates whether form values persist after the action. The default value |
| // is `false`. |
| // |
| // If `true`, form values remain after the action is triggered. To let the |
| // user make changes while the action is being processed, set |
| // [`LoadIndicator`](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#loadindicator) |
| // to `NONE`. For [card |
| // messages](https://developers.google.com/workspace/chat/api/guides/v1/messages/create#create) |
| // in Chat apps, you must also set the action's |
| // [`ResponseType`](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages#responsetype) |
| // to `UPDATE_MESSAGE` and use the same |
| // [`card_id`](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages#CardWithId) |
| // from the card that contained the action. |
| // |
| // If `false`, the form values are cleared when the action is triggered. |
| // To prevent the user from making changes while the action is being |
| // processed, set |
| // [`LoadIndicator`](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#loadindicator) |
| // to `SPINNER`. |
| PersistValues bool `protobuf:"varint,4,opt,name=persist_values,json=persistValues,proto3" json:"persist_values,omitempty"` |
| // Optional. Required when opening a |
| // [dialog](https://developers.google.com/workspace/chat/dialogs). |
| // |
| // What to do in response to an interaction with a user, such as a user |
| // clicking a button in a card message. |
| // |
| // If unspecified, the app responds by executing an `action`—like opening a |
| // link or running a function—as normal. |
| // |
| // By specifying an `interaction`, the app can respond in special interactive |
| // ways. For example, by setting `interaction` to `OPEN_DIALOG`, the app can |
| // open a [dialog](https://developers.google.com/workspace/chat/dialogs). When |
| // specified, a loading indicator isn't shown. If specified for |
| // an add-on, the entire card is stripped and nothing is shown in the client. |
| // |
| // [Google Chat apps](https://developers.google.com/workspace/chat): |
| Interaction Action_Interaction `protobuf:"varint,5,opt,name=interaction,proto3,enum=google.apps.card.v1.Action_Interaction" json:"interaction,omitempty"` |
| } |
| |
| func (x *Action) Reset() { |
| *x = Action{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[21] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Action) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Action) ProtoMessage() {} |
| |
| func (x *Action) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[21] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Action.ProtoReflect.Descriptor instead. |
| func (*Action) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{21} |
| } |
| |
| func (x *Action) GetFunction() string { |
| if x != nil { |
| return x.Function |
| } |
| return "" |
| } |
| |
| func (x *Action) GetParameters() []*Action_ActionParameter { |
| if x != nil { |
| return x.Parameters |
| } |
| return nil |
| } |
| |
| func (x *Action) GetLoadIndicator() Action_LoadIndicator { |
| if x != nil { |
| return x.LoadIndicator |
| } |
| return Action_SPINNER |
| } |
| |
| func (x *Action) GetPersistValues() bool { |
| if x != nil { |
| return x.PersistValues |
| } |
| return false |
| } |
| |
| func (x *Action) GetInteraction() Action_Interaction { |
| if x != nil { |
| return x.Interaction |
| } |
| return Action_INTERACTION_UNSPECIFIED |
| } |
| |
| // Represents a card header. For an example in Google Chat apps, see [Add a |
| // header](https://developers.google.com/workspace/chat/design-components-card-dialog#add_a_header). |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type Card_CardHeader struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The title of the card header. |
| // The header has a fixed height: if both a |
| // title and subtitle are specified, each takes up one line. If only the |
| // title is specified, it takes up both lines. |
| Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` |
| // The subtitle of the card header. If specified, appears on its own line |
| // below the `title`. |
| Subtitle string `protobuf:"bytes,2,opt,name=subtitle,proto3" json:"subtitle,omitempty"` |
| // The shape used to crop the image. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| ImageType Widget_ImageType `protobuf:"varint,3,opt,name=image_type,json=imageType,proto3,enum=google.apps.card.v1.Widget_ImageType" json:"image_type,omitempty"` |
| // The HTTPS URL of the image in the card header. |
| ImageUrl string `protobuf:"bytes,4,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` |
| // The alternative text of this image that's used for accessibility. |
| ImageAltText string `protobuf:"bytes,5,opt,name=image_alt_text,json=imageAltText,proto3" json:"image_alt_text,omitempty"` |
| } |
| |
| func (x *Card_CardHeader) Reset() { |
| *x = Card_CardHeader{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[22] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Card_CardHeader) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Card_CardHeader) ProtoMessage() {} |
| |
| func (x *Card_CardHeader) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[22] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Card_CardHeader.ProtoReflect.Descriptor instead. |
| func (*Card_CardHeader) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0, 0} |
| } |
| |
| func (x *Card_CardHeader) GetTitle() string { |
| if x != nil { |
| return x.Title |
| } |
| return "" |
| } |
| |
| func (x *Card_CardHeader) GetSubtitle() string { |
| if x != nil { |
| return x.Subtitle |
| } |
| return "" |
| } |
| |
| func (x *Card_CardHeader) GetImageType() Widget_ImageType { |
| if x != nil { |
| return x.ImageType |
| } |
| return Widget_SQUARE |
| } |
| |
| func (x *Card_CardHeader) GetImageUrl() string { |
| if x != nil { |
| return x.ImageUrl |
| } |
| return "" |
| } |
| |
| func (x *Card_CardHeader) GetImageAltText() string { |
| if x != nil { |
| return x.ImageAltText |
| } |
| return "" |
| } |
| |
| // A section contains a collection of widgets that are rendered |
| // vertically in the order that they're specified. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type Card_Section struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Text that appears at the top of a section. |
| // Supports simple HTML formatted text. For more information |
| // about formatting text, see |
| // [Formatting text in Google Chat |
| // apps](https://developers.google.com/workspace/chat/format-messages#card-formatting) |
| // and |
| // [Formatting |
| // text in Google Workspace |
| // Add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting). |
| Header string `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` |
| // All the widgets in the section. |
| // Must contain at least one widget. |
| Widgets []*Widget `protobuf:"bytes,2,rep,name=widgets,proto3" json:"widgets,omitempty"` |
| // Indicates whether this section is collapsible. |
| // |
| // Collapsible sections hide some or all widgets, but users can expand the |
| // section to reveal the hidden widgets by clicking **Show more**. Users |
| // can hide the widgets again by clicking **Show less**. |
| // |
| // To determine which widgets are hidden, specify |
| // `uncollapsibleWidgetsCount`. |
| Collapsible bool `protobuf:"varint,5,opt,name=collapsible,proto3" json:"collapsible,omitempty"` |
| // The number of uncollapsible widgets which remain visible even when a |
| // section is collapsed. |
| // |
| // For example, when a section |
| // contains five widgets and the `uncollapsibleWidgetsCount` is set to `2`, |
| // the first two widgets are always shown and the last three are collapsed |
| // by default. The `uncollapsibleWidgetsCount` is taken into account only |
| // when `collapsible` is `true`. |
| UncollapsibleWidgetsCount int32 `protobuf:"varint,6,opt,name=uncollapsible_widgets_count,json=uncollapsibleWidgetsCount,proto3" json:"uncollapsible_widgets_count,omitempty"` |
| } |
| |
| func (x *Card_Section) Reset() { |
| *x = Card_Section{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[23] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Card_Section) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Card_Section) ProtoMessage() {} |
| |
| func (x *Card_Section) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[23] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Card_Section.ProtoReflect.Descriptor instead. |
| func (*Card_Section) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0, 1} |
| } |
| |
| func (x *Card_Section) GetHeader() string { |
| if x != nil { |
| return x.Header |
| } |
| return "" |
| } |
| |
| func (x *Card_Section) GetWidgets() []*Widget { |
| if x != nil { |
| return x.Widgets |
| } |
| return nil |
| } |
| |
| func (x *Card_Section) GetCollapsible() bool { |
| if x != nil { |
| return x.Collapsible |
| } |
| return false |
| } |
| |
| func (x *Card_Section) GetUncollapsibleWidgetsCount() int32 { |
| if x != nil { |
| return x.UncollapsibleWidgetsCount |
| } |
| return 0 |
| } |
| |
| // A card action is the action associated with the card. For example, |
| // an invoice card might include actions such as delete invoice, email |
| // invoice, or open the invoice in a browser. |
| // |
| // [Google Workspace |
| // Add-ons](https://developers.google.com/workspace/add-ons): |
| type Card_CardAction struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The label that displays as the action menu item. |
| ActionLabel string `protobuf:"bytes,1,opt,name=action_label,json=actionLabel,proto3" json:"action_label,omitempty"` |
| // The `onClick` action for this action item. |
| OnClick *OnClick `protobuf:"bytes,2,opt,name=on_click,json=onClick,proto3" json:"on_click,omitempty"` |
| } |
| |
| func (x *Card_CardAction) Reset() { |
| *x = Card_CardAction{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[24] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Card_CardAction) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Card_CardAction) ProtoMessage() {} |
| |
| func (x *Card_CardAction) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[24] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Card_CardAction.ProtoReflect.Descriptor instead. |
| func (*Card_CardAction) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0, 2} |
| } |
| |
| func (x *Card_CardAction) GetActionLabel() string { |
| if x != nil { |
| return x.ActionLabel |
| } |
| return "" |
| } |
| |
| func (x *Card_CardAction) GetOnClick() *OnClick { |
| if x != nil { |
| return x.OnClick |
| } |
| return nil |
| } |
| |
| // A persistent (sticky) footer that that appears at the bottom of the card. |
| // |
| // Setting `fixedFooter` without specifying a `primaryButton` or a |
| // `secondaryButton` causes an error. |
| // |
| // For Chat apps, you can use fixed footers in |
| // [dialogs](https://developers.google.com/workspace/chat/dialogs), but not |
| // [card |
| // messages](https://developers.google.com/workspace/chat/create-messages#create). |
| // For an example in Google Chat apps, see [Add a persistent |
| // footer](https://developers.google.com/workspace/chat/design-components-card-dialog#add_a_persistent_footer). |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type Card_CardFixedFooter struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The primary button of the fixed footer. The button must be a text button |
| // with text and color set. |
| PrimaryButton *Button `protobuf:"bytes,1,opt,name=primary_button,json=primaryButton,proto3" json:"primary_button,omitempty"` |
| // The secondary button of the fixed footer. The button must be a text |
| // button with text and color set. |
| // If `secondaryButton` is set, you must also set `primaryButton`. |
| SecondaryButton *Button `protobuf:"bytes,2,opt,name=secondary_button,json=secondaryButton,proto3" json:"secondary_button,omitempty"` |
| } |
| |
| func (x *Card_CardFixedFooter) Reset() { |
| *x = Card_CardFixedFooter{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[25] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Card_CardFixedFooter) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Card_CardFixedFooter) ProtoMessage() {} |
| |
| func (x *Card_CardFixedFooter) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[25] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Card_CardFixedFooter.ProtoReflect.Descriptor instead. |
| func (*Card_CardFixedFooter) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0, 3} |
| } |
| |
| func (x *Card_CardFixedFooter) GetPrimaryButton() *Button { |
| if x != nil { |
| return x.PrimaryButton |
| } |
| return nil |
| } |
| |
| func (x *Card_CardFixedFooter) GetSecondaryButton() *Button { |
| if x != nil { |
| return x.SecondaryButton |
| } |
| return nil |
| } |
| |
| // Either a toggle-style switch or a checkbox inside a `decoratedText` widget. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| // |
| // Only supported in the `decoratedText` widget. |
| type DecoratedText_SwitchControl struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The name by which the switch widget is identified in a form input event. |
| // |
| // For details about working with form inputs, see [Receive form |
| // data](https://developers.google.com/workspace/chat/read-form-data). |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // The value entered by a user, returned as part of a form input event. |
| // |
| // For details about working with form inputs, see [Receive form |
| // data](https://developers.google.com/workspace/chat/read-form-data). |
| Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` |
| // When `true`, the switch is selected. |
| Selected bool `protobuf:"varint,3,opt,name=selected,proto3" json:"selected,omitempty"` |
| // The action to perform when the switch state is changed, such as what |
| // |
| // function to run. |
| OnChangeAction *Action `protobuf:"bytes,4,opt,name=on_change_action,json=onChangeAction,proto3" json:"on_change_action,omitempty"` |
| // How the switch appears in the user interface. |
| // |
| // [Google Workspace Add-ons |
| // and Chat apps](https://developers.google.com/workspace/extend): |
| ControlType DecoratedText_SwitchControl_ControlType `protobuf:"varint,5,opt,name=control_type,json=controlType,proto3,enum=google.apps.card.v1.DecoratedText_SwitchControl_ControlType" json:"control_type,omitempty"` |
| } |
| |
| func (x *DecoratedText_SwitchControl) Reset() { |
| *x = DecoratedText_SwitchControl{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[26] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *DecoratedText_SwitchControl) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*DecoratedText_SwitchControl) ProtoMessage() {} |
| |
| func (x *DecoratedText_SwitchControl) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[26] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use DecoratedText_SwitchControl.ProtoReflect.Descriptor instead. |
| func (*DecoratedText_SwitchControl) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{5, 0} |
| } |
| |
| func (x *DecoratedText_SwitchControl) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *DecoratedText_SwitchControl) GetValue() string { |
| if x != nil { |
| return x.Value |
| } |
| return "" |
| } |
| |
| func (x *DecoratedText_SwitchControl) GetSelected() bool { |
| if x != nil { |
| return x.Selected |
| } |
| return false |
| } |
| |
| func (x *DecoratedText_SwitchControl) GetOnChangeAction() *Action { |
| if x != nil { |
| return x.OnChangeAction |
| } |
| return nil |
| } |
| |
| func (x *DecoratedText_SwitchControl) GetControlType() DecoratedText_SwitchControl_ControlType { |
| if x != nil { |
| return x.ControlType |
| } |
| return DecoratedText_SwitchControl_SWITCH |
| } |
| |
| // One suggested value that users can enter in a text input field. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type Suggestions_SuggestionItem struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Types that are assignable to Content: |
| // |
| // *Suggestions_SuggestionItem_Text |
| Content isSuggestions_SuggestionItem_Content `protobuf_oneof:"content"` |
| } |
| |
| func (x *Suggestions_SuggestionItem) Reset() { |
| *x = Suggestions_SuggestionItem{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[27] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Suggestions_SuggestionItem) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Suggestions_SuggestionItem) ProtoMessage() {} |
| |
| func (x *Suggestions_SuggestionItem) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[27] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Suggestions_SuggestionItem.ProtoReflect.Descriptor instead. |
| func (*Suggestions_SuggestionItem) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{7, 0} |
| } |
| |
| func (m *Suggestions_SuggestionItem) GetContent() isSuggestions_SuggestionItem_Content { |
| if m != nil { |
| return m.Content |
| } |
| return nil |
| } |
| |
| func (x *Suggestions_SuggestionItem) GetText() string { |
| if x, ok := x.GetContent().(*Suggestions_SuggestionItem_Text); ok { |
| return x.Text |
| } |
| return "" |
| } |
| |
| type isSuggestions_SuggestionItem_Content interface { |
| isSuggestions_SuggestionItem_Content() |
| } |
| |
| type Suggestions_SuggestionItem_Text struct { |
| // The value of a suggested input to a text input field. This is |
| // equivalent to what users enter themselves. |
| Text string `protobuf:"bytes,1,opt,name=text,proto3,oneof"` |
| } |
| |
| func (*Suggestions_SuggestionItem_Text) isSuggestions_SuggestionItem_Content() {} |
| |
| // An item that users can select in a selection input, such as a checkbox |
| // or switch. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type SelectionInput_SelectionItem struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The text that identifies or describes the item to users. |
| Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` |
| // The value associated with this item. The client should use this as a form |
| // input value. |
| // |
| // For details about working with form inputs, see [Receive form |
| // data](https://developers.google.com/workspace/chat/read-form-data). |
| Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` |
| // Whether the item is selected by default. If the selection input only |
| // accepts one value (such as for radio buttons or a dropdown menu), only |
| // set this field for one item. |
| Selected bool `protobuf:"varint,3,opt,name=selected,proto3" json:"selected,omitempty"` |
| // For multiselect menus, the URL for the icon displayed next to |
| // the item's `text` field. Supports PNG and JPEG files. Must be an `HTTPS` |
| // URL. For example, |
| // `https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png`. |
| StartIconUri string `protobuf:"bytes,4,opt,name=start_icon_uri,json=startIconUri,proto3" json:"start_icon_uri,omitempty"` |
| // For multiselect menus, a text description or label that's |
| // displayed below the item's `text` field. |
| BottomText string `protobuf:"bytes,5,opt,name=bottom_text,json=bottomText,proto3" json:"bottom_text,omitempty"` |
| } |
| |
| func (x *SelectionInput_SelectionItem) Reset() { |
| *x = SelectionInput_SelectionItem{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[28] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SelectionInput_SelectionItem) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SelectionInput_SelectionItem) ProtoMessage() {} |
| |
| func (x *SelectionInput_SelectionItem) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[28] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SelectionInput_SelectionItem.ProtoReflect.Descriptor instead. |
| func (*SelectionInput_SelectionItem) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{9, 0} |
| } |
| |
| func (x *SelectionInput_SelectionItem) GetText() string { |
| if x != nil { |
| return x.Text |
| } |
| return "" |
| } |
| |
| func (x *SelectionInput_SelectionItem) GetValue() string { |
| if x != nil { |
| return x.Value |
| } |
| return "" |
| } |
| |
| func (x *SelectionInput_SelectionItem) GetSelected() bool { |
| if x != nil { |
| return x.Selected |
| } |
| return false |
| } |
| |
| func (x *SelectionInput_SelectionItem) GetStartIconUri() string { |
| if x != nil { |
| return x.StartIconUri |
| } |
| return "" |
| } |
| |
| func (x *SelectionInput_SelectionItem) GetBottomText() string { |
| if x != nil { |
| return x.BottomText |
| } |
| return "" |
| } |
| |
| // For a |
| // [`SelectionInput`][google.apps.card.v1.SelectionInput] widget that uses a |
| // multiselect menu, a data source from Google Workspace. Used to populate |
| // items in a multiselect menu. |
| // |
| // [Google Chat apps](https://developers.google.com/workspace/chat): |
| type SelectionInput_PlatformDataSource struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The data source. |
| // |
| // Types that are assignable to DataSource: |
| // |
| // *SelectionInput_PlatformDataSource_CommonDataSource_ |
| DataSource isSelectionInput_PlatformDataSource_DataSource `protobuf_oneof:"data_source"` |
| } |
| |
| func (x *SelectionInput_PlatformDataSource) Reset() { |
| *x = SelectionInput_PlatformDataSource{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[29] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *SelectionInput_PlatformDataSource) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*SelectionInput_PlatformDataSource) ProtoMessage() {} |
| |
| func (x *SelectionInput_PlatformDataSource) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[29] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use SelectionInput_PlatformDataSource.ProtoReflect.Descriptor instead. |
| func (*SelectionInput_PlatformDataSource) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{9, 1} |
| } |
| |
| func (m *SelectionInput_PlatformDataSource) GetDataSource() isSelectionInput_PlatformDataSource_DataSource { |
| if m != nil { |
| return m.DataSource |
| } |
| return nil |
| } |
| |
| func (x *SelectionInput_PlatformDataSource) GetCommonDataSource() SelectionInput_PlatformDataSource_CommonDataSource { |
| if x, ok := x.GetDataSource().(*SelectionInput_PlatformDataSource_CommonDataSource_); ok { |
| return x.CommonDataSource |
| } |
| return SelectionInput_PlatformDataSource_UNKNOWN |
| } |
| |
| type isSelectionInput_PlatformDataSource_DataSource interface { |
| isSelectionInput_PlatformDataSource_DataSource() |
| } |
| |
| type SelectionInput_PlatformDataSource_CommonDataSource_ struct { |
| // A data source shared by all Google Workspace applications, such as |
| // users in a Google Workspace organization. |
| CommonDataSource SelectionInput_PlatformDataSource_CommonDataSource `protobuf:"varint,1,opt,name=common_data_source,json=commonDataSource,proto3,enum=google.apps.card.v1.SelectionInput_PlatformDataSource_CommonDataSource,oneof"` |
| } |
| |
| func (*SelectionInput_PlatformDataSource_CommonDataSource_) isSelectionInput_PlatformDataSource_DataSource() { |
| } |
| |
| // Represents an item in a grid layout. Items can contain text, an image, or |
| // both text and an image. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type Grid_GridItem struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // A user-specified identifier for this grid item. This identifier is |
| // returned in the parent grid's `onClick` callback parameters. |
| Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` |
| // The image that displays in the grid item. |
| Image *ImageComponent `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` |
| // The grid item's title. |
| Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` |
| // The grid item's subtitle. |
| Subtitle string `protobuf:"bytes,4,opt,name=subtitle,proto3" json:"subtitle,omitempty"` |
| // The layout to use for the grid item. |
| Layout Grid_GridItem_GridItemLayout `protobuf:"varint,9,opt,name=layout,proto3,enum=google.apps.card.v1.Grid_GridItem_GridItemLayout" json:"layout,omitempty"` |
| } |
| |
| func (x *Grid_GridItem) Reset() { |
| *x = Grid_GridItem{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[30] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Grid_GridItem) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Grid_GridItem) ProtoMessage() {} |
| |
| func (x *Grid_GridItem) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[30] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Grid_GridItem.ProtoReflect.Descriptor instead. |
| func (*Grid_GridItem) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{17, 0} |
| } |
| |
| func (x *Grid_GridItem) GetId() string { |
| if x != nil { |
| return x.Id |
| } |
| return "" |
| } |
| |
| func (x *Grid_GridItem) GetImage() *ImageComponent { |
| if x != nil { |
| return x.Image |
| } |
| return nil |
| } |
| |
| func (x *Grid_GridItem) GetTitle() string { |
| if x != nil { |
| return x.Title |
| } |
| return "" |
| } |
| |
| func (x *Grid_GridItem) GetSubtitle() string { |
| if x != nil { |
| return x.Subtitle |
| } |
| return "" |
| } |
| |
| func (x *Grid_GridItem) GetLayout() Grid_GridItem_GridItemLayout { |
| if x != nil { |
| return x.Layout |
| } |
| return Grid_GridItem_GRID_ITEM_LAYOUT_UNSPECIFIED |
| } |
| |
| // A column. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| // Columns for Google Workspace Add-ons are in |
| // Developer Preview. |
| type Columns_Column struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Specifies how a column fills the width of the card. |
| HorizontalSizeStyle Columns_Column_HorizontalSizeStyle `protobuf:"varint,1,opt,name=horizontal_size_style,json=horizontalSizeStyle,proto3,enum=google.apps.card.v1.Columns_Column_HorizontalSizeStyle" json:"horizontal_size_style,omitempty"` |
| // Specifies whether widgets align to the left, right, or center of a |
| // column. |
| HorizontalAlignment Widget_HorizontalAlignment `protobuf:"varint,2,opt,name=horizontal_alignment,json=horizontalAlignment,proto3,enum=google.apps.card.v1.Widget_HorizontalAlignment" json:"horizontal_alignment,omitempty"` |
| // Specifies whether widgets align to the top, bottom, or center of a |
| // column. |
| VerticalAlignment Columns_Column_VerticalAlignment `protobuf:"varint,3,opt,name=vertical_alignment,json=verticalAlignment,proto3,enum=google.apps.card.v1.Columns_Column_VerticalAlignment" json:"vertical_alignment,omitempty"` |
| // An array of widgets included in a column. Widgets appear in the order |
| // that they are specified. |
| Widgets []*Columns_Column_Widgets `protobuf:"bytes,4,rep,name=widgets,proto3" json:"widgets,omitempty"` |
| } |
| |
| func (x *Columns_Column) Reset() { |
| *x = Columns_Column{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[31] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Columns_Column) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Columns_Column) ProtoMessage() {} |
| |
| func (x *Columns_Column) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[31] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Columns_Column.ProtoReflect.Descriptor instead. |
| func (*Columns_Column) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{18, 0} |
| } |
| |
| func (x *Columns_Column) GetHorizontalSizeStyle() Columns_Column_HorizontalSizeStyle { |
| if x != nil { |
| return x.HorizontalSizeStyle |
| } |
| return Columns_Column_HORIZONTAL_SIZE_STYLE_UNSPECIFIED |
| } |
| |
| func (x *Columns_Column) GetHorizontalAlignment() Widget_HorizontalAlignment { |
| if x != nil { |
| return x.HorizontalAlignment |
| } |
| return Widget_HORIZONTAL_ALIGNMENT_UNSPECIFIED |
| } |
| |
| func (x *Columns_Column) GetVerticalAlignment() Columns_Column_VerticalAlignment { |
| if x != nil { |
| return x.VerticalAlignment |
| } |
| return Columns_Column_VERTICAL_ALIGNMENT_UNSPECIFIED |
| } |
| |
| func (x *Columns_Column) GetWidgets() []*Columns_Column_Widgets { |
| if x != nil { |
| return x.Widgets |
| } |
| return nil |
| } |
| |
| // The supported widgets that you can include in a column. |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| // Columns for Google Workspace Add-ons are in |
| // Developer Preview. |
| type Columns_Column_Widgets struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Types that are assignable to Data: |
| // |
| // *Columns_Column_Widgets_TextParagraph |
| // *Columns_Column_Widgets_Image |
| // *Columns_Column_Widgets_DecoratedText |
| // *Columns_Column_Widgets_ButtonList |
| // *Columns_Column_Widgets_TextInput |
| // *Columns_Column_Widgets_SelectionInput |
| // *Columns_Column_Widgets_DateTimePicker |
| Data isColumns_Column_Widgets_Data `protobuf_oneof:"data"` |
| } |
| |
| func (x *Columns_Column_Widgets) Reset() { |
| *x = Columns_Column_Widgets{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[32] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Columns_Column_Widgets) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Columns_Column_Widgets) ProtoMessage() {} |
| |
| func (x *Columns_Column_Widgets) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[32] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Columns_Column_Widgets.ProtoReflect.Descriptor instead. |
| func (*Columns_Column_Widgets) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{18, 0, 0} |
| } |
| |
| func (m *Columns_Column_Widgets) GetData() isColumns_Column_Widgets_Data { |
| if m != nil { |
| return m.Data |
| } |
| return nil |
| } |
| |
| func (x *Columns_Column_Widgets) GetTextParagraph() *TextParagraph { |
| if x, ok := x.GetData().(*Columns_Column_Widgets_TextParagraph); ok { |
| return x.TextParagraph |
| } |
| return nil |
| } |
| |
| func (x *Columns_Column_Widgets) GetImage() *Image { |
| if x, ok := x.GetData().(*Columns_Column_Widgets_Image); ok { |
| return x.Image |
| } |
| return nil |
| } |
| |
| func (x *Columns_Column_Widgets) GetDecoratedText() *DecoratedText { |
| if x, ok := x.GetData().(*Columns_Column_Widgets_DecoratedText); ok { |
| return x.DecoratedText |
| } |
| return nil |
| } |
| |
| func (x *Columns_Column_Widgets) GetButtonList() *ButtonList { |
| if x, ok := x.GetData().(*Columns_Column_Widgets_ButtonList); ok { |
| return x.ButtonList |
| } |
| return nil |
| } |
| |
| func (x *Columns_Column_Widgets) GetTextInput() *TextInput { |
| if x, ok := x.GetData().(*Columns_Column_Widgets_TextInput); ok { |
| return x.TextInput |
| } |
| return nil |
| } |
| |
| func (x *Columns_Column_Widgets) GetSelectionInput() *SelectionInput { |
| if x, ok := x.GetData().(*Columns_Column_Widgets_SelectionInput); ok { |
| return x.SelectionInput |
| } |
| return nil |
| } |
| |
| func (x *Columns_Column_Widgets) GetDateTimePicker() *DateTimePicker { |
| if x, ok := x.GetData().(*Columns_Column_Widgets_DateTimePicker); ok { |
| return x.DateTimePicker |
| } |
| return nil |
| } |
| |
| type isColumns_Column_Widgets_Data interface { |
| isColumns_Column_Widgets_Data() |
| } |
| |
| type Columns_Column_Widgets_TextParagraph struct { |
| // [TextParagraph][google.apps.card.v1.TextParagraph] widget. |
| TextParagraph *TextParagraph `protobuf:"bytes,1,opt,name=text_paragraph,json=textParagraph,proto3,oneof"` |
| } |
| |
| type Columns_Column_Widgets_Image struct { |
| // [Image][google.apps.card.v1.Image] widget. |
| Image *Image `protobuf:"bytes,2,opt,name=image,proto3,oneof"` |
| } |
| |
| type Columns_Column_Widgets_DecoratedText struct { |
| // [DecoratedText][google.apps.card.v1.DecoratedText] widget. |
| DecoratedText *DecoratedText `protobuf:"bytes,3,opt,name=decorated_text,json=decoratedText,proto3,oneof"` |
| } |
| |
| type Columns_Column_Widgets_ButtonList struct { |
| // [ButtonList][google.apps.card.v1.ButtonList] widget. |
| ButtonList *ButtonList `protobuf:"bytes,4,opt,name=button_list,json=buttonList,proto3,oneof"` |
| } |
| |
| type Columns_Column_Widgets_TextInput struct { |
| // [TextInput][google.apps.card.v1.TextInput] widget. |
| TextInput *TextInput `protobuf:"bytes,5,opt,name=text_input,json=textInput,proto3,oneof"` |
| } |
| |
| type Columns_Column_Widgets_SelectionInput struct { |
| // [SelectionInput][google.apps.card.v1.SelectionInput] widget. |
| SelectionInput *SelectionInput `protobuf:"bytes,6,opt,name=selection_input,json=selectionInput,proto3,oneof"` |
| } |
| |
| type Columns_Column_Widgets_DateTimePicker struct { |
| // [DateTimePicker][google.apps.card.v1.DateTimePicker] widget. |
| DateTimePicker *DateTimePicker `protobuf:"bytes,7,opt,name=date_time_picker,json=dateTimePicker,proto3,oneof"` |
| } |
| |
| func (*Columns_Column_Widgets_TextParagraph) isColumns_Column_Widgets_Data() {} |
| |
| func (*Columns_Column_Widgets_Image) isColumns_Column_Widgets_Data() {} |
| |
| func (*Columns_Column_Widgets_DecoratedText) isColumns_Column_Widgets_Data() {} |
| |
| func (*Columns_Column_Widgets_ButtonList) isColumns_Column_Widgets_Data() {} |
| |
| func (*Columns_Column_Widgets_TextInput) isColumns_Column_Widgets_Data() {} |
| |
| func (*Columns_Column_Widgets_SelectionInput) isColumns_Column_Widgets_Data() {} |
| |
| func (*Columns_Column_Widgets_DateTimePicker) isColumns_Column_Widgets_Data() {} |
| |
| // List of string parameters to supply when the action method is invoked. |
| // For example, consider three snooze buttons: snooze now, snooze one day, |
| // or snooze next week. You might use `action method = snooze()`, passing the |
| // snooze type and snooze time in the list of string parameters. |
| // |
| // To learn more, see |
| // [`CommonEventObject`](https://developers.google.com/workspace/chat/api/reference/rest/v1/Event#commoneventobject). |
| // |
| // [Google Workspace Add-ons and Chat |
| // apps](https://developers.google.com/workspace/extend): |
| type Action_ActionParameter struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The name of the parameter for the action script. |
| Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` |
| // The value of the parameter. |
| Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` |
| } |
| |
| func (x *Action_ActionParameter) Reset() { |
| *x = Action_ActionParameter{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[33] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Action_ActionParameter) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Action_ActionParameter) ProtoMessage() {} |
| |
| func (x *Action_ActionParameter) ProtoReflect() protoreflect.Message { |
| mi := &file_google_apps_card_v1_card_proto_msgTypes[33] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Action_ActionParameter.ProtoReflect.Descriptor instead. |
| func (*Action_ActionParameter) Descriptor() ([]byte, []int) { |
| return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{21, 0} |
| } |
| |
| func (x *Action_ActionParameter) GetKey() string { |
| if x != nil { |
| return x.Key |
| } |
| return "" |
| } |
| |
| func (x *Action_ActionParameter) GetValue() string { |
| if x != nil { |
| return x.Value |
| } |
| return "" |
| } |
| |
| var File_google_apps_card_v1_card_proto protoreflect.FileDescriptor |
| |
| var file_google_apps_card_v1_card_proto_rawDesc = []byte{ |
| 0x0a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x63, 0x61, |
| 0x72, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, |
| 0x12, 0x13, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, |
| 0x72, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, |
| 0x70, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd0, |
| 0x0a, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x12, 0x3c, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, |
| 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, |
| 0x72, 0x64, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, |
| 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, |
| 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, |
| 0x72, 0x64, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x63, 0x74, |
| 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5a, 0x0a, 0x15, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, |
| 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x09, 0x20, |
| 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, |
| 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x44, |
| 0x69, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x13, 0x73, 0x65, 0x63, |
| 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65, |
| 0x12, 0x47, 0x0a, 0x0c, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, |
| 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, |
| 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x72, |
| 0x64, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, 0x61, |
| 0x72, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, |
| 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, |
| 0x0c, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, |
| 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, |
| 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x43, |
| 0x61, 0x72, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x46, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x52, 0x0b, |
| 0x66, 0x69, 0x78, 0x65, 0x64, 0x46, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x0d, 0x64, |
| 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, |
| 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, |
| 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x44, 0x69, |
| 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70, |
| 0x6c, 0x61, 0x79, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x4e, 0x0a, 0x10, 0x70, 0x65, 0x65, 0x6b, |
| 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, |
| 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, |
| 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x43, 0x61, |
| 0x72, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0e, 0x70, 0x65, 0x65, 0x6b, 0x43, 0x61, |
| 0x72, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0xc7, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x72, |
| 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, |
| 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, |
| 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, |
| 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x69, 0x6d, 0x61, |
| 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, |
| 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, |
| 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, |
| 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, |
| 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0e, |
| 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, |
| 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x6c, 0x74, 0x54, 0x65, |
| 0x78, 0x74, 0x1a, 0xba, 0x01, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, |
| 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, |
| 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x07, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, |
| 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, |
| 0x64, 0x67, 0x65, 0x74, 0x52, 0x07, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x12, 0x20, 0x0a, |
| 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, |
| 0x28, 0x08, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, |
| 0x3e, 0x0a, 0x1b, 0x75, 0x6e, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x69, 0x62, 0x6c, 0x65, |
| 0x5f, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, |
| 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x75, 0x6e, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x69, |
| 0x62, 0x6c, 0x65, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, |
| 0x68, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, |
| 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, |
| 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x62, 0x65, 0x6c, |
| 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, |
| 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, |
| 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, |
| 0x52, 0x07, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x1a, 0x9d, 0x01, 0x0a, 0x0f, 0x43, 0x61, |
| 0x72, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x46, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, |
| 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, |
| 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, |
| 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x74, 0x74, |
| 0x6f, 0x6e, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x42, 0x75, 0x74, 0x74, 0x6f, |
| 0x6e, 0x12, 0x46, 0x0a, 0x10, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x62, |
| 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, |
| 0x31, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, |
| 0x61, 0x72, 0x79, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x0c, 0x44, 0x69, 0x76, |
| 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x56, |
| 0x49, 0x44, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, |
| 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x4f, 0x4c, 0x49, |
| 0x44, 0x5f, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, |
| 0x4f, 0x5f, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x52, 0x10, 0x02, 0x22, 0x44, 0x0a, 0x0c, 0x44, |
| 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x44, |
| 0x49, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, |
| 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x45, |
| 0x45, 0x4b, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, |
| 0x02, 0x22, 0x8f, 0x07, 0x0a, 0x06, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x0e, |
| 0x74, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, |
| 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, |
| 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x50, |
| 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x65, 0x78, 0x74, |
| 0x50, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6d, 0x61, |
| 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, |
| 0x6d, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x4b, 0x0a, |
| 0x0e, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, |
| 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, |
| 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x6f, |
| 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x65, 0x63, |
| 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x62, 0x75, |
| 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, |
| 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, |
| 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, |
| 0x48, 0x00, 0x52, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, |
| 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, |
| 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, |
| 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, |
| 0x75, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, |
| 0x4e, 0x0a, 0x0f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x70, |
| 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, |
| 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, |
| 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, |
| 0x4f, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x69, 0x63, |
| 0x6b, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, |
| 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x48, 0x00, |
| 0x52, 0x0e, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69, 0x63, 0x6b, 0x65, 0x72, |
| 0x12, 0x38, 0x0a, 0x07, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, |
| 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, |
| 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x72, 0x48, |
| 0x00, 0x52, 0x07, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x04, 0x67, 0x72, |
| 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, |
| 0x72, 0x69, 0x64, 0x48, 0x00, 0x52, 0x04, 0x67, 0x72, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x63, |
| 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, |
| 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, |
| 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x62, 0x0a, 0x14, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, |
| 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, |
| 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, |
| 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, |
| 0x2e, 0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e, |
| 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x13, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, |
| 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x23, 0x0a, 0x09, 0x49, 0x6d, 0x61, |
| 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x51, 0x55, 0x41, 0x52, 0x45, |
| 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x49, 0x52, 0x43, 0x4c, 0x45, 0x10, 0x01, 0x22, 0x5b, |
| 0x0a, 0x13, 0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x69, 0x67, |
| 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x20, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x4f, 0x4e, |
| 0x54, 0x41, 0x4c, 0x5f, 0x41, 0x4c, 0x49, 0x47, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, |
| 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, |
| 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, |
| 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x4e, 0x44, 0x10, 0x03, 0x42, 0x06, 0x0a, 0x04, 0x64, |
| 0x61, 0x74, 0x61, 0x22, 0x23, 0x0a, 0x0d, 0x54, 0x65, 0x78, 0x74, 0x50, 0x61, 0x72, 0x61, 0x67, |
| 0x72, 0x61, 0x70, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, |
| 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x78, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, |
| 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, |
| 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x37, |
| 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, |
| 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, |
| 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x52, 0x07, |
| 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x5f, 0x74, |
| 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, |
| 0x78, 0x74, 0x22, 0x09, 0x0a, 0x07, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xb3, 0x06, |
| 0x0a, 0x0d, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x12, |
| 0x31, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, |
| 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x63, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x69, 0x63, |
| 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x63, 0x6f, 0x6e, |
| 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, |
| 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x63, 0x6f, |
| 0x6e, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, |
| 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, |
| 0x08, 0x74, 0x6f, 0x70, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, |
| 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, |
| 0x09, 0x77, 0x72, 0x61, 0x70, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, |
| 0x52, 0x08, 0x77, 0x72, 0x61, 0x70, 0x54, 0x65, 0x78, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6f, |
| 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, |
| 0x52, 0x0b, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x37, 0x0a, |
| 0x08, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, |
| 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, |
| 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x52, 0x07, 0x6f, |
| 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x35, 0x0a, 0x06, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, |
| 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, |
| 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x74, |
| 0x74, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x59, 0x0a, |
| 0x0e, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, |
| 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, |
| 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x6f, |
| 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, |
| 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x77, 0x69, 0x74, 0x63, |
| 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x36, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, |
| 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, |
| 0x2e, 0x49, 0x63, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x49, 0x63, 0x6f, 0x6e, |
| 0x1a, 0xb5, 0x02, 0x0a, 0x0d, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, |
| 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, |
| 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, |
| 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, |
| 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, |
| 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x10, 0x6f, 0x6e, 0x5f, 0x63, |
| 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, |
| 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, |
| 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, |
| 0x0e, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, |
| 0x5f, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, |
| 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, |
| 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x6f, |
| 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, |
| 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, |
| 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, |
| 0x22, 0x36, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, |
| 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, |
| 0x48, 0x45, 0x43, 0x4b, 0x42, 0x4f, 0x58, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x48, 0x45, |
| 0x43, 0x4b, 0x5f, 0x42, 0x4f, 0x58, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, |
| 0x72, 0x6f, 0x6c, 0x22, 0xe1, 0x03, 0x0a, 0x09, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, |
| 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, |
| 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, |
| 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x68, |
| 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, |
| 0x68, 0x69, 0x6e, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, |
| 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, |
| 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, |
| 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x54, 0x79, 0x70, |
| 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x6f, 0x6e, 0x5f, 0x63, 0x68, |
| 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, |
| 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, |
| 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, |
| 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, |
| 0x0a, 0x13, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, |
| 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, |
| 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x69, |
| 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, |
| 0x73, 0x12, 0x4d, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, |
| 0x74, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, |
| 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, |
| 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x61, 0x75, |
| 0x74, 0x6f, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, |
| 0x12, 0x29, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, |
| 0x74, 0x65, 0x78, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, |
| 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x54, 0x65, 0x78, 0x74, 0x22, 0x2a, 0x0a, 0x04, 0x54, |
| 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x4c, 0x49, |
| 0x4e, 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x50, 0x4c, 0x45, |
| 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x22, 0x87, 0x01, 0x0a, 0x0b, 0x53, 0x75, 0x67, 0x67, |
| 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x45, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, |
| 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, |
| 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, |
| 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, |
| 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x31, |
| 0x0a, 0x0e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, |
| 0x12, 0x14, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, |
| 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, |
| 0x74, 0x22, 0x43, 0x0a, 0x0a, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, |
| 0x35, 0x0a, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, |
| 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, |
| 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x07, 0x62, |
| 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x22, 0xb9, 0x08, 0x0a, 0x0e, 0x53, 0x65, 0x6c, 0x65, 0x63, |
| 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, |
| 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, |
| 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, |
| 0x62, 0x65, 0x6c, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, |
| 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, |
| 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, |
| 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, |
| 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x47, 0x0a, 0x05, 0x69, 0x74, |
| 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, |
| 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x53, |
| 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, |
| 0x65, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x10, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, |
| 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, |
| 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, 0x6e, 0x43, 0x68, |
| 0x61, 0x6e, 0x67, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x1f, 0x6d, 0x75, |
| 0x6c, 0x74, 0x69, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, |
| 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x06, 0x20, |
| 0x01, 0x28, 0x05, 0x52, 0x1b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, |
| 0x4d, 0x61, 0x78, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, |
| 0x12, 0x40, 0x0a, 0x1d, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, |
| 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, |
| 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, |
| 0x6c, 0x65, 0x63, 0x74, 0x4d, 0x69, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, |
| 0x74, 0x68, 0x12, 0x4f, 0x0a, 0x14, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, |
| 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, |
| 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, |
| 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, |
| 0x12, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, |
| 0x72, 0x63, 0x65, 0x12, 0x6a, 0x0a, 0x14, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, |
| 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, |
| 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, |
| 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, |
| 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, |
| 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x12, 0x70, 0x6c, 0x61, |
| 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, |
| 0x9c, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, |
| 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, |
| 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, |
| 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, |
| 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, |
| 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, |
| 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, |
| 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x69, 0x12, 0x1f, 0x0a, |
| 0x0b, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, |
| 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x54, 0x65, 0x78, 0x74, 0x1a, 0xc7, |
| 0x01, 0x0a, 0x12, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x53, |
| 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x77, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, |
| 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, |
| 0x0e, 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, |
| 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, |
| 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, |
| 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, |
| 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x10, 0x63, 0x6f, |
| 0x6d, 0x6d, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x29, |
| 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, |
| 0x63, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, |
| 0x08, 0x0a, 0x04, 0x55, 0x53, 0x45, 0x52, 0x10, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x61, 0x74, |
| 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x5c, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x65, |
| 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x48, 0x45, |
| 0x43, 0x4b, 0x5f, 0x42, 0x4f, 0x58, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x41, 0x44, 0x49, |
| 0x4f, 0x5f, 0x42, 0x55, 0x54, 0x54, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x57, |
| 0x49, 0x54, 0x43, 0x48, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x52, 0x4f, 0x50, 0x44, 0x4f, |
| 0x57, 0x4e, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x53, 0x45, |
| 0x4c, 0x45, 0x43, 0x54, 0x10, 0x04, 0x42, 0x1a, 0x0a, 0x18, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, |
| 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, |
| 0x63, 0x65, 0x22, 0xec, 0x02, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, |
| 0x69, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, |
| 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, |
| 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, |
| 0x4a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, |
| 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69, 0x63, 0x6b, |
| 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69, 0x63, 0x6b, 0x65, |
| 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x76, |
| 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, |
| 0x01, 0x28, 0x03, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x73, 0x45, 0x70, 0x6f, 0x63, |
| 0x68, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x6f, 0x66, |
| 0x66, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, |
| 0x12, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x44, |
| 0x61, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, |
| 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, |
| 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, 0x6e, 0x43, 0x68, |
| 0x61, 0x6e, 0x67, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x45, 0x0a, 0x12, 0x44, 0x61, |
| 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, |
| 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x54, 0x49, 0x4d, |
| 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, |
| 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, |
| 0x02, 0x22, 0xe5, 0x01, 0x0a, 0x06, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, |
| 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, |
| 0x12, 0x2d, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, |
| 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x63, 0x6f, 0x6e, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, |
| 0x28, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x6f, 0x6c, |
| 0x6f, 0x72, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, |
| 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, |
| 0x31, 0x2e, 0x4f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x52, 0x07, 0x6f, 0x6e, 0x43, 0x6c, 0x69, |
| 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, |
| 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x19, |
| 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, |
| 0x52, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, 0x22, 0xf8, 0x01, 0x0a, 0x04, 0x49, 0x63, |
| 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0a, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, 0x63, 0x6f, 0x6e, |
| 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x49, |
| 0x63, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, |
| 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, |
| 0x12, 0x48, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x63, 0x6f, |
| 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, |
| 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x61, |
| 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c, |
| 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, |
| 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x44, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x74, |
| 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, |
| 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, |
| 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x69, |
| 0x63, 0x6f, 0x6e, 0x73, 0x22, 0x64, 0x0a, 0x0c, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, |
| 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, |
| 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x6c, |
| 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x6c, 0x12, 0x16, 0x0a, 0x06, |
| 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x65, |
| 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, |
| 0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x22, 0xed, 0x01, 0x0a, 0x0e, 0x49, |
| 0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, 0x6f, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x45, 0x0a, |
| 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, |
| 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, 0x6f, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, |
| 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, |
| 0x74, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x72, |
| 0x61, 0x74, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x61, 0x73, 0x70, 0x65, |
| 0x63, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22, 0x71, 0x0a, 0x0d, 0x49, 0x6d, 0x61, 0x67, 0x65, |
| 0x43, 0x72, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x4d, 0x41, 0x47, |
| 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, |
| 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x51, 0x55, |
| 0x41, 0x52, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x49, 0x52, 0x43, 0x4c, 0x45, 0x10, |
| 0x02, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x43, 0x54, 0x41, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x43, |
| 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x43, 0x54, 0x41, |
| 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x34, 0x5f, 0x33, 0x10, 0x04, 0x22, 0xf0, 0x01, 0x0a, 0x0b, 0x42, |
| 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x79, |
| 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, |
| 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x64, 0x65, |
| 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x73, |
| 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, |
| 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, |
| 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x43, 0x6f, 0x6c, |
| 0x6f, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x72, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x61, 0x64, |
| 0x69, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x6f, 0x72, 0x6e, 0x65, |
| 0x72, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x22, 0x44, 0x0a, 0x0a, 0x42, 0x6f, 0x72, 0x64, 0x65, |
| 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, |
| 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, |
| 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x42, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, |
| 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x4f, 0x4b, 0x45, 0x10, 0x02, 0x22, 0xd1, 0x01, |
| 0x0a, 0x0e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, |
| 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, |
| 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x69, 0x12, 0x19, 0x0a, |
| 0x08, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, |
| 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x63, 0x72, 0x6f, 0x70, |
| 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, |
| 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, 0x6f, 0x70, 0x53, 0x74, 0x79, 0x6c, |
| 0x65, 0x52, 0x09, 0x63, 0x72, 0x6f, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x43, 0x0a, 0x0c, |
| 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, |
| 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, |
| 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, |
| 0x74, 0x79, 0x6c, 0x65, 0x52, 0x0b, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, |
| 0x65, 0x22, 0xa0, 0x04, 0x0a, 0x04, 0x47, 0x72, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, |
| 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, |
| 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, |
| 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, |
| 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x69, 0x64, 0x2e, 0x47, 0x72, 0x69, 0x64, 0x49, |
| 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x62, 0x6f, |
| 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, |
| 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, |
| 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, |
| 0x6c, 0x65, 0x52, 0x0b, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, |
| 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, |
| 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x43, 0x6f, 0x75, |
| 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x05, |
| 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, |
| 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x43, 0x6c, 0x69, |
| 0x63, 0x6b, 0x52, 0x07, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x1a, 0xa6, 0x02, 0x0a, 0x08, |
| 0x47, 0x72, 0x69, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, |
| 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, |
| 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, |
| 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x69, 0x6d, |
| 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, |
| 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x62, |
| 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, |
| 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, |
| 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, |
| 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x69, 0x64, |
| 0x2e, 0x47, 0x72, 0x69, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x47, 0x72, 0x69, 0x64, 0x49, 0x74, |
| 0x65, 0x6d, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x06, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, |
| 0x22, 0x52, 0x0a, 0x0e, 0x47, 0x72, 0x69, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x4c, 0x61, 0x79, 0x6f, |
| 0x75, 0x74, 0x12, 0x20, 0x0a, 0x1c, 0x47, 0x52, 0x49, 0x44, 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x5f, |
| 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, |
| 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x42, 0x45, 0x4c, |
| 0x4f, 0x57, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x41, 0x42, 0x4f, |
| 0x56, 0x45, 0x10, 0x02, 0x22, 0xac, 0x09, 0x0a, 0x07, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, |
| 0x12, 0x46, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, |
| 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, |
| 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, |
| 0x75, 0x6d, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0b, 0x63, 0x6f, 0x6c, |
| 0x75, 0x6d, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0xd8, 0x08, 0x0a, 0x06, 0x43, 0x6f, 0x6c, |
| 0x75, 0x6d, 0x6e, 0x12, 0x6b, 0x0a, 0x15, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, |
| 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, |
| 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, |
| 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, |
| 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x2e, 0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, |
| 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x13, 0x68, 0x6f, 0x72, |
| 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x53, 0x74, 0x79, 0x6c, 0x65, |
| 0x12, 0x62, 0x0a, 0x14, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x61, |
| 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, |
| 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x2e, 0x48, 0x6f, 0x72, 0x69, |
| 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, |
| 0x13, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e, |
| 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x64, 0x0a, 0x12, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, |
| 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, |
| 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, |
| 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x2e, 0x43, |
| 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x6c, |
| 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x11, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, |
| 0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x07, 0x77, 0x69, |
| 0x64, 0x67, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, |
| 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, |
| 0x2e, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x52, 0x07, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, |
| 0x73, 0x1a, 0x85, 0x04, 0x0a, 0x07, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x12, 0x4b, 0x0a, |
| 0x0e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, |
| 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, |
| 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, |
| 0x50, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x65, 0x78, |
| 0x74, 0x50, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6d, |
| 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, |
| 0x49, 0x6d, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x4b, |
| 0x0a, 0x0e, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x78, 0x74, |
| 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, |
| 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x63, |
| 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x65, |
| 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x62, |
| 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, |
| 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, |
| 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x4c, 0x69, 0x73, |
| 0x74, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, |
| 0x3f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, |
| 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, |
| 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, |
| 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, |
| 0x12, 0x4e, 0x0a, 0x0f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, |
| 0x70, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, |
| 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, |
| 0x52, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, |
| 0x12, 0x4f, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x69, |
| 0x63, 0x6b, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, |
| 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x48, |
| 0x00, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69, 0x63, 0x6b, 0x65, |
| 0x72, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6e, 0x0a, 0x13, 0x48, 0x6f, 0x72, |
| 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x53, 0x74, 0x79, 0x6c, 0x65, |
| 0x12, 0x25, 0x0a, 0x21, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x4f, 0x4e, 0x54, 0x41, 0x4c, 0x5f, 0x53, |
| 0x49, 0x5a, 0x45, 0x5f, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, |
| 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x49, 0x4c, 0x4c, 0x5f, |
| 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, |
| 0x01, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x49, 0x4c, 0x4c, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, |
| 0x4d, 0x5f, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x02, 0x22, 0x58, 0x0a, 0x11, 0x56, 0x65, 0x72, |
| 0x74, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x22, |
| 0x0a, 0x1e, 0x56, 0x45, 0x52, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x41, 0x4c, 0x49, 0x47, 0x4e, |
| 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, |
| 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x07, |
| 0x0a, 0x03, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x4f, 0x54, 0x54, 0x4f, |
| 0x4d, 0x10, 0x03, 0x22, 0x8f, 0x02, 0x0a, 0x07, 0x4f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, |
| 0x35, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, |
| 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, |
| 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, |
| 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6c, |
| 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, |
| 0x4f, 0x70, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, |
| 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x56, 0x0a, 0x18, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x64, 0x79, 0x6e, |
| 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, |
| 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, |
| 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, |
| 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x6f, 0x70, 0x65, 0x6e, 0x44, 0x79, 0x6e, 0x61, 0x6d, |
| 0x69, 0x63, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x04, |
| 0x63, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, |
| 0x2e, 0x43, 0x61, 0x72, 0x64, 0x48, 0x00, 0x52, 0x04, 0x63, 0x61, 0x72, 0x64, 0x42, 0x06, 0x0a, |
| 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe7, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x6e, 0x4c, 0x69, |
| 0x6e, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, |
| 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3d, 0x0a, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x73, 0x18, |
| 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, |
| 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x6e, |
| 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x73, 0x52, 0x06, 0x6f, 0x70, 0x65, |
| 0x6e, 0x41, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x18, |
| 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, |
| 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x6e, |
| 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x4f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x07, 0x6f, 0x6e, |
| 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x22, 0x24, 0x0a, 0x06, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x73, 0x12, |
| 0x0d, 0x0a, 0x09, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x00, 0x12, 0x0b, |
| 0x0a, 0x07, 0x4f, 0x56, 0x45, 0x52, 0x4c, 0x41, 0x59, 0x10, 0x01, 0x22, 0x22, 0x0a, 0x07, 0x4f, |
| 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x4f, 0x54, 0x48, 0x49, 0x4e, |
| 0x47, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x01, 0x22, |
| 0xd5, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x75, |
| 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, |
| 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, |
| 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, |
| 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, |
| 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, |
| 0x65, 0x72, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x69, |
| 0x63, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, |
| 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, |
| 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x69, |
| 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, |
| 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, |
| 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0b, |
| 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, |
| 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, |
| 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, |
| 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, |
| 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x6f, |
| 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, |
| 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, |
| 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, |
| 0x75, 0x65, 0x22, 0x26, 0x0a, 0x0d, 0x4c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, |
| 0x74, 0x6f, 0x72, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x50, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x10, 0x00, |
| 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x22, 0x3b, 0x0a, 0x0b, 0x49, 0x6e, |
| 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x4e, 0x54, |
| 0x45, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, |
| 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x45, 0x4e, 0x5f, 0x44, |
| 0x49, 0x41, 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x42, 0xa4, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, |
| 0x2e, 0x76, 0x31, 0x42, 0x09, 0x43, 0x61, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, |
| 0x5a, 0x37, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, |
| 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x63, 0x61, 0x72, |
| 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x61, 0x72, 0x64, 0xaa, 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x73, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x56, 0x31, 0xca, |
| 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x41, 0x70, 0x70, 0x73, 0x5c, 0x43, 0x61, |
| 0x72, 0x64, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x16, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, |
| 0x41, 0x70, 0x70, 0x73, 0x3a, 0x3a, 0x43, 0x61, 0x72, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, |
| 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, |
| } |
| |
| var ( |
| file_google_apps_card_v1_card_proto_rawDescOnce sync.Once |
| file_google_apps_card_v1_card_proto_rawDescData = file_google_apps_card_v1_card_proto_rawDesc |
| ) |
| |
| func file_google_apps_card_v1_card_proto_rawDescGZIP() []byte { |
| file_google_apps_card_v1_card_proto_rawDescOnce.Do(func() { |
| file_google_apps_card_v1_card_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_apps_card_v1_card_proto_rawDescData) |
| }) |
| return file_google_apps_card_v1_card_proto_rawDescData |
| } |
| |
| var file_google_apps_card_v1_card_proto_enumTypes = make([]protoimpl.EnumInfo, 18) |
| var file_google_apps_card_v1_card_proto_msgTypes = make([]protoimpl.MessageInfo, 34) |
| var file_google_apps_card_v1_card_proto_goTypes = []interface{}{ |
| (Card_DividerStyle)(0), // 0: google.apps.card.v1.Card.DividerStyle |
| (Card_DisplayStyle)(0), // 1: google.apps.card.v1.Card.DisplayStyle |
| (Widget_ImageType)(0), // 2: google.apps.card.v1.Widget.ImageType |
| (Widget_HorizontalAlignment)(0), // 3: google.apps.card.v1.Widget.HorizontalAlignment |
| (DecoratedText_SwitchControl_ControlType)(0), // 4: google.apps.card.v1.DecoratedText.SwitchControl.ControlType |
| (TextInput_Type)(0), // 5: google.apps.card.v1.TextInput.Type |
| (SelectionInput_SelectionType)(0), // 6: google.apps.card.v1.SelectionInput.SelectionType |
| (SelectionInput_PlatformDataSource_CommonDataSource)(0), // 7: google.apps.card.v1.SelectionInput.PlatformDataSource.CommonDataSource |
| (DateTimePicker_DateTimePickerType)(0), // 8: google.apps.card.v1.DateTimePicker.DateTimePickerType |
| (ImageCropStyle_ImageCropType)(0), // 9: google.apps.card.v1.ImageCropStyle.ImageCropType |
| (BorderStyle_BorderType)(0), // 10: google.apps.card.v1.BorderStyle.BorderType |
| (Grid_GridItem_GridItemLayout)(0), // 11: google.apps.card.v1.Grid.GridItem.GridItemLayout |
| (Columns_Column_HorizontalSizeStyle)(0), // 12: google.apps.card.v1.Columns.Column.HorizontalSizeStyle |
| (Columns_Column_VerticalAlignment)(0), // 13: google.apps.card.v1.Columns.Column.VerticalAlignment |
| (OpenLink_OpenAs)(0), // 14: google.apps.card.v1.OpenLink.OpenAs |
| (OpenLink_OnClose)(0), // 15: google.apps.card.v1.OpenLink.OnClose |
| (Action_LoadIndicator)(0), // 16: google.apps.card.v1.Action.LoadIndicator |
| (Action_Interaction)(0), // 17: google.apps.card.v1.Action.Interaction |
| (*Card)(nil), // 18: google.apps.card.v1.Card |
| (*Widget)(nil), // 19: google.apps.card.v1.Widget |
| (*TextParagraph)(nil), // 20: google.apps.card.v1.TextParagraph |
| (*Image)(nil), // 21: google.apps.card.v1.Image |
| (*Divider)(nil), // 22: google.apps.card.v1.Divider |
| (*DecoratedText)(nil), // 23: google.apps.card.v1.DecoratedText |
| (*TextInput)(nil), // 24: google.apps.card.v1.TextInput |
| (*Suggestions)(nil), // 25: google.apps.card.v1.Suggestions |
| (*ButtonList)(nil), // 26: google.apps.card.v1.ButtonList |
| (*SelectionInput)(nil), // 27: google.apps.card.v1.SelectionInput |
| (*DateTimePicker)(nil), // 28: google.apps.card.v1.DateTimePicker |
| (*Button)(nil), // 29: google.apps.card.v1.Button |
| (*Icon)(nil), // 30: google.apps.card.v1.Icon |
| (*MaterialIcon)(nil), // 31: google.apps.card.v1.MaterialIcon |
| (*ImageCropStyle)(nil), // 32: google.apps.card.v1.ImageCropStyle |
| (*BorderStyle)(nil), // 33: google.apps.card.v1.BorderStyle |
| (*ImageComponent)(nil), // 34: google.apps.card.v1.ImageComponent |
| (*Grid)(nil), // 35: google.apps.card.v1.Grid |
| (*Columns)(nil), // 36: google.apps.card.v1.Columns |
| (*OnClick)(nil), // 37: google.apps.card.v1.OnClick |
| (*OpenLink)(nil), // 38: google.apps.card.v1.OpenLink |
| (*Action)(nil), // 39: google.apps.card.v1.Action |
| (*Card_CardHeader)(nil), // 40: google.apps.card.v1.Card.CardHeader |
| (*Card_Section)(nil), // 41: google.apps.card.v1.Card.Section |
| (*Card_CardAction)(nil), // 42: google.apps.card.v1.Card.CardAction |
| (*Card_CardFixedFooter)(nil), // 43: google.apps.card.v1.Card.CardFixedFooter |
| (*DecoratedText_SwitchControl)(nil), // 44: google.apps.card.v1.DecoratedText.SwitchControl |
| (*Suggestions_SuggestionItem)(nil), // 45: google.apps.card.v1.Suggestions.SuggestionItem |
| (*SelectionInput_SelectionItem)(nil), // 46: google.apps.card.v1.SelectionInput.SelectionItem |
| (*SelectionInput_PlatformDataSource)(nil), // 47: google.apps.card.v1.SelectionInput.PlatformDataSource |
| (*Grid_GridItem)(nil), // 48: google.apps.card.v1.Grid.GridItem |
| (*Columns_Column)(nil), // 49: google.apps.card.v1.Columns.Column |
| (*Columns_Column_Widgets)(nil), // 50: google.apps.card.v1.Columns.Column.Widgets |
| (*Action_ActionParameter)(nil), // 51: google.apps.card.v1.Action.ActionParameter |
| (*color.Color)(nil), // 52: google.type.Color |
| } |
| var file_google_apps_card_v1_card_proto_depIdxs = []int32{ |
| 40, // 0: google.apps.card.v1.Card.header:type_name -> google.apps.card.v1.Card.CardHeader |
| 41, // 1: google.apps.card.v1.Card.sections:type_name -> google.apps.card.v1.Card.Section |
| 0, // 2: google.apps.card.v1.Card.section_divider_style:type_name -> google.apps.card.v1.Card.DividerStyle |
| 42, // 3: google.apps.card.v1.Card.card_actions:type_name -> google.apps.card.v1.Card.CardAction |
| 43, // 4: google.apps.card.v1.Card.fixed_footer:type_name -> google.apps.card.v1.Card.CardFixedFooter |
| 1, // 5: google.apps.card.v1.Card.display_style:type_name -> google.apps.card.v1.Card.DisplayStyle |
| 40, // 6: google.apps.card.v1.Card.peek_card_header:type_name -> google.apps.card.v1.Card.CardHeader |
| 20, // 7: google.apps.card.v1.Widget.text_paragraph:type_name -> google.apps.card.v1.TextParagraph |
| 21, // 8: google.apps.card.v1.Widget.image:type_name -> google.apps.card.v1.Image |
| 23, // 9: google.apps.card.v1.Widget.decorated_text:type_name -> google.apps.card.v1.DecoratedText |
| 26, // 10: google.apps.card.v1.Widget.button_list:type_name -> google.apps.card.v1.ButtonList |
| 24, // 11: google.apps.card.v1.Widget.text_input:type_name -> google.apps.card.v1.TextInput |
| 27, // 12: google.apps.card.v1.Widget.selection_input:type_name -> google.apps.card.v1.SelectionInput |
| 28, // 13: google.apps.card.v1.Widget.date_time_picker:type_name -> google.apps.card.v1.DateTimePicker |
| 22, // 14: google.apps.card.v1.Widget.divider:type_name -> google.apps.card.v1.Divider |
| 35, // 15: google.apps.card.v1.Widget.grid:type_name -> google.apps.card.v1.Grid |
| 36, // 16: google.apps.card.v1.Widget.columns:type_name -> google.apps.card.v1.Columns |
| 3, // 17: google.apps.card.v1.Widget.horizontal_alignment:type_name -> google.apps.card.v1.Widget.HorizontalAlignment |
| 37, // 18: google.apps.card.v1.Image.on_click:type_name -> google.apps.card.v1.OnClick |
| 30, // 19: google.apps.card.v1.DecoratedText.icon:type_name -> google.apps.card.v1.Icon |
| 30, // 20: google.apps.card.v1.DecoratedText.start_icon:type_name -> google.apps.card.v1.Icon |
| 37, // 21: google.apps.card.v1.DecoratedText.on_click:type_name -> google.apps.card.v1.OnClick |
| 29, // 22: google.apps.card.v1.DecoratedText.button:type_name -> google.apps.card.v1.Button |
| 44, // 23: google.apps.card.v1.DecoratedText.switch_control:type_name -> google.apps.card.v1.DecoratedText.SwitchControl |
| 30, // 24: google.apps.card.v1.DecoratedText.end_icon:type_name -> google.apps.card.v1.Icon |
| 5, // 25: google.apps.card.v1.TextInput.type:type_name -> google.apps.card.v1.TextInput.Type |
| 39, // 26: google.apps.card.v1.TextInput.on_change_action:type_name -> google.apps.card.v1.Action |
| 25, // 27: google.apps.card.v1.TextInput.initial_suggestions:type_name -> google.apps.card.v1.Suggestions |
| 39, // 28: google.apps.card.v1.TextInput.auto_complete_action:type_name -> google.apps.card.v1.Action |
| 45, // 29: google.apps.card.v1.Suggestions.items:type_name -> google.apps.card.v1.Suggestions.SuggestionItem |
| 29, // 30: google.apps.card.v1.ButtonList.buttons:type_name -> google.apps.card.v1.Button |
| 6, // 31: google.apps.card.v1.SelectionInput.type:type_name -> google.apps.card.v1.SelectionInput.SelectionType |
| 46, // 32: google.apps.card.v1.SelectionInput.items:type_name -> google.apps.card.v1.SelectionInput.SelectionItem |
| 39, // 33: google.apps.card.v1.SelectionInput.on_change_action:type_name -> google.apps.card.v1.Action |
| 39, // 34: google.apps.card.v1.SelectionInput.external_data_source:type_name -> google.apps.card.v1.Action |
| 47, // 35: google.apps.card.v1.SelectionInput.platform_data_source:type_name -> google.apps.card.v1.SelectionInput.PlatformDataSource |
| 8, // 36: google.apps.card.v1.DateTimePicker.type:type_name -> google.apps.card.v1.DateTimePicker.DateTimePickerType |
| 39, // 37: google.apps.card.v1.DateTimePicker.on_change_action:type_name -> google.apps.card.v1.Action |
| 30, // 38: google.apps.card.v1.Button.icon:type_name -> google.apps.card.v1.Icon |
| 52, // 39: google.apps.card.v1.Button.color:type_name -> google.type.Color |
| 37, // 40: google.apps.card.v1.Button.on_click:type_name -> google.apps.card.v1.OnClick |
| 31, // 41: google.apps.card.v1.Icon.material_icon:type_name -> google.apps.card.v1.MaterialIcon |
| 2, // 42: google.apps.card.v1.Icon.image_type:type_name -> google.apps.card.v1.Widget.ImageType |
| 9, // 43: google.apps.card.v1.ImageCropStyle.type:type_name -> google.apps.card.v1.ImageCropStyle.ImageCropType |
| 10, // 44: google.apps.card.v1.BorderStyle.type:type_name -> google.apps.card.v1.BorderStyle.BorderType |
| 52, // 45: google.apps.card.v1.BorderStyle.stroke_color:type_name -> google.type.Color |
| 32, // 46: google.apps.card.v1.ImageComponent.crop_style:type_name -> google.apps.card.v1.ImageCropStyle |
| 33, // 47: google.apps.card.v1.ImageComponent.border_style:type_name -> google.apps.card.v1.BorderStyle |
| 48, // 48: google.apps.card.v1.Grid.items:type_name -> google.apps.card.v1.Grid.GridItem |
| 33, // 49: google.apps.card.v1.Grid.border_style:type_name -> google.apps.card.v1.BorderStyle |
| 37, // 50: google.apps.card.v1.Grid.on_click:type_name -> google.apps.card.v1.OnClick |
| 49, // 51: google.apps.card.v1.Columns.column_items:type_name -> google.apps.card.v1.Columns.Column |
| 39, // 52: google.apps.card.v1.OnClick.action:type_name -> google.apps.card.v1.Action |
| 38, // 53: google.apps.card.v1.OnClick.open_link:type_name -> google.apps.card.v1.OpenLink |
| 39, // 54: google.apps.card.v1.OnClick.open_dynamic_link_action:type_name -> google.apps.card.v1.Action |
| 18, // 55: google.apps.card.v1.OnClick.card:type_name -> google.apps.card.v1.Card |
| 14, // 56: google.apps.card.v1.OpenLink.open_as:type_name -> google.apps.card.v1.OpenLink.OpenAs |
| 15, // 57: google.apps.card.v1.OpenLink.on_close:type_name -> google.apps.card.v1.OpenLink.OnClose |
| 51, // 58: google.apps.card.v1.Action.parameters:type_name -> google.apps.card.v1.Action.ActionParameter |
| 16, // 59: google.apps.card.v1.Action.load_indicator:type_name -> google.apps.card.v1.Action.LoadIndicator |
| 17, // 60: google.apps.card.v1.Action.interaction:type_name -> google.apps.card.v1.Action.Interaction |
| 2, // 61: google.apps.card.v1.Card.CardHeader.image_type:type_name -> google.apps.card.v1.Widget.ImageType |
| 19, // 62: google.apps.card.v1.Card.Section.widgets:type_name -> google.apps.card.v1.Widget |
| 37, // 63: google.apps.card.v1.Card.CardAction.on_click:type_name -> google.apps.card.v1.OnClick |
| 29, // 64: google.apps.card.v1.Card.CardFixedFooter.primary_button:type_name -> google.apps.card.v1.Button |
| 29, // 65: google.apps.card.v1.Card.CardFixedFooter.secondary_button:type_name -> google.apps.card.v1.Button |
| 39, // 66: google.apps.card.v1.DecoratedText.SwitchControl.on_change_action:type_name -> google.apps.card.v1.Action |
| 4, // 67: google.apps.card.v1.DecoratedText.SwitchControl.control_type:type_name -> google.apps.card.v1.DecoratedText.SwitchControl.ControlType |
| 7, // 68: google.apps.card.v1.SelectionInput.PlatformDataSource.common_data_source:type_name -> google.apps.card.v1.SelectionInput.PlatformDataSource.CommonDataSource |
| 34, // 69: google.apps.card.v1.Grid.GridItem.image:type_name -> google.apps.card.v1.ImageComponent |
| 11, // 70: google.apps.card.v1.Grid.GridItem.layout:type_name -> google.apps.card.v1.Grid.GridItem.GridItemLayout |
| 12, // 71: google.apps.card.v1.Columns.Column.horizontal_size_style:type_name -> google.apps.card.v1.Columns.Column.HorizontalSizeStyle |
| 3, // 72: google.apps.card.v1.Columns.Column.horizontal_alignment:type_name -> google.apps.card.v1.Widget.HorizontalAlignment |
| 13, // 73: google.apps.card.v1.Columns.Column.vertical_alignment:type_name -> google.apps.card.v1.Columns.Column.VerticalAlignment |
| 50, // 74: google.apps.card.v1.Columns.Column.widgets:type_name -> google.apps.card.v1.Columns.Column.Widgets |
| 20, // 75: google.apps.card.v1.Columns.Column.Widgets.text_paragraph:type_name -> google.apps.card.v1.TextParagraph |
| 21, // 76: google.apps.card.v1.Columns.Column.Widgets.image:type_name -> google.apps.card.v1.Image |
| 23, // 77: google.apps.card.v1.Columns.Column.Widgets.decorated_text:type_name -> google.apps.card.v1.DecoratedText |
| 26, // 78: google.apps.card.v1.Columns.Column.Widgets.button_list:type_name -> google.apps.card.v1.ButtonList |
| 24, // 79: google.apps.card.v1.Columns.Column.Widgets.text_input:type_name -> google.apps.card.v1.TextInput |
| 27, // 80: google.apps.card.v1.Columns.Column.Widgets.selection_input:type_name -> google.apps.card.v1.SelectionInput |
| 28, // 81: google.apps.card.v1.Columns.Column.Widgets.date_time_picker:type_name -> google.apps.card.v1.DateTimePicker |
| 82, // [82:82] is the sub-list for method output_type |
| 82, // [82:82] is the sub-list for method input_type |
| 82, // [82:82] is the sub-list for extension type_name |
| 82, // [82:82] is the sub-list for extension extendee |
| 0, // [0:82] is the sub-list for field type_name |
| } |
| |
| func init() { file_google_apps_card_v1_card_proto_init() } |
| func file_google_apps_card_v1_card_proto_init() { |
| if File_google_apps_card_v1_card_proto != nil { |
| return |
| } |
| if !protoimpl.UnsafeEnabled { |
| file_google_apps_card_v1_card_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Card); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Widget); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*TextParagraph); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Image); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Divider); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*DecoratedText); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*TextInput); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Suggestions); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ButtonList); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SelectionInput); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*DateTimePicker); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Button); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Icon); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*MaterialIcon); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ImageCropStyle); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*BorderStyle); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ImageComponent); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Grid); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Columns); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*OnClick); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*OpenLink); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Action); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Card_CardHeader); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Card_Section); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Card_CardAction); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Card_CardFixedFooter); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*DecoratedText_SwitchControl); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Suggestions_SuggestionItem); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SelectionInput_SelectionItem); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*SelectionInput_PlatformDataSource); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Grid_GridItem); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Columns_Column); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Columns_Column_Widgets); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Action_ActionParameter); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[1].OneofWrappers = []interface{}{ |
| (*Widget_TextParagraph)(nil), |
| (*Widget_Image)(nil), |
| (*Widget_DecoratedText)(nil), |
| (*Widget_ButtonList)(nil), |
| (*Widget_TextInput)(nil), |
| (*Widget_SelectionInput)(nil), |
| (*Widget_DateTimePicker)(nil), |
| (*Widget_Divider)(nil), |
| (*Widget_Grid)(nil), |
| (*Widget_Columns)(nil), |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[5].OneofWrappers = []interface{}{ |
| (*DecoratedText_Button)(nil), |
| (*DecoratedText_SwitchControl_)(nil), |
| (*DecoratedText_EndIcon)(nil), |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[9].OneofWrappers = []interface{}{ |
| (*SelectionInput_ExternalDataSource)(nil), |
| (*SelectionInput_PlatformDataSource_)(nil), |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[12].OneofWrappers = []interface{}{ |
| (*Icon_KnownIcon)(nil), |
| (*Icon_IconUrl)(nil), |
| (*Icon_MaterialIcon)(nil), |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[19].OneofWrappers = []interface{}{ |
| (*OnClick_Action)(nil), |
| (*OnClick_OpenLink)(nil), |
| (*OnClick_OpenDynamicLinkAction)(nil), |
| (*OnClick_Card)(nil), |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[27].OneofWrappers = []interface{}{ |
| (*Suggestions_SuggestionItem_Text)(nil), |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[29].OneofWrappers = []interface{}{ |
| (*SelectionInput_PlatformDataSource_CommonDataSource_)(nil), |
| } |
| file_google_apps_card_v1_card_proto_msgTypes[32].OneofWrappers = []interface{}{ |
| (*Columns_Column_Widgets_TextParagraph)(nil), |
| (*Columns_Column_Widgets_Image)(nil), |
| (*Columns_Column_Widgets_DecoratedText)(nil), |
| (*Columns_Column_Widgets_ButtonList)(nil), |
| (*Columns_Column_Widgets_TextInput)(nil), |
| (*Columns_Column_Widgets_SelectionInput)(nil), |
| (*Columns_Column_Widgets_DateTimePicker)(nil), |
| } |
| type x struct{} |
| out := protoimpl.TypeBuilder{ |
| File: protoimpl.DescBuilder{ |
| GoPackagePath: reflect.TypeOf(x{}).PkgPath(), |
| RawDescriptor: file_google_apps_card_v1_card_proto_rawDesc, |
| NumEnums: 18, |
| NumMessages: 34, |
| NumExtensions: 0, |
| NumServices: 0, |
| }, |
| GoTypes: file_google_apps_card_v1_card_proto_goTypes, |
| DependencyIndexes: file_google_apps_card_v1_card_proto_depIdxs, |
| EnumInfos: file_google_apps_card_v1_card_proto_enumTypes, |
| MessageInfos: file_google_apps_card_v1_card_proto_msgTypes, |
| }.Build() |
| File_google_apps_card_v1_card_proto = out.File |
| file_google_apps_card_v1_card_proto_rawDesc = nil |
| file_google_apps_card_v1_card_proto_goTypes = nil |
| file_google_apps_card_v1_card_proto_depIdxs = nil |
| } |