<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Change Log &#8212; v2.1.0-beta</title>
    
    <link rel="stylesheet" href="_static/dataone.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    './',
        VERSION:     '2.1.0-beta',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true,
        SOURCELINK_SUFFIX: '.txt'
      };
    </script>
    <script type="text/javascript" src="_static/mathjax_pre.js"></script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <script type="text/javascript" src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML"></script>
    <script type="text/javascript" src="_static/sidebar.js"></script>
    <link rel="author" title="About these documents" href="about.html" />
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" />
    <link rel="prev" title="Glossary" href="glossary.html" />
   
  
  <link media="only screen and (max-device-width: 480px)" href="_static/small_dataone.css" type= "text/css" rel="stylesheet" />

  </head>
  <body role="document">
  
    <div class="version_notice">
      <p>
      <span class='bold'>Warning:</span> These documents are under active 
      development and subject to change (version 2.1.0-beta).<br />
      The latest release documents are at:
      <a href="https://purl.dataone.org/architecture">https://purl.dataone.org/architecture</a>
      </p>
    </div>

    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="glossary.html" title="Glossary"
             accesskey="P">previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="index.html"></a> &#187;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="change-log">
<h1>Change Log<a class="headerlink" href="#change-log" title="Permalink to this headline">¶</a></h1>
<div class="section" id="version-1-2-clarification-edits">
<h2>2014-02-12: Version 1.2. Clarification edits<a class="headerlink" href="#version-1-2-clarification-edits" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Many edits to clarify definitions such as &#8220;archive&#8221;.</li>
<li>Revised introductory text to APIs and the overall system</li>
</ul>
</div>
<div class="section" id="version-1-2-minor-edits">
<h2>2013-10-17: Version 1.2. Minor edits<a class="headerlink" href="#version-1-2-minor-edits" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Added language indicating restricted access to log information by public user</li>
<li>New version of plantuml.jar</li>
</ul>
</div>
<div class="section" id="version-1-1-clarifying-count-parameter-for-slicing">
<h2>2012-10-09: Version 1.1. Clarifying <em>count</em> parameter for slicing<a class="headerlink" href="#version-1-1-clarifying-count-parameter-for-slicing" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>No functional changes were introduced.</li>
<li>listObjects, listSubjects, getLogRecords descriptions were updated</li>
</ul>
</div>
<div class="section" id="version-1-1-adding-mnquery-api">
<h2>2012-09-28: Version 1.1. Adding MNQuery API<a class="headerlink" href="#version-1-1-adding-mnquery-api" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Added MNQuery API as an optional Tier 1 API with the same method signatures as
the CNRead.Query* method definitions.</li>
</ul>
</div>
<div class="section" id="version-1-1-revising-proposed-query-api">
<h2>2012-09-25: Version 1.1. Revising proposed Query API<a class="headerlink" href="#version-1-1-revising-proposed-query-api" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Updated proposed search API following review and discussion. Including draft
changes to 1.1 dataoneTypes.xsd</li>
<li>Changed search2 to query</li>
<li>Changed listSearchFields to getQueryEngineDescription</li>
<li>Changed listSearchEngines to listQueryEngines</li>
<li>2012-09-06: Version 1.0. Removed ambiguous exception serialization info</li>
</ul>
</div>
<div class="section" id="version-1-1-augmenting-search-api">
<h2>2012-08-20: Version 1.1. Augmenting Search API<a class="headerlink" href="#version-1-1-augmenting-search-api" title="Permalink to this headline">¶</a></h2>
<p>DRAFT edits for review:</p>
<ul class="simple">
<li>Added method search2 which enables return of arbitrary structure as
determined by the selected search engine.</li>
<li>Added method listSearchFields which returns a list of fields that can be
searched using a specified search engine.</li>
<li>Added method listSearchEngines which returns a list of search engines
available.</li>
</ul>
</div>
<div class="section" id="version-1-0-correction-to-uris-in-resource-maps">
<h2>2012-05-31: Version 1.0, Correction to URIs in Resource Maps<a class="headerlink" href="#version-1-0-correction-to-uris-in-resource-maps" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Corrected URI constructs in the resource map data package documents to use
resolve rather than getObject URIs so that clients can take advantage of the
ObjectLocationList or HTTP status 302 redirect.</li>
</ul>
</div>
<div class="section" id="version-1-0-methodcrossreference-xls">
<h2>2012-05-02: Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#version-1-0-methodcrossreference-xls" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Moved MN systemMetadataChanged from MNStorage API to MNAuthorization API so
that the method appears in Tier 2 operations.</li>
</ul>
</div>
<div class="section" id="id1">
<h2>2012-05-01: Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>The MN method <em>getReplica</em> was incorrectly located in Tier 4, effectively
preventing any MN implementation except Tier 4 nodes from acting as
replication sources. This has been corrected, with the method moved to the
MNRead Tier1 API. The method description was updated accordingly.</li>
<li>Existing MNStorage.delete renamed to MNStorage.archive, better reflecting its
action.</li>
<li>New MNStorage.delete operation added for Tier3. This operation does actually
delete the content from the node, removing it from DataONE services (the node
may choose to also delete the bytes)</li>
<li>New CNCore.archive operation performs the same action as MN.archive, except
the operation triggers a change notification to all nodes containing the
object.</li>
<li>New CNCore.delete operation intended to be used only by administrators when
there is a requirement to remove an object from the entire DataONE system.
Memory of the identifier persists, preventing its reuse.</li>
</ul>
</div>
<div class="section" id="id2">
<h2>2012-03-26: Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Corrected typo in REST description for listObjects which had lowercase
<em>formatid</em>, corrected to <em>formatId</em>.</li>
<li>Corrected order of parameters for getLogRecords, moving <em>start</em> and <em>count</em> to
the end to be consistent with other method signatures.</li>
</ul>
</div>
<div class="section" id="id3">
<h2>2012-03-26: Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><a class="reference internal" href="apis/MN_APIs.html#MNCore.getLogRecords" title="MNCore.getLogRecords"><code class="xref py py-func docutils literal"><span class="pre">MNCore.getLogRecords()</span></code></a> updated &#8216;pid&#8217; parameter to string and renamed to
&#8216;pidFilter&#8217;</li>
<li><a class="reference internal" href="apis/CN_APIs.html#CNCore.getLogRecords" title="CNCore.getLogRecords"><code class="xref py py-func docutils literal"><span class="pre">CNCore.getLogRecords()</span></code></a> updated &#8216;pid&#8217; parameter to string and renamed to
&#8216;pidFilter&#8217;</li>
</ul>
</div>
<div class="section" id="id4">
<h2>2012-03-25: Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><a class="reference internal" href="apis/MN_APIs.html#MNCore.getLogRecords" title="MNCore.getLogRecords"><code class="xref py py-func docutils literal"><span class="pre">MNCore.getLogRecords()</span></code></a> added an optional parameter <em>pid</em> that specifies
the prefix of the pid for matching on log records. Support for this parameter
is optional, and a MN implementation may silently ignore if present in the
request and the node is unable to support the pid prefix filter.</li>
<li><a class="reference internal" href="apis/CN_APIs.html#CNCore.getLogRecords" title="CNCore.getLogRecords"><code class="xref py py-func docutils literal"><span class="pre">CNCore.getLogRecords()</span></code></a> added an optional parameter <em>pid</em> that specifies
the prefix of the pid for matching on log records. Support for this parameter
is currently optional for CNs, and may be ignored if present in the request.</li>
<li><code class="xref py py-func docutils literal"><span class="pre">MNStorage.GenerateIdentifier()</span></code> new method added to the MNStorage API.
This signature mirrors the CNCore.GenerateIdentifier method and is made
available on Member Nodes as they may choose to have an organizational
association with an identifier service.</li>
</ul>
</div>
<div class="section" id="id5">
<h2>2012-02-27: Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><a class="reference internal" href="apis/CN_APIs.html#CNRead.search" title="CNRead.search"><code class="xref py py-func docutils literal"><span class="pre">CNRead.search()</span></code></a> clarified how to specify path and query separators in the
value of parameter &#8216;query.&#8217;  Change xmit type of parameter &#8216;query&#8217; to &#8216;path&#8217;,
since it contains both path and query (to simplify client conformity testing)</li>
</ul>
</div>
<div class="section" id="dataonetypes-xsd">
<h2>2012-02-24 : dataoneTypes.xsd<a class="headerlink" href="#dataonetypes-xsd" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Correction to the contrabEntry definition</li>
<li>Several documentation only changes</li>
</ul>
</div>
<div class="section" id="id6">
<h2>2012-02-17 : Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><a class="reference internal" href="apis/CN_APIs.html#CNRead.search" title="CNRead.search"><code class="xref py py-func docutils literal"><span class="pre">CNRead.search()</span></code></a> clarified that queryType is specified as a URL path parameter
and the remainder of the URL (path and query) is passed to the respective
search engine as indicated by the value of queryType.</li>
</ul>
</div>
<div class="section" id="id7">
<h2>2012-02-15 : Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><a class="reference internal" href="apis/CN_APIs.html#CNCore.hasReservation" title="CNCore.hasReservation"><code class="xref py py-func docutils literal"><span class="pre">CNCore.hasReservation()</span></code></a> REST URL changed a POST message to <code class="docutils literal"><span class="pre">GET</span>
<span class="pre">/reserve/{pid}?subject={subject}</span></code></li>
</ul>
</div>
<div class="section" id="id8">
<h2>2012-02-02 : Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><a class="reference internal" href="apis/CN_APIs.html#CNIdentity.updateAccount" title="CNIdentity.updateAccount"><code class="xref py py-func docutils literal"><span class="pre">CNIdentity.updateAccount()</span></code></a> REST URL changed to <code class="docutils literal"><span class="pre">PUT</span> <span class="pre">/accounts/{subject}</span></code></li>
<li><a class="reference internal" href="apis/CN_APIs.html#CNIdentity.verifyAccount" title="CNIdentity.verifyAccount"><code class="xref py py-func docutils literal"><span class="pre">CNIdentity.verifyAccount()</span></code></a> REST URL changed to <code class="docutils literal"><span class="pre">PUT</span> <span class="pre">/accounts/verification/{subject}</span></code></li>
<li>IMPORTANT: Encoding practice for simple types transmitted as part of a MIME
multipart/mixed message has been changed to simple string encoding, not XML
encoding. See <a class="reference internal" href="apis/rest_comms.html"><span class="doc">REST Interface Overview</span></a>.</li>
</ul>
</div>
<div class="section" id="id9">
<h2>2012-02-01 : Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Updated description of ping() to emphasize that the timestamp in the response
is transmitted in the HTTP header.</li>
<li>Response type for <a class="reference internal" href="apis/CN_APIs.html#CNIdentity.getSubjectInfo" title="CNIdentity.getSubjectInfo"><code class="xref py py-func docutils literal"><span class="pre">CNIdentity.getSubjectInfo()</span></code></a> and
<a class="reference internal" href="apis/CN_APIs.html#CNIdentity.listSubjects" title="CNIdentity.listSubjects"><code class="xref py py-func docutils literal"><span class="pre">CNIdentity.listSubjects()</span></code></a> changed from <a class="reference internal" href="apis/Types.html#Types.SubjectList" title="Types.SubjectList"><code class="xref py py-class docutils literal"><span class="pre">Types.SubjectList</span></code></a> to
<a class="reference internal" href="apis/Types.html#Types.SubjectInfo" title="Types.SubjectInfo"><code class="xref py py-class docutils literal"><span class="pre">Types.SubjectInfo</span></code></a></li>
<li>Response for <code class="xref py py-func docutils literal"><span class="pre">MNReplication.getReplica()</span></code> corrected in the documentation
to indicate response is an octetStream of bytes that represent the requested
object.</li>
<li>Signature of <a class="reference internal" href="apis/MN_APIs.html#MNStorage.create" title="MNStorage.create"><code class="xref py py-func docutils literal"><span class="pre">MNStorage.create()</span></code></a><ul>
<li>pid removed from URL, it should be a param in the message body.</li>
</ul>
</li>
<li>Signature of <a class="reference internal" href="apis/CN_APIs.html#CNCore.create" title="CNCore.create"><code class="xref py py-func docutils literal"><span class="pre">CNCore.create()</span></code></a><ul>
<li>pid removed from URL, it should be a param in the message body.</li>
</ul>
</li>
<li>Signature of <a class="reference internal" href="apis/CN_APIs.html#CNIdentity.verifyAccount" title="CNIdentity.verifyAccount"><code class="xref py py-func docutils literal"><span class="pre">CNIdentity.verifyAccount()</span></code></a><ul>
<li>subject removed from the URL, it should be a param in the message body.</li>
</ul>
</li>
<li>Signature of <a class="reference internal" href="apis/CN_APIs.html#CNIdentity.requestMapIdentity" title="CNIdentity.requestMapIdentity"><code class="xref py py-func docutils literal"><span class="pre">CNIdentity.requestMapIdentity()</span></code></a><ul>
<li>subject removed from URL, it should be a param in the message body.</li>
</ul>
</li>
<li>Signature of <a class="reference internal" href="apis/CN_APIs.html#CNCore.registerSystemMetadata" title="CNCore.registerSystemMetadata"><code class="xref py py-func docutils literal"><span class="pre">CNCore.registerSystemMetadata()</span></code></a><ul>
<li>pid removed from URL, should be a param in the message body</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="id10">
<h2>2012-01-20 : Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Switched from SubjectInfo to just Subject for <a class="reference internal" href="apis/CN_APIs.html#CNCore.hasReservation" title="CNCore.hasReservation"><code class="xref py py-func docutils literal"><span class="pre">CNCore.hasReservation()</span></code></a> to
remove requirement for a Member Node call to the CN to support create
operations.</li>
<li>Added InvalidToken exception to <a class="reference internal" href="apis/MN_APIs.html#MNReplication.replicate" title="MNReplication.replicate"><code class="xref py py-func docutils literal"><span class="pre">MNReplication.replicate()</span></code></a>,
<a class="reference internal" href="apis/CN_APIs.html#CNCore.registerSystemMetadata" title="CNCore.registerSystemMetadata"><code class="xref py py-func docutils literal"><span class="pre">CNCore.registerSystemMetadata()</span></code></a>, <a class="reference internal" href="apis/CN_APIs.html#CNIdentity.registerAccount" title="CNIdentity.registerAccount"><code class="xref py py-func docutils literal"><span class="pre">CNIdentity.registerAccount()</span></code></a>,
<a class="reference internal" href="apis/CN_APIs.html#CNIdentity.updateAccount" title="CNIdentity.updateAccount"><code class="xref py py-func docutils literal"><span class="pre">CNIdentity.updateAccount()</span></code></a>, <a class="reference internal" href="apis/CN_APIs.html#CNIdentity.getPendingMapIdentity" title="CNIdentity.getPendingMapIdentity"><code class="xref py py-func docutils literal"><span class="pre">CNIdentity.getPendingMapIdentity()</span></code></a>,
<a class="reference internal" href="apis/CN_APIs.html#CNRegister.register" title="CNRegister.register"><code class="xref py py-func docutils literal"><span class="pre">CNRegister.register()</span></code></a>.</li>
</ul>
</div>
<div class="section" id="id11">
<h2>2012-01-19 : Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>The signature for <a class="reference internal" href="apis/CN_APIs.html#CNCore.hasReservation" title="CNCore.hasReservation"><code class="xref py py-func docutils literal"><span class="pre">CNCore.hasReservation()</span></code></a> has been changed to include a
<a class="reference internal" href="apis/Types.html#Types.SubjectInfo" title="Types.SubjectInfo"><code class="xref py py-class docutils literal"><span class="pre">Types.SubjectInfo</span></code></a> field to identify the principal who originally made
the reservation request.</li>
<li>Request method and endpoint for <a class="reference internal" href="apis/CN_APIs.html#CNCore.hasReservation" title="CNCore.hasReservation"><code class="xref py py-func docutils literal"><span class="pre">CNCore.hasReservation()</span></code></a> was changed to
POST and <code class="docutils literal"><span class="pre">/hasReservation</span></code> respectively.</li>
</ul>
</div>
<div class="section" id="id12">
<h2>2012-01-12 : Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id12" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Updated <a class="reference internal" href="apis/CN_APIs.html#CNRead.resolve" title="CNRead.resolve"><code class="xref py py-func docutils literal"><span class="pre">CNRead.resolve()</span></code></a> to return a HTTP 303 See Other response on
success</li>
<li>Added <a class="reference internal" href="apis/CN_APIs.html#CNCore.setObsoletedBy" title="CNCore.setObsoletedBy"><code class="xref py py-func docutils literal"><span class="pre">CNCore.setObsoletedBy()</span></code></a> to update the obsoletedBy information for
an object. Note that the proposed endpoint may change pending discussion.</li>
<li>Added <a class="reference internal" href="apis/CN_APIs.html#CNReplication.deleteReplicationMetadata" title="CNReplication.deleteReplicationMetadata"><code class="xref py py-func docutils literal"><span class="pre">CNReplication.deleteReplicationMetadata()</span></code></a> to remove the replica
metadata for a particular node for an object. Only callable by CNs</li>
</ul>
</div>
<div class="section" id="id13">
<h2>2012-01-10 : Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id13" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>updated method descriptions for updateReplicaMetadata</li>
<li>updated method descriptions for updateNodeCapabilities</li>
<li>removed VersionMismatch from setReplicationStatus method</li>
</ul>
</div>
<div class="section" id="id14">
<h2>2012-01-03 : Version 1.0, MethodCrossReference.xls<a class="headerlink" href="#id14" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>removed the deprecated assertRelation method</li>
</ul>
</div>
<div class="section" id="version-1-0-dataonetypes-xsd">
<h2>2011-12-19 : Version 1.0, dataoneTypes.xsd<a class="headerlink" href="#version-1-0-dataonetypes-xsd" title="Permalink to this headline">¶</a></h2>
<ul>
<li><p class="first">replaced tabs with &#8221;  &#8220;</p>
</li>
<li><p class="first">Event names in description changed to same case as enumerated values</p>
</li>
<li><p class="first">various: minor formatting changes for rendering in architecture docs.</p>
</li>
<li><p class="first">Added root elements for AccessRule, LogEntry, NodeReplicationPolicy,
ObjectInfo, Service, Services, Schedule, Synchronization,
NodeReplicationPolicy, ServiceMethodRestriction.</p>
<p>AccessRule, LogEntry, NodeReplicationPolicy, ObjectInfo, Service, Services, Schedule, Synchronization, NodeReplicationPolicy, ServiceMethodRestriction.</p>
</li>
</ul>
<p>2011-12-19 : Version 1.0</p>
<ul class="simple">
<li>Altered MNCore and CNCore ping() to use the HTTP Date header field for
transmitting the timestamp. Removed requirement for timestamp appearing in
response body.</li>
</ul>
<p>2011-12-14 : Version 1.0</p>
<ul class="simple">
<li>Changed MNCore.ping() to return a DateTime string</li>
<li>Added CNCore.ping()</li>
</ul>
</div>
<div class="section" id="version-1-0">
<h2>2011-12-13 : Version 1.0<a class="headerlink" href="#version-1-0" title="Permalink to this headline">¶</a></h2>
<blockquote>
<div><ul class="simple">
<li>Updated MethodCrossReference.xls to reflect API changes for CN.setReplicationStatus()</li>
<li>Updated MethodCrossReference.xls to reflect API changes for CN.isNodeAuthorized()</li>
</ul>
</div></blockquote>
</div>
<div class="section" id="id15">
<h2>2011-12-12 : Version 1.0<a class="headerlink" href="#id15" title="Permalink to this headline">¶</a></h2>
<p>Changes to dataoneTypes.xsd:</p>
<blockquote>
<div><ul class="simple">
<li>Added ChecksumAlgorithmList</li>
<li>Limited valid checksums to SHA-1 and MD5</li>
<li>Added ReplicationStatus.FAILED to the enumeration</li>
<li>Added a new SimpleType: NonEmptyNoWhitespaceString800, used to restrict identifiers</li>
<li>Removed Permission.REPLICATE</li>
<li>Changed SystemMetadata to make the following fields optional: submitter, dateUploaded,
dateSystemMetadataModified, serialVersion. However, an MN or CN must set them.</li>
<li>Created Types.CrontabEntrySeconds to restrict the seconds field in a Schedule</li>
<li>Changed documentation for SystemMetadata.authoritativeMemberNode</li>
<li>Added a new NodeReplicationPolicy type, to be used as an optional structure in Node</li>
<li>Removed MonitorInfo and MonitorList types - deprecated.</li>
<li>Updated documentation for the Node type.</li>
</ul>
</div></blockquote>
<div class="section" id="mn-api">
<h3>MN API<a class="headerlink" href="#mn-api" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>MNCore.getLogRecords and MNRead.listObjects - the time comparison range has
been changed. The upper bound is now exclusive, i.e. <code class="docutils literal"><span class="pre">fromDate</span> <span class="pre">&lt;=</span> <span class="pre">date</span> <span class="pre">&lt;</span>
<span class="pre">toDate</span></code></li>
<li>MNRead.listObjects - the name of the date range comparison properties has been
changed from &#8220;startTime&#8221; and &#8220;endTime&#8221; to &#8220;fromDate&#8221; and &#8220;toDate&#8221;
respectively.</li>
<li>MNRead.get - added InsufficientResources exception as possible response. This
may be raised for example, if memory, CPU, or bandwidth use is too limited to
respond to the request.</li>
<li>MNCore.ping - added description for why InsufficientResources may be raised.</li>
</ul>
</div>
<div class="section" id="cn-api">
<h3>CN API<a class="headerlink" href="#cn-api" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>CNCore.getLogRecords and CNRead.listObjects - the time comparison range has
been changed. The upper bound is now exclusive, i.e. <code class="docutils literal"><span class="pre">fromDate</span> <span class="pre">&lt;=</span> <span class="pre">date</span> <span class="pre">&lt;</span>
<span class="pre">toDate</span></code></li>
<li>CNRead.listObjects - the name of the date range comparison properties has been
changed from &#8220;startTime&#8221; and &#8220;endTime&#8221; to &#8220;fromDate&#8221; and &#8220;toDate&#8221;
respectively.</li>
<li>CNIdentity.getSubjectInfo, added InvalidToken exception</li>
<li>CNRegister.updateNodeCapabilities, added InvalidToken exception</li>
<li>CNReplication.updateReplicationMetadata, added InvalidToken exception</li>
<li>CNCore.listFormats: removed InsufficientResources exception. If the CN can not
provide a response, then a ServiceFailure should be raised.</li>
<li>CNCore.getChecksumAlgorithms renamed to listChecksumAlgorithms for consistency
with other methods that return a list.</li>
</ul>
</div>
</div>
<div class="section" id="id16">
<h2>2011-12-08 : Version 1.0<a class="headerlink" href="#id16" title="Permalink to this headline">¶</a></h2>
<div class="section" id="methodcrossreference-xls-trunk">
<h3>MethodCrossReference.xls (trunk)<a class="headerlink" href="#methodcrossreference-xls-trunk" title="Permalink to this headline">¶</a></h3>
<blockquote>
<div><ul class="simple">
<li>CN.removeGroupMembers - changed REST specification from &#8220;DELETE /groups/{group}&#8221;
to &#8220;POST /groups/remove/{group}</li>
<li>CN.getFormat: removed InvalidRequest from documentation, (was supposedly
removed earlier, but reappeared)</li>
<li>CN.listSubjects - added status parameter to the method</li>
<li>CN.search - added queryType and query parameters as optional (documentation fix)</li>
<li>changed setOwner() to setRightsHolder()</li>
<li>MN.getReplica - documentation fix, added pid as parameter - it was in REST specification
but not listed as a parameter</li>
</ul>
</div></blockquote>
</div>
<div class="section" id="api-corrections-branch">
<h3>2011-12-07-api-corrections branch<a class="headerlink" href="#api-corrections-branch" title="Permalink to this headline">¶</a></h3>
<p>Java libclient / implementation changes (in branch)</p>
<blockquote>
<div><ul class="simple">
<li>CN.verifyAccount - removed NotFound from java api and impl</li>
<li>CN.updateAccount - removed IdentifierNotUnique from java api and impl</li>
<li>CN.mapIdentity - refactored method signature from (session, subject1, subject2) to (session,subject)</li>
<li>CN.mapIdentity - changed message body to pass subject as paramPart instead of filePart.</li>
<li>CN.requestMapIdentity - added IdentifierNotUnique to java api and impl</li>
<li>CN.denyMapIdentity - removed InvalidRequest from  java api and impl</li>
<li>CN.removeMapIdentity - removed InvalidRequest from  java api and impl</li>
<li>CN.search - changed resource in java libclient from &#8216;object&#8217; to &#8216;search&#8217;</li>
<li>CN.setAccessPolicy - put parameter &#8216;pid&#8217; on path (removed from filePart)</li>
<li>CN.setOwner - changed resource from &#8216;accounts/map&#8217; to &#8216;owner&#8217;</li>
<li>MN.getReplica - added InsufficientResources to java api and impl</li>
<li>MN.setAccessPolicy - removed method from java api and impl</li>
<li>CN.setOwner - changed name to setRightsHolder in java api and impl</li>
</ul>
</div></blockquote>
<p>Client bug fixes (in trunk)</p>
<blockquote>
<div><ul class="simple">
<li>MN.getLogRecords - added missing &#8216;start&#8217; and &#8216;count&#8217; parameters to impl  call.</li>
<li>MN.listObjects - fixed failed exception recast</li>
</ul>
</div></blockquote>
</div>
</div>
<div class="section" id="version-1-0-0-branch">
<h2>2011-12-06 Version 1.0.0 Branch<a class="headerlink" href="#version-1-0-0-branch" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id17">
<h3>dataoneTypes.xsd<a class="headerlink" href="#id17" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><a class="reference external" href="https://redmine.dataone.org/projects/d1/repository/entry/software/cicore/branches/D1_SCHEMA_1_0_0/dataoneTypes.xsd">https://redmine.dataone.org/projects/d1/repository/entry/software/cicore/branches/D1_SCHEMA_1_0_0/dataoneTypes.xsd</a></li>
<li>Modified LogEntry.entryId to be of type d1:NonEmptyString instead of d1:Identifier</li>
<li>Removed LogEntry.memberNode of type d1:NodeReference</li>
<li>Added LogEntry.nodeIdentifier of type d1:NodeReference</li>
</ul>
</div>
</div>
<div class="section" id="id18">
<h2>2011-12-05 Version 1.0.0 Branch<a class="headerlink" href="#id18" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id19">
<h3>dataoneTypes.xsd<a class="headerlink" href="#id19" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><a class="reference external" href="https://redmine.dataone.org/projects/d1/repository/entry/software/cicore/branches/D1_SCHEMA_1_0_0/dataoneTypes.xsd">https://redmine.dataone.org/projects/d1/repository/entry/software/cicore/branches/D1_SCHEMA_1_0_0/dataoneTypes.xsd</a></li>
<li>Added SystemMetadata.archived flag to indicated when a document is archived</li>
<li>Added ObjectLocation.version field for convenient access</li>
<li>Added Group.rightsHolder for access rights to groups</li>
<li>Refactored ServiceMethodRestriction to removed unneeded levels</li>
<li>Removed Permissions.execute as it is no longer needed</li>
</ul>
</div>
</div>
<div class="section" id="id20">
<h2>2011-11-08 Version 1.0.0 Branch<a class="headerlink" href="#id20" title="Permalink to this headline">¶</a></h2>
<div class="section" id="cn-apis">
<h3>CN APIs<a class="headerlink" href="#cn-apis" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>CNCore.hasReservation: Updated description: caller owns reservation = HTTP
200; PID reserved but not owned by caller = NotAuthorized; PID in use as an
identifier = IdentifierNotUnique; PID not reserved and not in use = NotFound.</li>
<li>CNRead.updateSystemMetadata: DEPRECATED. There is no longer a need for this
method to be exposed through an external interface.</li>
</ul>
</div>
</div>
<div class="section" id="id21">
<h2>2011-11-03 Version 1.0.0 Branch<a class="headerlink" href="#id21" title="Permalink to this headline">¶</a></h2>
<div class="section" id="mn-apis">
<h3>MN APIs<a class="headerlink" href="#mn-apis" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>MNCore.getLogRecords: change date restriction to &gt;= from Date, and &lt;= toDate</li>
<li>MNCore.getCapabilities: removed NotAuthorized exception. Anyone should be
able to call this method.</li>
<li>MNRead.listObjects: Indicated that if formatId is not present as a filter
parameter, then that filter should be ignored. The previous was to default
to <em>true</em>.</li>
</ul>
</div>
</div>
<div class="section" id="id22">
<h2>2011-11-02 Version 1.0.0 Branch<a class="headerlink" href="#id22" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id23">
<h3>dataoneTypes.xsd<a class="headerlink" href="#id23" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><a class="reference external" href="https://redmine.dataone.org/projects/d1/repository/revisions/5754">https://redmine.dataone.org/projects/d1/repository/revisions/5754</a></li>
<li>Deprecated MNAuthorization.setAccessPolicy. This is replaced by
MNStorage.systemMetadataChanged</li>
<li>Added MNStorage.systemMetadataChanged, which is called by Coordinating Nodes
when system metadata for an object known to be located on the Member Node
changes. The Member Node is expected to retrieve the full system metadata
document from the Coordinating Node and update the local system properties
of the object using information contained in the authoritative system
metadata. This is a Tier 2 method. It is accessed on the
<em>/dirtySystemMetadata</em> REST endpoint.</li>
</ul>
</div>
</div>
<div class="section" id="id24">
<h2>2011-11-01 Version 1.0.0 Branch<a class="headerlink" href="#id24" title="Permalink to this headline">¶</a></h2>
<div class="section" id="exceptions">
<h3>Exceptions<a class="headerlink" href="#exceptions" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>Added a new exception, VersionMistmatch which is raised when there is a
version mistmatch between the target of the request and the supplied
parameters. e.g. when serialVersion is provided in a call and does not match
that of the target.</li>
</ul>
</div>
<div class="section" id="id25">
<h3>CN APIs<a class="headerlink" href="#id25" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>CNAuthorization.setOwner: added serialVersion parameter to method signature.
serialVersion is used to indicate which revision the change to system
metadata applies to. If the revision in the request does not match the
revision in the response, then a VersionMistmatch exception is raised.</li>
<li>CNAuthorization.getAccessPolicy: added serialVersion parameter to method
signature.</li>
<li>CNReplication.setReplicationStatus: added serialVersion parameter to method
signature.</li>
<li>CNReplication.updateReplicationMetadata: added serialVersion parameter to
method signature.</li>
<li>CNReplication.setReplicationPolicy: added serialVersion parameter to method
signature.</li>
</ul>
</div>
<div class="section" id="id26">
<h3>MN APIs<a class="headerlink" href="#id26" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>MNCore.getLogRecords: changed fromDate from required to optional.</li>
<li>MNCore.getCapabilities: removed InvalidRequest exception</li>
<li>MNCore.get: removed InvalidRequest exception</li>
<li>MNRead.getSystemMetadata: removed InvalidRequest exception</li>
<li>MNRead.describe: removed InvalidRequest exception</li>
<li>MNRead.synchronizationFailed: removed InvalidRequest exception</li>
<li>MNAuthorization.setAccessPolicy: Added note indicating that this method should only be called by Coordinating Nodes.</li>
<li>MNStorage.delete: removed InvalidRequest exception</li>
</ul>
</div>
</div>
<div class="section" id="id27">
<h2>2011-10-26 Version 1.0.0 Branch<a class="headerlink" href="#id27" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id28">
<h3>dataoneTypes.xsd<a class="headerlink" href="#id28" title="Permalink to this headline">¶</a></h3>
<p>The following changes were enacted on the dataoneTypes.xsd schema as a result
of discussions during the DataONE all-hands meeting held during the week of
October 18, 2011.</p>
<p>No further significant changes to dataonetypes.xsd are expected for version
1.0.0 of the DataONE infrastructure.</p>
<ul class="simple">
<li>unsigned long &#8220;serialversion&#8221; element added to the
<a class="reference internal" href="apis/Types.html#Types.SystemMetadata" title="Types.SystemMetadata"><code class="xref py py-class docutils literal"><span class="pre">Types.SystemMetadata</span></code></a> complex type. The <em>serialVersion</em> value is
incremented upon any updates to a system metadata instance, and is used to
indicate which is the current version (highest <em>serialVersion</em> is always the
latest) of system metadata for an object.</li>
<li>&#8220;fmtid&#8221; change to &#8220;formatId&#8221; in <a class="reference internal" href="apis/Types.html#Types.SystemMetadata" title="Types.SystemMetadata"><code class="xref py py-class docutils literal"><span class="pre">Types.SystemMetadata</span></code></a> complex type</li>
<li>&#8220;fmtid&#8221; change to &#8220;formatId&#8221; in <a class="reference internal" href="apis/Types.html#Types.ObjectFormat" title="Types.ObjectFormat"><code class="xref py py-class docutils literal"><span class="pre">Types.ObjectFormat</span></code></a> complex type</li>
<li>&#8220;fmtid&#8221; change to &#8220;formatId&#8221; in <a class="reference internal" href="apis/Types.html#Types.ObjectInfo" title="Types.ObjectInfo"><code class="xref py py-class docutils literal"><span class="pre">Types.ObjectInfo</span></code></a> complex type</li>
<li>email minOccurs change from 1 to 0 in <a class="reference internal" href="apis/Types.html#Types.Person" title="Types.Person"><code class="xref py py-class docutils literal"><span class="pre">Types.Person</span></code></a> complex type</li>
<li>boolean &#8220;verified&#8221; property added to <a class="reference internal" href="apis/Types.html#Types.Person" title="Types.Person"><code class="xref py py-class docutils literal"><span class="pre">Types.Person</span></code></a> complex type.
This value is <em>true</em> if the name and email address of the Person have been
verified to ensure that the <em>givenName</em> and <em>familyName</em> represent the real
person&#8217;s legal name, and that the email address is correct for that person
and is in the control of the indicated individual. Verification occurs
through a established procedure within DataONE as part of the Identity
Management system.</li>
<li>Numerous annotation edits and updates</li>
</ul>
</div>
<div class="section" id="id29">
<h3>CN APIs<a class="headerlink" href="#id29" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>CNCore.listFormats: removed InvalidRequest and NotFound exceptions</li>
<li>CNCore.getFormat: removed InvalidRequest exception</li>
<li>CNCore.getLogRecords:<ul>
<li>Made fromDate optional. When not provided in request, there is no limit to
the earliest record being returned.</li>
<li>Added exception InsufficientResources (443, 1481)</li>
</ul>
</li>
<li>CNCore.listNodes: removed InvalidRequest exception</li>
<li>CNCore.hasReservation: removed exception IdentifierNotUnique</li>
<li>CNRead.get: removed InvalidRequest exception</li>
<li>CNRead.getSystemMetadata: removed InvalidRequest exception</li>
<li>CNRead.resolve: removed InvalidRequest exception</li>
<li>CNRead.assertRelation : deprecated</li>
<li>CNRead.getChecksum: removed InvalidRequest exception</li>
<li>CNIdentity.registerAccount: added NotAuthorized exception, thrown when subject
of session does not match that of the person.</li>
<li>CNIdentity.updateAccount:<ul>
<li>added exception NotAuthorized, raised if subject of session does not match
that of the person.</li>
<li>added exception NotFound, raised if the account does not exist.</li>
</ul>
</li>
<li>CNIdentity.verifyAccount:<ul>
<li>changed HTTP method to PUT (this is an update operation)</li>
<li>Added exception NotFound, raised if the specified account does not already
exist.</li>
</ul>
</li>
<li>CNIdentity.getSubjectInfo:<ul>
<li>added exception NotFound, raised if the requested subject is not registered.</li>
<li>removed exception InvalidRequest</li>
</ul>
</li>
<li>CNIdentity.listSubjects<ul>
<li>Specified default start value of 0</li>
<li>Specified default page size (count) of 100</li>
<li>Added InvalidRequest exception</li>
</ul>
</li>
<li>CNIdentity.mapIdentity: added exception IdentfierNotUnique, raised when the
subject of the session and the provided subject arethe same.</li>
<li>CNIdentity.confirmMapIdentity<ul>
<li>changed REST URL to be a PUT to /accounts/map/{subject}</li>
<li>Removed the InvalidRequest exception</li>
<li>Updated the description of the NotFound exception</li>
</ul>
</li>
<li>CNIdentity.createGroup<ul>
<li>Removed NotFound exception</li>
<li>Removed InvalidRequest exception</li>
</ul>
</li>
<li>CNReplication.setReplicationStatus: corrected description of the REST method
signature. Parameters for the PUT request should be transmitted in the request
body, the session information should be transmitted via SSL handshake process.</li>
<li>CNReplication.updateReplicationStatus:<ul>
<li>corrected REST sURL description as for setReplicationStatus</li>
<li>Added NotFound exception</li>
</ul>
</li>
<li>CNReplication.setReplicationPolicy: updated REST URL description as per
setReplicationStatus.</li>
<li>CNReplication.isNodeAuthorized: updated REST URL description as per
setReplicationStatus</li>
</ul>
</div>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
    <p class="logo"><a href="http://dataone.org">
      <img class="logo" src="_static/dataone_logo.png" alt="Logo"/>
    </a></p>
  <h3><a href="index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Change Log</a><ul>
