<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="mirror_v1.html">Google Mirror API</a> . <a href="mirror_v1.timeline.html">timeline</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="mirror_v1.timeline.attachments.html">attachments()</a></code>
</p>
<p class="firstline">Returns the attachments Resource.</p>

<p class="toc_element">
  <code><a href="#delete">delete(id)</a></code></p>
<p class="firstline">Deletes a timeline item.</p>
<p class="toc_element">
  <code><a href="#get">get(id)</a></code></p>
<p class="firstline">Gets a single timeline item by ID.</p>
<p class="toc_element">
  <code><a href="#insert">insert(body=None, media_body=None, media_mime_type=None)</a></code></p>
<p class="firstline">Inserts a new item into the timeline.</p>
<p class="toc_element">
  <code><a href="#list">list(orderBy=None, includeDeleted=None, pageToken=None, maxResults=None, pinnedOnly=None, sourceItemId=None, bundleId=None)</a></code></p>
<p class="firstline">Retrieves a list of timeline items for the authenticated user.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(id, body)</a></code></p>
<p class="firstline">Updates a timeline item in place. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(id, body=None, media_body=None, media_mime_type=None)</a></code></p>
<p class="firstline">Updates a timeline item in place.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(id)</code>
  <pre>Deletes a timeline item.

Args:
  id: string, The ID of the timeline item. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(id)</code>
  <pre>Gets a single timeline item by ID.

Args:
  id: string, The ID of the timeline item. (required)

Returns:
  An object of the form:

    { # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
      "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
          # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
          # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
        { # Represents media content, such as a photo, that can be attached to a timeline item.
          "contentUrl": "A String", # The URL for the content.
          "contentType": "A String", # The MIME type of the attachment.
          "id": "A String", # The ID of the attachment.
          "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
        },
      ],
      "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
      "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
          "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
          "displayName": "A String", # The name to display for this contact.
          "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
            "A String",
          ],
          "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
            "A String",
          ],
          "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
          "source": "A String", # The ID of the application that created this contact. This is populated by the API
          "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
          "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
              # - ADD_CAPTION
            "A String",
          ],
          "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
              # - INDIVIDUAL - Represents a single person. This is the default.
              # - GROUP - Represents more than a single person.
          "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
            { # A single menu command that is part of a Contact.
              "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                  # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                  # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
            },
          ],
          "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
          "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
        },
      "text": "A String", # Text content of this item.
      "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
        { # A custom menu item that can be presented to the user by a timeline item.
          "contextual_command": "A String", # The ContextualMenus.Command associated with this MenuItem (e.g. READ_ALOUD). The voice label for this command will be displayed in the voice menu and the touch label will be displayed in the touch menu. Note that the default menu value's display name will be overriden if you specify this property. Values that do not correspond to a ContextualMenus.Command name will be ignored.
          "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
          "payload": "A String", # A generic payload whose meaning changes depending on this MenuItem's action.
              # - When the action is OPEN_URI, the payload is the URL of the website to view.
              # - When the action is PLAY_VIDEO, the payload is the streaming URL of the video
              # - When the action is GET_MEDIA_INPUT, the payload is the text transcription of a user's speech input
          "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
            { # A single value that is part of a MenuItem.
              "iconUrl": "A String", # URL of an icon to display with the menu item.
              "state": "A String", # The state that this value applies to. Allowed values are:
                  # - DEFAULT - Default value shown when displayed in the menuItems list.
                  # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
                  # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
              "displayName": "A String", # The name to display for the menu item. If you specify this property for a built-in menu item, the default contextual voice command for that menu item is not shown.
            },
          ],
          "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
              # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
              # - Built-in actions:
              # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
              # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
              # - DELETE - Delete the timeline item.
              # - SHARE - Share the timeline item with the available contacts.
              # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
              # - GET_MEDIA_INPUT - Allow users to provide media payloads to Glassware from a menu item (currently, only transcribed text from voice input is supported). Subscribe to notifications when users invoke this menu item to receive the timeline item ID. Retrieve the media from the timeline item in the payload property.
              # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phoneNumber attribute as recipient.
              # - NAVIGATE - Navigate to the timeline item's location.
              # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
              # - OPEN_URI - Open the payload of the menu item in the browser.
              # - PLAY_VIDEO - Open the payload of the menu item in the Glass video player.
              # - SEND_MESSAGE - Initiate sending a message to the timeline item's creator:
              # - If the creator.phoneNumber is set and Glass is connected to an Android phone, the message is an SMS.
              # - Otherwise, if the creator.email is set, the message is an email.
          "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
        },
      ],
      "isBundleCover": True or False, # Whether this item is a bundle cover.
          #
          # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
          #
          # On the main timeline, items that are shown are:
          # - Items that have isBundleCover set to true
          # - Items that do not have a bundleId  In a bundle sub-timeline, items that are shown are:
          # - Items that have the bundleId in question AND isBundleCover set to false
      "etag": "A String", # ETag for this item.
      "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
      "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
      "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
      "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
      "title": "A String", # The title of this item.
      "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
        "level": "A String", # Describes how important the notification is. Allowed values are:
            # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
        "deliveryTime": "A String", # The time at which the notification should be delivered.
      },
      "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
          #
          # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
      "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
          # Allowed HTML elements - You can use these elements in your timeline cards.
          #
          # - Headers: h1, h2, h3, h4, h5, h6
          # - Images: img
          # - Lists: li, ol, ul
          # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
          # - Structural: blockquote, br, div, hr, p, span
          # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
          # - Tables: table, tbody, td, tfoot, th, thead, tr
          # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
          #
          # - Document headers: head, title
          # - Embeds: audio, embed, object, source, video
          # - Frames: frame, frameset
          # - Scripting: applet, script
          # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
      "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
        "kind": "mirror#location", # The type of resource. This is always mirror#location.
        "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
        "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
        "longitude": 3.14, # The longitude, in degrees.
        "address": "A String", # The full address of the location.
        "latitude": 3.14, # The latitude, in degrees.
        "id": "A String", # The ID of the location.
        "accuracy": 3.14, # The accuracy of the location fix in meters.
      },
      "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
      "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
      "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
      "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
      "recipients": [ # A list of users or groups that this item has been shared with.
        { # A person or group that can be used as a creator or a contact.
            "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
            "displayName": "A String", # The name to display for this contact.
            "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
              "A String",
            ],
            "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
              "A String",
            ],
            "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
            "source": "A String", # The ID of the application that created this contact. This is populated by the API
            "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
            "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
                # - ADD_CAPTION
              "A String",
            ],
            "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
                # - INDIVIDUAL - Represents a single person. This is the default.
                # - GROUP - Represents more than a single person.
            "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
              { # A single menu command that is part of a Contact.
                "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                    # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                    # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
              },
            ],
            "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
            "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
          },
      ],
      "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
      "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
      "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
      "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
          #
          # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
          #
          # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
      "selfLink": "A String", # A URL that can be used to retrieve this item.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(body=None, media_body=None, media_mime_type=None)</code>
  <pre>Inserts a new item into the timeline.

