<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="genomics_v1beta.html">Genomics API</a> . <a href="genomics_v1beta.datasets.html">datasets</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(body)</a></code></p>
<p class="firstline">Creates a new dataset.</p>
<p class="toc_element">
  <code><a href="#delete">delete(datasetId)</a></code></p>
<p class="firstline">Deletes a dataset.</p>
<p class="toc_element">
  <code><a href="#get">get(datasetId)</a></code></p>
<p class="firstline">Gets a dataset by ID.</p>
<p class="toc_element">
  <code><a href="#list">list(pageToken=None, maxResults=None, projectId=None)</a></code></p>
<p class="firstline">Lists all datasets.</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="#patch">patch(datasetId, body)</a></code></p>
<p class="firstline">Updates a dataset. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#undelete">undelete(datasetId)</a></code></p>
<p class="firstline">Undeletes a dataset by restoring a dataset which was deleted via this API. This operation is only possible for a week after the deletion occurred.</p>
<p class="toc_element">
  <code><a href="#update">update(datasetId, body)</a></code></p>
<p class="firstline">Updates a dataset.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(body)</code>
  <pre>Creates a new dataset.

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

{ # A Dataset is a collection of genomic data.
  "projectId": "A String", # The Google Developers Console project number that this dataset belongs to.
  "isPublic": True or False, # Flag indicating whether or not a dataset is publicly viewable. If a dataset is not public, it inherits viewing permissions from its project.
  "id": "A String", # The Google generated ID of the dataset, immutable.
  "name": "A String", # The dataset name.
}


Returns:
  An object of the form:

    { # A Dataset is a collection of genomic data.
    "projectId": "A String", # The Google Developers Console project number that this dataset belongs to.
    "isPublic": True or False, # Flag indicating whether or not a dataset is publicly viewable. If a dataset is not public, it inherits viewing permissions from its project.
    "id": "A String", # The Google generated ID of the dataset, immutable.
    "name": "A String", # The dataset name.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(datasetId)</code>
  <pre>Deletes a dataset.

Args:
  datasetId: string, The ID of the dataset to be deleted. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(datasetId)</code>
  <pre>Gets a dataset by ID.

Args:
  datasetId: string, The ID of the dataset. (required)

Returns:
  An object of the form:

    { # A Dataset is a collection of genomic data.
    "projectId": "A String", # The Google Developers Console project number that this dataset belongs to.
    "isPublic": True or False, # Flag indicating whether or not a dataset is publicly viewable. If a dataset is not public, it inherits viewing permissions from its project.
    "id": "A String", # The Google generated ID of the dataset, immutable.
    "name": "A String", # The dataset name.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(pageToken=None, maxResults=None, projectId=None)</code>
  <pre>Lists all datasets.

Args:
  pageToken: string, The continuation token, which is used to page through large result sets. To get the next page of results, set this parameter to the value of nextPageToken from the previous response.
  maxResults: string, The maximum number of results returned by this request.
  projectId: string, Only return datasets which belong to this Google Developers Console project. Only accepts project numbers. Returns all public projects if no project number is specified.

Returns:
  An object of the form:

    { # The dataset list response.
    "nextPageToken": "A String", # The continuation token, which is used to page through large result sets. Provide this value in a subsequent request to return the next page of results. This field will be empty if there aren't any additional results.
    "datasets": [ # The list of matching Datasets.
      { # A Dataset is a collection of genomic data.
        "projectId": "A String", # The Google Developers Console project number that this dataset belongs to.
        "isPublic": True or False, # Flag indicating whether or not a dataset is publicly viewable. If a dataset is not public, it inherits viewing permissions from its project.
        "id": "A String", # The Google generated ID of the dataset, immutable.
        "name": "A String", # The dataset name.
      },
    ],
  }</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>

<div class="method">
    <code class="details" id="patch">patch(datasetId, body)</code>
  <pre>Updates a dataset. This method supports patch semantics.

Args:
  datasetId: string, The ID of the dataset to be updated. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A Dataset is a collection of genomic data.
  "projectId": "A String", # The Google Developers Console project number that this dataset belongs to.
  "isPublic": True or False, # Flag indicating whether or not a dataset is publicly viewable. If a dataset is not public, it inherits viewing permissions from its project.
  "id": "A String", # The Google generated ID of the dataset, immutable.
  "name": "A String", # The dataset name.
}


Returns:
  An object of the form:

    { # A Dataset is a collection of genomic data.
    "projectId": "A String", # The Google Developers Console project number that this dataset belongs to.
    "isPublic": True or False, # Flag indicating whether or not a dataset is publicly viewable. If a dataset is not public, it inherits viewing permissions from its project.
    "id": "A String", # The Google generated ID of the dataset, immutable.
    "name": "A String", # The dataset name.
  }</pre>
</div>

<div class="method">
    <code class="details" id="undelete">undelete(datasetId)</code>
  <pre>Undeletes a dataset by restoring a dataset which was deleted via this API. This operation is only possible for a week after the deletion occurred.

Args:
  datasetId: string, The ID of the dataset to be undeleted. (required)

Returns:
  An object of the form:

    { # A Dataset is a collection of genomic data.
    "projectId": "A String", # The Google Developers Console project number that this dataset belongs to.
    "isPublic": True or False, # Flag indicating whether or not a dataset is publicly viewable. If a dataset is not public, it inherits viewing permissions from its project.
    "id": "A String", # The Google generated ID of the dataset, immutable.
    "name": "A String", # The dataset name.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(datasetId, body)</code>
  <pre>Updates a dataset.

Args:
  datasetId: string, The ID of the dataset to be updated. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A Dataset is a collection of genomic data.
  "projectId": "A String", # The Google Developers Console project number that this dataset belongs to.
  "isPublic": True or False, # Flag indicating whether or not a dataset is publicly viewable. If a dataset is not public, it inherits viewing permissions from its project.
  "id": "A String", # The Google generated ID of the dataset, immutable.
  "name": "A String", # The dataset name.
}


Returns:
  An object of the form:

    { # A Dataset is a collection of genomic data.
    "projectId": "A String", # The Google Developers Console project number that this dataset belongs to.
    "isPublic": True or False, # Flag indicating whether or not a dataset is publicly viewable. If a dataset is not public, it inherits viewing permissions from its project.
    "id": "A String", # The Google generated ID of the dataset, immutable.
    "name": "A String", # The dataset name.
  }</pre>
</div>

</body></html>