<li><a class="reference internal" href="#version-1-2-clarification-edits">2014-02-12: Version 1.2. Clarification edits</a></li>
<li><a class="reference internal" href="#version-1-2-minor-edits">2013-10-17: Version 1.2. Minor edits</a></li>
<li><a class="reference internal" href="#version-1-1-clarifying-count-parameter-for-slicing">2012-10-09: Version 1.1. Clarifying <em>count</em> parameter for slicing</a></li>
<li><a class="reference internal" href="#version-1-1-adding-mnquery-api">2012-09-28: Version 1.1. Adding MNQuery API</a></li>
<li><a class="reference internal" href="#version-1-1-revising-proposed-query-api">2012-09-25: Version 1.1. Revising proposed Query API</a></li>
<li><a class="reference internal" href="#version-1-1-augmenting-search-api">2012-08-20: Version 1.1. Augmenting Search API</a></li>
<li><a class="reference internal" href="#version-1-0-correction-to-uris-in-resource-maps">2012-05-31: Version 1.0, Correction to URIs in Resource Maps</a></li>
<li><a class="reference internal" href="#version-1-0-methodcrossreference-xls">2012-05-02: Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#id1">2012-05-01: Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#id2">2012-03-26: Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#id3">2012-03-26: Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#id4">2012-03-25: Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#id5">2012-02-27: Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#dataonetypes-xsd">2012-02-24 : dataoneTypes.xsd</a></li>
<li><a class="reference internal" href="#id6">2012-02-17 : Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#id7">2012-02-15 : Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#id8">2012-02-02 : Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#id9">2012-02-01 : Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#id10">2012-01-20 : Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#id11">2012-01-19 : Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#id12">2012-01-12 : Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#id13">2012-01-10 : Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#id14">2012-01-03 : Version 1.0, MethodCrossReference.xls</a></li>
<li><a class="reference internal" href="#version-1-0-dataonetypes-xsd">2011-12-19 : Version 1.0, dataoneTypes.xsd</a></li>
<li><a class="reference internal" href="#version-1-0">2011-12-13 : Version 1.0</a></li>
<li><a class="reference internal" href="#id15">2011-12-12 : Version 1.0</a><ul>
<li><a class="reference internal" href="#mn-api">MN API</a></li>
<li><a class="reference internal" href="#cn-api">CN API</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id16">2011-12-08 : Version 1.0</a><ul>
<li><a class="reference internal" href="#methodcrossreference-xls-trunk">MethodCrossReference.xls (trunk)</a></li>
<li><a class="reference internal" href="#api-corrections-branch">2011-12-07-api-corrections branch</a></li>
</ul>
</li>
<li><a class="reference internal" href="#version-1-0-0-branch">2011-12-06 Version 1.0.0 Branch</a><ul>
<li><a class="reference internal" href="#id17">dataoneTypes.xsd</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id18">2011-12-05 Version 1.0.0 Branch</a><ul>
<li><a class="reference internal" href="#id19">dataoneTypes.xsd</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id20">2011-11-08 Version 1.0.0 Branch</a><ul>
<li><a class="reference internal" href="#cn-apis">CN APIs</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id21">2011-11-03 Version 1.0.0 Branch</a><ul>
<li><a class="reference internal" href="#mn-apis">MN APIs</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id22">2011-11-02 Version 1.0.0 Branch</a><ul>
<li><a class="reference internal" href="#id23">dataoneTypes.xsd</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id24">2011-11-01 Version 1.0.0 Branch</a><ul>
<li><a class="reference internal" href="#exceptions">Exceptions</a></li>
<li><a class="reference internal" href="#id25">CN APIs</a></li>
<li><a class="reference internal" href="#id26">MN APIs</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id27">2011-10-26 Version 1.0.0 Branch</a><ul>
<li><a class="reference internal" href="#id28">dataoneTypes.xsd</a></li>
<li><a class="reference internal" href="#id29">CN APIs</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>Related Topics</h3>
<ul>
  <li><a href="index.html">Documentation Overview</a><ul>
      <li>Previous: <a href="glossary.html" title="previous chapter">Glossary</a></li>
  </ul></li>