Args:
  body: object, The request body.
    The object takes the form of:

{ # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
    "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
        # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
        # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
      { # Represents media content, such as a photo, that can be attached to a timeline item.
        "contentUrl": "A String", # The URL for the content.
        "contentType": "A String", # The MIME type of the attachment.
        "id": "A String", # The ID of the attachment.
        "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
      },
    ],
    "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
    "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
        "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
        "displayName": "A String", # The name to display for this contact.
        "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
          "A String",
        ],
        "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
          "A String",
        ],
        "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
        "source": "A String", # The ID of the application that created this contact. This is populated by the API
        "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
        "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
            # - ADD_CAPTION
          "A String",
        ],
        "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
            # - INDIVIDUAL - Represents a single person. This is the default.
            # - GROUP - Represents more than a single person.
        "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
          { # A single menu command that is part of a Contact.
            "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
          },
        ],
        "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
        "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
      },
    "text": "A String", # Text content of this item.
    "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
      { # A custom menu item that can be presented to the user by a timeline item.
        "contextual_command": "A String", # The ContextualMenus.Command associated with this MenuItem (e.g. READ_ALOUD). The voice label for this command will be displayed in the voice menu and the touch label will be displayed in the touch menu. Note that the default menu value's display name will be overriden if you specify this property. Values that do not correspond to a ContextualMenus.Command name will be ignored.
        "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
        "payload": "A String", # A generic payload whose meaning changes depending on this MenuItem's action.
            # - When the action is OPEN_URI, the payload is the URL of the website to view.
            # - When the action is PLAY_VIDEO, the payload is the streaming URL of the video
            # - When the action is GET_MEDIA_INPUT, the payload is the text transcription of a user's speech input
        "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
          { # A single value that is part of a MenuItem.
            "iconUrl": "A String", # URL of an icon to display with the menu item.
            "state": "A String", # The state that this value applies to. Allowed values are:
                # - DEFAULT - Default value shown when displayed in the menuItems list.
                # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
                # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
            "displayName": "A String", # The name to display for the menu item. If you specify this property for a built-in menu item, the default contextual voice command for that menu item is not shown.
          },
        ],
        "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
            # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
            # - Built-in actions:
            # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
            # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
            # - DELETE - Delete the timeline item.
            # - SHARE - Share the timeline item with the available contacts.
            # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
            # - GET_MEDIA_INPUT - Allow users to provide media payloads to Glassware from a menu item (currently, only transcribed text from voice input is supported). Subscribe to notifications when users invoke this menu item to receive the timeline item ID. Retrieve the media from the timeline item in the payload property.
            # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phoneNumber attribute as recipient.
            # - NAVIGATE - Navigate to the timeline item's location.
            # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
            # - OPEN_URI - Open the payload of the menu item in the browser.
            # - PLAY_VIDEO - Open the payload of the menu item in the Glass video player.
            # - SEND_MESSAGE - Initiate sending a message to the timeline item's creator:
            # - If the creator.phoneNumber is set and Glass is connected to an Android phone, the message is an SMS.
            # - Otherwise, if the creator.email is set, the message is an email.
        "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
      },
    ],
    "isBundleCover": True or False, # Whether this item is a bundle cover.
        # 
        # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
        # 
        # On the main timeline, items that are shown are:
        # - Items that have isBundleCover set to true
        # - Items that do not have a bundleId  In a bundle sub-timeline, items that are shown are:
        # - Items that have the bundleId in question AND isBundleCover set to false
    "etag": "A String", # ETag for this item.
    "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
    "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
    "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
    "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
    "title": "A String", # The title of this item.
    "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
      "level": "A String", # Describes how important the notification is. Allowed values are:
          # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
      "deliveryTime": "A String", # The time at which the notification should be delivered.
    },
    "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
        # 
        # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
    "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
        # Allowed HTML elements - You can use these elements in your timeline cards.
        # 
        # - Headers: h1, h2, h3, h4, h5, h6
        # - Images: img
        # - Lists: li, ol, ul
        # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
        # - Structural: blockquote, br, div, hr, p, span
        # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
        # - Tables: table, tbody, td, tfoot, th, thead, tr
        # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
        # 
        # - Document headers: head, title
        # - Embeds: audio, embed, object, source, video
        # - Frames: frame, frameset
        # - Scripting: applet, script
        # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
    "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
      "kind": "mirror#location", # The type of resource. This is always mirror#location.
      "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
      "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
      "longitude": 3.14, # The longitude, in degrees.
      "address": "A String", # The full address of the location.
      "latitude": 3.14, # The latitude, in degrees.
      "id": "A String", # The ID of the location.
      "accuracy": 3.14, # The accuracy of the location fix in meters.
    },
    "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
    "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
    "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
    "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
    "recipients": [ # A list of users or groups that this item has been shared with.
      { # A person or group that can be used as a creator or a contact.
          "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
          "displayName": "A String", # The name to display for this contact.
          "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
            "A String",
          ],
          "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
            "A String",
          ],
          "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
          "source": "A String", # The ID of the application that created this contact. This is populated by the API
          "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
          "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
              # - ADD_CAPTION
            "A String",
          ],
          "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
              # - INDIVIDUAL - Represents a single person. This is the default.
              # - GROUP - Represents more than a single person.
          "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
            { # A single menu command that is part of a Contact.
              "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                  # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                  # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
            },
          ],
          "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
          "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
        },
    ],
    "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
    "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
    "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
    "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
        # 
        # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
        # 
        # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
    "selfLink": "A String", # A URL that can be used to retrieve this item.
  }

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.

