<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="keep_v1.html">Google Keep API</a> . <a href="keep_v1.notes.html">notes</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="keep_v1.notes.permissions.html">permissions()</a></code>
</p>
<p class="firstline">Returns the permissions Resource.</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="#create">create(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new note.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a note. Caller must have the `OWNER` role on the note to delete. Deleting a note removes the resource immediately and cannot be undone. Any collaborators will lose access to the note.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a note.</p>
<p class="toc_element">
  <code><a href="#list">list(filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists notes. Every list call returns a page of results with `page_size` as the upper bound of returned items. A `page_size` of zero allows the server to choose the upper bound. The ListNotesResponse contains at most `page_size` entries. If there are more things left to list, it provides a `next_page_token` value. (Page tokens are opaque values.) To get the next page of results, copy the result's `next_page_token` into the next request's `page_token`. Repeat until the `next_page_token` returned with a page of results is empty. ListNotes return consistent results in the face of concurrent changes, or signals that it cannot with an ABORTED error.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(body=None, x__xgafv=None)</code>
  <pre>Creates a new note.

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

{ # A single note.
  &quot;attachments&quot;: [ # Output only. The attachments attached to this note.
    { # An attachment to a note.
      &quot;mimeType&quot;: [ # The MIME types (IANA media types) in which the attachment is available.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # The resource name;
    },
  ],
  &quot;body&quot;: { # The content of the note. # The body of the note.
    &quot;list&quot;: { # The list of items for a single list note. # Used if this section&#x27;s content is a list.
      &quot;listItems&quot;: [ # The items in the list. The number of items must be less than 1,000.
        { # A single list item in a note&#x27;s list.
          &quot;checked&quot;: True or False, # Whether this item has been checked off or not.
          &quot;childListItems&quot;: [ # If set, list of list items nested under this list item. Only one level of nesting is allowed.
            # Object with schema name: ListItem
          ],
          &quot;text&quot;: { # The block of text for a single text section or list item. # The text of this item. Length must be less than 1,000 characters.
            &quot;text&quot;: &quot;A String&quot;, # The text of the note. The limits on this vary with the specific field using this type.
          },
        },
      ],
    },
    &quot;text&quot;: { # The block of text for a single text section or list item. # Used if this section&#x27;s content is a block of text. The length of the text content must be less than 20,000 characters.
      &quot;text&quot;: &quot;A String&quot;, # The text of the note. The limits on this vary with the specific field using this type.
    },
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. When this note was created.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of this note. See general note on identifiers in KeepService.
  &quot;permissions&quot;: [ # Output only. The list of permissions set on the note. Contains at least one entry for the note owner.
    { # A single permission on the note. Associates a `member` with a `role`.
      &quot;deleted&quot;: True or False, # Output only. Whether this member has been deleted. If the member is recovered, this value is set to false and the recovered member retains the role on the note.
      &quot;email&quot;: &quot;A String&quot;, # The email associated with the member. If set on create, the `email` field in the `User` or `Group` message must either be empty or match this field. On read, may be unset if the member does not have an associated email.
      &quot;family&quot;: { # Describes a single Google Family. # Output only. The Google Family to which this role applies.
      },
      &quot;group&quot;: { # Describes a single Group. # Output only. The group to which this role applies.
        &quot;email&quot;: &quot;A String&quot;, # The group email.
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name.
      &quot;role&quot;: &quot;A String&quot;, # The role granted by this permission. The role determines the entity’s ability to read, write, and share notes.
      &quot;user&quot;: { # Describes a single user. # Output only. The user to whom this role applies.
        &quot;email&quot;: &quot;A String&quot;, # The user&#x27;s email.
      },
    },
  ],
  &quot;title&quot;: &quot;A String&quot;, # The title of the note. Length must be less than 1,000 characters.
  &quot;trashTime&quot;: &quot;A String&quot;, # Output only. When this note was trashed. If `trashed`, the note is eventually deleted. If the note is not trashed, this field is not set (and the trashed field is `false`).
  &quot;trashed&quot;: True or False, # Output only. `true` if this note has been trashed. If trashed, the note is eventually deleted.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. When this note was last modified.
}

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

Returns:
  An object of the form:

    { # A single note.
  &quot;attachments&quot;: [ # Output only. The attachments attached to this note.
    { # An attachment to a note.
      &quot;mimeType&quot;: [ # The MIME types (IANA media types) in which the attachment is available.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # The resource name;
    },
  ],
  &quot;body&quot;: { # The content of the note. # The body of the note.
    &quot;list&quot;: { # The list of items for a single list note. # Used if this section&#x27;s content is a list.
      &quot;listItems&quot;: [ # The items in the list. The number of items must be less than 1,000.
        { # A single list item in a note&#x27;s list.
          &quot;checked&quot;: True or False, # Whether this item has been checked off or not.
          &quot;childListItems&quot;: [ # If set, list of list items nested under this list item. Only one level of nesting is allowed.
            # Object with schema name: ListItem
          ],
          &quot;text&quot;: { # The block of text for a single text section or list item. # The text of this item. Length must be less than 1,000 characters.
            &quot;text&quot;: &quot;A String&quot;, # The text of the note. The limits on this vary with the specific field using this type.
          },
        },
      ],
    },
    &quot;text&quot;: { # The block of text for a single text section or list item. # Used if this section&#x27;s content is a block of text. The length of the text content must be less than 20,000 characters.
      &quot;text&quot;: &quot;A String&quot;, # The text of the note. The limits on this vary with the specific field using this type.
    },
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. When this note was created.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of this note. See general note on identifiers in KeepService.
  &quot;permissions&quot;: [ # Output only. The list of permissions set on the note. Contains at least one entry for the note owner.
    { # A single permission on the note. Associates a `member` with a `role`.
      &quot;deleted&quot;: True or False, # Output only. Whether this member has been deleted. If the member is recovered, this value is set to false and the recovered member retains the role on the note.
      &quot;email&quot;: &quot;A String&quot;, # The email associated with the member. If set on create, the `email` field in the `User` or `Group` message must either be empty or match this field. On read, may be unset if the member does not have an associated email.
      &quot;family&quot;: { # Describes a single Google Family. # Output only. The Google Family to which this role applies.
      },
      &quot;group&quot;: { # Describes a single Group. # Output only. The group to which this role applies.
        &quot;email&quot;: &quot;A String&quot;, # The group email.
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name.
      &quot;role&quot;: &quot;A String&quot;, # The role granted by this permission. The role determines the entity’s ability to read, write, and share notes.
      &quot;user&quot;: { # Describes a single user. # Output only. The user to whom this role applies.
        &quot;email&quot;: &quot;A String&quot;, # The user&#x27;s email.
      },
    },
  ],
  &quot;title&quot;: &quot;A String&quot;, # The title of the note. Length must be less than 1,000 characters.
  &quot;trashTime&quot;: &quot;A String&quot;, # Output only. When this note was trashed. If `trashed`, the note is eventually deleted. If the note is not trashed, this field is not set (and the trashed field is `false`).
  &quot;trashed&quot;: True or False, # Output only. `true` if this note has been trashed. If trashed, the note is eventually deleted.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. When this note was last modified.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a note. Caller must have the `OWNER` role on the note to delete. Deleting a note removes the resource immediately and cannot be undone. Any collaborators will lose access to the note.

Args:
  name: string, Required. Name of the note to delete. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

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

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

Args:
  name: string, Required. Name of the resource. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A single note.
  &quot;attachments&quot;: [ # Output only. The attachments attached to this note.
    { # An attachment to a note.
      &quot;mimeType&quot;: [ # The MIME types (IANA media types) in which the attachment is available.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # The resource name;
    },
  ],
  &quot;body&quot;: { # The content of the note. # The body of the note.
    &quot;list&quot;: { # The list of items for a single list note. # Used if this section&#x27;s content is a list.
      &quot;listItems&quot;: [ # The items in the list. The number of items must be less than 1,000.
        { # A single list item in a note&#x27;s list.
          &quot;checked&quot;: True or False, # Whether this item has been checked off or not.
          &quot;childListItems&quot;: [ # If set, list of list items nested under this list item. Only one level of nesting is allowed.
            # Object with schema name: ListItem
          ],
          &quot;text&quot;: { # The block of text for a single text section or list item. # The text of this item. Length must be less than 1,000 characters.
            &quot;text&quot;: &quot;A String&quot;, # The text of the note. The limits on this vary with the specific field using this type.
          },
        },
      ],
    },
    &quot;text&quot;: { # The block of text for a single text section or list item. # Used if this section&#x27;s content is a block of text. The length of the text content must be less than 20,000 characters.
      &quot;text&quot;: &quot;A String&quot;, # The text of the note. The limits on this vary with the specific field using this type.
    },
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. When this note was created.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of this note. See general note on identifiers in KeepService.
  &quot;permissions&quot;: [ # Output only. The list of permissions set on the note. Contains at least one entry for the note owner.
    { # A single permission on the note. Associates a `member` with a `role`.
      &quot;deleted&quot;: True or False, # Output only. Whether this member has been deleted. If the member is recovered, this value is set to false and the recovered member retains the role on the note.
      &quot;email&quot;: &quot;A String&quot;, # The email associated with the member. If set on create, the `email` field in the `User` or `Group` message must either be empty or match this field. On read, may be unset if the member does not have an associated email.
      &quot;family&quot;: { # Describes a single Google Family. # Output only. The Google Family to which this role applies.
      },
      &quot;group&quot;: { # Describes a single Group. # Output only. The group to which this role applies.
        &quot;email&quot;: &quot;A String&quot;, # The group email.
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name.
      &quot;role&quot;: &quot;A String&quot;, # The role granted by this permission. The role determines the entity’s ability to read, write, and share notes.
      &quot;user&quot;: { # Describes a single user. # Output only. The user to whom this role applies.
        &quot;email&quot;: &quot;A String&quot;, # The user&#x27;s email.
      },
    },
  ],
  &quot;title&quot;: &quot;A String&quot;, # The title of the note. Length must be less than 1,000 characters.
  &quot;trashTime&quot;: &quot;A String&quot;, # Output only. When this note was trashed. If `trashed`, the note is eventually deleted. If the note is not trashed, this field is not set (and the trashed field is `false`).
  &quot;trashed&quot;: True or False, # Output only. `true` if this note has been trashed. If trashed, the note is eventually deleted.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. When this note was last modified.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists notes. Every list call returns a page of results with `page_size` as the upper bound of returned items. A `page_size` of zero allows the server to choose the upper bound. The ListNotesResponse contains at most `page_size` entries. If there are more things left to list, it provides a `next_page_token` value. (Page tokens are opaque values.) To get the next page of results, copy the result&#x27;s `next_page_token` into the next request&#x27;s `page_token`. Repeat until the `next_page_token` returned with a page of results is empty. ListNotes return consistent results in the face of concurrent changes, or signals that it cannot with an ABORTED error.

Args:
  filter: string, Filter for list results. If no filter is supplied, the `trashed` filter is applied by default. Valid fields to filter by are: `create_time`, `update_time`, `trash_time`, and `trashed`. Filter syntax follows the [Google AIP filtering spec](https://aip.dev/160).
  pageSize: integer, The maximum number of results to return.
  pageToken: string, The previous page&#x27;s `next_page_token` field.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response when listing a page of notes.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Next page&#x27;s `page_token` field.
  &quot;notes&quot;: [ # A page of notes.
    { # A single note.
      &quot;attachments&quot;: [ # Output only. The attachments attached to this note.
        { # An attachment to a note.
          &quot;mimeType&quot;: [ # The MIME types (IANA media types) in which the attachment is available.
            &quot;A String&quot;,
          ],
          &quot;name&quot;: &quot;A String&quot;, # The resource name;
        },
      ],
      &quot;body&quot;: { # The content of the note. # The body of the note.
        &quot;list&quot;: { # The list of items for a single list note. # Used if this section&#x27;s content is a list.
          &quot;listItems&quot;: [ # The items in the list. The number of items must be less than 1,000.
            { # A single list item in a note&#x27;s list.
              &quot;checked&quot;: True or False, # Whether this item has been checked off or not.
              &quot;childListItems&quot;: [ # If set, list of list items nested under this list item. Only one level of nesting is allowed.
                # Object with schema name: ListItem
              ],
              &quot;text&quot;: { # The block of text for a single text section or list item. # The text of this item. Length must be less than 1,000 characters.
                &quot;text&quot;: &quot;A String&quot;, # The text of the note. The limits on this vary with the specific field using this type.
              },
            },
          ],
        },
        &quot;text&quot;: { # The block of text for a single text section or list item. # Used if this section&#x27;s content is a block of text. The length of the text content must be less than 20,000 characters.
          &quot;text&quot;: &quot;A String&quot;, # The text of the note. The limits on this vary with the specific field using this type.
        },
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. When this note was created.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of this note. See general note on identifiers in KeepService.
      &quot;permissions&quot;: [ # Output only. The list of permissions set on the note. Contains at least one entry for the note owner.
        { # A single permission on the note. Associates a `member` with a `role`.
          &quot;deleted&quot;: True or False, # Output only. Whether this member has been deleted. If the member is recovered, this value is set to false and the recovered member retains the role on the note.
          &quot;email&quot;: &quot;A String&quot;, # The email associated with the member. If set on create, the `email` field in the `User` or `Group` message must either be empty or match this field. On read, may be unset if the member does not have an associated email.
          &quot;family&quot;: { # Describes a single Google Family. # Output only. The Google Family to which this role applies.
          },
          &quot;group&quot;: { # Describes a single Group. # Output only. The group to which this role applies.
            &quot;email&quot;: &quot;A String&quot;, # The group email.
          },
          &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name.
          &quot;role&quot;: &quot;A String&quot;, # The role granted by this permission. The role determines the entity’s ability to read, write, and share notes.
          &quot;user&quot;: { # Describes a single user. # Output only. The user to whom this role applies.
            &quot;email&quot;: &quot;A String&quot;, # The user&#x27;s email.
          },
        },
      ],
      &quot;title&quot;: &quot;A String&quot;, # The title of the note. Length must be less than 1,000 characters.
      &quot;trashTime&quot;: &quot;A String&quot;, # Output only. When this note was trashed. If `trashed`, the note is eventually deleted. If the note is not trashed, this field is not set (and the trashed field is `false`).
      &quot;trashed&quot;: True or False, # Output only. `true` if this note has been trashed. If trashed, the note is eventually deleted.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. When this note was last modified.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</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>

</body></html>