Äcdocutils.nodes
document
q)Åq}q(U	nametypesq}q(X���mutability of metadataqNX3���matt's modification of the notes from robert above:qNXH���external cn apis (accessible to any caller with appropriate credentials)qNX4���internal cn apis (not accessible to mns and clients)q	NuUsubstitution_defsq
}qUparse_messagesq]q
(cdocutils.nodes
system_message
q)Åq}q(U	rawsourceqU�U
attributesq}q(Udupnamesq]UlevelKUidsq]Ubackrefsq]UsourceXt���/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/notes/sysmeta_mutation_20101217.txtqUclassesq]Unamesq]UlineKUtypeUINFOquUparentqcdocutils.nodes
block_quote
q)Åq}q(hU�hcdocutils.nodes
section
q)Åq }q!(hU�hhUsourceq"hUtagnameq#Usectionq$h}q%(h]h]h]h]q&Umutability-of-metadataq'ah]q(hauUlineq)KUdocumentq*hUchildrenq+]q,(cdocutils.nodes
title
q-)Åq.}q/(hX���Mutability of Metadataq0hh h"hh#Utitleq1h}q2(h]h]h]h]h]uh)Kh*hh+]q3cdocutils.nodes
Text
q4X���Mutability of Metadataq5ÖÅq6}q7(hh0hh.ubaubcdocutils.nodes
paragraph
q8)Åq9}q:(hXV���These notes were initiated by DV with responses by RW and MJ around 17
December, 2010.q;hh h"hh#U	paragraphq<h}q=(h]h]h]h]h]uh)Kh*hh+]q>h4XV���These notes were initiated by DV with responses by RW and MJ around 17
December, 2010.q?ÖÅq@}qA(hh;hh9ubaubh8)ÅqB}qC(hXê���Need a couple of methods internal to the CN to allow efficient updating of
mutable content, which includes SystemMetadata and the Node Registry.qDhh h"hh#h<h}qE(h]h]h]h]h]uh)Kh*hh+]qFh4X��Need a couple of methods internal to the CN to allow efficient updating of
mutable content, which includes SystemMetadata and the Node Registry.qGÖÅqH}qI(hhDhhBubaubh8)ÅqJ}qK(hX���Update of system metadata is required so that CNs can keep track of content as
it is replicated around the place between nodes.qLhh h"hh#h<h}qM(h]h]h]h]h]uh)K
h*hh+]qNh4X���Update of system metadata is required so that CNs can keep track of content as
it is replicated around the place between nodes.qOÖÅqP}qQ(hhLhhJubaubh8)ÅqR}qS(hX|���Update of registry is required on a fairly frequent basis for tracking node
status and synchronization and other operations.qThh h"hh#h<h}qU(h]h]h]h]h]uh)K
h*hh+]qVh4X|���Update of registry is required on a fairly frequent basis for tracking node
status and synchronization and other operations.qWÖÅqX}qY(hhThhRubaubcdocutils.nodes
literal_block
qZ)Åq[}q\(hXA���bool updateSystemMetadata(Identifier pid, newSysMetaDocument doc)hh h"hh#U
literal_blockq]h}q^(U	xml:spaceq_Upreserveq`h]h]h]h]h]uh)Kh*hh+]qah4XA���bool updateSystemMetadata(Identifier pid, newSysMetaDocument doc)qbÖÅqc}qd(hU�hh[ubaubh8)Åqe}qf(hX%���or perhaps a more granular approach::qghh h"hh#h<h}qh(h]h]h]h]h]uh)Kh*hh+]qih4X$���or perhaps a more granular approach:qjÖÅqk}ql(hX$���or perhaps a more granular approach:hheubaubhZ)Åqm}qn(hXW���String updateSystemMetadataProperty(Identifier pid, propertyPath path, String newValue)hh h"hh#h]h}qo(h_h`h]h]h]h]h]uh)Kh*hh+]qph4XW���String updateSystemMetadataProperty(Identifier pid, propertyPath path, String newValue)qqÖÅqr}qs(hU�hhmubaubh8)Åqt}qu(hXF���pid = the identifier of the object for which sys meta is to be updatedqvhh h"hh#h<h}qw(h]h]h]h]h]uh)Kh*hh+]qxh4XF���pid = the identifier of the object for which sys meta is to be updatedqyÖÅqz}q{(hhvhhtubaubh8)Åq|}q}(hXH���path = simple xpath statement identifying element or attribute to updateq~hh h"hh#h<h}q(h]h]h]h]h]uh)Kh*hh+]qÄh4XH���path = simple xpath statement identifying element or attribute to updateqÅÖÅqÇ}qÉ(hh~hh|ubaubh8)ÅqÑ}qÖ(hXA���newValue = the new value to set (assuming everything is a string)qÜhh h"hh#h<h}qá(h]h]h]h]h]uh)Kh*hh+]qàh4XA���newValue = the new value to set (assuming everything is a string)qâÖÅqä}qã(hhÜhhÑubaubh8)Åqå}qç(hX���returns previous valueqéhh h"hh#h<h}qè(h]h]h]h]h]uh)Kh*hh+]qêh4X���returns previous valueqëÖÅqí}qì(hhéhhåubaubh8)Åqî}qï(hX ���We could generalize this a bit::qñhh h"hh#h<h}qó(h]h]h]h]h]uh)K!h*hh+]qòh4X���We could generalize this a bit:qôÖÅqö}qõ(hX���We could generalize this a bit:hhîubaubhZ)Åqú}qù(hX~���stringList updateMutableObject(Identifier pid, UpdateStatementList updates)

UpdateStatementList = list of

  path
  new valuehh h"hh#h]h}qû(h_h`h]h]h]h]h]uh)K#h*hh+]qüh4X~���stringList updateMutableObject(Identifier pid, UpdateStatementList updates)

UpdateStatementList = list of

  path
  new valueq†ÖÅq°}q¢(hU�hhúubaubh8)Åq£}q§(hX���Robert's Notes:q•hh h"hh#h<h}q¶(h]h]h]h]h]uh)K*h*hh+]qßh4X���Robert's Notes:q®ÖÅq©}q™(hh•hh£ubaubh8)Åq´}q¨(hX<���We decided not to use XPath as a means for editing Metadata.q≠hh h"hh#h<h}qÆ(h]h]h]h]h]uh)K,h*hh+]qØh4X<���We decided not to use XPath as a means for editing Metadata.q∞ÖÅq±}q≤(hh≠hh´ubaubh8)Åq≥}q¥(hXt���The rest interface must have a way inwhich to allow memberNodes and Clients to
submit changes to the SystemMetadata.qµhh h"hh#h<h}q∂(h]h]h]h]h]uh)K.h*hh+]q∑h4Xt���The rest interface must have a way inwhich to allow memberNodes and Clients to
submit changes to the SystemMetadata.q∏ÖÅqπ}q∫(hhµhh≥ubaubh8)Åqª}qº(hXa��For now we will just implement a separate update REST call on metacat such
that a metacat controlled document can be updated without its PID being
changed. However, this will need to change in the future. Possible other
solutions involve Java RMI or Java JMX. (due to the inherently restrictive
nature of Java RMI, may that will be the preferred method)qΩhh h"hh#h<h}qæ(h]h]h]h]h]uh)K1h*hh+]qøh4Xa��For now we will just implement a separate update REST call on metacat such
that a metacat controlled document can be updated without its PID being
changed. However, this will need to change in the future. Possible other
solutions involve Java RMI or Java JMX. (due to the inherently restrictive
nature of Java RMI, may that will be the preferred method)q¿ÖÅq¡}q¬(hhΩhhªubaubh8)Åq√}qƒ(hX‹��We need to consider the System Metadata schema as a packaging xml document.
The System Metadata type will have three groups, an Immutable group, a
Provenance group and a Mutable group. The root element has several 'general'
elements that are considered immutable. They are considered immutable because
membernodes or clients may not alter these elements. These elements may be
represented as the SystemMetadata header complex should we wish to explicitly
nest and typify them.q≈hh h"hh#h<h}q∆(h]h]h]h]h]uh)K7h*hh+]q«h4X‹��We need to consider the System Metadata schema as a packaging xml document.
The System Metadata type will have three groups, an Immutable group, a
Provenance group and a Mutable group. The root element has several 'general'
elements that are considered immutable. They are considered immutable because
membernodes or clients may not alter these elements. These elements may be
represented as the SystemMetadata header complex should we wish to explicitly
nest and typify them.q»ÖÅq…}q (hh≈hh√ubaubh8)ÅqÀ}qÃ(hXì��The new nesting element is being proposed to typify and group provenance
information. The provenance complex type will contain two sub-elements origin
and derivation. origin complex type element will contain two children,
submitter and originMemberNode, that are immutable. The derivation complex
type element contains mutable elements. Not that the derivation type can be
used as a root element itself.qÕhh h"hh#h<h}qŒ(h]h]h]h]h]uh)K?h*hh+]qœh4Xì��The new nesting element is being proposed to typify and group provenance
information. The provenance complex type will contain two sub-elements origin
and derivation. origin complex type element will contain two children,
submitter and originMemberNode, that are immutable. The derivation complex
type element contains mutable elements. Not that the derivation type can be
used as a root element itself.q–ÖÅq—}q“(hhÕhhÀubaubh8)Åq”}q‘(hX∏���All of the mutable elements are types that can be themselves serialized as
DataONE messages (or they are represented as root elements). They can be
submitted by MemberNodes or clients.q’hh h"hh#h<h}q÷(h]h]h]h]h]uh)KFh*hh+]q◊h4X∏���All of the mutable elements are types that can be themselves serialized as
DataONE messages (or they are represented as root elements). They can be
submitted by MemberNodes or clients.qÿÖÅqŸ}q⁄(hh’hh”ubaubh8)Åq€}q‹(hX���The Immutable grouping:q›hh h"hh#h<h}qfi(h]h]h]h]h]uh)KJh*hh+]qflh4X���The Immutable grouping:q‡ÖÅq·}q‚(hh›hh€ubaubhh8)Åq„}q‰(hXP���The Provenance grouping & complex type(contains both mutable and immutable typesqÂhh h"hh#h<h}qÊ(h]h]h]h]h]uh)K[h*hh+]qÁh4XP���The Provenance grouping & complex type(contains both mutable and immutable typesqËÖÅqÈ}qÍ(hhÂhh„ubaubh)ÅqÎ}qÏ(hU�hh h"Nh#Ublock_quoteqÌh}qÓ(h]h]h]h]h]uh)Nh*hh+]qÔcdocutils.nodes
enumerated_list
q)ÅqÒ}qÚ(hU�h}qÛ(UsuffixqÙU)h]h]h]UprefixqıU�h]h]UenumtypeqˆUarabicq˜uhhÎh+]q¯(cdocutils.nodes
list_item
q˘)Åq˙}q˚(hXT���origin complex type (Immutable)

 a) submitter element
 b) originMemberNode element
