<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 will be marked as 'hidden' and no longer be returned by default when retrieving all tasks for a task list.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#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, showHidden=None, showDeleted=None, dueMax=None, dueMin=None, maxResults=None, completedMax=None, pageToken=None, showCompleted=None, completedMin=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, 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 include putting it as a child task under a new parent and/or move it to a different position among its sibling tasks.</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="close">close()</code>
  <pre>Close httplib2 connections.</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:

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

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

  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:

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

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

Args:
  tasklist: string, Task list identifier. (required)
  showHidden: boolean, Flag indicating whether hidden tasks are returned in the result. Optional. The default is False.
  showDeleted: boolean, Flag indicating whether deleted tasks are returned in the result. Optional. The default is False.
  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.
  maxResults: integer, Maximum number of task lists returned on one page. Optional. The default is 20 (max allowed: 100).
  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.
  pageToken: string, Token specifying the result page to return. Optional.
  showCompleted: boolean, Flag indicating whether completed tasks are returned in the result. Optional. The default is True. Note that showHidden must also be True to show tasks completed in first party clients, such as the web UI and Google&#x27;s mobile apps.
  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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &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.
    &quot;items&quot;: [ # Collection of tasks.
      { # LINT.IfChange
          &quot;title&quot;: &quot;A String&quot;, # Title of the task.
          &quot;selfLink&quot;: &quot;A String&quot;, # URL pointing to this task. Used to retrieve, update, or delete this task.
          &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;links&quot;: [ # Collection of links. This collection is read-only.
            {
              &quot;description&quot;: &quot;A String&quot;, # The description. In HTML speak: Everything between &lt;a&gt; and &lt;/a&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;deleted&quot;: True or False, # Flag indicating whether the task has been deleted. The default is False.
          &quot;kind&quot;: &quot;A String&quot;, # Type of the resource. This is always &quot;tasks#task&quot;.
          &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;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;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;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;id&quot;: &quot;A String&quot;, # Task identifier.
          &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the task (as a RFC 3339 timestamp).
          &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;etag&quot;: &quot;A String&quot;, # ETag of the resource.
        },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Token used to access the next page of this result.
  }</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:

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

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

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

Returns:
  An object of the form:

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

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

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

Returns:
  An object of the form:

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

</body></html>