Returns:
  An object of the form:

    { # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
      "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
          # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
          # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
        { # Represents media content, such as a photo, that can be attached to a timeline item.
          "contentUrl": "A String", # The URL for the content.
          "contentType": "A String", # The MIME type of the attachment.
          "id": "A String", # The ID of the attachment.
          "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
        },
      ],
      "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
      "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
          "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
          "displayName": "A String", # The name to display for this contact.
          "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
            "A String",
          ],
          "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
            "A String",
          ],
          "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
          "source": "A String", # The ID of the application that created this contact. This is populated by the API
          "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
          "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
              # - ADD_CAPTION
            "A String",
          ],
          "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
              # - INDIVIDUAL - Represents a single person. This is the default.
              # - GROUP - Represents more than a single person.
          "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
            { # A single menu command that is part of a Contact.
              "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                  # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                  # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
            },
          ],
          "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
          "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
        },
      "text": "A String", # Text content of this item.
      "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
        { # A custom menu item that can be presented to the user by a timeline item.
          "contextual_command": "A String", # The ContextualMenus.Command associated with this MenuItem (e.g. READ_ALOUD). The voice label for this command will be displayed in the voice menu and the touch label will be displayed in the touch menu. Note that the default menu value's display name will be overriden if you specify this property. Values that do not correspond to a ContextualMenus.Command name will be ignored.
          "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
          "payload": "A String", # A generic payload whose meaning changes depending on this MenuItem's action.
              # - When the action is OPEN_URI, the payload is the URL of the website to view.
              # - When the action is PLAY_VIDEO, the payload is the streaming URL of the video
              # - When the action is GET_MEDIA_INPUT, the payload is the text transcription of a user's speech input
          "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
            { # A single value that is part of a MenuItem.
              "iconUrl": "A String", # URL of an icon to display with the menu item.
              "state": "A String", # The state that this value applies to. Allowed values are:
                  # - DEFAULT - Default value shown when displayed in the menuItems list.
                  # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
                  # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
              "displayName": "A String", # The name to display for the menu item. If you specify this property for a built-in menu item, the default contextual voice command for that menu item is not shown.
            },
          ],
          "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
              # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
              # - Built-in actions:
              # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
              # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
              # - DELETE - Delete the timeline item.
              # - SHARE - Share the timeline item with the available contacts.
              # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
              # - GET_MEDIA_INPUT - Allow users to provide media payloads to Glassware from a menu item (currently, only transcribed text from voice input is supported). Subscribe to notifications when users invoke this menu item to receive the timeline item ID. Retrieve the media from the timeline item in the payload property.
              # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phoneNumber attribute as recipient.
              # - NAVIGATE - Navigate to the timeline item's location.
              # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
              # - OPEN_URI - Open the payload of the menu item in the browser.
              # - PLAY_VIDEO - Open the payload of the menu item in the Glass video player.
              # - SEND_MESSAGE - Initiate sending a message to the timeline item's creator:
              # - If the creator.phoneNumber is set and Glass is connected to an Android phone, the message is an SMS.
              # - Otherwise, if the creator.email is set, the message is an email.
          "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
        },
      ],
      "isBundleCover": True or False, # Whether this item is a bundle cover.
          #
          # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
          #
          # On the main timeline, items that are shown are:
          # - Items that have isBundleCover set to true
          # - Items that do not have a bundleId  In a bundle sub-timeline, items that are shown are:
          # - Items that have the bundleId in question AND isBundleCover set to false
      "etag": "A String", # ETag for this item.
      "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
      "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
      "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
      "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
      "title": "A String", # The title of this item.
      "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
        "level": "A String", # Describes how important the notification is. Allowed values are:
            # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
        "deliveryTime": "A String", # The time at which the notification should be delivered.
      },
      "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
          #
          # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
      "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
          # Allowed HTML elements - You can use these elements in your timeline cards.
          #
          # - Headers: h1, h2, h3, h4, h5, h6
          # - Images: img
          # - Lists: li, ol, ul
          # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
          # - Structural: blockquote, br, div, hr, p, span
          # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
          # - Tables: table, tbody, td, tfoot, th, thead, tr
          # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
          #
          # - Document headers: head, title
          # - Embeds: audio, embed, object, source, video
          # - Frames: frame, frameset
          # - Scripting: applet, script
          # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
      "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
        "kind": "mirror#location", # The type of resource. This is always mirror#location.
        "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
        "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
        "longitude": 3.14, # The longitude, in degrees.
        "address": "A String", # The full address of the location.
        "latitude": 3.14, # The latitude, in degrees.
        "id": "A String", # The ID of the location.
        "accuracy": 3.14, # The accuracy of the location fix in meters.
      },
      "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
      "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
      "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
      "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
      "recipients": [ # A list of users or groups that this item has been shared with.
        { # A person or group that can be used as a creator or a contact.
            "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
            "displayName": "A String", # The name to display for this contact.
            "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
              "A String",
            ],
            "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
              "A String",
            ],
            "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
            "source": "A String", # The ID of the application that created this contact. This is populated by the API
            "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
            "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
                # - ADD_CAPTION
              "A String",
            ],
            "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
                # - INDIVIDUAL - Represents a single person. This is the default.
                # - GROUP - Represents more than a single person.
            "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
              { # A single menu command that is part of a Contact.
                "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                    # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                    # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
              },
            ],
            "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
            "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
          },
      ],
      "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
      "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
      "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
      "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
          #
          # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
          #
          # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
      "selfLink": "A String", # A URL that can be used to retrieve this item.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(orderBy=None, includeDeleted=None, pageToken=None, maxResults=None, pinnedOnly=None, sourceItemId=None, bundleId=None)</code>
  <pre>Retrieves a list of timeline items for the authenticated user.

