<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="tasks_v1.html">Tasks API</a> . <a href="tasks_v1.tasks.html">tasks</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#clear">clear(tasklist, x__xgafv=None)</a></code></p>
<p class="firstline">Clears all completed tasks from the specified task list. The affected tasks</p>
<p class="toc_element">
  <code><a href="#delete">delete(tasklist, task, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified task from the task list.</p>
<p class="toc_element">
  <code><a href="#get">get(tasklist, task, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the specified task.</p>
<p class="toc_element">
  <code><a href="#insert">insert(tasklist, body=None, previous=None, parent=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new task on the specified task list.</p>
<p class="toc_element">
  <code><a href="#list">list(tasklist, showCompleted=None, pageToken=None, showDeleted=None, completedMax=None, dueMax=None, dueMin=None, showHidden=None, completedMin=None, maxResults=None, updatedMin=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns all tasks in the specified task list.</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="#move">move(tasklist, task, previous=None, parent=None, x__xgafv=None)</a></code></p>
<p class="firstline">Moves the specified task to another position in the task list. This can</p>
<p class="toc_element">
  <code><a href="#patch">patch(tasklist, task, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified task. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(tasklist, task, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified task.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="clear">clear(tasklist, x__xgafv=None)</code>
  <pre>Clears all completed tasks from the specified task list. The affected tasks
will be marked as &#x27;hidden&#x27; and no longer be returned by default when
retrieving all tasks for a task list.

Args:
  tasklist: string, Task list identifier. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(tasklist, task, x__xgafv=None)</code>
  <pre>Deletes the specified task from the task list.

Args:
  tasklist: string, Task list identifier. (required)
  task: string, Task identifier. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(tasklist, task, x__xgafv=None)</code>
  <pre>Returns the specified task.

Args:
  tasklist: string, Task list identifier. (required)
  task: string, Task identifier. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;parent&quot;: &quot;A String&quot;, # Parent task identifier. This field is omitted if it is a top-level task.
        # This field is read-only. Use the &quot;move&quot; method to move the task under a
        # different parent or to the top level.
    &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
    &quot;hidden&quot;: True or False, # Flag indicating whether the task is hidden. This is the case if the task
        # had been marked completed when the task list was last cleared. The default
        # is False. This field is read-only.
    &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
    &quot;position&quot;: &quot;A String&quot;, # String indicating the position of the task among its sibling tasks under
        # the same parent task or at the top level. If this string is greater than
        # another task&#x27;s corresponding position string according to lexicographical
        # ordering, the task is positioned after the other task under the same parent
        # task (or at the top level). This field is read-only. Use the &quot;move&quot; method
        # to move the task to another position.
    &quot;completed&quot;: &quot;A String&quot;, # Completion date of the task (as a RFC 3339 timestamp). This field is
        # omitted if the task has not been completed.
    &quot;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
    &quot;links&quot;: [ # Collection of links. This collection is read-only.
      {
        &quot;description&quot;: &quot;A String&quot;, # The description. In HTML speak: Everything between &amp;lt;a&amp;gt; and
            # &amp;lt;/a&amp;gt;.
        &quot;type&quot;: &quot;A String&quot;, # Type of the link, e.g. &quot;email&quot;.
        &quot;link&quot;: &quot;A String&quot;, # The URL.
      },
    ],
    &quot;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this task.
    &quot;title&quot;: &quot;A String&quot;, # Title of the task.
    &quot;notes&quot;: &quot;A String&quot;, # Notes describing the task. Optional.
    &quot;status&quot;: &quot;A String&quot;, # Status of the task. This is either &quot;needsAction&quot; or &quot;completed&quot;.
    &quot;due&quot;: &quot;A String&quot;, # Due date of the task (as a RFC 3339 timestamp). Optional. The due date only
        # records date information; the time portion of the timestamp is discarded
        # when setting the due date. It isn&#x27;t possible to read or write the time that
        # a task is due via the API.
    &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
    &quot;id&quot;: &quot;A String&quot;, # Task identifier.
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(tasklist, body=None, previous=None, parent=None, x__xgafv=None)</code>
  <pre>Creates a new task on the specified task list.

Args:
  tasklist: string, Task list identifier. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;parent&quot;: &quot;A String&quot;, # Parent task identifier. This field is omitted if it is a top-level task.
      # This field is read-only. Use the &quot;move&quot; method to move the task under a
      # different parent or to the top level.
  &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
  &quot;hidden&quot;: True or False, # Flag indicating whether the task is hidden. This is the case if the task
      # had been marked completed when the task list was last cleared. The default
      # is False. This field is read-only.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
  &quot;position&quot;: &quot;A String&quot;, # String indicating the position of the task among its sibling tasks under
      # the same parent task or at the top level. If this string is greater than
      # another task&#x27;s corresponding position string according to lexicographical
      # ordering, the task is positioned after the other task under the same parent
      # task (or at the top level). This field is read-only. Use the &quot;move&quot; method
      # to move the task to another position.
  &quot;completed&quot;: &quot;A String&quot;, # Completion date of the task (as a RFC 3339 timestamp). This field is
      # omitted if the task has not been completed.
  &quot;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
  &quot;links&quot;: [ # Collection of links. This collection is read-only.
    {
      &quot;description&quot;: &quot;A String&quot;, # The description. In HTML speak: Everything between &amp;lt;a&amp;gt; and
          # &amp;lt;/a&amp;gt;.
      &quot;type&quot;: &quot;A String&quot;, # Type of the link, e.g. &quot;email&quot;.
      &quot;link&quot;: &quot;A String&quot;, # The URL.
    },
  ],
  &quot;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this task.
  &quot;title&quot;: &quot;A String&quot;, # Title of the task.
  &quot;notes&quot;: &quot;A String&quot;, # Notes describing the task. Optional.
  &quot;status&quot;: &quot;A String&quot;, # Status of the task. This is either &quot;needsAction&quot; or &quot;completed&quot;.
  &quot;due&quot;: &quot;A String&quot;, # Due date of the task (as a RFC 3339 timestamp). Optional. The due date only
      # records date information; the time portion of the timestamp is discarded
      # when setting the due date. It isn&#x27;t possible to read or write the time that
      # a task is due via the API.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;id&quot;: &quot;A String&quot;, # Task identifier.
}

  previous: string, Previous sibling task identifier. If the task is created at the first
position among its siblings, this parameter is omitted. Optional.
  parent: string, Parent task identifier. If the task is created at the top level, this
parameter is omitted. Optional.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;parent&quot;: &quot;A String&quot;, # Parent task identifier. This field is omitted if it is a top-level task.
        # This field is read-only. Use the &quot;move&quot; method to move the task under a
        # different parent or to the top level.
    &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
    &quot;hidden&quot;: True or False, # Flag indicating whether the task is hidden. This is the case if the task
        # had been marked completed when the task list was last cleared. The default
        # is False. This field is read-only.
    &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
    &quot;position&quot;: &quot;A String&quot;, # String indicating the position of the task among its sibling tasks under
        # the same parent task or at the top level. If this string is greater than
        # another task&#x27;s corresponding position string according to lexicographical
        # ordering, the task is positioned after the other task under the same parent
        # task (or at the top level). This field is read-only. Use the &quot;move&quot; method
        # to move the task to another position.
    &quot;completed&quot;: &quot;A String&quot;, # Completion date of the task (as a RFC 3339 timestamp). This field is
        # omitted if the task has not been completed.
    &quot;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
    &quot;links&quot;: [ # Collection of links. This collection is read-only.
      {
        &quot;description&quot;: &quot;A String&quot;, # The description. In HTML speak: Everything between &amp;lt;a&amp;gt; and
            # &amp;lt;/a&amp;gt;.
        &quot;type&quot;: &quot;A String&quot;, # Type of the link, e.g. &quot;email&quot;.
        &quot;link&quot;: &quot;A String&quot;, # The URL.
      },
    ],
    &quot;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this task.
    &quot;title&quot;: &quot;A String&quot;, # Title of the task.
    &quot;notes&quot;: &quot;A String&quot;, # Notes describing the task. Optional.
    &quot;status&quot;: &quot;A String&quot;, # Status of the task. This is either &quot;needsAction&quot; or &quot;completed&quot;.
    &quot;due&quot;: &quot;A String&quot;, # Due date of the task (as a RFC 3339 timestamp). Optional. The due date only
        # records date information; the time portion of the timestamp is discarded
        # when setting the due date. It isn&#x27;t possible to read or write the time that
        # a task is due via the API.
    &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
    &quot;id&quot;: &quot;A String&quot;, # Task identifier.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(tasklist, showCompleted=None, pageToken=None, showDeleted=None, completedMax=None, dueMax=None, dueMin=None, showHidden=None, completedMin=None, maxResults=None, updatedMin=None, x__xgafv=None)</code>
  <pre>Returns all tasks in the specified task list.

Args:
  tasklist: string, Task list identifier. (required)
  showCompleted: boolean, Flag indicating whether completed tasks are returned in the result.
Optional. The default is True.
  pageToken: string, Token specifying the result page to return. Optional.
  showDeleted: boolean, Flag indicating whether deleted tasks are returned in the result. Optional.
The default is False.
  completedMax: string, Upper bound for a task&#x27;s completion date (as a RFC 3339 timestamp) to
filter by. Optional. The default is not to filter by completion date.
  dueMax: string, Upper bound for a task&#x27;s due date (as a RFC 3339 timestamp) to filter by.
Optional. The default is not to filter by due date.
  dueMin: string, Lower bound for a task&#x27;s due date (as a RFC 3339 timestamp) to filter by.
Optional. The default is not to filter by due date.
  showHidden: boolean, Flag indicating whether hidden tasks are returned in the result. Optional.
The default is False.
  completedMin: string, Lower bound for a task&#x27;s completion date (as a RFC 3339 timestamp) to
filter by. Optional. The default is not to filter by completion date.
  maxResults: integer, Maximum number of task lists returned on one page. Optional. The default is
20 (max allowed: 100).
  updatedMin: string, Lower bound for a task&#x27;s last modification time (as a RFC 3339 timestamp)
to filter by. Optional. The default is not to filter by last modification
time.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;items&quot;: [ # Collection of tasks.
      {
        &quot;parent&quot;: &quot;A String&quot;, # Parent task identifier. This field is omitted if it is a top-level task.
            # This field is read-only. Use the &quot;move&quot; method to move the task under a
            # different parent or to the top level.
        &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
        &quot;hidden&quot;: True or False, # Flag indicating whether the task is hidden. This is the case if the task
            # had been marked completed when the task list was last cleared. The default
            # is False. This field is read-only.
        &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
        &quot;position&quot;: &quot;A String&quot;, # String indicating the position of the task among its sibling tasks under
            # the same parent task or at the top level. If this string is greater than
            # another task&#x27;s corresponding position string according to lexicographical
            # ordering, the task is positioned after the other task under the same parent
            # task (or at the top level). This field is read-only. Use the &quot;move&quot; method
            # to move the task to another position.
        &quot;completed&quot;: &quot;A String&quot;, # Completion date of the task (as a RFC 3339 timestamp). This field is
            # omitted if the task has not been completed.
        &quot;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
        &quot;links&quot;: [ # Collection of links. This collection is read-only.
          {
            &quot;description&quot;: &quot;A String&quot;, # The description. In HTML speak: Everything between &amp;lt;a&amp;gt; and
                # &amp;lt;/a&amp;gt;.
            &quot;type&quot;: &quot;A String&quot;, # Type of the link, e.g. &quot;email&quot;.
            &quot;link&quot;: &quot;A String&quot;, # The URL.
          },
        ],
        &quot;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this task.
        &quot;title&quot;: &quot;A String&quot;, # Title of the task.
        &quot;notes&quot;: &quot;A String&quot;, # Notes describing the task. Optional.
        &quot;status&quot;: &quot;A String&quot;, # Status of the task. This is either &quot;needsAction&quot; or &quot;completed&quot;.
        &quot;due&quot;: &quot;A String&quot;, # Due date of the task (as a RFC 3339 timestamp). Optional. The due date only
            # records date information; the time portion of the timestamp is discarded
            # when setting the due date. It isn&#x27;t possible to read or write the time that
            # a task is due via the API.
        &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
        &quot;id&quot;: &quot;A String&quot;, # Task identifier.
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Token used to access the next page of this result.
    &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#tasks&quot;.
    &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  }</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 &#x27;execute()&#x27; 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="move">move(tasklist, task, previous=None, parent=None, x__xgafv=None)</code>
  <pre>Moves the specified task to another position in the task list. This can
include putting it as a child task under a new parent and/or move it to a
different position among its sibling tasks.

Args:
  tasklist: string, Task list identifier. (required)
  task: string, Task identifier. (required)
  previous: string, New previous sibling task identifier. If the task is moved to the first
position among its siblings, this parameter is omitted. Optional.
  parent: string, New parent task identifier. If the task is moved to the top level, this
parameter is omitted. Optional.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;parent&quot;: &quot;A String&quot;, # Parent task identifier. This field is omitted if it is a top-level task.
        # This field is read-only. Use the &quot;move&quot; method to move the task under a
        # different parent or to the top level.
    &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
    &quot;hidden&quot;: True or False, # Flag indicating whether the task is hidden. This is the case if the task
        # had been marked completed when the task list was last cleared. The default
        # is False. This field is read-only.
    &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
    &quot;position&quot;: &quot;A String&quot;, # String indicating the position of the task among its sibling tasks under
        # the same parent task or at the top level. If this string is greater than
        # another task&#x27;s corresponding position string according to lexicographical
        # ordering, the task is positioned after the other task under the same parent
        # task (or at the top level). This field is read-only. Use the &quot;move&quot; method
        # to move the task to another position.
    &quot;completed&quot;: &quot;A String&quot;, # Completion date of the task (as a RFC 3339 timestamp). This field is
        # omitted if the task has not been completed.
    &quot;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
    &quot;links&quot;: [ # Collection of links. This collection is read-only.
      {
        &quot;description&quot;: &quot;A String&quot;, # The description. In HTML speak: Everything between &amp;lt;a&amp;gt; and
            # &amp;lt;/a&amp;gt;.
        &quot;type&quot;: &quot;A String&quot;, # Type of the link, e.g. &quot;email&quot;.
        &quot;link&quot;: &quot;A String&quot;, # The URL.
      },
    ],
    &quot;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this task.
    &quot;title&quot;: &quot;A String&quot;, # Title of the task.
    &quot;notes&quot;: &quot;A String&quot;, # Notes describing the task. Optional.
    &quot;status&quot;: &quot;A String&quot;, # Status of the task. This is either &quot;needsAction&quot; or &quot;completed&quot;.
    &quot;due&quot;: &quot;A String&quot;, # Due date of the task (as a RFC 3339 timestamp). Optional. The due date only
        # records date information; the time portion of the timestamp is discarded
        # when setting the due date. It isn&#x27;t possible to read or write the time that
        # a task is due via the API.
    &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
    &quot;id&quot;: &quot;A String&quot;, # Task identifier.
  }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(tasklist, task, body=None, x__xgafv=None)</code>
  <pre>Updates the specified task. This method supports patch semantics.

Args:
  tasklist: string, Task list identifier. (required)
  task: string, Task identifier. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;parent&quot;: &quot;A String&quot;, # Parent task identifier. This field is omitted if it is a top-level task.
      # This field is read-only. Use the &quot;move&quot; method to move the task under a
      # different parent or to the top level.
  &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
  &quot;hidden&quot;: True or False, # Flag indicating whether the task is hidden. This is the case if the task
      # had been marked completed when the task list was last cleared. The default
      # is False. This field is read-only.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
  &quot;position&quot;: &quot;A String&quot;, # String indicating the position of the task among its sibling tasks under
      # the same parent task or at the top level. If this string is greater than
      # another task&#x27;s corresponding position string according to lexicographical
      # ordering, the task is positioned after the other task under the same parent
      # task (or at the top level). This field is read-only. Use the &quot;move&quot; method
      # to move the task to another position.
  &quot;completed&quot;: &quot;A String&quot;, # Completion date of the task (as a RFC 3339 timestamp). This field is
      # omitted if the task has not been completed.
  &quot;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
  &quot;links&quot;: [ # Collection of links. This collection is read-only.
    {
      &quot;description&quot;: &quot;A String&quot;, # The description. In HTML speak: Everything between &amp;lt;a&amp;gt; and
          # &amp;lt;/a&amp;gt;.
      &quot;type&quot;: &quot;A String&quot;, # Type of the link, e.g. &quot;email&quot;.
      &quot;link&quot;: &quot;A String&quot;, # The URL.
    },
  ],
  &quot;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this task.
  &quot;title&quot;: &quot;A String&quot;, # Title of the task.
  &quot;notes&quot;: &quot;A String&quot;, # Notes describing the task. Optional.
  &quot;status&quot;: &quot;A String&quot;, # Status of the task. This is either &quot;needsAction&quot; or &quot;completed&quot;.
  &quot;due&quot;: &quot;A String&quot;, # Due date of the task (as a RFC 3339 timestamp). Optional. The due date only
      # records date information; the time portion of the timestamp is discarded
      # when setting the due date. It isn&#x27;t possible to read or write the time that
      # a task is due via the API.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;id&quot;: &quot;A String&quot;, # Task identifier.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;parent&quot;: &quot;A String&quot;, # Parent task identifier. This field is omitted if it is a top-level task.
        # This field is read-only. Use the &quot;move&quot; method to move the task under a
        # different parent or to the top level.
    &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
    &quot;hidden&quot;: True or False, # Flag indicating whether the task is hidden. This is the case if the task
        # had been marked completed when the task list was last cleared. The default
        # is False. This field is read-only.
    &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
    &quot;position&quot;: &quot;A String&quot;, # String indicating the position of the task among its sibling tasks under
        # the same parent task or at the top level. If this string is greater than
        # another task&#x27;s corresponding position string according to lexicographical
        # ordering, the task is positioned after the other task under the same parent
        # task (or at the top level). This field is read-only. Use the &quot;move&quot; method
        # to move the task to another position.
    &quot;completed&quot;: &quot;A String&quot;, # Completion date of the task (as a RFC 3339 timestamp). This field is
        # omitted if the task has not been completed.
    &quot;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
    &quot;links&quot;: [ # Collection of links. This collection is read-only.
      {
        &quot;description&quot;: &quot;A String&quot;, # The description. In HTML speak: Everything between &amp;lt;a&amp;gt; and
            # &amp;lt;/a&amp;gt;.
        &quot;type&quot;: &quot;A String&quot;, # Type of the link, e.g. &quot;email&quot;.
        &quot;link&quot;: &quot;A String&quot;, # The URL.
      },
    ],
    &quot;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this task.
    &quot;title&quot;: &quot;A String&quot;, # Title of the task.
    &quot;notes&quot;: &quot;A String&quot;, # Notes describing the task. Optional.
    &quot;status&quot;: &quot;A String&quot;, # Status of the task. This is either &quot;needsAction&quot; or &quot;completed&quot;.
    &quot;due&quot;: &quot;A String&quot;, # Due date of the task (as a RFC 3339 timestamp). Optional. The due date only
        # records date information; the time portion of the timestamp is discarded
        # when setting the due date. It isn&#x27;t possible to read or write the time that
        # a task is due via the API.
    &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
    &quot;id&quot;: &quot;A String&quot;, # Task identifier.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(tasklist, task, body=None, x__xgafv=None)</code>
  <pre>Updates the specified task.

Args:
  tasklist: string, Task list identifier. (required)
  task: string, Task identifier. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;parent&quot;: &quot;A String&quot;, # Parent task identifier. This field is omitted if it is a top-level task.
      # This field is read-only. Use the &quot;move&quot; method to move the task under a
      # different parent or to the top level.
  &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
  &quot;hidden&quot;: True or False, # Flag indicating whether the task is hidden. This is the case if the task
      # had been marked completed when the task list was last cleared. The default
      # is False. This field is read-only.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
  &quot;position&quot;: &quot;A String&quot;, # String indicating the position of the task among its sibling tasks under
      # the same parent task or at the top level. If this string is greater than
      # another task&#x27;s corresponding position string according to lexicographical
      # ordering, the task is positioned after the other task under the same parent
      # task (or at the top level). This field is read-only. Use the &quot;move&quot; method
      # to move the task to another position.
  &quot;completed&quot;: &quot;A String&quot;, # Completion date of the task (as a RFC 3339 timestamp). This field is
      # omitted if the task has not been completed.
  &quot;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
  &quot;links&quot;: [ # Collection of links. This collection is read-only.
    {
      &quot;description&quot;: &quot;A String&quot;, # The description. In HTML speak: Everything between &amp;lt;a&amp;gt; and
          # &amp;lt;/a&amp;gt;.
      &quot;type&quot;: &quot;A String&quot;, # Type of the link, e.g. &quot;email&quot;.
      &quot;link&quot;: &quot;A String&quot;, # The URL.
    },
  ],
  &quot;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this task.
  &quot;title&quot;: &quot;A String&quot;, # Title of the task.
  &quot;notes&quot;: &quot;A String&quot;, # Notes describing the task. Optional.
  &quot;status&quot;: &quot;A String&quot;, # Status of the task. This is either &quot;needsAction&quot; or &quot;completed&quot;.
  &quot;due&quot;: &quot;A String&quot;, # Due date of the task (as a RFC 3339 timestamp). Optional. The due date only
      # records date information; the time portion of the timestamp is discarded
      # when setting the due date. It isn&#x27;t possible to read or write the time that
      # a task is due via the API.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;id&quot;: &quot;A String&quot;, # Task identifier.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;parent&quot;: &quot;A String&quot;, # Parent task identifier. This field is omitted if it is a top-level task.
        # This field is read-only. Use the &quot;move&quot; method to move the task under a
        # different parent or to the top level.
    &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
    &quot;hidden&quot;: True or False, # Flag indicating whether the task is hidden. This is the case if the task
        # had been marked completed when the task list was last cleared. The default
        # is False. This field is read-only.
    &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
    &quot;position&quot;: &quot;A String&quot;, # String indicating the position of the task among its sibling tasks under
        # the same parent task or at the top level. If this string is greater than
        # another task&#x27;s corresponding position string according to lexicographical
        # ordering, the task is positioned after the other task under the same parent
        # task (or at the top level). This field is read-only. Use the &quot;move&quot; method
        # to move the task to another position.
    &quot;completed&quot;: &quot;A String&quot;, # Completion date of the task (as a RFC 3339 timestamp). This field is
        # omitted if the task has not been completed.
    &quot;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
    &quot;links&quot;: [ # Collection of links. This collection is read-only.
      {
        &quot;description&quot;: &quot;A String&quot;, # The description. In HTML speak: Everything between &amp;lt;a&amp;gt; and
            # &amp;lt;/a&amp;gt;.
        &quot;type&quot;: &quot;A String&quot;, # Type of the link, e.g. &quot;email&quot;.
        &quot;link&quot;: &quot;A String&quot;, # The URL.
      },
    ],
    &quot;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this task.
    &quot;title&quot;: &quot;A String&quot;, # Title of the task.
    &quot;notes&quot;: &quot;A String&quot;, # Notes describing the task. Optional.
    &quot;status&quot;: &quot;A String&quot;, # Status of the task. This is either &quot;needsAction&quot; or &quot;completed&quot;.
    &quot;due&quot;: &quot;A String&quot;, # Due date of the task (as a RFC 3339 timestamp). Optional. The due date only
        # records date information; the time portion of the timestamp is discarded
        # when setting the due date. It isn&#x27;t possible to read or write the time that
        # a task is due via the API.
    &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
    &quot;id&quot;: &quot;A String&quot;, # Task identifier.
  }</pre>
</div>

</body></html>