<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, parent=None, previous=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, completedMin=None, updatedMin=None, dueMin=None, showHidden=None, showCompleted=None, maxResults=None, pageToken=None, dueMax=None, completedMax=None, showDeleted=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, parent=None, previous=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;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
      &quot;title&quot;: &quot;A String&quot;, # Title of the task.
      &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
      &quot;id&quot;: &quot;A String&quot;, # Task identifier.
      &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;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this 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;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
      &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;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;links&quot;: [ # Collection of links. This collection is read-only.
        {
          &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;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;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;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.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(tasklist, body=None, parent=None, previous=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;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
    &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
    &quot;title&quot;: &quot;A String&quot;, # Title of the task.
    &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
    &quot;id&quot;: &quot;A String&quot;, # Task identifier.
    &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;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this 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;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
    &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;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;links&quot;: [ # Collection of links. This collection is read-only.
      {
        &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;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;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;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.
  }

  parent: string, Parent task identifier. If the task is created at the top level, this
parameter is omitted. Optional.
  previous: string, Previous sibling task identifier. If the task is created at the first
position among its siblings, 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;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
      &quot;title&quot;: &quot;A String&quot;, # Title of the task.
      &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
      &quot;id&quot;: &quot;A String&quot;, # Task identifier.
      &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;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this 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;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
      &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;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;links&quot;: [ # Collection of links. This collection is read-only.
        {
          &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;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;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;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.
    }</pre>
</div>

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

Args:
  tasklist: string, Task list identifier. (required)
  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.
  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.
  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.
  showCompleted: boolean, Flag indicating whether completed tasks are returned in the result.
Optional. The default is True.
  maxResults: integer, Maximum number of task lists returned on one page. Optional. The default is
20 (max allowed: 100).
  pageToken: string, Token specifying the result page to return. Optional.
  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.
  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.
  showDeleted: boolean, Flag indicating whether deleted tasks are returned in the result. Optional.
The default is False.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Token used to access the next page of this result.
    &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
    &quot;items&quot;: [ # Collection of tasks.
      {
          &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
          &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
          &quot;title&quot;: &quot;A String&quot;, # Title of the task.
          &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
          &quot;id&quot;: &quot;A String&quot;, # Task identifier.
          &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;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this 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;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
          &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;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;links&quot;: [ # Collection of links. This collection is read-only.
            {
              &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;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;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;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;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#tasks&quot;.
  }</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, parent=None, previous=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)
  parent: string, New parent task identifier. If the task is moved to the top level, this
parameter is omitted. Optional.
  previous: string, New previous sibling task identifier. If the task is moved to the first
position among its siblings, 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;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
      &quot;title&quot;: &quot;A String&quot;, # Title of the task.
      &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
      &quot;id&quot;: &quot;A String&quot;, # Task identifier.
      &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;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this 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;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
      &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;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;links&quot;: [ # Collection of links. This collection is read-only.
        {
          &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;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;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;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.
    }</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;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
    &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
    &quot;title&quot;: &quot;A String&quot;, # Title of the task.
    &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
    &quot;id&quot;: &quot;A String&quot;, # Task identifier.
    &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;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this 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;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
    &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;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;links&quot;: [ # Collection of links. This collection is read-only.
      {
        &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;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;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;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.
  }

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

Returns:
  An object of the form:

    {
      &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
      &quot;title&quot;: &quot;A String&quot;, # Title of the task.
      &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
      &quot;id&quot;: &quot;A String&quot;, # Task identifier.
      &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;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this 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;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
      &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;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;links&quot;: [ # Collection of links. This collection is read-only.
        {
          &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;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;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;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.
    }</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;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
    &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
    &quot;title&quot;: &quot;A String&quot;, # Title of the task.
    &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
    &quot;id&quot;: &quot;A String&quot;, # Task identifier.
    &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;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this 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;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
    &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;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;links&quot;: [ # Collection of links. This collection is read-only.
      {
        &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;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;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;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.
  }

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

Returns:
  An object of the form:

    {
      &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
      &quot;title&quot;: &quot;A String&quot;, # Title of the task.
      &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
      &quot;id&quot;: &quot;A String&quot;, # Task identifier.
      &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;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this 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;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
      &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;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;links&quot;: [ # Collection of links. This collection is read-only.
        {
          &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;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;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;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.
    }</pre>
</div>

</body></html>