Args:
  orderBy: string, Controls the order in which timeline items are returned.
    Allowed values
      displayTime - Results will be ordered by displayTime (default). This is the same ordering as is used in the timeline on the device.
      writeTime - Results will be ordered by the time at which they were last written to the data store.
  includeDeleted: boolean, If true, tombstone records for deleted items will be returned.
  pageToken: string, Token for the page of results to return.
  maxResults: integer, The maximum number of items to include in the response, used for paging.
  pinnedOnly: boolean, If true, only pinned items will be returned.
  sourceItemId: string, If provided, only items with the given sourceItemId will be returned.
  bundleId: string, If provided, only items with the given bundleId will be returned.

Returns:
  An object of the form:

    { # A list of timeline items. This is the response from the server to GET requests on the timeline collection.
    "nextPageToken": "A String", # The next page token. Provide this as the pageToken parameter in the request to retrieve the next page of results.
    "items": [ # Items in the timeline.
      { # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
          "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
              # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
              # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
            { # Represents media content, such as a photo, that can be attached to a timeline item.
              "contentUrl": "A String", # The URL for the content.
              "contentType": "A String", # The MIME type of the attachment.
              "id": "A String", # The ID of the attachment.
              "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
            },
          ],
          "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
          "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
              "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
              "displayName": "A String", # The name to display for this contact.
              "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
                "A String",
              ],
              "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
                "A String",
              ],
              "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
              "source": "A String", # The ID of the application that created this contact. This is populated by the API
              "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
              "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
                  # - ADD_CAPTION
                "A String",
              ],
              "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
                  # - INDIVIDUAL - Represents a single person. This is the default.
                  # - GROUP - Represents more than a single person.
              "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
                { # A single menu command that is part of a Contact.
                  "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                      # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                      # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
                },
              ],
              "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
              "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
            },
          "text": "A String", # Text content of this item.
          "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
            { # A custom menu item that can be presented to the user by a timeline item.
              "contextual_command": "A String", # The ContextualMenus.Command associated with this MenuItem (e.g. READ_ALOUD). The voice label for this command will be displayed in the voice menu and the touch label will be displayed in the touch menu. Note that the default menu value's display name will be overriden if you specify this property. Values that do not correspond to a ContextualMenus.Command name will be ignored.
              "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
              "payload": "A String", # A generic payload whose meaning changes depending on this MenuItem's action.
                  # - When the action is OPEN_URI, the payload is the URL of the website to view.
                  # - When the action is PLAY_VIDEO, the payload is the streaming URL of the video
                  # - When the action is GET_MEDIA_INPUT, the payload is the text transcription of a user's speech input
              "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
                { # A single value that is part of a MenuItem.
                  "iconUrl": "A String", # URL of an icon to display with the menu item.
                  "state": "A String", # The state that this value applies to. Allowed values are:
                      # - DEFAULT - Default value shown when displayed in the menuItems list.
                      # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
                      # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
                  "displayName": "A String", # The name to display for the menu item. If you specify this property for a built-in menu item, the default contextual voice command for that menu item is not shown.
                },
              ],
              "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
                  # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
                  # - Built-in actions:
                  # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
                  # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
                  # - DELETE - Delete the timeline item.
                  # - SHARE - Share the timeline item with the available contacts.
                  # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
                  # - GET_MEDIA_INPUT - Allow users to provide media payloads to Glassware from a menu item (currently, only transcribed text from voice input is supported). Subscribe to notifications when users invoke this menu item to receive the timeline item ID. Retrieve the media from the timeline item in the payload property.
                  # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phoneNumber attribute as recipient.
                  # - NAVIGATE - Navigate to the timeline item's location.
                  # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
                  # - OPEN_URI - Open the payload of the menu item in the browser.
                  # - PLAY_VIDEO - Open the payload of the menu item in the Glass video player.
                  # - SEND_MESSAGE - Initiate sending a message to the timeline item's creator:
                  # - If the creator.phoneNumber is set and Glass is connected to an Android phone, the message is an SMS.
                  # - Otherwise, if the creator.email is set, the message is an email.
              "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
            },
          ],
          "isBundleCover": True or False, # Whether this item is a bundle cover.
              #
              # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
              #
              # On the main timeline, items that are shown are:
              # - Items that have isBundleCover set to true
              # - Items that do not have a bundleId  In a bundle sub-timeline, items that are shown are:
              # - Items that have the bundleId in question AND isBundleCover set to false
          "etag": "A String", # ETag for this item.
          "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
          "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
          "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
          "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
          "title": "A String", # The title of this item.
          "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
            "level": "A String", # Describes how important the notification is. Allowed values are:
                # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
            "deliveryTime": "A String", # The time at which the notification should be delivered.
          },
          "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
              #
              # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
          "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
              # Allowed HTML elements - You can use these elements in your timeline cards.
              #
              # - Headers: h1, h2, h3, h4, h5, h6
              # - Images: img
              # - Lists: li, ol, ul
              # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
              # - Structural: blockquote, br, div, hr, p, span
              # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
              # - Tables: table, tbody, td, tfoot, th, thead, tr
              # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
              #
              # - Document headers: head, title
              # - Embeds: audio, embed, object, source, video
              # - Frames: frame, frameset
              # - Scripting: applet, script
              # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
          "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
            "kind": "mirror#location", # The type of resource. This is always mirror#location.
            "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
            "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
            "longitude": 3.14, # The longitude, in degrees.
            "address": "A String", # The full address of the location.
            "latitude": 3.14, # The latitude, in degrees.
            "id": "A String", # The ID of the location.
            "accuracy": 3.14, # The accuracy of the location fix in meters.
          },
          "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
          "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
          "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
          "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
          "recipients": [ # A list of users or groups that this item has been shared with.
            { # A person or group that can be used as a creator or a contact.
                "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
                "displayName": "A String", # The name to display for this contact.
                "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
                  "A String",
                ],
                "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
                  "A String",
                ],
                "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
                "source": "A String", # The ID of the application that created this contact. This is populated by the API
                "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
                "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
                    # - ADD_CAPTION
                  "A String",
                ],
                "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
                    # - INDIVIDUAL - Represents a single person. This is the default.
                    # - GROUP - Represents more than a single person.
                "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
                  { # A single menu command that is part of a Contact.
                    "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                        # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                        # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
                  },
                ],
                "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
                "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
              },
          ],
          "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
          "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
          "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
          "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
              #
              # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
              #
              # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
          "selfLink": "A String", # A URL that can be used to retrieve this item.
        },
    ],
    "kind": "mirror#timeline", # The type of resource. This is always mirror#timeline.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(id, body)</code>
  <pre>Updates a timeline item in place. This method supports patch semantics.