h}q¸(h]h]h]h]h]uhhÒh+]q˝(h8)Åq˛}qˇ(hX���origin complex type (Immutable)r���hh˙h"hh#h<h}r��(h]h]h]h]h]uh)K]h+]r��h4X���origin complex type (Immutable)r��ÖÅr��}r��(hj���hh˛ubaubh)År��}r��(hU�h}r��(h]h]h]h]h]uhh˙h+]r	��h)År
��}r��(hU�h}r��(hÙU)h]h]h]hıU�h]h]hˆU
loweralphar
��uhj��h+]r��(h˘)År��}r��(hX���submitter elementr��h}r��(h]h]h]h]h]uhj
��h+]r��h8)År��}r��(hj��hj��h"hh#h<h}r��(h]h]h]h]h]uh)K_h+]r��h4X���submitter elementr��ÖÅr��}r��(hj��hj��ubaubah#U	list_itemr��ubh˘)År��}r��(hX���originMemberNode element
h}r��(h]h]h]h]h]uhj
��h+]r��h8)År ��}r!��(hX���originMemberNode elementr"��hj��h"hh#h<h}r#��(h]h]h]h]h]uh)K`h+]r$��h4X���originMemberNode elementr%��ÖÅr&��}r'��(hj"��hj ��ubaubah#j��ubeh#Uenumerated_listr(��ubah#hÌubeh#j��ubh˘)År)��}r*��(hX›���derivation complex type (Mutable)

 a) rightsHolder - element
 b) authoritativeMemberNode - element
 c) obsoletes -element
 d) obsoletedBy -element
 e) derivedFrom -element
 f) describes -element
 g) describedBy -element
