<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">Hangouts Chat API</a> . <a href="chat_v1.spaces.html">spaces</a> . <a href="chat_v1.spaces.messages.html">messages</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(parent, body, threadKey=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a message.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a message.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a message.</p>
<p class="toc_element">
  <code><a href="#update">update(name, body, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a message.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(parent, body, threadKey=None, x__xgafv=None)</code>
  <pre>Creates a message.

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

{ # A message in Hangouts Chat.
    "actionResponse": { # Parameters that a bot can use to configure how it's response is posted. # Input only. Parameters that a bot can use to configure how its response is
        # posted.
      "url": "A String", # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
      "type": "A String", # The type of bot response.
    },
    "name": "A String", # Resource name, in the form "spaces/*/messages/*".
        # 
        # Example: spaces/AAAAMpdlehY/messages/UMxbHmzDlr4.UMxbHmzDlr4
    "thread": { # A thread in Hangouts Chat. # The thread the message belongs to.
      "name": "A String", # Resource name, in the form "spaces/*/threads/*".
          #
          # Example: spaces/AAAAMpdlehY/threads/UMxbHmzDlr4
    },
    "space": { # A room or DM in Hangouts Chat. # The space the message belongs to.
      "displayName": "A String", # Output only. The display name (only if the space is a room).
      "type": "A String", # Output only. The type of a space.
      "name": "A String", # Resource name of the space, in the form "spaces/*".
          #
          # Example: spaces/AAAAMpdlehYs
    },
    "text": "A String", # Plain-text body of the message.
    "fallbackText": "A String", # A plain-text description of the message's cards, used when the actual cards
        # cannot be displayed (e.g. mobile notifications).
    "annotations": [ # 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!"
          # ```
          #
          # The corresponding annotations metadata:
          # ```
          # "annotations":[{
          #   "type":"USER_MENTION",
          #   "startIndex":6,
          #   "length":7,
          #   "userMention": {
          #     "user": {
          #       "name":"users/107946847022116401880",
          #       "displayName":"FooBot",
          #       "avatarUrl":"https://goo.gl/aeDtrS",
          #       "type":"BOT"
          #     },
          #     "type":"MENTION"
          #    }
          # }]
          # ```
        "userMention": { # Annotation metadata for user mentions (@). # The metadata of user mention.
          "type": "A String", # The type of user mention.
          "user": { # A user in Hangouts Chat. # The user mentioned.
            "displayName": "A String", # The user's display name.
            "type": "A String", # User type.
            "name": "A String", # Resource name, in the format "users/*".
          },
        },
        "length": 42, # Length of the substring in the plain-text message body this annotation
            # corresponds to.
        "type": "A String", # The type of this annotation.
        "startIndex": 42, # Start index (0-based, inclusive) in the plain-text message body this
            # annotation corresponds to.
      },
    ],
    "argumentText": "A String", # Plain-text body of the message with all bot mentions stripped out.
    "cards": [ # 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.
        "cardActions": [ # 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.
            "actionLabel": "A String", # The label used to be displayed in the action menu item.
            "onClick": { # An onclick action (e.g. open a link). # The onclick action for this action item.
              "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                "url": "A String", # The URL to open.
              },
              "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                  # For example, an Apps Script can be invoked to handle the form.
                "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                    # clicked/activated.
                "parameters": [ # 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.
                    "value": "A String", # The value of the parameter.
                    "key": "A String", # The name of the parameter for the action script.
                  },
                ],
              },
            },
          },
        ],
        "sections": [ # 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).
            "widgets": [ # A section must contain at least 1 widget.
              { # A widget is a UI element that presents texts, images, etc.
                "buttons": [ # 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.
                    "imageButton": { # An image button with an onclick action. # A button with image and onclick action.
                      "iconUrl": "A String", # The icon specified by a URL.
                      "name": "A String", # The name of this image_button which will be used for accessibility.
                          # Default value will be provided if developers don't specify.
                      "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                        "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                          "url": "A String", # The URL to open.
                        },
                        "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                            # For example, an Apps Script can be invoked to handle the form.
                          "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                              # clicked/activated.
                          "parameters": [ # 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.
                              "value": "A String", # The value of the parameter.
                              "key": "A String", # The name of the parameter for the action script.
                            },
                          ],
                        },
                      },
                      "icon": "A String", # The icon specified by an enum that indices to an icon provided by Chat
                          # API.
                    },
                    "textButton": { # A button with text and onclick action. # A button with text and onclick action.
                      "text": "A String", # The text of the button.
                      "onClick": { # An onclick action (e.g. open a link). # The onclick action of the button.
                        "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                          "url": "A String", # The URL to open.
                        },
                        "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                            # For example, an Apps Script can be invoked to handle the form.
                          "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                              # clicked/activated.
                          "parameters": [ # 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.
                              "value": "A String", # The value of the parameter.
                              "key": "A String", # The name of the parameter for the action script.
                            },
                          ],
                        },
                      },
                    },
                  },
                ],
                "keyValue": { # A UI element contains a key (label) and a value (content). And this # Display a key value item in this widget.
                    # element may also contain some actions such as onclick button.
                  "contentMultiline": True or False, # If the content should be multiline.
                  "bottomLabel": "A String", # The text of the bottom label. Formatted text supported.
                  "topLabel": "A String", # The text of the top label. Formatted text supported.
                  "button": { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
                    "imageButton": { # An image button with an onclick action. # A button with image and onclick action.
                      "iconUrl": "A String", # The icon specified by a URL.
                      "name": "A String", # The name of this image_button which will be used for accessibility.
                          # Default value will be provided if developers don't specify.
                      "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                        "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                          "url": "A String", # The URL to open.
                        },
                        "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                            # For example, an Apps Script can be invoked to handle the form.
                          "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                              # clicked/activated.
                          "parameters": [ # 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.
                              "value": "A String", # The value of the parameter.
                              "key": "A String", # The name of the parameter for the action script.
                            },
                          ],
                        },
                      },
                      "icon": "A String", # The icon specified by an enum that indices to an icon provided by Chat
                          # API.
                    },
                    "textButton": { # A button with text and onclick action. # A button with text and onclick action.
                      "text": "A String", # The text of the button.
                      "onClick": { # An onclick action (e.g. open a link). # The onclick action of the button.
                        "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                          "url": "A String", # The URL to open.
                        },
                        "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                            # For example, an Apps Script can be invoked to handle the form.
                          "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                              # clicked/activated.
                          "parameters": [ # 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.
                              "value": "A String", # The value of the parameter.
                              "key": "A String", # The name of the parameter for the action script.
                            },
                          ],
                        },
                      },
                    },
                  },
                  "content": "A String", # The text of the content. Formatted text supported and always required.
                  "iconUrl": "A String", # The icon specified by a URL.
                  "onClick": { # An onclick action (e.g. open a link). # The onclick action. Only the top label, bottom label and content region
                      # are clickable.
                    "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                      "url": "A String", # The URL to open.
                    },
                    "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                        # For example, an Apps Script can be invoked to handle the form.
                      "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                          # clicked/activated.
                      "parameters": [ # 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.
                          "value": "A String", # The value of the parameter.
                          "key": "A String", # The name of the parameter for the action script.
                        },
                      ],
                    },
                  },
                  "icon": "A String", # An enum value that will be replaced by the Chat API with the
                      # corresponding icon image.
                },
                "image": { # An image that is specified by a URL and can have an onclick action. # Display an image in this widget.
                  "aspectRatio": 3.14, # The aspect ratio of this image (width/height).
                  "imageUrl": "A String", # The URL of the image.
                  "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                    "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                      "url": "A String", # The URL to open.
                    },
                    "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                        # For example, an Apps Script can be invoked to handle the form.
                      "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                          # clicked/activated.
                      "parameters": [ # 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.
                          "value": "A String", # The value of the parameter.
                          "key": "A String", # The name of the parameter for the action script.
                        },
                      ],
                    },
                  },
                },
                "textParagraph": { # A paragraph of text. Formatted text supported. # Display a text paragraph in this widget.
                  "text": "A String",
                },
              },
            ],
            "header": "A String", # The header of the section, text formatted supported.
          },
        ],
        "name": "A String", # Name of the card.
        "header": { # The header of the card. A header usually contains a title and an image.
          "imageStyle": "A String", # The image's type (e.g. square border or circular border).
          "imageUrl": "A String", # The URL of the image in the card header.
          "subtitle": "A String", # The subtitle of the card header.
          "title": "A String", # 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.
        },
      },
    ],
    "previewText": "A String", # 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.
    "createTime": "A String", # Output only. The time at which the message was created in Hangouts Chat
        # server.
    "sender": { # A user in Hangouts Chat. # The user who created the message.
      "displayName": "A String", # The user's display name.
      "type": "A String", # User type.
      "name": "A String", # Resource name, in the format "users/*".
    },
  }

  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.
      "actionResponse": { # Parameters that a bot can use to configure how it's response is posted. # Input only. Parameters that a bot can use to configure how its response is
          # posted.
        "url": "A String", # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
        "type": "A String", # The type of bot response.
      },
      "name": "A String", # Resource name, in the form "spaces/*/messages/*".
          #
          # Example: spaces/AAAAMpdlehY/messages/UMxbHmzDlr4.UMxbHmzDlr4
      "thread": { # A thread in Hangouts Chat. # The thread the message belongs to.
        "name": "A String", # Resource name, in the form "spaces/*/threads/*".
            #
            # Example: spaces/AAAAMpdlehY/threads/UMxbHmzDlr4
      },
      "space": { # A room or DM in Hangouts Chat. # The space the message belongs to.
        "displayName": "A String", # Output only. The display name (only if the space is a room).
        "type": "A String", # Output only. The type of a space.
        "name": "A String", # Resource name of the space, in the form "spaces/*".
            #
            # Example: spaces/AAAAMpdlehYs
      },
      "text": "A String", # Plain-text body of the message.
      "fallbackText": "A String", # A plain-text description of the message's cards, used when the actual cards
          # cannot be displayed (e.g. mobile notifications).
      "annotations": [ # 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!"
            # ```
            #
            # The corresponding annotations metadata:
            # ```
            # "annotations":[{
            #   "type":"USER_MENTION",
            #   "startIndex":6,
            #   "length":7,
            #   "userMention": {
            #     "user": {
            #       "name":"users/107946847022116401880",
            #       "displayName":"FooBot",
            #       "avatarUrl":"https://goo.gl/aeDtrS",
            #       "type":"BOT"
            #     },
            #     "type":"MENTION"
            #    }
            # }]
            # ```
          "userMention": { # Annotation metadata for user mentions (@). # The metadata of user mention.
            "type": "A String", # The type of user mention.
            "user": { # A user in Hangouts Chat. # The user mentioned.
              "displayName": "A String", # The user's display name.
              "type": "A String", # User type.
              "name": "A String", # Resource name, in the format "users/*".
            },
          },
          "length": 42, # Length of the substring in the plain-text message body this annotation
              # corresponds to.
          "type": "A String", # The type of this annotation.
          "startIndex": 42, # Start index (0-based, inclusive) in the plain-text message body this
              # annotation corresponds to.
        },
      ],
      "argumentText": "A String", # Plain-text body of the message with all bot mentions stripped out.
      "cards": [ # 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.
          "cardActions": [ # 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.
              "actionLabel": "A String", # The label used to be displayed in the action menu item.
              "onClick": { # An onclick action (e.g. open a link). # The onclick action for this action item.
                "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                  "url": "A String", # The URL to open.
                },
                "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                    # For example, an Apps Script can be invoked to handle the form.
                  "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                      # clicked/activated.
                  "parameters": [ # 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.
                      "value": "A String", # The value of the parameter.
                      "key": "A String", # The name of the parameter for the action script.
                    },
                  ],
                },
              },
            },
          ],
          "sections": [ # 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).
              "widgets": [ # A section must contain at least 1 widget.
                { # A widget is a UI element that presents texts, images, etc.
                  "buttons": [ # 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.
                      "imageButton": { # An image button with an onclick action. # A button with image and onclick action.
                        "iconUrl": "A String", # The icon specified by a URL.
                        "name": "A String", # The name of this image_button which will be used for accessibility.
                            # Default value will be provided if developers don't specify.
                        "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                          "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                            "url": "A String", # The URL to open.
                          },
                          "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                              # For example, an Apps Script can be invoked to handle the form.
                            "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                                # clicked/activated.
                            "parameters": [ # 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.
                                "value": "A String", # The value of the parameter.
                                "key": "A String", # The name of the parameter for the action script.
                              },
                            ],
                          },
                        },
                        "icon": "A String", # The icon specified by an enum that indices to an icon provided by Chat
                            # API.
                      },
                      "textButton": { # A button with text and onclick action. # A button with text and onclick action.
                        "text": "A String", # The text of the button.
                        "onClick": { # An onclick action (e.g. open a link). # The onclick action of the button.
                          "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                            "url": "A String", # The URL to open.
                          },
                          "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                              # For example, an Apps Script can be invoked to handle the form.
                            "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                                # clicked/activated.
                            "parameters": [ # 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.
                                "value": "A String", # The value of the parameter.
                                "key": "A String", # The name of the parameter for the action script.
                              },
                            ],
                          },
                        },
                      },
                    },
                  ],
                  "keyValue": { # A UI element contains a key (label) and a value (content). And this # Display a key value item in this widget.
                      # element may also contain some actions such as onclick button.
                    "contentMultiline": True or False, # If the content should be multiline.
                    "bottomLabel": "A String", # The text of the bottom label. Formatted text supported.
                    "topLabel": "A String", # The text of the top label. Formatted text supported.
                    "button": { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
                      "imageButton": { # An image button with an onclick action. # A button with image and onclick action.
                        "iconUrl": "A String", # The icon specified by a URL.
                        "name": "A String", # The name of this image_button which will be used for accessibility.
                            # Default value will be provided if developers don't specify.
                        "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                          "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                            "url": "A String", # The URL to open.
                          },
                          "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                              # For example, an Apps Script can be invoked to handle the form.
                            "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                                # clicked/activated.
                            "parameters": [ # 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.
                                "value": "A String", # The value of the parameter.
                                "key": "A String", # The name of the parameter for the action script.
                              },
                            ],
                          },
                        },
                        "icon": "A String", # The icon specified by an enum that indices to an icon provided by Chat
                            # API.
                      },
                      "textButton": { # A button with text and onclick action. # A button with text and onclick action.
                        "text": "A String", # The text of the button.
                        "onClick": { # An onclick action (e.g. open a link). # The onclick action of the button.
                          "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                            "url": "A String", # The URL to open.
                          },
                          "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                              # For example, an Apps Script can be invoked to handle the form.
                            "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                                # clicked/activated.
                            "parameters": [ # 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.
                                "value": "A String", # The value of the parameter.
                                "key": "A String", # The name of the parameter for the action script.
                              },
                            ],
                          },
                        },
                      },
                    },
                    "content": "A String", # The text of the content. Formatted text supported and always required.
                    "iconUrl": "A String", # The icon specified by a URL.
                    "onClick": { # An onclick action (e.g. open a link). # The onclick action. Only the top label, bottom label and content region
                        # are clickable.
                      "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        "url": "A String", # The URL to open.
                      },
                      "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                          # For example, an Apps Script can be invoked to handle the form.
                        "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                            # clicked/activated.
                        "parameters": [ # 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.
                            "value": "A String", # The value of the parameter.
                            "key": "A String", # The name of the parameter for the action script.
                          },
                        ],
                      },
                    },
                    "icon": "A String", # An enum value that will be replaced by the Chat API with the
                        # corresponding icon image.
                  },
                  "image": { # An image that is specified by a URL and can have an onclick action. # Display an image in this widget.
                    "aspectRatio": 3.14, # The aspect ratio of this image (width/height).
                    "imageUrl": "A String", # The URL of the image.
                    "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                      "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        "url": "A String", # The URL to open.
                      },
                      "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                          # For example, an Apps Script can be invoked to handle the form.
                        "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                            # clicked/activated.
                        "parameters": [ # 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.
                            "value": "A String", # The value of the parameter.
                            "key": "A String", # The name of the parameter for the action script.
                          },
                        ],
                      },
                    },
                  },
                  "textParagraph": { # A paragraph of text. Formatted text supported. # Display a text paragraph in this widget.
                    "text": "A String",
                  },
                },
              ],
              "header": "A String", # The header of the section, text formatted supported.
            },
          ],
          "name": "A String", # Name of the card.
          "header": { # The header of the card. A header usually contains a title and an image.
            "imageStyle": "A String", # The image's type (e.g. square border or circular border).
            "imageUrl": "A String", # The URL of the image in the card header.
            "subtitle": "A String", # The subtitle of the card header.
            "title": "A String", # 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.
          },
        },
      ],
      "previewText": "A String", # 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.
      "createTime": "A String", # Output only. The time at which the message was created in Hangouts Chat
          # server.
      "sender": { # A user in Hangouts Chat. # The user who created the message.
        "displayName": "A String", # The user's display name.
        "type": "A String", # User type.
        "name": "A String", # Resource name, in the format "users/*".
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a message.

Args:
  name: string, Required. Resource name of the message to be deleted, in the form
"spaces/*/messages/*"

Example: spaces/AAAAMpdlehY/messages/UMxbHmzDlr4.UMxbHmzDlr4 (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated
      # empty messages in your APIs. A typical example is to use it as the request
      # or the response type of an API method. For instance:
      #
      #     service Foo {
      #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
      #     }
      #
      # The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Returns a message.

Args:
  name: string, Required. Resource name of the message to be retrieved, in the form
"spaces/*/messages/*".

Example: spaces/AAAAMpdlehY/messages/UMxbHmzDlr4.UMxbHmzDlr4 (required)
  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.
      "actionResponse": { # Parameters that a bot can use to configure how it's response is posted. # Input only. Parameters that a bot can use to configure how its response is
          # posted.
        "url": "A String", # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
        "type": "A String", # The type of bot response.
      },
      "name": "A String", # Resource name, in the form "spaces/*/messages/*".
          #
          # Example: spaces/AAAAMpdlehY/messages/UMxbHmzDlr4.UMxbHmzDlr4
      "thread": { # A thread in Hangouts Chat. # The thread the message belongs to.
        "name": "A String", # Resource name, in the form "spaces/*/threads/*".
            #
            # Example: spaces/AAAAMpdlehY/threads/UMxbHmzDlr4
      },
      "space": { # A room or DM in Hangouts Chat. # The space the message belongs to.
        "displayName": "A String", # Output only. The display name (only if the space is a room).
        "type": "A String", # Output only. The type of a space.
        "name": "A String", # Resource name of the space, in the form "spaces/*".
            #
            # Example: spaces/AAAAMpdlehYs
      },
      "text": "A String", # Plain-text body of the message.
      "fallbackText": "A String", # A plain-text description of the message's cards, used when the actual cards
          # cannot be displayed (e.g. mobile notifications).
      "annotations": [ # 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!"
            # ```
            #
            # The corresponding annotations metadata:
            # ```
            # "annotations":[{
            #   "type":"USER_MENTION",
            #   "startIndex":6,
            #   "length":7,
            #   "userMention": {
            #     "user": {
            #       "name":"users/107946847022116401880",
            #       "displayName":"FooBot",
            #       "avatarUrl":"https://goo.gl/aeDtrS",
            #       "type":"BOT"
            #     },
            #     "type":"MENTION"
            #    }
            # }]
            # ```
          "userMention": { # Annotation metadata for user mentions (@). # The metadata of user mention.
            "type": "A String", # The type of user mention.
            "user": { # A user in Hangouts Chat. # The user mentioned.
              "displayName": "A String", # The user's display name.
              "type": "A String", # User type.
              "name": "A String", # Resource name, in the format "users/*".
            },
          },
          "length": 42, # Length of the substring in the plain-text message body this annotation
              # corresponds to.
          "type": "A String", # The type of this annotation.
          "startIndex": 42, # Start index (0-based, inclusive) in the plain-text message body this
              # annotation corresponds to.
        },
      ],
      "argumentText": "A String", # Plain-text body of the message with all bot mentions stripped out.
      "cards": [ # 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.
          "cardActions": [ # 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.
              "actionLabel": "A String", # The label used to be displayed in the action menu item.
              "onClick": { # An onclick action (e.g. open a link). # The onclick action for this action item.
                "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                  "url": "A String", # The URL to open.
                },
                "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                    # For example, an Apps Script can be invoked to handle the form.
                  "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                      # clicked/activated.
                  "parameters": [ # 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.
                      "value": "A String", # The value of the parameter.
                      "key": "A String", # The name of the parameter for the action script.
                    },
                  ],
                },
              },
            },
          ],
          "sections": [ # 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).
              "widgets": [ # A section must contain at least 1 widget.
                { # A widget is a UI element that presents texts, images, etc.
                  "buttons": [ # 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.
                      "imageButton": { # An image button with an onclick action. # A button with image and onclick action.
                        "iconUrl": "A String", # The icon specified by a URL.
                        "name": "A String", # The name of this image_button which will be used for accessibility.
                            # Default value will be provided if developers don't specify.
                        "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                          "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                            "url": "A String", # The URL to open.
                          },
                          "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                              # For example, an Apps Script can be invoked to handle the form.
                            "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                                # clicked/activated.
                            "parameters": [ # 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.
                                "value": "A String", # The value of the parameter.
                                "key": "A String", # The name of the parameter for the action script.
                              },
                            ],
                          },
                        },
                        "icon": "A String", # The icon specified by an enum that indices to an icon provided by Chat
                            # API.
                      },
                      "textButton": { # A button with text and onclick action. # A button with text and onclick action.
                        "text": "A String", # The text of the button.
                        "onClick": { # An onclick action (e.g. open a link). # The onclick action of the button.
                          "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                            "url": "A String", # The URL to open.
                          },
                          "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                              # For example, an Apps Script can be invoked to handle the form.
                            "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                                # clicked/activated.
                            "parameters": [ # 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.
                                "value": "A String", # The value of the parameter.
                                "key": "A String", # The name of the parameter for the action script.
                              },
                            ],
                          },
                        },
                      },
                    },
                  ],
                  "keyValue": { # A UI element contains a key (label) and a value (content). And this # Display a key value item in this widget.
                      # element may also contain some actions such as onclick button.
                    "contentMultiline": True or False, # If the content should be multiline.
                    "bottomLabel": "A String", # The text of the bottom label. Formatted text supported.
                    "topLabel": "A String", # The text of the top label. Formatted text supported.
                    "button": { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
                      "imageButton": { # An image button with an onclick action. # A button with image and onclick action.
                        "iconUrl": "A String", # The icon specified by a URL.
                        "name": "A String", # The name of this image_button which will be used for accessibility.
                            # Default value will be provided if developers don't specify.
                        "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                          "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                            "url": "A String", # The URL to open.
                          },
                          "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                              # For example, an Apps Script can be invoked to handle the form.
                            "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                                # clicked/activated.
                            "parameters": [ # 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.
                                "value": "A String", # The value of the parameter.
                                "key": "A String", # The name of the parameter for the action script.
                              },
                            ],
                          },
                        },
                        "icon": "A String", # The icon specified by an enum that indices to an icon provided by Chat
                            # API.
                      },
                      "textButton": { # A button with text and onclick action. # A button with text and onclick action.
                        "text": "A String", # The text of the button.
                        "onClick": { # An onclick action (e.g. open a link). # The onclick action of the button.
                          "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                            "url": "A String", # The URL to open.
                          },
                          "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                              # For example, an Apps Script can be invoked to handle the form.
                            "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                                # clicked/activated.
                            "parameters": [ # 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.
                                "value": "A String", # The value of the parameter.
                                "key": "A String", # The name of the parameter for the action script.
                              },
                            ],
                          },
                        },
                      },
                    },
                    "content": "A String", # The text of the content. Formatted text supported and always required.
                    "iconUrl": "A String", # The icon specified by a URL.
                    "onClick": { # An onclick action (e.g. open a link). # The onclick action. Only the top label, bottom label and content region
                        # are clickable.
                      "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        "url": "A String", # The URL to open.
                      },
                      "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                          # For example, an Apps Script can be invoked to handle the form.
                        "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                            # clicked/activated.
                        "parameters": [ # 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.
                            "value": "A String", # The value of the parameter.
                            "key": "A String", # The name of the parameter for the action script.
                          },
                        ],
                      },
                    },
                    "icon": "A String", # An enum value that will be replaced by the Chat API with the
                        # corresponding icon image.
                  },
                  "image": { # An image that is specified by a URL and can have an onclick action. # Display an image in this widget.
                    "aspectRatio": 3.14, # The aspect ratio of this image (width/height).
                    "imageUrl": "A String", # The URL of the image.
                    "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                      "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        "url": "A String", # The URL to open.
                      },
                      "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                          # For example, an Apps Script can be invoked to handle the form.
                        "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                            # clicked/activated.
                        "parameters": [ # 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.
                            "value": "A String", # The value of the parameter.
                            "key": "A String", # The name of the parameter for the action script.
                          },
                        ],
                      },
                    },
                  },
                  "textParagraph": { # A paragraph of text. Formatted text supported. # Display a text paragraph in this widget.
                    "text": "A String",
                  },
                },
              ],
              "header": "A String", # The header of the section, text formatted supported.
            },
          ],
          "name": "A String", # Name of the card.
          "header": { # The header of the card. A header usually contains a title and an image.
            "imageStyle": "A String", # The image's type (e.g. square border or circular border).
            "imageUrl": "A String", # The URL of the image in the card header.
            "subtitle": "A String", # The subtitle of the card header.
            "title": "A String", # 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.
          },
        },
      ],
      "previewText": "A String", # 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.
      "createTime": "A String", # Output only. The time at which the message was created in Hangouts Chat
          # server.
      "sender": { # A user in Hangouts Chat. # The user who created the message.
        "displayName": "A String", # The user's display name.
        "type": "A String", # User type.
        "name": "A String", # Resource name, in the format "users/*".
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(name, body, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a message.

Args:
  name: string, Resource name, in the form "spaces/*/messages/*".

Example: spaces/AAAAMpdlehY/messages/UMxbHmzDlr4.UMxbHmzDlr4 (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A message in Hangouts Chat.
    "actionResponse": { # Parameters that a bot can use to configure how it's response is posted. # Input only. Parameters that a bot can use to configure how its response is
        # posted.
      "url": "A String", # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
      "type": "A String", # The type of bot response.
    },
    "name": "A String", # Resource name, in the form "spaces/*/messages/*".
        # 
        # Example: spaces/AAAAMpdlehY/messages/UMxbHmzDlr4.UMxbHmzDlr4
    "thread": { # A thread in Hangouts Chat. # The thread the message belongs to.
      "name": "A String", # Resource name, in the form "spaces/*/threads/*".
          #
          # Example: spaces/AAAAMpdlehY/threads/UMxbHmzDlr4
    },
    "space": { # A room or DM in Hangouts Chat. # The space the message belongs to.
      "displayName": "A String", # Output only. The display name (only if the space is a room).
      "type": "A String", # Output only. The type of a space.
      "name": "A String", # Resource name of the space, in the form "spaces/*".
          #
          # Example: spaces/AAAAMpdlehYs
    },
    "text": "A String", # Plain-text body of the message.
    "fallbackText": "A String", # A plain-text description of the message's cards, used when the actual cards
        # cannot be displayed (e.g. mobile notifications).
    "annotations": [ # 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!"
          # ```
          #
          # The corresponding annotations metadata:
          # ```
          # "annotations":[{
          #   "type":"USER_MENTION",
          #   "startIndex":6,
          #   "length":7,
          #   "userMention": {
          #     "user": {
          #       "name":"users/107946847022116401880",
          #       "displayName":"FooBot",
          #       "avatarUrl":"https://goo.gl/aeDtrS",
          #       "type":"BOT"
          #     },
          #     "type":"MENTION"
          #    }
          # }]
          # ```
        "userMention": { # Annotation metadata for user mentions (@). # The metadata of user mention.
          "type": "A String", # The type of user mention.
          "user": { # A user in Hangouts Chat. # The user mentioned.
            "displayName": "A String", # The user's display name.
            "type": "A String", # User type.
            "name": "A String", # Resource name, in the format "users/*".
          },
        },
        "length": 42, # Length of the substring in the plain-text message body this annotation
            # corresponds to.
        "type": "A String", # The type of this annotation.
        "startIndex": 42, # Start index (0-based, inclusive) in the plain-text message body this
            # annotation corresponds to.
      },
    ],
    "argumentText": "A String", # Plain-text body of the message with all bot mentions stripped out.
    "cards": [ # 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.
        "cardActions": [ # 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.
            "actionLabel": "A String", # The label used to be displayed in the action menu item.
            "onClick": { # An onclick action (e.g. open a link). # The onclick action for this action item.
              "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                "url": "A String", # The URL to open.
              },
              "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                  # For example, an Apps Script can be invoked to handle the form.
                "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                    # clicked/activated.
                "parameters": [ # 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.
                    "value": "A String", # The value of the parameter.
                    "key": "A String", # The name of the parameter for the action script.
                  },
                ],
              },
            },
          },
        ],
        "sections": [ # 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).
            "widgets": [ # A section must contain at least 1 widget.
              { # A widget is a UI element that presents texts, images, etc.
                "buttons": [ # 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.
                    "imageButton": { # An image button with an onclick action. # A button with image and onclick action.
                      "iconUrl": "A String", # The icon specified by a URL.
                      "name": "A String", # The name of this image_button which will be used for accessibility.
                          # Default value will be provided if developers don't specify.
                      "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                        "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                          "url": "A String", # The URL to open.
                        },
                        "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                            # For example, an Apps Script can be invoked to handle the form.
                          "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                              # clicked/activated.
                          "parameters": [ # 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.
                              "value": "A String", # The value of the parameter.
                              "key": "A String", # The name of the parameter for the action script.
                            },
                          ],
                        },
                      },
                      "icon": "A String", # The icon specified by an enum that indices to an icon provided by Chat
                          # API.
                    },
                    "textButton": { # A button with text and onclick action. # A button with text and onclick action.
                      "text": "A String", # The text of the button.
                      "onClick": { # An onclick action (e.g. open a link). # The onclick action of the button.
                        "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                          "url": "A String", # The URL to open.
                        },
                        "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                            # For example, an Apps Script can be invoked to handle the form.
                          "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                              # clicked/activated.
                          "parameters": [ # 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.
                              "value": "A String", # The value of the parameter.
                              "key": "A String", # The name of the parameter for the action script.
                            },
                          ],
                        },
                      },
                    },
                  },
                ],
                "keyValue": { # A UI element contains a key (label) and a value (content). And this # Display a key value item in this widget.
                    # element may also contain some actions such as onclick button.
                  "contentMultiline": True or False, # If the content should be multiline.
                  "bottomLabel": "A String", # The text of the bottom label. Formatted text supported.
                  "topLabel": "A String", # The text of the top label. Formatted text supported.
                  "button": { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
                    "imageButton": { # An image button with an onclick action. # A button with image and onclick action.
                      "iconUrl": "A String", # The icon specified by a URL.
                      "name": "A String", # The name of this image_button which will be used for accessibility.
                          # Default value will be provided if developers don't specify.
                      "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                        "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                          "url": "A String", # The URL to open.
                        },
                        "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                            # For example, an Apps Script can be invoked to handle the form.
                          "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                              # clicked/activated.
                          "parameters": [ # 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.
                              "value": "A String", # The value of the parameter.
                              "key": "A String", # The name of the parameter for the action script.
                            },
                          ],
                        },
                      },
                      "icon": "A String", # The icon specified by an enum that indices to an icon provided by Chat
                          # API.
                    },
                    "textButton": { # A button with text and onclick action. # A button with text and onclick action.
                      "text": "A String", # The text of the button.
                      "onClick": { # An onclick action (e.g. open a link). # The onclick action of the button.
                        "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                          "url": "A String", # The URL to open.
                        },
                        "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                            # For example, an Apps Script can be invoked to handle the form.
                          "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                              # clicked/activated.
                          "parameters": [ # 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.
                              "value": "A String", # The value of the parameter.
                              "key": "A String", # The name of the parameter for the action script.
                            },
                          ],
                        },
                      },
                    },
                  },
                  "content": "A String", # The text of the content. Formatted text supported and always required.
                  "iconUrl": "A String", # The icon specified by a URL.
                  "onClick": { # An onclick action (e.g. open a link). # The onclick action. Only the top label, bottom label and content region
                      # are clickable.
                    "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                      "url": "A String", # The URL to open.
                    },
                    "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                        # For example, an Apps Script can be invoked to handle the form.
                      "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                          # clicked/activated.
                      "parameters": [ # 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.
                          "value": "A String", # The value of the parameter.
                          "key": "A String", # The name of the parameter for the action script.
                        },
                      ],
                    },
                  },
                  "icon": "A String", # An enum value that will be replaced by the Chat API with the
                      # corresponding icon image.
                },
                "image": { # An image that is specified by a URL and can have an onclick action. # Display an image in this widget.
                  "aspectRatio": 3.14, # The aspect ratio of this image (width/height).
                  "imageUrl": "A String", # The URL of the image.
                  "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                    "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                      "url": "A String", # The URL to open.
                    },
                    "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                        # For example, an Apps Script can be invoked to handle the form.
                      "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                          # clicked/activated.
                      "parameters": [ # 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.
                          "value": "A String", # The value of the parameter.
                          "key": "A String", # The name of the parameter for the action script.
                        },
                      ],
                    },
                  },
                },
                "textParagraph": { # A paragraph of text. Formatted text supported. # Display a text paragraph in this widget.
                  "text": "A String",
                },
              },
            ],
            "header": "A String", # The header of the section, text formatted supported.
          },
        ],
        "name": "A String", # Name of the card.
        "header": { # The header of the card. A header usually contains a title and an image.
          "imageStyle": "A String", # The image's type (e.g. square border or circular border).
          "imageUrl": "A String", # The URL of the image in the card header.
          "subtitle": "A String", # The subtitle of the card header.
          "title": "A String", # 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.
        },
      },
    ],
    "previewText": "A String", # 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.
    "createTime": "A String", # Output only. The time at which the message was created in Hangouts Chat
        # server.
    "sender": { # A user in Hangouts Chat. # The user who created the message.
      "displayName": "A String", # The user's display name.
      "type": "A String", # User type.
      "name": "A String", # Resource name, in the format "users/*".
    },
  }

  updateMask: string, Required. The field paths to be updated.