Args:
  id: string, The ID of the timeline item. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
    "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
        # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
        # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
      { # Represents media content, such as a photo, that can be attached to a timeline item.
        "contentUrl": "A String", # The URL for the content.
        "contentType": "A String", # The MIME type of the attachment.
        "id": "A String", # The ID of the attachment.
        "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
      },
    ],
    "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
    "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
        "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
        "displayName": "A String", # The name to display for this contact.
        "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
          "A String",
        ],
        "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
          "A String",
        ],
        "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
        "source": "A String", # The ID of the application that created this contact. This is populated by the API
        "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
        "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
            # - ADD_CAPTION
          "A String",
        ],
        "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
            # - INDIVIDUAL - Represents a single person. This is the default.
            # - GROUP - Represents more than a single person.
        "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
          { # A single menu command that is part of a Contact.
            "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
          },
        ],
        "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
        "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
      },
    "text": "A String", # Text content of this item.
    "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
      { # A custom menu item that can be presented to the user by a timeline item.
        "contextual_command": "A String", # The ContextualMenus.Command associated with this MenuItem (e.g. READ_ALOUD). The voice label for this command will be displayed in the voice menu and the touch label will be displayed in the touch menu. Note that the default menu value's display name will be overriden if you specify this property. Values that do not correspond to a ContextualMenus.Command name will be ignored.
        "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
        "payload": "A String", # A generic payload whose meaning changes depending on this MenuItem's action.
            # - When the action is OPEN_URI, the payload is the URL of the website to view.
            # - When the action is PLAY_VIDEO, the payload is the streaming URL of the video
            # - When the action is GET_MEDIA_INPUT, the payload is the text transcription of a user's speech input
        "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
          { # A single value that is part of a MenuItem.
            "iconUrl": "A String", # URL of an icon to display with the menu item.
            "state": "A String", # The state that this value applies to. Allowed values are:
                # - DEFAULT - Default value shown when displayed in the menuItems list.
                # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
                # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
            "displayName": "A String", # The name to display for the menu item. If you specify this property for a built-in menu item, the default contextual voice command for that menu item is not shown.
          },
        ],
        "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
            # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
            # - Built-in actions:
            # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
            # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
            # - DELETE - Delete the timeline item.
            # - SHARE - Share the timeline item with the available contacts.
            # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
            # - GET_MEDIA_INPUT - Allow users to provide media payloads to Glassware from a menu item (currently, only transcribed text from voice input is supported). Subscribe to notifications when users invoke this menu item to receive the timeline item ID. Retrieve the media from the timeline item in the payload property.
            # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phoneNumber attribute as recipient.
            # - NAVIGATE - Navigate to the timeline item's location.
            # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
            # - OPEN_URI - Open the payload of the menu item in the browser.
            # - PLAY_VIDEO - Open the payload of the menu item in the Glass video player.
            # - SEND_MESSAGE - Initiate sending a message to the timeline item's creator:
            # - If the creator.phoneNumber is set and Glass is connected to an Android phone, the message is an SMS.
            # - Otherwise, if the creator.email is set, the message is an email.
        "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
      },
    ],
    "isBundleCover": True or False, # Whether this item is a bundle cover.
        # 
        # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
        # 
        # On the main timeline, items that are shown are:
        # - Items that have isBundleCover set to true
        # - Items that do not have a bundleId  In a bundle sub-timeline, items that are shown are:
        # - Items that have the bundleId in question AND isBundleCover set to false
    "etag": "A String", # ETag for this item.
    "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
    "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
    "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
    "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
    "title": "A String", # The title of this item.
    "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
      "level": "A String", # Describes how important the notification is. Allowed values are:
          # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
      "deliveryTime": "A String", # The time at which the notification should be delivered.
    },
    "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
        # 
        # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
    "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
        # Allowed HTML elements - You can use these elements in your timeline cards.
        # 
        # - Headers: h1, h2, h3, h4, h5, h6
        # - Images: img
        # - Lists: li, ol, ul
        # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
        # - Structural: blockquote, br, div, hr, p, span
        # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
        # - Tables: table, tbody, td, tfoot, th, thead, tr
        # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
        # 
        # - Document headers: head, title
        # - Embeds: audio, embed, object, source, video
        # - Frames: frame, frameset
        # - Scripting: applet, script
        # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
    "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
      "kind": "mirror#location", # The type of resource. This is always mirror#location.
      "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
      "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
      "longitude": 3.14, # The longitude, in degrees.
      "address": "A String", # The full address of the location.
      "latitude": 3.14, # The latitude, in degrees.
      "id": "A String", # The ID of the location.
      "accuracy": 3.14, # The accuracy of the location fix in meters.
    },
    "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
    "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
    "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
    "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
    "recipients": [ # A list of users or groups that this item has been shared with.
      { # A person or group that can be used as a creator or a contact.
          "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
          "displayName": "A String", # The name to display for this contact.
          "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
            "A String",
          ],
          "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
            "A String",
          ],
          "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
          "source": "A String", # The ID of the application that created this contact. This is populated by the API
          "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
          "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
              # - ADD_CAPTION
            "A String",
          ],
          "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
              # - INDIVIDUAL - Represents a single person. This is the default.
              # - GROUP - Represents more than a single person.
          "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
            { # A single menu command that is part of a Contact.
              "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                  # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                  # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
            },
          ],
          "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
          "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
        },
    ],
    "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
    "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
    "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
    "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
        # 
        # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
        # 
        # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
    "selfLink": "A String", # A URL that can be used to retrieve this item.
  }