</ul>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <form class="search" action="search.html" method="get">
      <div><input type="text" name="q" /></div>
      <div><input type="submit" value="Go" /></div>
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>

    <div class="footer">
      <div id="copyright">
      &copy; Copyright <a href="http://www.dataone.org">2009-2017, DataONE</a>.
        [ <a href="_sources/changelog.txt"
               rel="nofollow">Page Source</a> |
          <a href='https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/changelog.txt'
            rel="nofollow">Revision History</a> ]&nbsp;&nbsp;
      </div>
      <div id="acknowledgement">
        <p>This material is based upon work supported by the National Science Foundation
          under Grant Numbers <a href="http://www.nsf.gov/awardsearch/showAward?AWD_ID=0830944">083094</a> and <a href="http://www.nsf.gov/awardsearch/showAward?AWD_ID=1430508">1430508</a>.</p>
        <p>Any opinions, findings, and conclusions or recommendations expressed in this
           material are those of the author(s) and do not necessarily reflect the views
           of the National Science Foundation.</p>
      </div>
    </div>
    <!--
    <hr />
     <div id="HCB_comment_box"><a href="http://www.htmlcommentbox.com">HTML Comment Box</a> is loading comments...</div>
     <link rel="stylesheet" type="text/css" href="_static/skin.css" />
     <script type="text/javascript" language="javascript" id="hcb">
     /*<! -*/
     (function()
     {s=document.createElement("script");
     s.setAttribute("type","text/javascript");
     s.setAttribute("src", "http://www.htmlcommentbox.com/jread?page="+escape((typeof hcb_user !== "undefined" && hcb_user.PAGE)||(""+window.location)).replace("+","%2B")+"&mod=%241%24wq1rdBcg%24Gg8J5iYSHJWwAJtlYu/yU."+"&opts=21407&num=10");
     if (typeof s!="undefined") document.getElementsByTagName("head")[0].appendChild(s);})();
      /* ->*/
     </script>
   -->
  </body>
</html>