blob: fae54ed21547f1cf3ee17b3ae7933375d38e9539 [file] [log] [blame]
// 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
}