Returns:
  An object of the form:

    { # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
      "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
          # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
          # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
        { # Represents media content, such as a photo, that can be attached to a timeline item.
          "contentUrl": "A String", # The URL for the content.
          "contentType": "A String", # The MIME type of the attachment.
          "id": "A String", # The ID of the attachment.
          "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
        },
      ],
      "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
      "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
          "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
          "displayName": "A String", # The name to display for this contact.
          "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
            "A String",
          ],
          "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
            "A String",
          ],
          "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
          "source": "A String", # The ID of the application that created this contact. This is populated by the API
          "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
          "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
              # - ADD_CAPTION
            "A String",
          ],
          "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
              # - INDIVIDUAL - Represents a single person. This is the default.
              # - GROUP - Represents more than a single person.
          "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
            { # A single menu command that is part of a Contact.
              "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                  # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                  # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
            },
          ],
          "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
          "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
        },
      "text": "A String", # Text content of this item.
      "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
        { # A custom menu item that can be presented to the user by a timeline item.
          "contextual_command": "A String", # The ContextualMenus.Command associated with this MenuItem (e.g. READ_ALOUD). The voice label for this command will be displayed in the voice menu and the touch label will be displayed in the touch menu. Note that the default menu value's display name will be overriden if you specify this property. Values that do not correspond to a ContextualMenus.Command name will be ignored.
          "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
          "payload": "A String", # A generic payload whose meaning changes depending on this MenuItem's action.
              # - When the action is OPEN_URI, the payload is the URL of the website to view.
              # - When the action is PLAY_VIDEO, the payload is the streaming URL of the video
              # - When the action is GET_MEDIA_INPUT, the payload is the text transcription of a user's speech input
          "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
            { # A single value that is part of a MenuItem.
              "iconUrl": "A String", # URL of an icon to display with the menu item.
              "state": "A String", # The state that this value applies to. Allowed values are:
                  # - DEFAULT - Default value shown when displayed in the menuItems list.
                  # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
                  # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
              "displayName": "A String", # The name to display for the menu item. If you specify this property for a built-in menu item, the default contextual voice command for that menu item is not shown.
            },
          ],
          "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
              # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
              # - Built-in actions:
              # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
              # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
              # - DELETE - Delete the timeline item.
              # - SHARE - Share the timeline item with the available contacts.
              # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
              # - GET_MEDIA_INPUT - Allow users to provide media payloads to Glassware from a menu item (currently, only transcribed text from voice input is supported). Subscribe to notifications when users invoke this menu item to receive the timeline item ID. Retrieve the media from the timeline item in the payload property.
              # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phoneNumber attribute as recipient.
              # - NAVIGATE - Navigate to the timeline item's location.
              # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
              # - OPEN_URI - Open the payload of the menu item in the browser.
              # - PLAY_VIDEO - Open the payload of the menu item in the Glass video player.
              # - SEND_MESSAGE - Initiate sending a message to the timeline item's creator:
              # - If the creator.phoneNumber is set and Glass is connected to an Android phone, the message is an SMS.
              # - Otherwise, if the creator.email is set, the message is an email.
          "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
        },
      ],
      "isBundleCover": True or False, # Whether this item is a bundle cover.
          #
          # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
          #
          # On the main timeline, items that are shown are:
          # - Items that have isBundleCover set to true
          # - Items that do not have a bundleId  In a bundle sub-timeline, items that are shown are:
          # - Items that have the bundleId in question AND isBundleCover set to false
      "etag": "A String", # ETag for this item.
      "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
      "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
      "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
      "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
      "title": "A String", # The title of this item.
      "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
        "level": "A String", # Describes how important the notification is. Allowed values are:
            # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
        "deliveryTime": "A String", # The time at which the notification should be delivered.
      },
      "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
          #
          # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
      "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
          # Allowed HTML elements - You can use these elements in your timeline cards.
          #
          # - Headers: h1, h2, h3, h4, h5, h6
          # - Images: img
          # - Lists: li, ol, ul
          # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
          # - Structural: blockquote, br, div, hr, p, span
          # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
          # - Tables: table, tbody, td, tfoot, th, thead, tr
          # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
          #
          # - Document headers: head, title
          # - Embeds: audio, embed, object, source, video
          # - Frames: frame, frameset
          # - Scripting: applet, script
          # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
      "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
        "kind": "mirror#location", # The type of resource. This is always mirror#location.
        "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
        "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
        "longitude": 3.14, # The longitude, in degrees.
        "address": "A String", # The full address of the location.
        "latitude": 3.14, # The latitude, in degrees.
        "id": "A String", # The ID of the location.
        "accuracy": 3.14, # The accuracy of the location fix in meters.
      },
      "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
      "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
      "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
      "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
      "recipients": [ # A list of users or groups that this item has been shared with.
        { # A person or group that can be used as a creator or a contact.
            "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
            "displayName": "A String", # The name to display for this contact.
            "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
              "A String",
            ],
            "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
              "A String",
            ],
            "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
            "source": "A String", # The ID of the application that created this contact. This is populated by the API
            "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
            "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
                # - ADD_CAPTION
              "A String",
            ],
            "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
                # - INDIVIDUAL - Represents a single person. This is the default.
                # - GROUP - Represents more than a single person.
            "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
              { # A single menu command that is part of a Contact.
                "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                    # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                    # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
              },
            ],
            "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
            "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
          },
      ],
      "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
      "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
      "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
      "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
          #
          # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
          #
          # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
      "selfLink": "A String", # A URL that can be used to retrieve this item.
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(id, body=None, media_body=None, media_mime_type=None)</code>
  <pre>Updates a timeline item in place.

