<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_v1beta2.html">Genomics API</a> . <a href="genomics_v1beta2.references.html">references</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="genomics_v1beta2.references.bases.html">bases()</a></code>
</p>
<p class="firstline">Returns the bases Resource.</p>

<p class="toc_element">
  <code><a href="#get">get(referenceId)</a></code></p>
<p class="firstline">Gets a reference.</p>
<p class="toc_element">
  <code><a href="#search">search(body)</a></code></p>
<p class="firstline">Searches for references which match the given criteria.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(referenceId)</code>
  <pre>Gets a reference.

Implements GlobalAllianceApi.getReference.

Args:
  referenceId: string, The ID of the reference. (required)

Returns:
  An object of the form:

    { # A reference is a canonical assembled DNA sequence, intended to act as a reference coordinate space for other genomic annotations. A single reference might represent the human chromosome 1 or mitochandrial DNA, for instance. A reference belongs to one or more reference sets.
    "name": "A String", # The name of this reference, for example 22.
    "sourceURI": "A String", # The URI from which the sequence was obtained. Typically specifies a FASTA format file.
    "sourceAccessions": [ # All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally with a version number, for example GCF_000001405.26.
      "A String",
    ],
    "length": "A String", # The length of this reference's sequence.
    "md5checksum": "A String", # MD5 of the upper-case sequence excluding all whitespace characters (this is equivalent to SQ:M5 in SAM). This value is represented in lower case hexadecimal format.
    "id": "A String", # The Google generated immutable ID of the reference.
    "ncbiTaxonId": 42, # ID from http://www.ncbi.nlm.nih.gov/taxonomy. For example, 9606 for human.
  }</pre>
</div>

<div class="method">
    <code class="details" id="search">search(body)</code>
  <pre>Searches for references which match the given criteria.

Implements GlobalAllianceApi.searchReferences.

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

{
    "md5checksums": [ # If present, return references for which the md5checksum matches. See Reference.md5checksum for construction details.
      "A String",
    ],
    "pageToken": "A 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.
    "referenceSetId": "A String", # If present, return only references which belong to this reference set.
    "accessions": [ # If present, return references for which the accession matches this string. Best to give a version number, for example GCF_000001405.26. If only the main accession number is given then all records with that main accession will be returned, whichever version. Note that different versions will have different sequences.
      "A String",
    ],
    "pageSize": 42, # The maximum number of results to return in a single page. If unspecified, defaults to 1024. The maximum value is 4096.
  }


Returns:
  An object of the form:

    {
    "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.
    "references": [ # The matching references.
      { # A reference is a canonical assembled DNA sequence, intended to act as a reference coordinate space for other genomic annotations. A single reference might represent the human chromosome 1 or mitochandrial DNA, for instance. A reference belongs to one or more reference sets.
        "name": "A String", # The name of this reference, for example 22.
        "sourceURI": "A String", # The URI from which the sequence was obtained. Typically specifies a FASTA format file.
        "sourceAccessions": [ # All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally with a version number, for example GCF_000001405.26.
          "A String",
        ],
        "length": "A String", # The length of this reference's sequence.
        "md5checksum": "A String", # MD5 of the upper-case sequence excluding all whitespace characters (this is equivalent to SQ:M5 in SAM). This value is represented in lower case hexadecimal format.
        "id": "A String", # The Google generated immutable ID of the reference.
        "ncbiTaxonId": 42, # ID from http://www.ncbi.nlm.nih.gov/taxonomy. For example, 9606 for human.
      },
    ],
  }</pre>
</div>

</body></html>