<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="chat_v1.html">Google Chat API</a> . <a href="chat_v1.dms.html">dms</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="chat_v1.dms.conversations.html">conversations()</a></code>
</p>
<p class="firstline">Returns the conversations Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#messages">messages(parent, body=None, threadKey=None, x__xgafv=None)</a></code></p>
<p class="firstline">Legacy path for creating message. Calling these will result in a BadRequest response.</p>
<p class="toc_element">
  <code><a href="#webhooks">webhooks(parent, body=None, threadKey=None, x__xgafv=None)</a></code></p>
<p class="firstline">Legacy path for creating message. Calling these will result in a BadRequest response.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="messages">messages(parent, body=None, threadKey=None, x__xgafv=None)</code>
  <pre>Legacy path for creating message. Calling these will result in a BadRequest response.

Args:
  parent: string, Required. Space resource name, in the form &quot;spaces/*&quot;. Example: spaces/AAAAMpdlehY (required)
  body: object, The request body.
    The object takes the form of:

{ # A message in Hangouts Chat.
  &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
    &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
    &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
  },
  &quot;annotations&quot;: [ # Output only. Annotations associated with the text in this message.
    { # Annotations associated with the plain-text body of the message. Example plain-text message body: ``` Hello @FooBot how are you!&quot; ``` The corresponding annotations metadata: ``` &quot;annotations&quot;:[{ &quot;type&quot;:&quot;USER_MENTION&quot;, &quot;startIndex&quot;:6, &quot;length&quot;:7, &quot;userMention&quot;: { &quot;user&quot;: { &quot;name&quot;:&quot;users/107946847022116401880&quot;, &quot;displayName&quot;:&quot;FooBot&quot;, &quot;avatarUrl&quot;:&quot;https://goo.gl/aeDtrS&quot;, &quot;type&quot;:&quot;BOT&quot; }, &quot;type&quot;:&quot;MENTION&quot; } }] ```
      &quot;length&quot;: 42, # Length of the substring in the plain-text message body this annotation corresponds to.
      &quot;slashCommand&quot;: { # Annotation metadata for slash commands (/). # The metadata for a slash command.
        &quot;bot&quot;: { # A user in Google Chat. # The bot whose command was invoked.
          &quot;displayName&quot;: &quot;A String&quot;, # The user&#x27;s display name.
          &quot;domainId&quot;: &quot;A String&quot;, # Obfuscated domain information.
          &quot;isAnonymous&quot;: True or False, # True when the user is deleted or the user&#x27;s profile is not visible.
          &quot;name&quot;: &quot;A String&quot;, # Resource name, in the format &quot;users/*&quot;.
          &quot;type&quot;: &quot;A String&quot;, # User type.
        },
        &quot;commandId&quot;: &quot;A String&quot;, # The command id of the invoked slash command.
        &quot;commandName&quot;: &quot;A String&quot;, # The name of the invoked slash command.
        &quot;triggersDialog&quot;: True or False, # Indicating whether the slash command is for a dialog.
        &quot;type&quot;: &quot;A String&quot;, # The type of slash command.
      },
      &quot;startIndex&quot;: 42, # Start index (0-based, inclusive) in the plain-text message body this annotation corresponds to.
      &quot;type&quot;: &quot;A String&quot;, # The type of this annotation.
      &quot;userMention&quot;: { # Annotation metadata for user mentions (@). # The metadata of user mention.
        &quot;type&quot;: &quot;A String&quot;, # The type of user mention.
        &quot;user&quot;: { # A user in Google Chat. # The user mentioned.
          &quot;displayName&quot;: &quot;A String&quot;, # The user&#x27;s display name.
          &quot;domainId&quot;: &quot;A String&quot;, # Obfuscated domain information.
          &quot;isAnonymous&quot;: True or False, # True when the user is deleted or the user&#x27;s profile is not visible.
          &quot;name&quot;: &quot;A String&quot;, # Resource name, in the format &quot;users/*&quot;.
          &quot;type&quot;: &quot;A String&quot;, # User type.
        },
      },
    },
  ],
  &quot;argumentText&quot;: &quot;A String&quot;, # Plain-text body of the message with all bot mentions stripped out.
  &quot;attachment&quot;: [ # User uploaded attachment.
    { # An attachment in Hangouts Chat.
      &quot;attachmentDataRef&quot;: { # A reference to the data of an attachment. # A reference to the attachment data. This is used with the media API to download the attachment data.
        &quot;resourceName&quot;: &quot;A String&quot;, # The resource name of the attachment data. This is used with the media API to download the attachment data.
      },
      &quot;contentName&quot;: &quot;A String&quot;, # The original file name for the content, not the full path.
      &quot;contentType&quot;: &quot;A String&quot;, # The content type (MIME type) of the file.
      &quot;downloadUri&quot;: &quot;A String&quot;, # Output only. The download URL which should be used to allow a human user to download the attachment. Bots should not use this URL to download attachment content.
      &quot;driveDataRef&quot;: { # A reference to the data of a drive attachment. # A reference to the drive attachment. This is used with the Drive API.
        &quot;driveFileId&quot;: &quot;A String&quot;, # The id for the drive file, for use with the Drive API.
      },
      &quot;name&quot;: &quot;A String&quot;, # Resource name of the attachment, in the form &quot;spaces/*/messages/*/attachments/*&quot;.
      &quot;source&quot;: &quot;A String&quot;, # The source of the attachment.
      &quot;thumbnailUri&quot;: &quot;A String&quot;, # Output only. The thumbnail URL which should be used to preview the attachment to a human user. Bots should not use this URL to download attachment content.
    },
  ],
  &quot;cards&quot;: [ # Rich, formatted and interactive cards that can be used to display UI elements such as: formatted texts, buttons, clickable images. Cards are normally displayed below the plain-text body of the message.
    { # A card is a UI element that can contain UI widgets such as texts, images.
      &quot;cardActions&quot;: [ # The actions of this card.
        { # A card action is the action associated with the card. For an invoice card, a typical action would be: delete invoice, email invoice or open the invoice in browser.
          &quot;actionLabel&quot;: &quot;A String&quot;, # The label used to be displayed in the action menu item.
          &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action for this action item.
            &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
              &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
              &quot;parameters&quot;: [ # List of action parameters.
                { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                  &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                  &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                },
              ],
            },
            &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
              &quot;url&quot;: &quot;A String&quot;, # The URL to open.
            },
          },
        },
      ],
      &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
        &quot;imageStyle&quot;: &quot;A String&quot;, # The image&#x27;s type (e.g. square border or circular border).
        &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
        &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
        &quot;title&quot;: &quot;A String&quot;, # The title must be specified. The header has a fixed height: if both a title and subtitle is specified, each will take up 1 line. If only the title is specified, it will take up both lines.
      },
      &quot;name&quot;: &quot;A String&quot;, # Name of the card.
      &quot;sections&quot;: [ # Sections are separated by a line divider.
        { # A section contains a collection of widgets that are rendered (vertically) in the order that they are specified. Across all platforms, cards have a narrow fixed width, so there is currently no need for layout properties (e.g. float).
          &quot;header&quot;: &quot;A String&quot;, # The header of the section, text formatted supported.
          &quot;widgets&quot;: [ # A section must contain at least 1 widget.
            { # A widget is a UI element that presents texts, images, etc.
              &quot;buttons&quot;: [ # A list of buttons. Buttons is also oneof data and only one of these fields should be set.
                { # A button. Can be a text button or an image button.
                  &quot;imageButton&quot;: { # An image button with an onclick action. # A button with image and onclick action.
                    &quot;icon&quot;: &quot;A String&quot;, # The icon specified by an enum that indices to an icon provided by Chat API.
                    &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
                    &quot;name&quot;: &quot;A String&quot;, # The name of this image_button which will be used for accessibility. Default value will be provided if developers don&#x27;t specify.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                  },
                  &quot;textButton&quot;: { # A button with text and onclick action. # A button with text and onclick action.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action of the button.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                    &quot;text&quot;: &quot;A String&quot;, # The text of the button.
                  },
                },
              ],
              &quot;image&quot;: { # An image that is specified by a URL and can have an onclick action. # Display an image in this widget.
                &quot;aspectRatio&quot;: 3.14, # The aspect ratio of this image (width/height). This field allows clients to reserve the right height for the image while waiting for it to load. It&#x27;s not meant to override the native aspect ratio of the image. If unset, the server fills it by prefetching the image.
                &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image.
                &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action.
                  &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                    &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                    &quot;parameters&quot;: [ # List of action parameters.
                      { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                        &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                        &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                      },
                    ],
                  },
                  &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                    &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                  },
                },
              },
              &quot;keyValue&quot;: { # A UI element contains a key (label) and a value (content). And this element may also contain some actions such as onclick button. # Display a key value item in this widget.
                &quot;bottomLabel&quot;: &quot;A String&quot;, # The text of the bottom label. Formatted text supported.
                &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
                  &quot;imageButton&quot;: { # An image button with an onclick action. # A button with image and onclick action.
                    &quot;icon&quot;: &quot;A String&quot;, # The icon specified by an enum that indices to an icon provided by Chat API.
                    &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
                    &quot;name&quot;: &quot;A String&quot;, # The name of this image_button which will be used for accessibility. Default value will be provided if developers don&#x27;t specify.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                  },
                  &quot;textButton&quot;: { # A button with text and onclick action. # A button with text and onclick action.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action of the button.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                    &quot;text&quot;: &quot;A String&quot;, # The text of the button.
                  },
                },
                &quot;content&quot;: &quot;A String&quot;, # The text of the content. Formatted text supported and always required.
                &quot;contentMultiline&quot;: True or False, # If the content should be multiline.
                &quot;icon&quot;: &quot;A String&quot;, # An enum value that will be replaced by the Chat API with the corresponding icon image.
                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
                &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action. Only the top label, bottom label and content region are clickable.
                  &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                    &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                    &quot;parameters&quot;: [ # List of action parameters.
                      { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                        &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                        &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                      },
                    ],
                  },
                  &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                    &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                  },
                },
                &quot;topLabel&quot;: &quot;A String&quot;, # The text of the top label. Formatted text supported.
              },
              &quot;textParagraph&quot;: { # A paragraph of text. Formatted text supported. # Display a text paragraph in this widget.
                &quot;text&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
      ],
    },
  ],
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the message was created in Hangouts Chat server.
  &quot;fallbackText&quot;: &quot;A String&quot;, # A plain-text description of the message&#x27;s cards, used when the actual cards cannot be displayed (e.g. mobile notifications).
  &quot;name&quot;: &quot;A String&quot;,
  &quot;previewText&quot;: &quot;A String&quot;, # Text for generating preview chips. This text will not be displayed to the user, but any links to images, web pages, videos, etc. included here will generate preview chips.
  &quot;sender&quot;: { # A user in Google Chat. # The user who created the message.
    &quot;displayName&quot;: &quot;A String&quot;, # The user&#x27;s display name.
    &quot;domainId&quot;: &quot;A String&quot;, # Obfuscated domain information.
    &quot;isAnonymous&quot;: True or False, # True when the user is deleted or the user&#x27;s profile is not visible.
    &quot;name&quot;: &quot;A String&quot;, # Resource name, in the format &quot;users/*&quot;.
    &quot;type&quot;: &quot;A String&quot;, # User type.
  },
  &quot;slashCommand&quot;: { # A Slash Command in Chat. # Slash command information, if applicable.
    &quot;commandId&quot;: &quot;A String&quot;, # The id of the slash command invoked.
  },
  &quot;space&quot;: { # A room or DM in Hangouts Chat. # The space the message belongs to.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name (only if the space is a room). Please note that this field might not be populated in direct messages between humans.
    &quot;name&quot;: &quot;A String&quot;, # Resource name of the space, in the form &quot;spaces/*&quot;. Example: spaces/AAAAMpdlehYs
    &quot;singleUserBotDm&quot;: True or False, # Whether the space is a DM between a bot and a single human.
    &quot;threaded&quot;: True or False, # Whether the messages are threaded in this space.
    &quot;type&quot;: &quot;A String&quot;, # Output only. The type of a space. This is deprecated. Use `single_user_bot_dm` instead.
  },
  &quot;text&quot;: &quot;A String&quot;, # Plain-text body of the message.
  &quot;thread&quot;: { # A thread in Hangouts Chat. # The thread the message belongs to.
    &quot;name&quot;: &quot;A String&quot;, # Resource name, in the form &quot;spaces/*/threads/*&quot;. Example: spaces/AAAAMpdlehY/threads/UMxbHmzDlr4
  },
}

  threadKey: string, Opaque thread identifier string that can be specified to group messages into a single thread. If this is the first message with a given thread identifier, a new thread is created. Subsequent messages with the same thread identifier will be posted into the same thread. This relieves bots and webhooks from having to store the Hangouts Chat thread ID of a thread (created earlier by them) to post further updates to it. Has no effect if thread field, corresponding to an existing thread, is set in message.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A message in Hangouts Chat.
  &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
    &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
    &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
  },
  &quot;annotations&quot;: [ # Output only. Annotations associated with the text in this message.
    { # Annotations associated with the plain-text body of the message. Example plain-text message body: ``` Hello @FooBot how are you!&quot; ``` The corresponding annotations metadata: ``` &quot;annotations&quot;:[{ &quot;type&quot;:&quot;USER_MENTION&quot;, &quot;startIndex&quot;:6, &quot;length&quot;:7, &quot;userMention&quot;: { &quot;user&quot;: { &quot;name&quot;:&quot;users/107946847022116401880&quot;, &quot;displayName&quot;:&quot;FooBot&quot;, &quot;avatarUrl&quot;:&quot;https://goo.gl/aeDtrS&quot;, &quot;type&quot;:&quot;BOT&quot; }, &quot;type&quot;:&quot;MENTION&quot; } }] ```
      &quot;length&quot;: 42, # Length of the substring in the plain-text message body this annotation corresponds to.
      &quot;slashCommand&quot;: { # Annotation metadata for slash commands (/). # The metadata for a slash command.
        &quot;bot&quot;: { # A user in Google Chat. # The bot whose command was invoked.
          &quot;displayName&quot;: &quot;A String&quot;, # The user&#x27;s display name.
          &quot;domainId&quot;: &quot;A String&quot;, # Obfuscated domain information.
          &quot;isAnonymous&quot;: True or False, # True when the user is deleted or the user&#x27;s profile is not visible.
          &quot;name&quot;: &quot;A String&quot;, # Resource name, in the format &quot;users/*&quot;.
          &quot;type&quot;: &quot;A String&quot;, # User type.
        },
        &quot;commandId&quot;: &quot;A String&quot;, # The command id of the invoked slash command.
        &quot;commandName&quot;: &quot;A String&quot;, # The name of the invoked slash command.
        &quot;triggersDialog&quot;: True or False, # Indicating whether the slash command is for a dialog.
        &quot;type&quot;: &quot;A String&quot;, # The type of slash command.
      },
      &quot;startIndex&quot;: 42, # Start index (0-based, inclusive) in the plain-text message body this annotation corresponds to.
      &quot;type&quot;: &quot;A String&quot;, # The type of this annotation.
      &quot;userMention&quot;: { # Annotation metadata for user mentions (@). # The metadata of user mention.
        &quot;type&quot;: &quot;A String&quot;, # The type of user mention.
        &quot;user&quot;: { # A user in Google Chat. # The user mentioned.
          &quot;displayName&quot;: &quot;A String&quot;, # The user&#x27;s display name.
          &quot;domainId&quot;: &quot;A String&quot;, # Obfuscated domain information.
          &quot;isAnonymous&quot;: True or False, # True when the user is deleted or the user&#x27;s profile is not visible.
          &quot;name&quot;: &quot;A String&quot;, # Resource name, in the format &quot;users/*&quot;.
          &quot;type&quot;: &quot;A String&quot;, # User type.
        },
      },
    },
  ],
  &quot;argumentText&quot;: &quot;A String&quot;, # Plain-text body of the message with all bot mentions stripped out.
  &quot;attachment&quot;: [ # User uploaded attachment.
    { # An attachment in Hangouts Chat.
      &quot;attachmentDataRef&quot;: { # A reference to the data of an attachment. # A reference to the attachment data. This is used with the media API to download the attachment data.
        &quot;resourceName&quot;: &quot;A String&quot;, # The resource name of the attachment data. This is used with the media API to download the attachment data.
      },
      &quot;contentName&quot;: &quot;A String&quot;, # The original file name for the content, not the full path.
      &quot;contentType&quot;: &quot;A String&quot;, # The content type (MIME type) of the file.
      &quot;downloadUri&quot;: &quot;A String&quot;, # Output only. The download URL which should be used to allow a human user to download the attachment. Bots should not use this URL to download attachment content.
      &quot;driveDataRef&quot;: { # A reference to the data of a drive attachment. # A reference to the drive attachment. This is used with the Drive API.
        &quot;driveFileId&quot;: &quot;A String&quot;, # The id for the drive file, for use with the Drive API.
      },
      &quot;name&quot;: &quot;A String&quot;, # Resource name of the attachment, in the form &quot;spaces/*/messages/*/attachments/*&quot;.
      &quot;source&quot;: &quot;A String&quot;, # The source of the attachment.
      &quot;thumbnailUri&quot;: &quot;A String&quot;, # Output only. The thumbnail URL which should be used to preview the attachment to a human user. Bots should not use this URL to download attachment content.
    },
  ],
  &quot;cards&quot;: [ # Rich, formatted and interactive cards that can be used to display UI elements such as: formatted texts, buttons, clickable images. Cards are normally displayed below the plain-text body of the message.
    { # A card is a UI element that can contain UI widgets such as texts, images.
      &quot;cardActions&quot;: [ # The actions of this card.
        { # A card action is the action associated with the card. For an invoice card, a typical action would be: delete invoice, email invoice or open the invoice in browser.
          &quot;actionLabel&quot;: &quot;A String&quot;, # The label used to be displayed in the action menu item.
          &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action for this action item.
            &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
              &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
              &quot;parameters&quot;: [ # List of action parameters.
                { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                  &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                  &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                },
              ],
            },
            &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
              &quot;url&quot;: &quot;A String&quot;, # The URL to open.
            },
          },
        },
      ],
      &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
        &quot;imageStyle&quot;: &quot;A String&quot;, # The image&#x27;s type (e.g. square border or circular border).
        &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
        &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
        &quot;title&quot;: &quot;A String&quot;, # The title must be specified. The header has a fixed height: if both a title and subtitle is specified, each will take up 1 line. If only the title is specified, it will take up both lines.
      },
      &quot;name&quot;: &quot;A String&quot;, # Name of the card.
      &quot;sections&quot;: [ # Sections are separated by a line divider.
        { # A section contains a collection of widgets that are rendered (vertically) in the order that they are specified. Across all platforms, cards have a narrow fixed width, so there is currently no need for layout properties (e.g. float).
          &quot;header&quot;: &quot;A String&quot;, # The header of the section, text formatted supported.
          &quot;widgets&quot;: [ # A section must contain at least 1 widget.
            { # A widget is a UI element that presents texts, images, etc.
              &quot;buttons&quot;: [ # A list of buttons. Buttons is also oneof data and only one of these fields should be set.
                { # A button. Can be a text button or an image button.
                  &quot;imageButton&quot;: { # An image button with an onclick action. # A button with image and onclick action.
                    &quot;icon&quot;: &quot;A String&quot;, # The icon specified by an enum that indices to an icon provided by Chat API.
                    &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
                    &quot;name&quot;: &quot;A String&quot;, # The name of this image_button which will be used for accessibility. Default value will be provided if developers don&#x27;t specify.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                  },
                  &quot;textButton&quot;: { # A button with text and onclick action. # A button with text and onclick action.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action of the button.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                    &quot;text&quot;: &quot;A String&quot;, # The text of the button.
                  },
                },
              ],
              &quot;image&quot;: { # An image that is specified by a URL and can have an onclick action. # Display an image in this widget.
                &quot;aspectRatio&quot;: 3.14, # The aspect ratio of this image (width/height). This field allows clients to reserve the right height for the image while waiting for it to load. It&#x27;s not meant to override the native aspect ratio of the image. If unset, the server fills it by prefetching the image.
                &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image.
                &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action.
                  &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                    &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                    &quot;parameters&quot;: [ # List of action parameters.
                      { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                        &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                        &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                      },
                    ],
                  },
                  &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                    &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                  },
                },
              },
              &quot;keyValue&quot;: { # A UI element contains a key (label) and a value (content). And this element may also contain some actions such as onclick button. # Display a key value item in this widget.
                &quot;bottomLabel&quot;: &quot;A String&quot;, # The text of the bottom label. Formatted text supported.
                &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
                  &quot;imageButton&quot;: { # An image button with an onclick action. # A button with image and onclick action.
                    &quot;icon&quot;: &quot;A String&quot;, # The icon specified by an enum that indices to an icon provided by Chat API.
                    &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
                    &quot;name&quot;: &quot;A String&quot;, # The name of this image_button which will be used for accessibility. Default value will be provided if developers don&#x27;t specify.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                  },
                  &quot;textButton&quot;: { # A button with text and onclick action. # A button with text and onclick action.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action of the button.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                    &quot;text&quot;: &quot;A String&quot;, # The text of the button.
                  },
                },
                &quot;content&quot;: &quot;A String&quot;, # The text of the content. Formatted text supported and always required.
                &quot;contentMultiline&quot;: True or False, # If the content should be multiline.
                &quot;icon&quot;: &quot;A String&quot;, # An enum value that will be replaced by the Chat API with the corresponding icon image.
                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
                &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action. Only the top label, bottom label and content region are clickable.
                  &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                    &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                    &quot;parameters&quot;: [ # List of action parameters.
                      { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                        &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                        &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                      },
                    ],
                  },
                  &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                    &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                  },
                },
                &quot;topLabel&quot;: &quot;A String&quot;, # The text of the top label. Formatted text supported.
              },
              &quot;textParagraph&quot;: { # A paragraph of text. Formatted text supported. # Display a text paragraph in this widget.
                &quot;text&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
      ],
    },
  ],
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the message was created in Hangouts Chat server.
  &quot;fallbackText&quot;: &quot;A String&quot;, # A plain-text description of the message&#x27;s cards, used when the actual cards cannot be displayed (e.g. mobile notifications).
  &quot;name&quot;: &quot;A String&quot;,
  &quot;previewText&quot;: &quot;A String&quot;, # Text for generating preview chips. This text will not be displayed to the user, but any links to images, web pages, videos, etc. included here will generate preview chips.
  &quot;sender&quot;: { # A user in Google Chat. # The user who created the message.
    &quot;displayName&quot;: &quot;A String&quot;, # The user&#x27;s display name.
    &quot;domainId&quot;: &quot;A String&quot;, # Obfuscated domain information.
    &quot;isAnonymous&quot;: True or False, # True when the user is deleted or the user&#x27;s profile is not visible.
    &quot;name&quot;: &quot;A String&quot;, # Resource name, in the format &quot;users/*&quot;.
    &quot;type&quot;: &quot;A String&quot;, # User type.
  },
  &quot;slashCommand&quot;: { # A Slash Command in Chat. # Slash command information, if applicable.
    &quot;commandId&quot;: &quot;A String&quot;, # The id of the slash command invoked.
  },
  &quot;space&quot;: { # A room or DM in Hangouts Chat. # The space the message belongs to.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name (only if the space is a room). Please note that this field might not be populated in direct messages between humans.
    &quot;name&quot;: &quot;A String&quot;, # Resource name of the space, in the form &quot;spaces/*&quot;. Example: spaces/AAAAMpdlehYs
    &quot;singleUserBotDm&quot;: True or False, # Whether the space is a DM between a bot and a single human.
    &quot;threaded&quot;: True or False, # Whether the messages are threaded in this space.
    &quot;type&quot;: &quot;A String&quot;, # Output only. The type of a space. This is deprecated. Use `single_user_bot_dm` instead.
  },
  &quot;text&quot;: &quot;A String&quot;, # Plain-text body of the message.
  &quot;thread&quot;: { # A thread in Hangouts Chat. # The thread the message belongs to.
    &quot;name&quot;: &quot;A String&quot;, # Resource name, in the form &quot;spaces/*/threads/*&quot;. Example: spaces/AAAAMpdlehY/threads/UMxbHmzDlr4
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="webhooks">webhooks(parent, body=None, threadKey=None, x__xgafv=None)</code>
  <pre>Legacy path for creating message. Calling these will result in a BadRequest response.

Args:
  parent: string, Required. Space resource name, in the form &quot;spaces/*&quot;. Example: spaces/AAAAMpdlehY (required)
  body: object, The request body.
    The object takes the form of:

{ # A message in Hangouts Chat.
  &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
    &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
    &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
  },
  &quot;annotations&quot;: [ # Output only. Annotations associated with the text in this message.
    { # Annotations associated with the plain-text body of the message. Example plain-text message body: ``` Hello @FooBot how are you!&quot; ``` The corresponding annotations metadata: ``` &quot;annotations&quot;:[{ &quot;type&quot;:&quot;USER_MENTION&quot;, &quot;startIndex&quot;:6, &quot;length&quot;:7, &quot;userMention&quot;: { &quot;user&quot;: { &quot;name&quot;:&quot;users/107946847022116401880&quot;, &quot;displayName&quot;:&quot;FooBot&quot;, &quot;avatarUrl&quot;:&quot;https://goo.gl/aeDtrS&quot;, &quot;type&quot;:&quot;BOT&quot; }, &quot;type&quot;:&quot;MENTION&quot; } }] ```
      &quot;length&quot;: 42, # Length of the substring in the plain-text message body this annotation corresponds to.
      &quot;slashCommand&quot;: { # Annotation metadata for slash commands (/). # The metadata for a slash command.
        &quot;bot&quot;: { # A user in Google Chat. # The bot whose command was invoked.
          &quot;displayName&quot;: &quot;A String&quot;, # The user&#x27;s display name.
          &quot;domainId&quot;: &quot;A String&quot;, # Obfuscated domain information.
          &quot;isAnonymous&quot;: True or False, # True when the user is deleted or the user&#x27;s profile is not visible.
          &quot;name&quot;: &quot;A String&quot;, # Resource name, in the format &quot;users/*&quot;.
          &quot;type&quot;: &quot;A String&quot;, # User type.
        },
        &quot;commandId&quot;: &quot;A String&quot;, # The command id of the invoked slash command.
        &quot;commandName&quot;: &quot;A String&quot;, # The name of the invoked slash command.
        &quot;triggersDialog&quot;: True or False, # Indicating whether the slash command is for a dialog.
        &quot;type&quot;: &quot;A String&quot;, # The type of slash command.
      },
      &quot;startIndex&quot;: 42, # Start index (0-based, inclusive) in the plain-text message body this annotation corresponds to.
      &quot;type&quot;: &quot;A String&quot;, # The type of this annotation.
      &quot;userMention&quot;: { # Annotation metadata for user mentions (@). # The metadata of user mention.
        &quot;type&quot;: &quot;A String&quot;, # The type of user mention.
        &quot;user&quot;: { # A user in Google Chat. # The user mentioned.
          &quot;displayName&quot;: &quot;A String&quot;, # The user&#x27;s display name.
          &quot;domainId&quot;: &quot;A String&quot;, # Obfuscated domain information.
          &quot;isAnonymous&quot;: True or False, # True when the user is deleted or the user&#x27;s profile is not visible.
          &quot;name&quot;: &quot;A String&quot;, # Resource name, in the format &quot;users/*&quot;.
          &quot;type&quot;: &quot;A String&quot;, # User type.
        },
      },
    },
  ],
  &quot;argumentText&quot;: &quot;A String&quot;, # Plain-text body of the message with all bot mentions stripped out.
  &quot;attachment&quot;: [ # User uploaded attachment.
    { # An attachment in Hangouts Chat.
      &quot;attachmentDataRef&quot;: { # A reference to the data of an attachment. # A reference to the attachment data. This is used with the media API to download the attachment data.
        &quot;resourceName&quot;: &quot;A String&quot;, # The resource name of the attachment data. This is used with the media API to download the attachment data.
      },
      &quot;contentName&quot;: &quot;A String&quot;, # The original file name for the content, not the full path.
      &quot;contentType&quot;: &quot;A String&quot;, # The content type (MIME type) of the file.
      &quot;downloadUri&quot;: &quot;A String&quot;, # Output only. The download URL which should be used to allow a human user to download the attachment. Bots should not use this URL to download attachment content.
      &quot;driveDataRef&quot;: { # A reference to the data of a drive attachment. # A reference to the drive attachment. This is used with the Drive API.
        &quot;driveFileId&quot;: &quot;A String&quot;, # The id for the drive file, for use with the Drive API.
      },
      &quot;name&quot;: &quot;A String&quot;, # Resource name of the attachment, in the form &quot;spaces/*/messages/*/attachments/*&quot;.
      &quot;source&quot;: &quot;A String&quot;, # The source of the attachment.
      &quot;thumbnailUri&quot;: &quot;A String&quot;, # Output only. The thumbnail URL which should be used to preview the attachment to a human user. Bots should not use this URL to download attachment content.
    },
  ],
  &quot;cards&quot;: [ # Rich, formatted and interactive cards that can be used to display UI elements such as: formatted texts, buttons, clickable images. Cards are normally displayed below the plain-text body of the message.
    { # A card is a UI element that can contain UI widgets such as texts, images.
      &quot;cardActions&quot;: [ # The actions of this card.
        { # A card action is the action associated with the card. For an invoice card, a typical action would be: delete invoice, email invoice or open the invoice in browser.
          &quot;actionLabel&quot;: &quot;A String&quot;, # The label used to be displayed in the action menu item.
          &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action for this action item.
            &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
              &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
              &quot;parameters&quot;: [ # List of action parameters.
                { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                  &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                  &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                },
              ],
            },
            &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
              &quot;url&quot;: &quot;A String&quot;, # The URL to open.
            },
          },
        },
      ],
      &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
        &quot;imageStyle&quot;: &quot;A String&quot;, # The image&#x27;s type (e.g. square border or circular border).
        &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
        &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
        &quot;title&quot;: &quot;A String&quot;, # The title must be specified. The header has a fixed height: if both a title and subtitle is specified, each will take up 1 line. If only the title is specified, it will take up both lines.
      },
      &quot;name&quot;: &quot;A String&quot;, # Name of the card.
      &quot;sections&quot;: [ # Sections are separated by a line divider.
        { # A section contains a collection of widgets that are rendered (vertically) in the order that they are specified. Across all platforms, cards have a narrow fixed width, so there is currently no need for layout properties (e.g. float).
          &quot;header&quot;: &quot;A String&quot;, # The header of the section, text formatted supported.
          &quot;widgets&quot;: [ # A section must contain at least 1 widget.
            { # A widget is a UI element that presents texts, images, etc.
              &quot;buttons&quot;: [ # A list of buttons. Buttons is also oneof data and only one of these fields should be set.
                { # A button. Can be a text button or an image button.
                  &quot;imageButton&quot;: { # An image button with an onclick action. # A button with image and onclick action.
                    &quot;icon&quot;: &quot;A String&quot;, # The icon specified by an enum that indices to an icon provided by Chat API.
                    &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
                    &quot;name&quot;: &quot;A String&quot;, # The name of this image_button which will be used for accessibility. Default value will be provided if developers don&#x27;t specify.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                  },
                  &quot;textButton&quot;: { # A button with text and onclick action. # A button with text and onclick action.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action of the button.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                    &quot;text&quot;: &quot;A String&quot;, # The text of the button.
                  },
                },
              ],
              &quot;image&quot;: { # An image that is specified by a URL and can have an onclick action. # Display an image in this widget.
                &quot;aspectRatio&quot;: 3.14, # The aspect ratio of this image (width/height). This field allows clients to reserve the right height for the image while waiting for it to load. It&#x27;s not meant to override the native aspect ratio of the image. If unset, the server fills it by prefetching the image.
                &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image.
                &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action.
                  &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                    &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                    &quot;parameters&quot;: [ # List of action parameters.
                      { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                        &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                        &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                      },
                    ],
                  },
                  &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                    &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                  },
                },
              },
              &quot;keyValue&quot;: { # A UI element contains a key (label) and a value (content). And this element may also contain some actions such as onclick button. # Display a key value item in this widget.
                &quot;bottomLabel&quot;: &quot;A String&quot;, # The text of the bottom label. Formatted text supported.
                &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
                  &quot;imageButton&quot;: { # An image button with an onclick action. # A button with image and onclick action.
                    &quot;icon&quot;: &quot;A String&quot;, # The icon specified by an enum that indices to an icon provided by Chat API.
                    &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
                    &quot;name&quot;: &quot;A String&quot;, # The name of this image_button which will be used for accessibility. Default value will be provided if developers don&#x27;t specify.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                  },
                  &quot;textButton&quot;: { # A button with text and onclick action. # A button with text and onclick action.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action of the button.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                    &quot;text&quot;: &quot;A String&quot;, # The text of the button.
                  },
                },
                &quot;content&quot;: &quot;A String&quot;, # The text of the content. Formatted text supported and always required.
                &quot;contentMultiline&quot;: True or False, # If the content should be multiline.
                &quot;icon&quot;: &quot;A String&quot;, # An enum value that will be replaced by the Chat API with the corresponding icon image.
                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
                &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action. Only the top label, bottom label and content region are clickable.
                  &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                    &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                    &quot;parameters&quot;: [ # List of action parameters.
                      { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                        &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                        &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                      },
                    ],
                  },
                  &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                    &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                  },
                },
                &quot;topLabel&quot;: &quot;A String&quot;, # The text of the top label. Formatted text supported.
              },
              &quot;textParagraph&quot;: { # A paragraph of text. Formatted text supported. # Display a text paragraph in this widget.
                &quot;text&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
      ],
    },
  ],
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the message was created in Hangouts Chat server.
  &quot;fallbackText&quot;: &quot;A String&quot;, # A plain-text description of the message&#x27;s cards, used when the actual cards cannot be displayed (e.g. mobile notifications).
  &quot;name&quot;: &quot;A String&quot;,
  &quot;previewText&quot;: &quot;A String&quot;, # Text for generating preview chips. This text will not be displayed to the user, but any links to images, web pages, videos, etc. included here will generate preview chips.
  &quot;sender&quot;: { # A user in Google Chat. # The user who created the message.
    &quot;displayName&quot;: &quot;A String&quot;, # The user&#x27;s display name.
    &quot;domainId&quot;: &quot;A String&quot;, # Obfuscated domain information.
    &quot;isAnonymous&quot;: True or False, # True when the user is deleted or the user&#x27;s profile is not visible.
    &quot;name&quot;: &quot;A String&quot;, # Resource name, in the format &quot;users/*&quot;.
    &quot;type&quot;: &quot;A String&quot;, # User type.
  },
  &quot;slashCommand&quot;: { # A Slash Command in Chat. # Slash command information, if applicable.
    &quot;commandId&quot;: &quot;A String&quot;, # The id of the slash command invoked.
  },
  &quot;space&quot;: { # A room or DM in Hangouts Chat. # The space the message belongs to.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name (only if the space is a room). Please note that this field might not be populated in direct messages between humans.
    &quot;name&quot;: &quot;A String&quot;, # Resource name of the space, in the form &quot;spaces/*&quot;. Example: spaces/AAAAMpdlehYs
    &quot;singleUserBotDm&quot;: True or False, # Whether the space is a DM between a bot and a single human.
    &quot;threaded&quot;: True or False, # Whether the messages are threaded in this space.
    &quot;type&quot;: &quot;A String&quot;, # Output only. The type of a space. This is deprecated. Use `single_user_bot_dm` instead.
  },
  &quot;text&quot;: &quot;A String&quot;, # Plain-text body of the message.
  &quot;thread&quot;: { # A thread in Hangouts Chat. # The thread the message belongs to.
    &quot;name&quot;: &quot;A String&quot;, # Resource name, in the form &quot;spaces/*/threads/*&quot;. Example: spaces/AAAAMpdlehY/threads/UMxbHmzDlr4
  },
}

  threadKey: string, Opaque thread identifier string that can be specified to group messages into a single thread. If this is the first message with a given thread identifier, a new thread is created. Subsequent messages with the same thread identifier will be posted into the same thread. This relieves bots and webhooks from having to store the Hangouts Chat thread ID of a thread (created earlier by them) to post further updates to it. Has no effect if thread field, corresponding to an existing thread, is set in message.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A message in Hangouts Chat.
  &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
    &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
    &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
  },
  &quot;annotations&quot;: [ # Output only. Annotations associated with the text in this message.
    { # Annotations associated with the plain-text body of the message. Example plain-text message body: ``` Hello @FooBot how are you!&quot; ``` The corresponding annotations metadata: ``` &quot;annotations&quot;:[{ &quot;type&quot;:&quot;USER_MENTION&quot;, &quot;startIndex&quot;:6, &quot;length&quot;:7, &quot;userMention&quot;: { &quot;user&quot;: { &quot;name&quot;:&quot;users/107946847022116401880&quot;, &quot;displayName&quot;:&quot;FooBot&quot;, &quot;avatarUrl&quot;:&quot;https://goo.gl/aeDtrS&quot;, &quot;type&quot;:&quot;BOT&quot; }, &quot;type&quot;:&quot;MENTION&quot; } }] ```
      &quot;length&quot;: 42, # Length of the substring in the plain-text message body this annotation corresponds to.
      &quot;slashCommand&quot;: { # Annotation metadata for slash commands (/). # The metadata for a slash command.
        &quot;bot&quot;: { # A user in Google Chat. # The bot whose command was invoked.
          &quot;displayName&quot;: &quot;A String&quot;, # The user&#x27;s display name.
          &quot;domainId&quot;: &quot;A String&quot;, # Obfuscated domain information.
          &quot;isAnonymous&quot;: True or False, # True when the user is deleted or the user&#x27;s profile is not visible.
          &quot;name&quot;: &quot;A String&quot;, # Resource name, in the format &quot;users/*&quot;.
          &quot;type&quot;: &quot;A String&quot;, # User type.
        },
        &quot;commandId&quot;: &quot;A String&quot;, # The command id of the invoked slash command.
        &quot;commandName&quot;: &quot;A String&quot;, # The name of the invoked slash command.
        &quot;triggersDialog&quot;: True or False, # Indicating whether the slash command is for a dialog.
        &quot;type&quot;: &quot;A String&quot;, # The type of slash command.
      },
      &quot;startIndex&quot;: 42, # Start index (0-based, inclusive) in the plain-text message body this annotation corresponds to.
      &quot;type&quot;: &quot;A String&quot;, # The type of this annotation.
      &quot;userMention&quot;: { # Annotation metadata for user mentions (@). # The metadata of user mention.
        &quot;type&quot;: &quot;A String&quot;, # The type of user mention.
        &quot;user&quot;: { # A user in Google Chat. # The user mentioned.
          &quot;displayName&quot;: &quot;A String&quot;, # The user&#x27;s display name.
          &quot;domainId&quot;: &quot;A String&quot;, # Obfuscated domain information.
          &quot;isAnonymous&quot;: True or False, # True when the user is deleted or the user&#x27;s profile is not visible.
          &quot;name&quot;: &quot;A String&quot;, # Resource name, in the format &quot;users/*&quot;.
          &quot;type&quot;: &quot;A String&quot;, # User type.
        },
      },
    },
  ],
  &quot;argumentText&quot;: &quot;A String&quot;, # Plain-text body of the message with all bot mentions stripped out.
  &quot;attachment&quot;: [ # User uploaded attachment.
    { # An attachment in Hangouts Chat.
      &quot;attachmentDataRef&quot;: { # A reference to the data of an attachment. # A reference to the attachment data. This is used with the media API to download the attachment data.
        &quot;resourceName&quot;: &quot;A String&quot;, # The resource name of the attachment data. This is used with the media API to download the attachment data.
      },
      &quot;contentName&quot;: &quot;A String&quot;, # The original file name for the content, not the full path.
      &quot;contentType&quot;: &quot;A String&quot;, # The content type (MIME type) of the file.
      &quot;downloadUri&quot;: &quot;A String&quot;, # Output only. The download URL which should be used to allow a human user to download the attachment. Bots should not use this URL to download attachment content.
      &quot;driveDataRef&quot;: { # A reference to the data of a drive attachment. # A reference to the drive attachment. This is used with the Drive API.
        &quot;driveFileId&quot;: &quot;A String&quot;, # The id for the drive file, for use with the Drive API.
      },
      &quot;name&quot;: &quot;A String&quot;, # Resource name of the attachment, in the form &quot;spaces/*/messages/*/attachments/*&quot;.
      &quot;source&quot;: &quot;A String&quot;, # The source of the attachment.
      &quot;thumbnailUri&quot;: &quot;A String&quot;, # Output only. The thumbnail URL which should be used to preview the attachment to a human user. Bots should not use this URL to download attachment content.
    },
  ],
  &quot;cards&quot;: [ # Rich, formatted and interactive cards that can be used to display UI elements such as: formatted texts, buttons, clickable images. Cards are normally displayed below the plain-text body of the message.
    { # A card is a UI element that can contain UI widgets such as texts, images.
      &quot;cardActions&quot;: [ # The actions of this card.
        { # A card action is the action associated with the card. For an invoice card, a typical action would be: delete invoice, email invoice or open the invoice in browser.
          &quot;actionLabel&quot;: &quot;A String&quot;, # The label used to be displayed in the action menu item.
          &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action for this action item.
            &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
              &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
              &quot;parameters&quot;: [ # List of action parameters.
                { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                  &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                  &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                },
              ],
            },
            &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
              &quot;url&quot;: &quot;A String&quot;, # The URL to open.
            },
          },
        },
      ],
      &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
        &quot;imageStyle&quot;: &quot;A String&quot;, # The image&#x27;s type (e.g. square border or circular border).
        &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
        &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
        &quot;title&quot;: &quot;A String&quot;, # The title must be specified. The header has a fixed height: if both a title and subtitle is specified, each will take up 1 line. If only the title is specified, it will take up both lines.
      },
      &quot;name&quot;: &quot;A String&quot;, # Name of the card.
      &quot;sections&quot;: [ # Sections are separated by a line divider.
        { # A section contains a collection of widgets that are rendered (vertically) in the order that they are specified. Across all platforms, cards have a narrow fixed width, so there is currently no need for layout properties (e.g. float).
          &quot;header&quot;: &quot;A String&quot;, # The header of the section, text formatted supported.
          &quot;widgets&quot;: [ # A section must contain at least 1 widget.
            { # A widget is a UI element that presents texts, images, etc.
              &quot;buttons&quot;: [ # A list of buttons. Buttons is also oneof data and only one of these fields should be set.
                { # A button. Can be a text button or an image button.
                  &quot;imageButton&quot;: { # An image button with an onclick action. # A button with image and onclick action.
                    &quot;icon&quot;: &quot;A String&quot;, # The icon specified by an enum that indices to an icon provided by Chat API.
                    &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
                    &quot;name&quot;: &quot;A String&quot;, # The name of this image_button which will be used for accessibility. Default value will be provided if developers don&#x27;t specify.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                  },
                  &quot;textButton&quot;: { # A button with text and onclick action. # A button with text and onclick action.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action of the button.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                    &quot;text&quot;: &quot;A String&quot;, # The text of the button.
                  },
                },
              ],
              &quot;image&quot;: { # An image that is specified by a URL and can have an onclick action. # Display an image in this widget.
                &quot;aspectRatio&quot;: 3.14, # The aspect ratio of this image (width/height). This field allows clients to reserve the right height for the image while waiting for it to load. It&#x27;s not meant to override the native aspect ratio of the image. If unset, the server fills it by prefetching the image.
                &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image.
                &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action.
                  &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                    &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                    &quot;parameters&quot;: [ # List of action parameters.
                      { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                        &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                        &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                      },
                    ],
                  },
                  &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                    &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                  },
                },
              },
              &quot;keyValue&quot;: { # A UI element contains a key (label) and a value (content). And this element may also contain some actions such as onclick button. # Display a key value item in this widget.
                &quot;bottomLabel&quot;: &quot;A String&quot;, # The text of the bottom label. Formatted text supported.
                &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
                  &quot;imageButton&quot;: { # An image button with an onclick action. # A button with image and onclick action.
                    &quot;icon&quot;: &quot;A String&quot;, # The icon specified by an enum that indices to an icon provided by Chat API.
                    &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
                    &quot;name&quot;: &quot;A String&quot;, # The name of this image_button which will be used for accessibility. Default value will be provided if developers don&#x27;t specify.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                  },
                  &quot;textButton&quot;: { # A button with text and onclick action. # A button with text and onclick action.
                    &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action of the button.
                      &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                        &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                        &quot;parameters&quot;: [ # List of action parameters.
                          { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                          },
                        ],
                      },
                      &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                      },
                    },
                    &quot;text&quot;: &quot;A String&quot;, # The text of the button.
                  },
                },
                &quot;content&quot;: &quot;A String&quot;, # The text of the content. Formatted text supported and always required.
                &quot;contentMultiline&quot;: True or False, # If the content should be multiline.
                &quot;icon&quot;: &quot;A String&quot;, # An enum value that will be replaced by the Chat API with the corresponding icon image.
                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
                &quot;onClick&quot;: { # An onclick action (e.g. open a link). # The onclick action. Only the top label, bottom label and content region are clickable.
                  &quot;action&quot;: { # A form action describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # A form action will be triggered by this onclick if specified.
                    &quot;actionMethodName&quot;: &quot;A String&quot;, # The method name is used to identify which part of the form triggered the form submission. This information is echoed back to the bot as part of the card click event. The same method name can be used for several elements that trigger a common behavior if desired.
                    &quot;parameters&quot;: [ # List of action parameters.
                      { # List of string parameters to supply when the action method is invoked. For example, consider three snooze buttons: snooze now, snooze 1 day, snooze next week. You might use action method = snooze(), passing the snooze type and snooze time in the list of string parameters.
                        &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
                        &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
                      },
                    ],
                  },
                  &quot;openLink&quot;: { # A link that opens a new window. # This onclick triggers an open link action if specified.
                    &quot;url&quot;: &quot;A String&quot;, # The URL to open.
                  },
                },
                &quot;topLabel&quot;: &quot;A String&quot;, # The text of the top label. Formatted text supported.
              },
              &quot;textParagraph&quot;: { # A paragraph of text. Formatted text supported. # Display a text paragraph in this widget.
                &quot;text&quot;: &quot;A String&quot;,
              },
            },
          ],
        },
      ],
    },
  ],
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the message was created in Hangouts Chat server.
  &quot;fallbackText&quot;: &quot;A String&quot;, # A plain-text description of the message&#x27;s cards, used when the actual cards cannot be displayed (e.g. mobile notifications).
  &quot;name&quot;: &quot;A String&quot;,
  &quot;previewText&quot;: &quot;A String&quot;, # Text for generating preview chips. This text will not be displayed to the user, but any links to images, web pages, videos, etc. included here will generate preview chips.
  &quot;sender&quot;: { # A user in Google Chat. # The user who created the message.
    &quot;displayName&quot;: &quot;A String&quot;, # The user&#x27;s display name.
    &quot;domainId&quot;: &quot;A String&quot;, # Obfuscated domain information.
    &quot;isAnonymous&quot;: True or False, # True when the user is deleted or the user&#x27;s profile is not visible.
    &quot;name&quot;: &quot;A String&quot;, # Resource name, in the format &quot;users/*&quot;.
    &quot;type&quot;: &quot;A String&quot;, # User type.
  },
  &quot;slashCommand&quot;: { # A Slash Command in Chat. # Slash command information, if applicable.
    &quot;commandId&quot;: &quot;A String&quot;, # The id of the slash command invoked.
  },
  &quot;space&quot;: { # A room or DM in Hangouts Chat. # The space the message belongs to.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name (only if the space is a room). Please note that this field might not be populated in direct messages between humans.
    &quot;name&quot;: &quot;A String&quot;, # Resource name of the space, in the form &quot;spaces/*&quot;. Example: spaces/AAAAMpdlehYs
    &quot;singleUserBotDm&quot;: True or False, # Whether the space is a DM between a bot and a single human.
    &quot;threaded&quot;: True or False, # Whether the messages are threaded in this space.
    &quot;type&quot;: &quot;A String&quot;, # Output only. The type of a space. This is deprecated. Use `single_user_bot_dm` instead.
  },
  &quot;text&quot;: &quot;A String&quot;, # Plain-text body of the message.
  &quot;thread&quot;: { # A thread in Hangouts Chat. # The thread the message belongs to.
    &quot;name&quot;: &quot;A String&quot;, # Resource name, in the form &quot;spaces/*/threads/*&quot;. Example: spaces/AAAAMpdlehY/threads/UMxbHmzDlr4
  },
}</pre>
</div>

</body></html>