h}r+��(h]h]h]h]h]uhhÒh+]r,��(h8)År-��}r.��(hX!���derivation complex type (Mutable)r/��hj)��h"hh#h<h}r0��(h]h]h]h]h]uh)Kbh+]r1��h4X!���derivation complex type (Mutable)r2��ÖÅr3��}r4��(hj/��hj-��ubaubh)År5��}r6��(hU�h}r7��(h]h]h]h]h]uhj)��h+]r8��h)År9��}r:��(hU�h}r;��(hÙU)h]h]h]hıU�h]h]hˆj
��uhj5��h+]r<��(h˘)År=��}r>��(hX���rightsHolder - elementr?��h}r@��(h]h]h]h]h]uhj9��h+]rA��h8)ÅrB��}rC��(hj?��hj=��h"hh#h<h}rD��(h]h]h]h]h]uh)Kdh+]rE��h4X���rightsHolder - elementrF��ÖÅrG��}rH��(hj?��hjB��ubaubah#j��ubh˘)ÅrI��}rJ��(hX!���authoritativeMemberNode - elementrK��h}rL��(h]h]h]h]h]uhj9��h+]rM��h8)ÅrN��}rO��(hjK��hjI��h"hh#h<h}rP��(h]h]h]h]h]uh)Keh+]rQ��h4X!���authoritativeMemberNode - elementrR��ÖÅrS��}rT��(hjK��hjN��ubaubah#j��ubh˘)ÅrU��}rV��(hX���obsoletes -elementrW��h}rX��(h]h]h]h]h]uhj9��h+]rY��h8)ÅrZ��}r[��(hjW��hjU��h"hh#h<h}r\��(h]h]h]h]h]uh)Kfh+]r]��h4X���obsoletes -elementr^��ÖÅr_��}r`��(hjW��hjZ��ubaubah#j��ubh˘)Åra��}rb��(hX���obsoletedBy -elementrc��h}rd��(h]h]h]h]h]uhj9��h+]re��h8)Årf��}rg��(hjc��hja��h"hh#h<h}rh��(h]h]h]h]h]uh)Kgh+]ri��h4X���obsoletedBy -elementrj��ÖÅrk��}rl��(hjc��hjf��ubaubah#j��ubh˘)Årm��}rn��(hX���derivedFrom -elementro��h}rp��(h]h]h]h]h]uhj9��h+]rq��h8)Årr��}rs��(hjo��hjm��h"hh#h<h}rt��(h]h]h]h]h]uh)Khh+]ru��h4X���derivedFrom -elementrv��ÖÅrw��}rx��(hjo��hjr��ubaubah#j��ubh˘)Åry��}rz��(hX���describes -elementr{��h}r|��(h]h]h]h]h]uhj9��h+]r}��h8)År~��}r��(hj{��hjy��h"hh#h<h}rÄ��(h]h]h]h]h]uh)Kih+]rÅ��h4X���describes -elementrÇ��ÖÅrÉ��}rÑ��(hj{��hj~��ubaubah#j��ubh˘)ÅrÖ��}rÜ��(hX���describedBy -element
h}rá��(h]h]h]h]h]uhj9��h+]rà��h8)Årâ��}rä��(hX���describedBy -elementrã��hjÖ��h"hh#h<h}rå��(h]h]h]h]h]uh)Kjh+]rç��h4X���describedBy -elementré��ÖÅrè��}rê��(hjã��hjâ��ubaubah#j��ubeh#j(��ubah#hÌubeh#j��ubeh#j(��ubaubh8)Årë��}rí��(hX=���The Mutable grouping (may be modified by Cns, Mns or Clients)rì��hh h"hh#h<h}rî��(h]h]h]h]h]uh)Klh*hh+]rï��h4X=���The Mutable grouping (may be modified by Cns, Mns or Clients)rñ��ÖÅró��}rò��(hjì��hjë��ubaubh)Årô��}rö��(hU�hh h"Nh#hÌh}rõ��(h]h]h]h]h]uh)Nh*hh+]rú��h)Årù��}rû��(hU�h}rü��(hÙU)h]h]h]hıU�h]h]hˆh˜uhjô��h+]r†��(h˘)År°��}r¢��(hX���replication policy complex typer£��h}r§��(h]h]h]h]h]uhjù��h+]r•��h8)År¶��}rß��(hj£��hj°��h"hh#h<h}r®��(h]h]h]h]h]uh)Knh+]r©��h4X���replication policy complex typer™��ÖÅr´��}r¨��(hj£��hj¶��ubaubah#j��ubh˘)År≠��}rÆ��(hX���access control complex type

h}rØ��(h]h]h]h]h]uhjù��h+]r∞��h8)År±��}r≤��(hX���access control complex typer≥��hj≠��h"hh#h<h}r¥��(h]h]h]h]h]uh)Koh+]rµ��h4X���access control complex typer∂��ÖÅr∑��}r∏��(hj≥��hj±��ubaubah#j��ubeh#j(��ubaubh8)Årπ��}r∫��(hX
���REST API::rª��hh h"hh#h<h}rº��(h]h]h]h]h]uh)Krh*hh+]rΩ��h4X	���REST API:ræ��ÖÅrø��}r¿��(hX	���REST API:hjπ��ubaubhZ)År¡��}r¬��(hX^���PUT /meta/pid (token, pid, derivation | replicationPolicy | accessControl) -> Types.Identifierhh h"hh#h]h}r√��(h_h`h]h]h]h]h]uh)Kth*hh+]rƒ��h4X^���PUT /meta/pid (token, pid, derivation | replicationPolicy | accessControl) -> Types.Identifierr≈��ÖÅr∆��}r«��(hU�hj¡��ubaubh8)År»��}r…��(hXR���CRUD Api  (Methods Overloaded or named separately??? assuming named separately???)r ��hh h"hh#h<h}rÀ��(h]h]h]h]h]uh)Kvh*hh+]rÃ��h4XR���CRUD Api  (Methods Overloaded or named separately??? assuming named separately???)rÕ��ÖÅrŒ��}rœ��(hj ��hj»��ubaubh8)År–��}r—��(hX���internal only::r“��hh h"hh#h<h}r”��(h]h]h]h]h]uh)Kxh*hh+]r‘��h4X���internal only:r’��ÖÅr÷��}r◊��(hX���internal only:hj–��ubaubhZ)Årÿ��}rŸ��(hXC���CN_crud.updateSystemMetadata(token, pid, systemMetadata) -> booleanhh h"hh#h]h}r⁄��(h_h`h]h]h]h]h]uh)Kzh*hh+]r€��h4XC���CN_crud.updateSystemMetadata(token, pid, systemMetadata) -> booleanr‹��ÖÅr›��}rfi��(hU�hjÿ��ubaubh8)Årfl��}r‡��(hX'���externally available through REST API::r·��hh h"hh#h<h}r‚��(h]h]h]h]h]uh)K|h*hh+]r„��h4X&���externally available through REST API:r‰��ÖÅrÂ��}rÊ��(hX&���externally available through REST API:hjfl��ubaubhZ)ÅrÁ��}rË��(hXÎ���CN_crud.updateSystemMetadataProvenance(token, pid, derivation) -> boolean
CN_crud.updateSystemMetadataReplication(token, pid, replicationPolicy) -> boolean
CN_crud.updateSystemMetadataAccessControl(token, pid, accessControl) -> booleanhh h"hh#h]h}r��(h_h`h]h]h]h]h]uh)K~h*hh+]r��h4X���CN_crud.updateSystemMetadataProvenance(token, pid, derivation) -> boolean
CN_crud.updateSystemMetadataReplication(token, pid, replicationPolicy) -> boolean
CN_crud.updateSystemMetadataAccessControl(token, pid, accessControl) -> booleanrÎ��ÖÅrÏ��}rÌ��(hU�hjÁ��ubaubh)ÅrÓ��}rÔ��(hU�hh h"hh#h$h}r��(h]h]h]h]rÒ��U2matt-s-modification-of-the-notes-from-robert-aboverÚ��ah]rÛ��hauh)KÉh*hh+]rÙ��(h-)Årı��}rˆ��(hX3���Matt's modification of the notes from Robert above:r˜��hjÓ��h"hh#h1h}r¯��(h]h]h]h]h]uh)KÉh*hh+]r˘��h4X3���Matt's modification of the notes from Robert above:r˙��ÖÅr˚��}r¸��(hj˜��hjı��ubaubh8)År˝��}r˛��(hX–��I think we need a slightly different set of groups of system metadata
elements, which I outline below, and which then lead to a different set of
services. Each group should be defined in its own freestanding ComplexType. I
don't think we should have a general service for modifying system metadata
that is externally accessible, but rather should have a separate method for
each system metadata group so that access to the services can be controlled
independently.rˇ��hjÓ��h"hh#h<h}r���(h]h]h]h]h]uh)KÖh*hh+]r��h4X–��I think we need a slightly different set of groups of system metadata
elements, which I outline below, and which then lead to a different set of
services. Each group should be defined in its own freestanding ComplexType. I
don't think we should have a general service for modifying system metadata
that is externally accessible, but rather should have a separate method for
each system metadata group so that access to the services can be controlled
independently.r��ÖÅr��}r��(hjˇ��hj˝��ubaubcdocutils.nodes
definition_list
r��)År��}r��(hU�hjÓ��h"Nh#Udefinition_listr��h}r	��(h]h]h]h]h]uh)Nh*hh+]r
��cdocutils.nodes
definition_list_item
r��)År��}r
��(hXÿ���The Identity group (immutable, set at time of create() call)
1) identifier element
2) dateUploaded element
3) objectFormat element
4) size element
5) checksum element
6) submitter element
7) originMemberNode element
hj��h"hh#Udefinition_list_itemr��h}r��(h]h]h]h]h]uh)Kîh+]r��(cdocutils.nodes
term
r��)År��}r��(hX<���The Identity group (immutable, set at time of create() call)r��hj��h"hh#Utermr��h}r��(h]h]h]h]h]uh)Kîh+]r��h4X<���The Identity group (immutable, set at time of create() call)r��ÖÅr��}r��(hj��hj��ubaubcdocutils.nodes
definition
r��)År��}r��(hU�h}r��(h]h]h]h]h]uhj��h+]r��h)År ��}r!��(hU�h}r"��(hÙU)h]h]h]hıU�h]h]hˆh˜uhj��h+]r#��(h˘)År$��}r%��(hX���identifier elementr&��h}r'��(h]h]h]h]h]uhj ��h+]r(��h8)År)��}r*��(hj&��hj$��h"hh#h<h}r+��(h]h]h]h]h]uh)Kéh+]r,��h4X���identifier elementr-��ÖÅr.��}r/��(hj&��hj)��ubaubah#j��ubh˘)År0��}r1��(hX���dateUploaded elementr2��h}r3��(h]h]h]h]h]uhj ��h+]r4��h8)År5��}r6��(hj2��hj0��h"hh#h<h}r7��(h]h]h]h]h]uh)Kèh+]r8��h4X���dateUploaded elementr9��ÖÅr:��}r;��(hj2��hj5��ubaubah#j��ubh˘)År<��}r=��(hX���objectFormat elementr>��h}r?��(h]h]h]h]h]uhj ��h+]r@��h8)ÅrA��}rB��(hj>��hj<��h"hh#h<h}rC��(h]h]h]h]h]uh)Kêh+]rD��h4X���objectFormat elementrE��ÖÅrF��}rG��(hj>��hjA��ubaubah#j��ubh˘)ÅrH��}rI��(hX���size elementrJ��h}rK��(h]h]h]h]h]uhj ��h+]rL��h8)ÅrM��}rN��(hjJ��hjH��h"hh#h<h}rO��(h]h]h]h]h]uh)Këh+]rP��h4X���size elementrQ��ÖÅrR��}rS��(hjJ��hjM��ubaubah#j��ubh˘)ÅrT��}rU��(hX���checksum elementrV��h}rW��(h]h]h]h]h]uhj ��h+]rX��h8)ÅrY��}rZ��(hjV��hjT��h"hh#h<h}r[��(h]h]h]h]h]uh)Kíh+]r\��h4X���checksum elementr]��ÖÅr^��}r_��(hjV��hjY��ubaubah#j��ubh˘)År`��}ra��(hX���submitter elementrb��h}rc��(h]h]h]h]h]uhj ��h+]rd��h8)Åre��}rf��(hjb��hj`��h"hh#h<h}rg��(h]h]h]h]h]uh)Kìh+]rh��h4X���submitter elementri��ÖÅrj��}rk��(hjb��hje��ubaubah#j��ubh˘)Årl��}rm��(hX���originMemberNode element
h}rn��(h]h]h]h]h]uhj ��h+]ro��h8)Årp��}rq��(hX���originMemberNode elementrr��hjl��h"hh#h<h}rs��(h]h]h]h]h]uh)Kîh+]rt��h4X���originMemberNode elementru��ÖÅrv��}rw��(hjr��hjp��ubaubah#j��ubeh#j(��ubah#U
definitionrx��ubeubaubh8)Åry��}rz��(hX-���The ObjectStatus group (mutable by CNs only):r{��hjÓ��h"hh#h<h}r|��(h]h]h]h]h]uh)Kñh*hh+]r}��h4X-���The ObjectStatus group (mutable by CNs only):r~��ÖÅr��}rÄ��(hj{��hjy��ubaubh)ÅrÅ��}rÇ��(hU�hjÓ��h"Nh#hÌh}rÉ��(h]h]h]h]h]uh)Nh*hh+]rÑ��h)ÅrÖ��}rÜ��(hU�h}rá��(hÙU)h]h]h]hıU�h]h]hˆh˜uhjÅ��h+]rà��(h˘)Årâ��}rä��(hXR���dateSysMetadataModified element (may be modified by cn internal system processing)rã��h}rå��(h]h]h]h]h]uhjÖ��h+]rç��h8)Åré��}rè��(hjã��hjâ��h"hh#h<h}rê��(h]h]h]h]h]uh)Kòh+]rë��h4XR���dateSysMetadataModified element (may be modified by cn internal system processing)rí��ÖÅrì��}rî��(hjã��hjé��ubaubah#j��ubh˘)Årï��}rñ��(hXG���replica complex type (may be modified by cn interal system processing)
h}ró��(h]h]h]h]h]uhjÖ��h+]rò��h8)Årô��}rö��(hXF���replica complex type (may be modified by cn interal system processing)rõ��hjï��h"hh#h<h}rú��(h]h]h]h]h]uh)Kôh+]rù��h4XF���replica complex type (may be modified by cn interal system processing)rû��ÖÅrü��}r†��(hjõ��hjô��ubaubah#j��ubeh#j(��ubaubh8)År°��}r¢��(hXh���The Policy group (mutable with changePermission [maybe 'changePolicy'] permission by CNs, MNs, Clients):r£��hjÓ��h"hh#h<h}r§��(h]h]h]h]h]uh)Kõh*hh+]r•��h4Xh���The Policy group (mutable with changePermission [maybe 'changePolicy'] permission by CNs, MNs, Clients):r¶��ÖÅrß��}r®��(hj£��hj°��ubaubh)År©��}r™��(hU�hjÓ��h"Nh#hÌh}r´��(h]h]h]h]h]uh)Nh*hh+]r¨��h)År≠��}rÆ��(hU�h}rØ��(hÙU)h]h]h]hıU�h]h]hˆh˜uhj©��h+]r∞��(h˘)År±��}r≤��(hX∞���AccessPolicy complex type

 a) rightsHolder - element (NB: this needs to be added to AP schema)
 b) authoritativeMemberNode - element (NB: this needs to be added to AP schema)
