<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="drive_v2.html">Drive API</a> . <a href="drive_v2.children.html">children</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(folderId, childId)</a></code></p>
<p class="firstline">Removes a child from a folder.</p>
<p class="toc_element">
  <code><a href="#get">get(folderId, childId)</a></code></p>
<p class="firstline">Gets a specific child reference.</p>
<p class="toc_element">
  <code><a href="#insert">insert(folderId, body)</a></code></p>
<p class="firstline">Inserts a file into a folder.</p>
<p class="toc_element">
  <code><a href="#list">list(folderId, q=None, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Lists a folder's children.</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>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(folderId, childId)</code>
  <pre>Removes a child from a folder.

Args:
  folderId: string, The ID of the folder. (required)
  childId: string, The ID of the child. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(folderId, childId)</code>
  <pre>Gets a specific child reference.

Args:
  folderId: string, The ID of the folder. (required)
  childId: string, The ID of the child. (required)

Returns:
  An object of the form:

    { # A reference to a folder's child.
      "kind": "drive#childReference", # This is always drive#childReference.
      "childLink": "A String", # A link to the child.
      "id": "A String", # The ID of the child.
      "selfLink": "A String", # A link back to this reference.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(folderId, body)</code>
  <pre>Inserts a file into a folder.

Args:
  folderId: string, The ID of the folder. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A reference to a folder's child.
    "kind": "drive#childReference", # This is always drive#childReference.
    "childLink": "A String", # A link to the child.
    "id": "A String", # The ID of the child.
    "selfLink": "A String", # A link back to this reference.
  }


Returns:
  An object of the form:

    { # A reference to a folder's child.
      "kind": "drive#childReference", # This is always drive#childReference.
      "childLink": "A String", # A link to the child.
      "id": "A String", # The ID of the child.
      "selfLink": "A String", # A link back to this reference.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(folderId, q=None, pageToken=None, maxResults=None)</code>
  <pre>Lists a folder's children.

Args:
  folderId: string, The ID of the folder. (required)
  q: string, Query string for searching children.
  pageToken: string, Page token for children.
  maxResults: integer, Maximum number of children to return.

Returns:
  An object of the form:

    { # A list of children of a file.
    "nextPageToken": "A String", # The page token for the next page of children.
    "kind": "drive#childList", # This is always drive#childList.
    "items": [ # The actual list of children.
      { # A reference to a folder's child.
          "kind": "drive#childReference", # This is always drive#childReference.
          "childLink": "A String", # A link to the child.
          "id": "A String", # The ID of the child.
          "selfLink": "A String", # A link back to this reference.
        },
    ],
    "nextLink": "A String", # A link to the next page of children.
    "etag": "A String", # The ETag of the list.
    "selfLink": "A String", # A link back to this list.
  }</pre>
</div>

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

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

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

</body></html>