Currently supported field paths: "text", "cards".
  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.
      "actionResponse": { # Parameters that a bot can use to configure how it's response is posted. # Input only. Parameters that a bot can use to configure how its response is
          # posted.
        "url": "A String", # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
        "type": "A String", # The type of bot response.
      },
      "name": "A String", # Resource name, in the form "spaces/*/messages/*".
          #
          # Example: spaces/AAAAMpdlehY/messages/UMxbHmzDlr4.UMxbHmzDlr4
      "thread": { # A thread in Hangouts Chat. # The thread the message belongs to.
        "name": "A String", # Resource name, in the form "spaces/*/threads/*".
            #
            # Example: spaces/AAAAMpdlehY/threads/UMxbHmzDlr4
      },
      "space": { # A room or DM in Hangouts Chat. # The space the message belongs to.
        "displayName": "A String", # Output only. The display name (only if the space is a room).
        "type": "A String", # Output only. The type of a space.
        "name": "A String", # Resource name of the space, in the form "spaces/*".
            #
            # Example: spaces/AAAAMpdlehYs
      },
      "text": "A String", # Plain-text body of the message.
      "fallbackText": "A String", # A plain-text description of the message's cards, used when the actual cards
          # cannot be displayed (e.g. mobile notifications).
      "annotations": [ # 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!"
            # ```
            #
            # The corresponding annotations metadata:
            # ```
            # "annotations":[{
            #   "type":"USER_MENTION",
            #   "startIndex":6,
            #   "length":7,
            #   "userMention": {
            #     "user": {
            #       "name":"users/107946847022116401880",
            #       "displayName":"FooBot",
            #       "avatarUrl":"https://goo.gl/aeDtrS",
            #       "type":"BOT"
            #     },
            #     "type":"MENTION"
            #    }
            # }]
            # ```
          "userMention": { # Annotation metadata for user mentions (@). # The metadata of user mention.
            "type": "A String", # The type of user mention.
            "user": { # A user in Hangouts Chat. # The user mentioned.
              "displayName": "A String", # The user's display name.
              "type": "A String", # User type.
              "name": "A String", # Resource name, in the format "users/*".
            },
          },
          "length": 42, # Length of the substring in the plain-text message body this annotation
              # corresponds to.
          "type": "A String", # The type of this annotation.
          "startIndex": 42, # Start index (0-based, inclusive) in the plain-text message body this
              # annotation corresponds to.
        },
      ],
      "argumentText": "A String", # Plain-text body of the message with all bot mentions stripped out.
      "cards": [ # 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.
          "cardActions": [ # 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.
              "actionLabel": "A String", # The label used to be displayed in the action menu item.
              "onClick": { # An onclick action (e.g. open a link). # The onclick action for this action item.
                "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                  "url": "A String", # The URL to open.
                },
                "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                    # For example, an Apps Script can be invoked to handle the form.
                  "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                      # clicked/activated.
                  "parameters": [ # 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.
                      "value": "A String", # The value of the parameter.
                      "key": "A String", # The name of the parameter for the action script.
                    },
                  ],
                },
              },
            },
          ],
          "sections": [ # 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).
              "widgets": [ # A section must contain at least 1 widget.
                { # A widget is a UI element that presents texts, images, etc.
                  "buttons": [ # 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.
                      "imageButton": { # An image button with an onclick action. # A button with image and onclick action.
                        "iconUrl": "A String", # The icon specified by a URL.
                        "name": "A String", # The name of this image_button which will be used for accessibility.
                            # Default value will be provided if developers don't specify.
                        "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                          "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                            "url": "A String", # The URL to open.
                          },
                          "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                              # For example, an Apps Script can be invoked to handle the form.
                            "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                                # clicked/activated.
                            "parameters": [ # 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.
                                "value": "A String", # The value of the parameter.
                                "key": "A String", # The name of the parameter for the action script.
                              },
                            ],
                          },
                        },
                        "icon": "A String", # The icon specified by an enum that indices to an icon provided by Chat
                            # API.
                      },
                      "textButton": { # A button with text and onclick action. # A button with text and onclick action.
                        "text": "A String", # The text of the button.
                        "onClick": { # An onclick action (e.g. open a link). # The onclick action of the button.
                          "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                            "url": "A String", # The URL to open.
                          },
                          "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                              # For example, an Apps Script can be invoked to handle the form.
                            "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                                # clicked/activated.
                            "parameters": [ # 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.
                                "value": "A String", # The value of the parameter.
                                "key": "A String", # The name of the parameter for the action script.
                              },
                            ],
                          },
                        },
                      },
                    },
                  ],
                  "keyValue": { # A UI element contains a key (label) and a value (content). And this # Display a key value item in this widget.
                      # element may also contain some actions such as onclick button.
                    "contentMultiline": True or False, # If the content should be multiline.
                    "bottomLabel": "A String", # The text of the bottom label. Formatted text supported.
                    "topLabel": "A String", # The text of the top label. Formatted text supported.
                    "button": { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
                      "imageButton": { # An image button with an onclick action. # A button with image and onclick action.
                        "iconUrl": "A String", # The icon specified by a URL.
                        "name": "A String", # The name of this image_button which will be used for accessibility.
                            # Default value will be provided if developers don't specify.
                        "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                          "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                            "url": "A String", # The URL to open.
                          },
                          "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                              # For example, an Apps Script can be invoked to handle the form.
                            "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                                # clicked/activated.
                            "parameters": [ # 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.
                                "value": "A String", # The value of the parameter.
                                "key": "A String", # The name of the parameter for the action script.
                              },
                            ],
                          },
                        },
                        "icon": "A String", # The icon specified by an enum that indices to an icon provided by Chat
                            # API.
                      },
                      "textButton": { # A button with text and onclick action. # A button with text and onclick action.
                        "text": "A String", # The text of the button.
                        "onClick": { # An onclick action (e.g. open a link). # The onclick action of the button.
                          "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                            "url": "A String", # The URL to open.
                          },
                          "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                              # For example, an Apps Script can be invoked to handle the form.
                            "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                                # clicked/activated.
                            "parameters": [ # 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.
                                "value": "A String", # The value of the parameter.
                                "key": "A String", # The name of the parameter for the action script.
                              },
                            ],
                          },
                        },
                      },
                    },
                    "content": "A String", # The text of the content. Formatted text supported and always required.
                    "iconUrl": "A String", # The icon specified by a URL.
                    "onClick": { # An onclick action (e.g. open a link). # The onclick action. Only the top label, bottom label and content region
                        # are clickable.
                      "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        "url": "A String", # The URL to open.
                      },
                      "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                          # For example, an Apps Script can be invoked to handle the form.
                        "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                            # clicked/activated.
                        "parameters": [ # 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.
                            "value": "A String", # The value of the parameter.
                            "key": "A String", # The name of the parameter for the action script.
                          },
                        ],
                      },
                    },
                    "icon": "A String", # An enum value that will be replaced by the Chat API with the
                        # corresponding icon image.
                  },
                  "image": { # An image that is specified by a URL and can have an onclick action. # Display an image in this widget.
                    "aspectRatio": 3.14, # The aspect ratio of this image (width/height).
                    "imageUrl": "A String", # The URL of the image.
                    "onClick": { # An onclick action (e.g. open a link). # The onclick action.
                      "openLink": { # A link that opens a new window. # This onclick triggers an open link action if specified.
                        "url": "A String", # The URL to open.
                      },
                      "action": { # A form action describes the behavior when the form is submitted. # A form action will be trigger by this onclick if specified.
                          # For example, an Apps Script can be invoked to handle the form.
                        "actionMethodName": "A String", # Apps Script function to invoke when the containing element is
                            # clicked/activated.
                        "parameters": [ # 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.
                            "value": "A String", # The value of the parameter.
                            "key": "A String", # The name of the parameter for the action script.
                          },
                        ],
                      },
                    },
                  },
                  "textParagraph": { # A paragraph of text. Formatted text supported. # Display a text paragraph in this widget.
                    "text": "A String",
                  },
                },
              ],
              "header": "A String", # The header of the section, text formatted supported.
            },
          ],
          "name": "A String", # Name of the card.
          "header": { # The header of the card. A header usually contains a title and an image.
            "imageStyle": "A String", # The image's type (e.g. square border or circular border).
            "imageUrl": "A String", # The URL of the image in the card header.
            "subtitle": "A String", # The subtitle of the card header.
            "title": "A String", # 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.
          },
        },
      ],
      "previewText": "A String", # 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.
      "createTime": "A String", # Output only. The time at which the message was created in Hangouts Chat
          # server.
      "sender": { # A user in Hangouts Chat. # The user who created the message.
        "displayName": "A String", # The user's display name.
        "type": "A String", # User type.
        "name": "A String", # Resource name, in the format "users/*".
      },
    }</pre>
</div>

</body></html>