Args:
  id: string, The ID of the timeline item. (required)
  body: object, The request body.
    The object takes the form of:

{ # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
    "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
        # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
        # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
      { # Represents media content, such as a photo, that can be attached to a timeline item.
        "contentUrl": "A String", # The URL for the content.
        "contentType": "A String", # The MIME type of the attachment.
        "id": "A String", # The ID of the attachment.
        "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
      },
    ],
    "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
    "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
        "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
        "displayName": "A String", # The name to display for this contact.
        "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
          "A String",
        ],
        "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
          "A String",
        ],
        "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
        "source": "A String", # The ID of the application that created this contact. This is populated by the API
        "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
        "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
            # - ADD_CAPTION
          "A String",
        ],
        "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
            # - INDIVIDUAL - Represents a single person. This is the default.
            # - GROUP - Represents more than a single person.
        "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
          { # A single menu command that is part of a Contact.
            "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
          },
        ],
        "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
        "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
      },
    "text": "A String", # Text content of this item.
    "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
      { # A custom menu item that can be presented to the user by a timeline item.
        "contextual_command": "A String", # The ContextualMenus.Command associated with this MenuItem (e.g. READ_ALOUD). The voice label for this command will be displayed in the voice menu and the touch label will be displayed in the touch menu. Note that the default menu value's display name will be overriden if you specify this property. Values that do not correspond to a ContextualMenus.Command name will be ignored.
        "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
        "payload": "A String", # A generic payload whose meaning changes depending on this MenuItem's action.
            # - When the action is OPEN_URI, the payload is the URL of the website to view.
            # - When the action is PLAY_VIDEO, the payload is the streaming URL of the video
            # - When the action is GET_MEDIA_INPUT, the payload is the text transcription of a user's speech input
        "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
          { # A single value that is part of a MenuItem.
            "iconUrl": "A String", # URL of an icon to display with the menu item.
            "state": "A String", # The state that this value applies to. Allowed values are:
                # - DEFAULT - Default value shown when displayed in the menuItems list.
                # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
                # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
            "displayName": "A String", # The name to display for the menu item. If you specify this property for a built-in menu item, the default contextual voice command for that menu item is not shown.
          },
        ],
        "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
            # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
            # - Built-in actions:
            # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
            # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
            # - DELETE - Delete the timeline item.
            # - SHARE - Share the timeline item with the available contacts.
            # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
            # - GET_MEDIA_INPUT - Allow users to provide media payloads to Glassware from a menu item (currently, only transcribed text from voice input is supported). Subscribe to notifications when users invoke this menu item to receive the timeline item ID. Retrieve the media from the timeline item in the payload property.
            # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phoneNumber attribute as recipient.
            # - NAVIGATE - Navigate to the timeline item's location.
            # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
            # - OPEN_URI - Open the payload of the menu item in the browser.
            # - PLAY_VIDEO - Open the payload of the menu item in the Glass video player.
            # - SEND_MESSAGE - Initiate sending a message to the timeline item's creator:
            # - If the creator.phoneNumber is set and Glass is connected to an Android phone, the message is an SMS.
            # - Otherwise, if the creator.email is set, the message is an email.
        "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
      },
    ],
    "isBundleCover": True or False, # Whether this item is a bundle cover.
        # 
        # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
        # 
        # On the main timeline, items that are shown are:
        # - Items that have isBundleCover set to true
        # - Items that do not have a bundleId  In a bundle sub-timeline, items that are shown are:
        # - Items that have the bundleId in question AND isBundleCover set to false
    "etag": "A String", # ETag for this item.
    "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
    "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
    "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
    "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
    "title": "A String", # The title of this item.
    "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
      "level": "A String", # Describes how important the notification is. Allowed values are:
          # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
      "deliveryTime": "A String", # The time at which the notification should be delivered.
    },
    "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
        # 
        # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
    "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
        # Allowed HTML elements - You can use these elements in your timeline cards.
        # 
        # - Headers: h1, h2, h3, h4, h5, h6
        # - Images: img
        # - Lists: li, ol, ul
        # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
        # - Structural: blockquote, br, div, hr, p, span
        # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
        # - Tables: table, tbody, td, tfoot, th, thead, tr
        # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
        # 
        # - Document headers: head, title
        # - Embeds: audio, embed, object, source, video
        # - Frames: frame, frameset
        # - Scripting: applet, script
        # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
    "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
      "kind": "mirror#location", # The type of resource. This is always mirror#location.
      "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
      "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
      "longitude": 3.14, # The longitude, in degrees.
      "address": "A String", # The full address of the location.
      "latitude": 3.14, # The latitude, in degrees.
      "id": "A String", # The ID of the location.
      "accuracy": 3.14, # The accuracy of the location fix in meters.
    },
    "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
    "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
    "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
    "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
    "recipients": [ # A list of users or groups that this item has been shared with.
      { # A person or group that can be used as a creator or a contact.
          "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
          "displayName": "A String", # The name to display for this contact.
          "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
            "A String",
          ],
          "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
            "A String",
          ],
          "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
          "source": "A String", # The ID of the application that created this contact. This is populated by the API
          "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
          "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
              # - ADD_CAPTION
            "A String",
          ],
          "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
              # - INDIVIDUAL - Represents a single person. This is the default.
              # - GROUP - Represents more than a single person.
          "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
            { # A single menu command that is part of a Contact.
              "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                  # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                  # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
            },
          ],
          "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
          "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
        },
    ],
    "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
    "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
    "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
    "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
        # 
        # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
        # 
        # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
    "selfLink": "A String", # A URL that can be used to retrieve this item.
  }

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.