h}r≥��(h]h]h]h]h]uhj≠��h+]r¥��(h8)Årµ��}r∂��(hX���AccessPolicy complex typer∑��hj±��h"hh#h<h}r∏��(h]h]h]h]h]uh)Kùh+]rπ��h4X���AccessPolicy complex typer∫��ÖÅrª��}rº��(hj∑��hjµ��ubaubh)ÅrΩ��}ræ��(hU�h}rø��(h]h]h]h]h]uhj±��h+]r¿��h)År¡��}r¬��(hU�h}r√��(hÙU)h]h]h]hıU�h]h]hˆj
��uhjΩ��h+]rƒ��(h˘)År≈��}r∆��(hX@���rightsHolder - element (NB: this needs to be added to AP schema)r«��h}r»��(h]h]h]h]h]uhj¡��h+]r…��h8)År ��}rÀ��(hj«��hj≈��h"hh#h<h}rÃ��(h]h]h]h]h]uh)Küh+]rÕ��h4X@���rightsHolder - element (NB: this needs to be added to AP schema)rŒ��ÖÅrœ��}r–��(hj«��hj ��ubaubah#j��ubh˘)År—��}r“��(hXL���authoritativeMemberNode - element (NB: this needs to be added to AP schema)
h}r”��(h]h]h]h]h]uhj¡��h+]r‘��h8)År’��}r÷��(hXK���authoritativeMemberNode - element (NB: this needs to be added to AP schema)r◊��hj—��h"hh#h<h}rÿ��(h]h]h]h]h]uh)K†h+]rŸ��h4XK���authoritativeMemberNode - element (NB: this needs to be added to AP schema)r⁄��ÖÅr€��}r‹��(hj◊��hj’��ubaubah#j��ubeh#j(��ubah#hÌubeh#j��ubh˘)År›��}rfi��(hX���ReplicationPolicy complex type
h}rfl��(h]h]h]h]h]uhj≠��h+]r‡��h8)År·��}r‚��(hX���ReplicationPolicy complex typer„��hj›��h"hh#h<h}r‰��(h]h]h]h]h]uh)K¢h+]rÂ��h4X���ReplicationPolicy complex typerÊ��ÖÅrÁ��}rË��(hj„��hj·��ubaubah#j��ubeh#j(��ubaubh8)ÅrÈ��}rÍ��(hX.���The Provenance group (mutable by Clients/MNs):rÎ��hjÓ��h"hh#h<h}rÏ��(h]h]h]h]h]uh)K§h*hh+]rÌ��h4X.���The Provenance group (mutable by Clients/MNs):rÓ��ÖÅrÔ��}r��(hjÎ��hjÈ��ubaubh)ÅrÒ��}rÚ��(hU�hjÓ��h"Nh#hÌh}rÛ��(h]h]h]h]h]uh)Nh*hh+]rÙ��h)Årı��}rˆ��(hU�h}r˜��(hÙU)h]h]h]hıU�h]h]hˆh˜uhjÒ��h+]r¯��(h˘)År˘��}r˙��(hXQ���obsoletes -element    (requires 'write' permission, set at time of update() call)r˚��h}r¸��(h]h]h]h]h]uhjı��h+]r˝��h8)År˛��}rˇ��(hj˚��hj˘��h"hh#h<h}r���(h]h]h]h]h]uh)K¶h+]r��h4XQ���obsoletes -element    (requires 'write' permission, set at time of update() call)r��ÖÅr��}r��(hj˚��hj˛��ubaubah#j��ubh˘)År��}r��(hXQ���obsoletedBy -element  (requires 'write' permission, set at time of update() call)r��h}r��(h]h]h]h]h]uhjı��h+]r	��h8)År
��}r��(hj��hj��h"hh#h<h}r��(h]h]h]h]h]uh)Kßh+]r
��h4XQ���obsoletedBy -element  (requires 'write' permission, set at time of update() call)r��ÖÅr��}r��(hj��hj
��ubaubah#j��ubh˘)År��}r��(hX^���derivedFrom -element  (requires 'write' permission, set at time of update() or create() call)*r��h}r��(h]h]h]h]h]uhjı��h+]r��h8)År��}r��(hj��hj��h"hh#h<h}r��(h]h]h]h]h]uh)K®h+]r��h4X^���derivedFrom -element  (requires 'write' permission, set at time of update() or create() call)*r��ÖÅr��}r��(hj��hj��ubaubah#j��ubh˘)År��}r��(hX^���describes -element    (requires 'write' permission, set at time of update() or create() call)*r��h}r ��(h]h]h]h]h]uhjı��h+]r!��h8)År"��}r#��(hj��hj��h"hh#h<h}r$��(h]h]h]h]h]uh)K©h+]r%��h4X^���describes -element    (requires 'write' permission, set at time of update() or create() call)*r&��ÖÅr'��}r(��(hj��hj"��ubaubah#j��ubh˘)År)��}r*��(hX_���describedBy -element  (requires 'write' permission, set at time of update() or create() call)*
h}r+��(h]h]h]h]h]uhjı��h+]r,��h8)År-��}r.��(hX^���describedBy -element  (requires 'write' permission, set at time of update() or create() call)*r/��hj)��h"hh#h<h}r0��(h]h]h]h]h]uh)K™h+]r1��h4X^���describedBy -element  (requires 'write' permission, set at time of update() or create() call)*r2��ÖÅr3��}r4��(hj/��hj-��ubaubah#j��ubeh#j(��ubaubh8)År5��}r6��(hX,��\* There is a case to be made that these 3 elements should be settable by any client, but the problem comes in determining who can change values that someone else wrote (i.e., Joe says X describes Y, can Jane then say 'Y describes X' or other contrary statements, and who can delete Joe's assertion?)r7��hjÓ��h"hh#h<h}r8��(h]h]h]h]h]uh)K¨h*hh+]r9��h4X+��* There is a case to be made that these 3 elements should be settable by any client, but the problem comes in determining who can change values that someone else wrote (i.e., Joe says X describes Y, can Jane then say 'Y describes X' or other contrary statements, and who can delete Joe's assertion?)r:��ÖÅr;��}r<��(hX,��\* There is a case to be made that these 3 elements should be settable by any client, but the problem comes in determining who can change values that someone else wrote (i.e., Joe says X describes Y, can Jane then say 'Y describes X' or other contrary statements, and who can delete Joe's assertion?)hj5��ubaubh8)År=��}r>��(hXœ���The Overall SystemMetadata object would contain elements for all of these
groups, so thet getSystemMetadata() returns all of this information. Updating
system metadata would be done with the following calls:r?��hjÓ��h"hh#h<h}r@��(h]h]h]h]h]uh)KÆh*hh+]rA��h4Xœ���The Overall SystemMetadata object would contain elements for all of these
groups, so thet getSystemMetadata() returns all of this information. Updating
system metadata would be done with the following calls:rB��ÖÅrC��}rD��(hj?��hj=��ubaubeubh)ÅrE��}rF��(hU�hh h"hh#h$h}rG��(h]h]h]h]rH��U2internal-cn-apis-not-accessible-to-mns-and-clientsrI��ah]rJ��h	auh)K≥h*hh+]rK��(h-)ÅrL��}rM��(hX4���Internal CN APIs (not accessible to MNs and Clients)rN��hjE��h"hh#h1h}rO��(h]h]h]h]h]uh)K≥h*hh+]rP��h4X4���Internal CN APIs (not accessible to MNs and Clients)rQ��ÖÅrR��}rS��(hjN��hjL��ubaubhZ)ÅrT��}rU��(hXï���CN_crud.updateSystemMetadata(token, pid, systemMetadata) -> Types.Identifier
REST API: PUT /meta/pid (token, pid, SystemMetadata) -> Types.IdentifierhjE��h"hh#h]h}rV��(h_h`h]h]h]h]h]uh)K∑h*hh+]rW��h4Xï���CN_crud.updateSystemMetadata(token, pid, systemMetadata) -> Types.Identifier
REST API: PUT /meta/pid (token, pid, SystemMetadata) -> Types.IdentifierrX��ÖÅrY��}rZ��(hU�hjT��ubaubeubh)År[��}r\��(hU�hh h"hh#h$h}r]��(h]h]h]h]r^��UFexternal-cn-apis-accessible-to-any-caller-with-appropriate-credentialsr_��ah]r`��hauh)Kªh*hh+]ra��(h-)Årb��}rc��(hXH���External CN APIs (accessible to any caller with appropriate credentials)rd��hj[��h"hh#h1h}re��(h]h]h]h]h]uh)Kªh*hh+]rf��h4XH���External CN APIs (accessible to any caller with appropriate credentials)rg��ÖÅrh��}ri��(hjd��hjb��ubaubhZ)Årj��}rk��(hX®��CN_crud.setAccessPolicy(token, pid, AccessPolicy) -> boolean
REST API: PUT /access/pid (body containing token, AccessPolicy) -> boolean

CN_crud.setReplicationPolicy(token, pid, ReplicationPolicy) -> boolean
REST API: PUT /replication/pid (body containing token, AccessPolicy) -> boolean

CN_crud.setProvenance(token, pid, Provenance) -> boolean
REST API: PUT /provenance/pid (body containing token, AccessPolicy) -> booleanhj[��h"hh#h]h}rl��(h_h`h]h]h]h]h]uh)Køh*hh+]rm��h4X®��CN_crud.setAccessPolicy(token, pid, AccessPolicy) -> boolean
REST API: PUT /access/pid (body containing token, AccessPolicy) -> boolean

CN_crud.setReplicationPolicy(token, pid, ReplicationPolicy) -> boolean
REST API: PUT /replication/pid (body containing token, AccessPolicy) -> boolean

CN_crud.setProvenance(token, pid, Provenance) -> boolean
REST API: PUT /provenance/pid (body containing token, AccessPolicy) -> booleanrn��ÖÅro��}rp��(hU�hjj��ubaubh8)Årq��}rr��(hXo���-robert's response: I don't think we have a boolean return type. Everything we
return needs to be serializable.rs��hj[��h"hh#h<h}rt��(h]h]h]h]h]uh)K»h*hh+]ru��h4Xo���-robert's response: I don't think we have a boolean return type. Everything we
return needs to be serializable.rv��ÖÅrw��}rx��(hjs��hjq��ubaubh8)Åry��}rz��(hX���I was attempting to keepr{��hj[��h"hh#h<h}r|��(h]h]h]h]h]uh)KÀh*hh+]r}��h4X���I was attempting to keepr~��ÖÅr��}rÄ��(hj{��hjy��ubaubh)ÅrÅ��}rÇ��(hU�hj[��h"Nh#hÌh}rÉ��(h]h]h]h]h]uh)Nh*hh+]rÑ��h)ÅrÖ��}rÜ��(hU�h}rá��(hÙU)Ustartrà��Kh]h]h]hıU�h]h]hˆh˜uhjÅ��h+]râ��(h˘)Årä��}rã��(hX���submitter elementrå��h}rç��(h]h]h]h]h]uhjÖ��h+]ré��h8)Årè��}rê��(hjå��hjä��h"hh#h<h}rë��(h]h]h]h]h]uh)KÕh+]rí��h4X���submitter elementrì��ÖÅrî��}rï��(hjå��hjè��ubaubah#j��ubh˘)Årñ��}ró��(hX���originMemberNode element
h}rò��(h]h]h]h]h]uhjÖ��h+]rô��h8)Årö��}rõ��(hX���originMemberNode elementrú��hjñ��h"hh#h<h}rù��(h]h]h]h]h]uh)KŒh+]rû��h4X���originMemberNode elementrü��ÖÅr†��}r°��(hjú��hjö��ubaubah#j��ubeh#j(��ubaubh8)År¢��}r£��(hXœ���as part of the provenance group. It is information more appropriate to the
provenance of an object than the identification of the object. Hence, i broke
provenance into two parts, one mutable, the other not.r§��hj[��h"hh#h<h}r•��(h]h]h]h]h]uh)K–h*hh+]r¶��h4Xœ���as part of the provenance group. It is information more appropriate to the
provenance of an object than the identification of the object. Hence, i broke
provenance into two parts, one mutable, the other not.rß��ÖÅr®��}r©��(hj§��hj¢��ubaubh8)År™��}r´��(hX���Otherwise, it reads well.r¨��hj[��h"hh#h<h}r≠��(h]h]h]h]h]uh)K‘h*hh+]rÆ��h4X���Otherwise, it reads well.rØ��ÖÅr∞��}r±��(hj¨��hj™��ubaubeubeubh"Nh#hÌh}r≤��(h]h]h]h]h]uh)Nh*hh+]r≥��(h)År¥��}rµ��(hU�h}r∂��(hÙU)h]h]h]hıU�h]h]hˆh˜uhhh+]r∑��(h˘)År∏��}rπ��(hX���identifier element
h}r∫��(h]h]h]h]h]uhj¥��h+]rª��h8)Årº��}rΩ��(hX���identifier elementræ��hj∏��h"hh#h<h}rø��(h]h]h]h]h]uh)KLh+]r¿��h4X���identifier elementr¡��ÖÅr¬��}r√��(hjæ��hjº��ubaubah#j��ubh˘)Årƒ��}r≈��(hX���dateUploaded element
h}r∆��(h]h]h]h]h]uhj¥��h+]r«��h8)År»��}r…��(hX���dateUploaded elementr ��hjƒ��h"hh#h<h}rÀ��(h]h]h]h]h]uh)KNh+]rÃ��h4X���dateUploaded elementrÕ��ÖÅrŒ��}rœ��(hj ��hj»��ubaubah#j��ubh˘)År–��}r—��(hXR���dateSysMetadataModified element (may be modified by cn interal system processing)
h}r“��(h]h]h]h]h]uhj¥��h+]r”��h8)År‘��}r’��(hXQ���dateSysMetadataModified element (may be modified by cn interal system processing)r÷��hj–��h"hh#h<h}r◊��(h]h]h]h]h]uh)KPh+]rÿ��h4XQ���dateSysMetadataModified element (may be modified by cn interal system processing)rŸ��ÖÅr⁄��}r€��(hj÷��hj‘��ubaubah#j��ubh˘)År‹��}r›��(hX���objectFormat element
h}rfi��(h]h]h]h]h]uhj¥��h+]rfl��h8)År‡��}r·��(hX���objectFormat elementr‚��hj‹��h"hh#h<h}r„��(h]h]h]h]h]uh)KRh+]r‰��h4X���objectFormat elementrÂ��ÖÅrÊ��}rÁ��(hj‚��hj‡��ubaubah#j��ubh˘)ÅrË��}rÈ��(hX
���size element
h}rÍ��(h]h]h]h]h]uhj¥��h+]rÎ��h8)ÅrÏ��}rÌ��(hX���size elementrÓ��hjË��h"hh#h<h}rÔ��(h]h]h]h]h]uh)KTh+]r��h4X���size elementrÒ��ÖÅrÚ��}rÛ��(hjÓ��hjÏ��ubaubah#j��ubeh#j(��ubh)ÅrÙ��}rı��(hU�h}rˆ��(hÙU)jà��Kh]h]h]hıU�h]h]hˆh˜uhhh+]r˜��(h˘)År¯��}r˘��(hX���checksum element
h}r˙��(h]h]h]h]h]uhjÙ��h+]r˚��h8)År¸��}r˝��(hX���checksum elementr˛��hj¯��h"hh#h<h}rˇ��(h]h]h]h]h]uh)KVh+]r���h4X���checksum elementr��ÖÅr��}r��(hj˛��hj¸��ubaubah#j��ubh˘)År��}r��(hXH���replica complex type (may be modified by cn interal system processing)

h}r��(h]h]h]h]h]uhjÙ��h+]r��h8)År��}r	��(hXF���replica complex type (may be modified by cn interal system processing)r
��hj��h"hh#h<h}r��(h]h]h]h]h]uh)KXh+]r��h4XF���replica complex type (may be modified by cn interal system processing)r
��ÖÅr��}r��(hj
��hj��ubaubah#j��ubeh#j(��ubeubh+]r��h8)År��}r��(hX:���Enumerated list start value not ordinal-1: "8" (ordinal 8)h}r��(h]h]h]h]h]uhhh+]r��h4X:���Enumerated list start value not ordinal-1: "8" (ordinal 8)r��ÖÅr��}r��(hU�hj��ubah#h<ubah#Usystem_messager��ubh)År��}r��(hU�h}r��(h]UlevelKh]h]Usourcehh]h]UlineKUtypehuhjÅ��h+]r��h8)År��}r��(hX:���Enumerated list start value not ordinal-1: "6" (ordinal 6)h}r��(h]h]h]h]h]uhj��h+]r ��h4X:���Enumerated list start value not ordinal-1: "6" (ordinal 6)r!��ÖÅr"��}r#��(hU�hj��ubah#h<ubah#j��ubeUcurrent_sourcer$��NU
decorationr%��NUautofootnote_startr&��KUnameidsr'��}r(��(hh'hj��hj_��h	jI��uh+]r)��h ahU�Utransformerr*��NU
footnote_refsr+��}r,��Urefnamesr-��}r.��Usymbol_footnotesr/��]r0��Uautofootnote_refsr1��]r2��Usymbol_footnote_refsr3��]r4��U	citationsr5��]r6��h*hUcurrent_liner7��NUtransform_messagesr8��]r9��Ureporterr:��NUid_startr;��KU
autofootnotesr<��]r=��U
citation_refsr>��}r?��Uindirect_targetsr@��]rA��UsettingsrB��(cdocutils.frontend
Values
rC��orD��}rE��(Ufootnote_backlinksrF��KUrecord_dependenciesrG��NUrfc_base_urlrH��Uhttps://tools.ietf.org/html/rI��U	tracebackrJ��àUpep_referencesrK��NUstrip_commentsrL��NU
toc_backlinksrM��UentryrN��U
language_coderO��UenrP��U	datestamprQ��NUreport_levelrR��KU_destinationrS��NU
halt_levelrT��KU
strip_classesrU��Nh1NUerror_encoding_error_handlerrV��UbackslashreplacerW��UdebugrX��NUembed_stylesheetrY��âUoutput_encoding_error_handlerrZ��Ustrictr[��U
sectnum_xformr\��KUdump_transformsr]��NU
docinfo_xformr^��KUwarning_streamr_��NUpep_file_url_templater`��Upep-%04dra��Uexit_status_levelrb��KUconfigrc��NUstrict_visitorrd��NUcloak_email_addressesre��àUtrim_footnote_reference_spacerf��âUenvrg��NUdump_pseudo_xmlrh��NUexpose_internalsri��NUsectsubtitle_xformrj��âUsource_linkrk��NUrfc_referencesrl��NUoutput_encodingrm��Uutf-8rn��U
source_urlro��NUinput_encodingrp��U	utf-8-sigrq��U_disable_configrr��NU	id_prefixrs��U�U	tab_widthrt��KUerror_encodingru��UUTF-8rv��U_sourcerw��hUgettext_compactrx��àU	generatorry��NUdump_internalsrz��NUsmart_quotesr{��âUpep_base_urlr|��U https://www.python.org/dev/peps/r}��Usyntax_highlightr~��Ulongr��Uinput_encoding_error_handlerrÄ��j[��Uauto_id_prefixrÅ��UidrÇ��Udoctitle_xformrÉ��âUstrip_elements_with_classesrÑ��NU
_config_filesrÖ��]Ufile_insertion_enabledrÜ��àUraw_enabledrá��KU
dump_settingsr�NubUsymbol_footnote_startr�K�Uidsr�}r�(jI��jE��h'h j��j��j_��j[��uUsubstitution_namesr�}r�h#h*h}r�(h]h]h]Usourcehh]h]uU	footnotesr�]r�Urefidsr�}r�ub.