Returns:
  An object of the form:

    { # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
      "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
          # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
          # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
        { # Represents media content, such as a photo, that can be attached to a timeline item.
          "contentUrl": "A String", # The URL for the content.
          "contentType": "A String", # The MIME type of the attachment.
          "id": "A String", # The ID of the attachment.
          "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
        },
      ],
      "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
      "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
          "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
          "displayName": "A String", # The name to display for this contact.
          "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
            "A String",
          ],
          "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
            "A String",
          ],
          "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
          "source": "A String", # The ID of the application that created this contact. This is populated by the API
          "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
          "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
              # - ADD_CAPTION
            "A String",
          ],
          "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
              # - INDIVIDUAL - Represents a single person. This is the default.
              # - GROUP - Represents more than a single person.
          "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
            { # A single menu command that is part of a Contact.
              "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                  # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                  # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
            },
          ],
          "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
          "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
        },
      "text": "A String", # Text content of this item.
      "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
        { # A custom menu item that can be presented to the user by a timeline item.
          "contextual_command": "A String", # The ContextualMenus.Command associated with this MenuItem (e.g. READ_ALOUD). The voice label for this command will be displayed in the voice menu and the touch label will be displayed in the touch menu. Note that the default menu value's display name will be overriden if you specify this property. Values that do not correspond to a ContextualMenus.Command name will be ignored.
          "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
          "payload": "A String", # A generic payload whose meaning changes depending on this MenuItem's action.
              # - When the action is OPEN_URI, the payload is the URL of the website to view.
              # - When the action is PLAY_VIDEO, the payload is the streaming URL of the video
              # - When the action is GET_MEDIA_INPUT, the payload is the text transcription of a user's speech input
          "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
            { # A single value that is part of a MenuItem.
              "iconUrl": "A String", # URL of an icon to display with the menu item.
              "state": "A String", # The state that this value applies to. Allowed values are:
                  # - DEFAULT - Default value shown when displayed in the menuItems list.
                  # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
                  # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
              "displayName": "A String", # The name to display for the menu item. If you specify this property for a built-in menu item, the default contextual voice command for that menu item is not shown.
            },
          ],
          "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
              # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
              # - Built-in actions:
              # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
              # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
              # - DELETE - Delete the timeline item.
              # - SHARE - Share the timeline item with the available contacts.
              # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
              # - GET_MEDIA_INPUT - Allow users to provide media payloads to Glassware from a menu item (currently, only transcribed text from voice input is supported). Subscribe to notifications when users invoke this menu item to receive the timeline item ID. Retrieve the media from the timeline item in the payload property.
              # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phoneNumber attribute as recipient.
              # - NAVIGATE - Navigate to the timeline item's location.
              # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
              # - OPEN_URI - Open the payload of the menu item in the browser.
              # - PLAY_VIDEO - Open the payload of the menu item in the Glass video player.
              # - SEND_MESSAGE - Initiate sending a message to the timeline item's creator:
              # - If the creator.phoneNumber is set and Glass is connected to an Android phone, the message is an SMS.
              # - Otherwise, if the creator.email is set, the message is an email.
          "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
        },
      ],
      "isBundleCover": True or False, # Whether this item is a bundle cover.
          #
          # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
          #
          # On the main timeline, items that are shown are:
          # - Items that have isBundleCover set to true
          # - Items that do not have a bundleId  In a bundle sub-timeline, items that are shown are:
          # - Items that have the bundleId in question AND isBundleCover set to false
      "etag": "A String", # ETag for this item.
      "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
      "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
      "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
      "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
      "title": "A String", # The title of this item.
      "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
        "level": "A String", # Describes how important the notification is. Allowed values are:
            # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
        "deliveryTime": "A String", # The time at which the notification should be delivered.
      },
      "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
          #
          # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
      "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
          # Allowed HTML elements - You can use these elements in your timeline cards.
          #
          # - Headers: h1, h2, h3, h4, h5, h6
          # - Images: img
          # - Lists: li, ol, ul
          # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
          # - Structural: blockquote, br, div, hr, p, span
          # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
          # - Tables: table, tbody, td, tfoot, th, thead, tr
          # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
          #
          # - Document headers: head, title
          # - Embeds: audio, embed, object, source, video
          # - Frames: frame, frameset
          # - Scripting: applet, script
          # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
      "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
        "kind": "mirror#location", # The type of resource. This is always mirror#location.
        "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
        "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
        "longitude": 3.14, # The longitude, in degrees.
        "address": "A String", # The full address of the location.
        "latitude": 3.14, # The latitude, in degrees.
        "id": "A String", # The ID of the location.
        "accuracy": 3.14, # The accuracy of the location fix in meters.
      },
      "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
      "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
      "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
      "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
      "recipients": [ # A list of users or groups that this item has been shared with.
        { # A person or group that can be used as a creator or a contact.
            "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
            "displayName": "A String", # The name to display for this contact.
            "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
              "A String",
            ],
            "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
              "A String",
            ],
            "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
            "source": "A String", # The ID of the application that created this contact. This is populated by the API
            "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
            "sharingFeatures": [ # A list of sharing features that a contact can handle. Allowed values are:
                # - ADD_CAPTION
              "A String",
            ],
            "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
                # - INDIVIDUAL - Represents a single person. This is the default.
                # - GROUP - Represents more than a single person.
            "acceptCommands": [ # A list of voice menu commands that a contact can handle. Glass shows up to three contacts for each voice menu command. If there are more than that, the three contacts with the highest priority are shown for that particular command.
              { # A single menu command that is part of a Contact.
                "type": "A String", # The type of operation this command corresponds to. Allowed values are:
                    # - TAKE_A_NOTE - Shares a timeline item with the transcription of user speech from the "Take a note" voice menu command.
                    # - POST_AN_UPDATE - Shares a timeline item with the transcription of user speech from the "Post an update" voice menu command.
              },
            ],
            "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
            "speakableName": "A String", # Name of this contact as it should be pronounced. If this contact's name must be spoken as part of a voice disambiguation menu, this name is used as the expected pronunciation. This is useful for contact names with unpronounceable characters or whose display spelling is otherwise not phonetic.
          },
      ],
      "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
      "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
      "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
      "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
          #
          # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
          #
          # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
      "selfLink": "A String", # A URL that can be used to retrieve this item.
    }</pre>
</div>

</body></html>