Äcdocutils.nodes
document
q)Åq}q(U	nametypesq}q(X!���mn running v2 of the api (tier 4)qNX���requirementsqNX���overviewqNX	���scenariosq	NX!���mn running v1 of the api (tier 1)q
NX!���mn running v2 of the api (tier 1)qNX!���mn running v1 of the api (tier 4)qNX ���supporting multiple api versionsq
NX���contentsqNuUsubstitution_defsq}qUparse_messagesq]q(cdocutils.nodes
system_message
q)Åq}q(U	rawsourceqU�Uparentqcdocutils.nodes
section
q)Åq}q(hU�hh)Åq}q(hU�hhUsourceqXd���/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/Versions.txtqUtagnameqUsectionq U
attributesq!}q"(Udupnamesq#]Uclassesq$]Ubackrefsq%]Uidsq&]q'U supporting-multiple-api-versionsq(aUnamesq)]q*h
auUlineq+KUdocumentq,hUchildrenq-]q.(cdocutils.nodes
title
q/)Åq0}q1(hX ���Supporting multiple API versionsq2hhhhhUtitleq3h!}q4(h&]h%]h#]h$]h)]Urefidq5Uid1q6uh+Kh,hh-]q7cdocutils.nodes
Text
q8X ���Supporting multiple API versionsq9ÖÅq:}q;(hh2hh0ubaubcsphinx.addnodes
index
q<)Åq=}q>(hU�hhhhhUindexq?h!}q@(h&]h%]h#]h$]h)]UentriesqA]qB(UsingleqCX
���versioningUindex-0qDU�NtqEaUinlineqFâuh+Kh,hh-]ubcdocutils.nodes
target
qG)ÅqH}qI(hU�hhhhhUtargetqJh!}qK(h&]h%]h#]h$]h)]h5hDuh+Kh,hh-]ubcdocutils.nodes
field_list
qL)ÅqM}qN(hU�hhhhUexpect_referenced_by_nameqO}hU
field_listqPh!}qQ(h#]h$]h%]h&]qRhDah)]uh+Kh,hUexpect_referenced_by_idqS}qThDhHsh-]qUcdocutils.nodes
field
qV)ÅqW}qX(hU�hhMhhhUfieldqYh!}qZ(h#]h$]h%]h&]h)]uh+Kh,hh-]q[(cdocutils.nodes
field_name
q\)Åq]}q^(hX���Document Statusq_hhWhhhU
field_nameq`h!}qa(h#]h$]h%]h&]h)]uh+K�h-]qbh8X���Document StatusqcÖÅqd}qe(hh_hh]ubaubcdocutils.nodes
field_body
qf)Åqg}qh(hX9��======== ==================================================================
Status   Comment
======== ==================================================================
DRAFT    (leinfelder) Listing scenarios for v1 and v2 interactions.
======== ==================================================================
h!}qi(h#]h$]h%]h&]h)]uhhWh-]qjcdocutils.nodes
table
qk)Åql}qm(hU�h!}qn(h#]h$]h%]h&]h)]uhhgh-]qocdocutils.nodes
tgroup
qp)Åqq}qr(hU�h!}qs(h&]h%]h#]h$]h)]UcolsKuhhlh-]qt(cdocutils.nodes
colspec
qu)Åqv}qw(hU�h!}qx(h&]h%]h#]h$]h)]UcolwidthKuhhqh-]hUcolspecqyubhu)Åqz}q{(hU�h!}q|(h&]h%]h#]h$]h)]UcolwidthKBuhhqh-]hhyubcdocutils.nodes
thead
q})Åq~}q(hU�h!}qÄ(h#]h$]h%]h&]h)]uhhqh-]qÅcdocutils.nodes
row
qÇ)ÅqÉ}qÑ(hU�h!}qÖ(h#]h$]h%]h&]h)]uhh~h-]qÜ(cdocutils.nodes
entry
qá)Åqà}qâ(hU�h!}qä(h#]h$]h%]h&]h)]uhhÉh-]qãcdocutils.nodes
paragraph
qå)Åqç}qé(hX���StatusqèhhàhhhU	paragraphqêh!}që(h#]h$]h%]h&]h)]uh+K	h-]qíh8X���StatusqìÖÅqî}qï(hhèhhçubaubahUentryqñubhá)Åqó}qò(hU�h!}qô(h#]h$]h%]h&]h)]uhhÉh-]qöhå)Åqõ}qú(hX���Commentqùhhóhhhhêh!}qû(h#]h$]h%]h&]h)]uh+K	h-]qüh8X���Commentq†ÖÅq°}q¢(hhùhhõubaubahhñubehUrowq£ubahUtheadq§ubcdocutils.nodes
tbody
q•)Åq¶}qß(hU�h!}q®(h#]h$]h%]h&]h)]uhhqh-]q©hÇ)Åq™}q´(hU�h!}q¨(h#]h$]h%]h&]h)]uhh¶h-]q≠(há)ÅqÆ}qØ(hU�h!}q∞(h#]h$]h%]h&]h)]uhh™h-]q±hå)Åq≤}q≥(hX���DRAFTq¥hhÆhhhhêh!}qµ(h#]h$]h%]h&]h)]uh+Kh-]q∂h8X���DRAFTq∑ÖÅq∏}qπ(hh¥hh≤ubaubahhñubhá)Åq∫}qª(hU�h!}qº(h#]h$]h%]h&]h)]uhh™h-]qΩhå)Åqæ}qø(hX:���(leinfelder) Listing scenarios for v1 and v2 interactions.q¿hh∫hhhhêh!}q¡(h#]h$]h%]h&]h)]uh+Kh-]q¬h8X:���(leinfelder) Listing scenarios for v1 and v2 interactions.q√ÖÅqƒ}q≈(hh¿hhæubaubahhñubehh£ubahUtbodyq∆ubehUtgroupq«ubahUtableq»ubahU
field_bodyq…ubeubaubcdocutils.nodes
topic
q )ÅqÀ}qÃ(hU�hhhhhUtopicqÕh!}qŒ(h#]h$]qœUcontentsq–ah%]h&]q—Ucontentsq“ah)]q”hauh+Kh,hh-]q‘(h/)Åq’}q÷(hX���Contentsh!}q◊(h#]h$]h%]h&]h)]uhhÀh-]qÿh8X���ContentsqŸÖÅq⁄}q€(hU�hh’ubahh3ubcdocutils.nodes
bullet_list
q‹)Åq›}qfi(hU�hhÀhNhUbullet_listqflh!}q‡(h#]h$]h%]h&]h)]uh+Nh,hh-]q·cdocutils.nodes
list_item
q‚)Åq„}q‰(hU�h!}qÂ(h#]h$]h%]h&]h)]uhh›h-]qÊ(hå)ÅqÁ}qË(hU�h!}qÈ(h#]h$]h%]h&]h)]uhh„h-]qÍcdocutils.nodes
reference
qÎ)ÅqÏ}qÌ(hU�h!}qÓ(h&]qÔh6ah%]h#]h$]h)]Urefidh(uhhÁh-]qh8X ���Supporting multiple API versionsqÒÖÅqÚ}qÛ(hh2hhÏubahU	referenceqÙubahhêubh‹)Åqı}qˆ(hU�h!}q˜(h#]h$]h%]h&]h)]uhh„h-]q¯(h‚)Åq˘}q˙(hU�h!}q˚(h#]h$]h%]h&]h)]uhhıh-]q¸hå)Åq˝}q˛(hU�h!}qˇ(h#]h$]h%]h&]h)]uhh˘h-]r���hÎ)År��}r��(hU�h!}r��(h&]r��Uid2r��ah%]h#]h$]h)]UrefidUoverviewr��uhh˝h-]r��h8X���Overviewr��ÖÅr	��}r
��(hX���Overviewr��hj��ubahhÙubahhêubahU	list_itemr��ubh‚)År
��}r��(hU�h!}r��(h#]h$]h%]h&]h)]uhhıh-]r��hå)År��}r��(hU�h!}r��(h#]h$]h%]h&]h)]uhj
��h-]r��hÎ)År��}r��(hU�h!}r��(h&]r��Uid3r��ah%]h#]h$]h)]UrefidUrequirementsr��uhj��h-]r��h8X���Requirementsr��ÖÅr��}r��(hX���Requirementsr��hj��ubahhÙubahhêubahj��ubh‚)År ��}r!��(hU�h!}r"��(h#]h$]h%]h&]h)]uhhıh-]r#��(hå)År$��}r%��(hU�h!}r&��(h#]h$]h%]h&]h)]uhj ��h-]r'��hÎ)År(��}r)��(hU�h!}r*��(h&]r+��Uid4r,��ah%]h#]h$]h)]UrefidU	scenariosr-��uhj$��h-]r.��h8X	���Scenariosr/��ÖÅr0��}r1��(hX	���Scenariosr2��hj(��ubahhÙubahhêubh‹)År3��}r4��(hU�h!}r5��(h#]h$]h%]h&]h)]uhj ��h-]r6��(h‚)År7��}r8��(hU�h!}r9��(h#]h$]h%]h&]h)]uhj3��h-]r:��hå)År;��}r<��(hU�h!}r=��(h#]h$]h%]h&]h)]uhj7��h-]r>��hÎ)År?��}r@��(hU�h!}rA��(h&]rB��Uid5rC��ah%]h#]h$]h)]UrefidUmn-running-v1-of-the-api-tier-1rD��uhj;��h-]rE��h8X!���MN running v1 of the API (Tier 1)rF��ÖÅrG��}rH��(hX!���MN running v1 of the API (Tier 1)rI��hj?��ubahhÙubahhêubahj��ubh‚)ÅrJ��}rK��(hU�h!}rL��(h#]h$]h%]h&]h)]uhj3��h-]rM��hå)ÅrN��}rO��(hU�h!}rP��(h#]h$]h%]h&]h)]uhjJ��h-]rQ��hÎ)ÅrR��}rS��(hU�h!}rT��(h&]rU��Uid6rV��ah%]h#]h$]h)]UrefidUmn-running-v2-of-the-api-tier-1rW��uhjN��h-]rX��h8X!���MN running v2 of the API (Tier 1)rY��ÖÅrZ��}r[��(hX!���MN running v2 of the API (Tier 1)r\��hjR��ubahhÙubahhêubahj��ubh‚)År]��}r^��(hU�h!}r_��(h#]h$]h%]h&]h)]uhj3��h-]r`��hå)Åra��}rb��(hU�h!}rc��(h#]h$]h%]h&]h)]uhj]��h-]rd��hÎ)Åre��}rf��(hU�h!}rg��(h&]rh��Uid7ri��ah%]h#]h$]h)]UrefidUmn-running-v1-of-the-api-tier-4rj��uhja��h-]rk��h8X!���MN running v1 of the API (Tier 4)rl��ÖÅrm��}rn��(hX!���MN running v1 of the API (Tier 4)ro��hje��ubahhÙubahhêubahj��ubh‚)Årp��}rq��(hU�h!}rr��(h#]h$]h%]h&]h)]uhj3��h-]rs��hå)Årt��}ru��(hU�h!}rv��(h#]h$]h%]h&]h)]uhjp��h-]rw��hÎ)Årx��}ry��(hU�h!}rz��(h&]r{��Uid8r|��ah%]h#]h$]h)]UrefidUmn-running-v2-of-the-api-tier-4r}��uhjt��h-]r~��h8X!���MN running v2 of the API (Tier 4)r��ÖÅrÄ��}rÅ��(hX!���MN running v2 of the API (Tier 4)rÇ��hjx��ubahhÙubahhêubahj��ubehhflubehj��ubehhflubehj��ubaubeubh)ÅrÉ��}rÑ��(hU�hhhhhh h!}rÖ��(h#]h$]h%]h&]rÜ��j��ah)]rá��hauh+Kh,hh-]rà��(h/)Årâ��}rä��(hj��hjÉ��hhhh3h!}rã��(h&]h%]h#]h$]h)]h5j��uh+Kh,hh-]rå��h8X���Overviewrç��ÖÅré��}rè��(hj��hjâ��ubaubhå)Årê��}rë��(hXÒ���In order to accommodate changes to the the SystemMetadata type, new API methods
will be introduced. Many existing v1 methods will have the same signatures but
any method that deals with the SystemMetadata type will need to have a v2 version.rí��hjÉ��hhhhêh!}rì��(h#]h$]h%]h&]h)]uh+Kh,hh-]rî��h8XÒ���In order to accommodate changes to the the SystemMetadata type, new API methods
will be introduced. Many existing v1 methods will have the same signatures but
any method that deals with the SystemMetadata type will need to have a v2 version.rï��ÖÅrñ��}ró��(hjí��hjê��ubaubeubhh)Årò��}rô��(hU�hhhhhh h!}rö��(h#]h$]h%]h&]rõ��j-��ah)]rú��h	auh+K"h,hh-]rù��(h/)Årû��}rü��(hj2��hjò��hhhh3h!}r†��(h&]h%]h#]h$]h)]h5j,��uh+K"h,hh-]r°��h8X	���Scenariosr¢��ÖÅr£��}r§��(hj2��hjû��ubaubh)År•��}r¶��(hU�hjò��hhhh h!}rß��(h#]h$]h%]h&]r®��jD��ah)]r©��h
auh+K%h,hh-]r™��(h/)År´��}r¨��(hjI��hj•��hhhh3h!}r≠��(h&]h%]h#]h$]h)]h5jC��uh+K%h,hh-]rÆ��h8X!���MN running v1 of the API (Tier 1)rØ��ÖÅr∞��}r±��(hjI��hj´��ubaubhå)År≤��}r≥��(hX���# MN.v1.create()
# Synchr¥��hj•��hhhhêh!}rµ��(h#]h$]h%]h&]h)]uh+K&h,hh-]r∂��h8X���# MN.v1.create()
# Synchr∑��ÖÅr∏��}rπ��(hj¥��hj≤��ubaubcdocutils.nodes
block_quote
r∫��)Årª��}rº��(hU�hj•��hNhUblock_quoterΩ��h!}ræ��(h#]h$]h%]h&]h)]uh+Nh,hh-]rø��h‹)År¿��}r¡��(hU�h!}r¬��(Ubulletr√��X���*h&]h%]h#]h$]h)]uhjª��h-]rƒ��(h‚)År≈��}r∆��(hX���MN.v1.listOjects()r«��h!}r»��(h#]h$]h%]h&]h)]uhj¿��h-]r…��hå)År ��}rÀ��(hj«��hj≈��hhhhêh!}rÃ��(h#]h$]h%]h&]h)]uh+K(h-]rÕ��h8X���MN.v1.listOjects()rŒ��ÖÅrœ��}r–��(hj«��hj ��ubaubahj��ubh‚)År—��}r“��(hX���CN.v1.create()r”��h!}r‘��(h#]h$]h%]h&]h)]uhj¿��h-]r’��hå)År÷��}r◊��(hj”��hj—��hhhhêh!}rÿ��(h#]h$]h%]h&]h)]uh+K)h-]rŸ��h8X���CN.v1.create()r⁄��ÖÅr€��}r‹��(hj”��hj÷��ubaubahj��ubehhflubaubcdocutils.nodes
definition_list
r›��)Årfi��}rfl��(hU�hj•��hNhUdefinition_listr‡��h!}r·��(h#]h$]h%]h&]h)]uh+Nh,hh-]r‚��cdocutils.nodes
definition_list_item
r„��)År‰��}rÂ��(hXπ���# Valid getSystemMetadata() calls
* CN.v2.getSystemMetadata() --> v2.SystemMetadata
* CN.v1.getSystemMetadata() --> v1.SystemMetadata
* MN.v1.getSystemMetadata() --> v1.SystemMetadata

hjfi��hhhUdefinition_list_itemrÊ��h!}rÁ��(h#]h$]h%]h&]h)]uh+K.h-]rË��(cdocutils.nodes
term
rÈ��)ÅrÍ��}rÎ��(hX!���# Valid getSystemMetadata() callsrÏ��hj‰��hhhUtermrÌ��h!}rÓ��(h#]h$]h%]h&]h)]uh+K.h-]rÔ��h8X!���# Valid getSystemMetadata() callsr��ÖÅ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˙��(j√��X���*h&]h%]h#]h$]h)]uhjÙ��h-]r˚��(h‚)År¸��}r˝��(hX/���CN.v2.getSystemMetadata() --> v2.SystemMetadatar˛��h!}rˇ��(h#]h$]h%]h&]h)]uhj¯��h-]r���hå)År��}r��(hj˛��hj¸��hhhhêh!}r��(h#]h$]h%]h&]h)]uh+K+h-]r��h8X/���CN.v2.getSystemMetadata() --> v2.SystemMetadatar��ÖÅr��}r��(hj˛��hj��ubaubahj��ubh‚)År��}r	��(hX/���CN.v1.getSystemMetadata() --> v1.SystemMetadatar
��h!}r��(h#]h$]h%]h&]h)]uhj¯��h-]r��hå)År
��}r��(hj
��hj��hhhhêh!}r��(h#]h$]h%]h&]h)]uh+K,h-]r��h8X/���CN.v1.getSystemMetadata() --> v1.SystemMetadatar��ÖÅr��}r��(hj
��hj
��ubaubahj��ubh‚)År��}r��(hX1���MN.v1.getSystemMetadata() --> v1.SystemMetadata

h!}r��(h#]h$]h%]h&]h)]uhj¯��h-]r��hå)År��}r��(hX/���MN.v1.getSystemMetadata() --> v1.SystemMetadatar��hj��hhhhêh!}r��(h#]h$]h%]h&]h)]uh+K-h-]r��h8X/���MN.v1.getSystemMetadata() --> v1.SystemMetadatar��ÖÅr��}r��(hj��hj��ubaubahj��ubehhflubahU
definitionr ��ubeubaubeubh)År!��}r"��(hU�hjò��hhhh h!}r#��(h#]h$]h%]h&]r$��jW��ah)]r%��hauh+K1h,hh-]r&��(h/)År'��}r(��(hj\��hj!��hhhh3h!}r)��(h&]h%]h#]h$]h)]h5jV��uh+K1h,hh-]r*��h8X!���MN running v2 of the API (Tier 1)r+��ÖÅr,��}r-��(hj\��hj'��ubaubhå)År.��}r/��(hX���# MN.v2.create()
# Synchr0��hj!��hhhhêh!}r1��(h#]h$]h%]h&]h)]uh+K2h,hh-]r2��h8X���# MN.v2.create()
# Synchr3��ÖÅr4��}r5��(hj0��hj.��ubaubj∫��)År6��}r7��(hU�hj!��hNhjΩ��h!}r8��(h#]h$]h%]h&]h)]uh+Nh,hh-]r9��h‹)År:��}r;��(hU�h!}r<��(j√��X���*h&]h%]h#]h$]h)]uhj6��h-]r=��(h‚)År>��}r?��(hX���MN.v2.listOjects()r@��h!}rA��(h#]h$]h%]h&]h)]uhj:��h-]rB��hå)ÅrC��}rD��(hj@��hj>��hhhhêh!}rE��(h#]h$]h%]h&]h)]uh+K4h-]rF��h8X���MN.v2.listOjects()rG��ÖÅrH��}rI��(hj@��hjC��ubaubahj��ubh‚)ÅrJ��}rK��(hX���CN.v2.create()rL��h!}rM��(h#]h$]h%]h&]h)]uhj:��h-]rN��hå)ÅrO��}rP��(hjL��hjJ��hhhhêh!}rQ��(h#]h$]h%]h&]h)]uh+K5h-]rR��h8X���CN.v2.create()rS��ÖÅrT��}rU��(hjL��hjO��ubaubahj��ubehhflubaubj›��)ÅrV��}rW��(hU�hj!��hNhj‡��h!}rX��(h#]h$]h%]h&]h)]uh+Nh,hh-]rY��j„��)ÅrZ��}r[��(hXÎ���# Valid getSystemMetadata() calls
* CN.v2.getSystemMetadata() --> v2.SystemMetadata
* MN.v2.getSystemMetadata() --> v2.SystemMetadata
* CN.v1.getSystemMetadata() --> v1.SystemMetadata
* MN.v1.getSystemMetadata() --> v1.SystemMetadata

hjV��hhhjÊ��h!}r\��(h#]h$]h%]h&]h)]uh+K;h-]r]��(jÈ��)År^��}r_��(hX!���# Valid getSystemMetadata() callsr`��hjZ��hhhjÌ��h!}ra��(h#]h$]h%]h&]h)]uh+K;h-]rb��h8X!���# Valid getSystemMetadata() callsrc��ÖÅrd��}re��(hj`��hj^��ubaubjÛ��)Årf��}rg��(hU�h!}rh��(h#]h$]h%]h&]h)]uhjZ��h-]ri��h‹)Årj��}rk��(hU�h!}rl��(j√��X���*h&]h%]h#]h$]h)]uhjf��h-]rm��(h‚)Årn��}ro��(hX/���CN.v2.getSystemMetadata() --> v2.SystemMetadatarp��h!}rq��(h#]h$]h%]h&]h)]uhjj��h-]rr��hå)Års��}rt��(hjp��hjn��hhhhêh!}ru��(h#]h$]h%]h&]h)]uh+K7h-]rv��h8X/���CN.v2.getSystemMetadata() --> v2.SystemMetadatarw��ÖÅrx��}ry��(hjp��hjs��ubaubahj��ubh‚)Årz��}r{��(hX/���MN.v2.getSystemMetadata() --> v2.SystemMetadatar|��h!}r}��(h#]h$]h%]h&]h)]uhjj��h-]r~��hå)År��}rÄ��(hj|��hjz��hhhhêh!}rÅ��(h#]h$]h%]h&]h)]uh+K8h-]rÇ��h8X/���MN.v2.getSystemMetadata() --> v2.SystemMetadatarÉ��ÖÅrÑ��}rÖ��(hj|��hj��ubaubahj��ubh‚)ÅrÜ��}rá��(hX/���CN.v1.getSystemMetadata() --> v1.SystemMetadatarà��h!}râ��(h#]h$]h%]h&]h)]uhjj��h-]rä��hå)Årã��}rå��(hjà��hjÜ��hhhhêh!}rç��(h#]h$]h%]h&]h)]uh+K9h-]ré��h8X/���CN.v1.getSystemMetadata() --> v1.SystemMetadatarè��ÖÅrê��}rë��(hjà��hjã��ubaubahj��ubh‚)Årí��}rì��(hX1���MN.v1.getSystemMetadata() --> v1.SystemMetadata

h!}rî��(h#]h$]h%]h&]h)]uhjj��h-]rï��hå)Årñ��}ró��(hX/���MN.v1.getSystemMetadata() --> v1.SystemMetadatarò��hjí��hhhhêh!}rô��(h#]h$]h%]h&]h)]uh+K:h-]rö��h8X/���MN.v1.getSystemMetadata() --> v1.SystemMetadatarõ��ÖÅrú��}rù��(hjò��hjñ��ubaubahj��ubehhflubahj ��ubeubaubeubh)Årû��}rü��(hU�hjò��hhhh h!}r†��(h#]h$]h%]h&]r°��jj��ah)]r¢��hauh+K>h,hh-]r£��(h/)År§��}r•��(hjo��hjû��hhhh3h!}r¶��(h&]h%]h#]h$]h)]h5ji��uh+K>h,hh-]rß��h8X!���MN running v1 of the API (Tier 4)r®��ÖÅr©��}r™��(hjo��hj§��ubaubhå)År´��}r¨��(hX���# MN.v1.create()
# Synchr≠��hjû��hhhhêh!}rÆ��(h#]h$]h%]h&]h)]uh+K?h,hh-]rØ��h8X���# MN.v1.create()
# Synchr∞��ÖÅr±��}r≤��(hj≠��hj´��ubaubj∫��)År≥��}r¥��(hU�hjû��hNhjΩ��h!}rµ��(h#]h$]h%]h&]h)]uh+Nh,hh-]r∂��h‹)År∑��}r∏��(hU�h!}rπ��(j√��X���*h&]h%]h#]h$]h)]uhj≥��h-]r∫��(h‚)Årª��}rº��(hX���MN.v1.listOjects()rΩ��h!}ræ��(h#]h$]h%]h&]h)]uhj∑��h-]rø��hå)År¿��}r¡��(hjΩ��hjª��hhhhêh!}r¬��(h#]h$]h%]h&]h)]uh+KAh-]r√��h8X���MN.v1.listOjects()rƒ��ÖÅr≈��}r∆��(hjΩ��hj¿��ubaubahj��ubh‚)År«��}r»��(hX���CN.[v1|v2].create()r…��h!}r ��(h#]h$]h%]h&]h)]uhj∑��h-]rÀ��hå)ÅrÃ��}rÕ��(hj…��hj«��hhhhêh!}rŒ��(h#]h$]h%]h&]h)]uh+KBh-]rœ��h8X���CN.[v1|v2].create()r–��ÖÅr—��}r“��(hj…��hjÃ��ubaubahj��ubehhflubaubj›��)År”��}r‘��(hU�hjû��hNhj‡��h!}r’��(h#]h$]h%]h&]h)]uh+Nh,hh-]r÷��(j„��)År◊��}rÿ��(hX©���# Valid get() calls
* CN.v2.getSystemMetadata() --> v2.SystemMetadata
* CN.v1.getSystemMetadata() --> v1.SystemMetadata
* MN.v1.getSystemMetadata() --> v1.SystemMetadatahj”��hhhjÊ��h!}rŸ��(h#]h$]h%]h&]h)]uh+KEh-]r⁄��(jÈ��)År€��}r‹��(hX���# Valid get() callsr›��hj◊��hhhjÌ��h!}rfi��(h#]h$]h%]h&]h)]uh+KEh-]rfl��h8X���# Valid get() callsr‡��ÖÅr·��}r‚��(hj›��hj€��ubaubjÛ��)År„��}r‰��(hU�h!}rÂ��(h#]h$]h%]h&]h)]uhj◊��h-]rÊ��h‹)ÅrÁ��}rË��(hU�h!}rÈ��(j√��X���*h&]h%]h#]h$]h)]uhj„��h-]rÍ��(h‚)ÅrÎ��}rÏ��(hX/���CN.v2.getSystemMetadata() --> v2.SystemMetadatarÌ��h!}rÓ��(h#]h$]h%]h&]h)]uhjÁ��h-]rÔ��hå)År��}rÒ��(hjÌ��hjÎ��hhhhêh!}rÚ��(h#]h$]h%]h&]h)]uh+KDh-]rÛ��h8X/���CN.v2.getSystemMetadata() --> v2.SystemMetadatarÙ��ÖÅrı��}rˆ��(hjÌ��hj��ubaubahj��ubh‚)År˜��}r¯��(hX/���CN.v1.getSystemMetadata() --> v1.SystemMetadatar˘��h!}r˙��(h#]h$]h%]h&]h)]uhjÁ��h-]r˚��hå)År¸��}r˝��(hj˘��hj˜��hhhhêh!}r˛��(h#]h$]h%]h&]h)]uh+KEh-]rˇ��h8X/���CN.v1.getSystemMetadata() --> v1.SystemMetadatar���ÖÅr��}r��(hj˘��hj¸��ubaubahj��ubh‚)År��}r��(hX/���MN.v1.getSystemMetadata() --> v1.SystemMetadatar��h!}r��(h#]h$]h%]h&]h)]uhjÁ��h-]r��hå)År��}r	��(hj��hj��hhhhêh!}r
��(h#]h$]h%]h&]h)]uh+KFh-]r��h8X/���MN.v1.getSystemMetadata() --> v1.SystemMetadatar��ÖÅr
��}r��(hj��hj��ubaubahj��ubehhflubahj ��ubeubj„��)År��}r��(hXy���# Replication to MN.target1 running v1 API
* MN.v1.getReplica()
* MN.target1.v1.getSystemMetadata() --> v1.SystemMetadatahj”��hhhjÊ��h!}r��(h#]h$]h%]h&]h)]uh+KHh,hh-]r��(jÈ��)År��}r��(hX*���# Replication to MN.target1 running v1 APIr��hj��hhhjÌ��h!}r��(h#]h$]h%]h&]h)]uh+KHh-]r��h8X*���# Replication to MN.target1 running v1 APIr��ÖÅr��}r��(hj��hj��ubaubjÛ��)År��}r��(hU�h!}r��(h#]h$]h%]h&]h)]uhj��h-]r��h‹)År��}r ��(hU�h!}r!��(j√��X���*h&]h%]h#]h$]h)]uhj��h-]r"��(h‚)År#��}r$��(hX���MN.v1.getReplica()r%��h!}r&��(h#]h$]h%]h&]h)]uhj��h-]r'��hå)År(��}r)��(hj%��hj#��hhhhêh!}r*��(h#]h$]h%]h&]h)]uh+KHh-]r+��h8X���MN.v1.getReplica()r,��ÖÅr-��}r.��(hj%��hj(��ubaubahj��ubh‚)År/��}r0��(hX7���MN.target1.v1.getSystemMetadata() --> v1.SystemMetadatar1��h!}r2��(h#]h$]h%]h&]h)]uhj��h-]r3��hå)År4��}r5��(hj1��hj/��hhhhêh!}r6��(h#]h$]h%]h&]h)]uh+KIh-]r7��h8X7���MN.target1.v1.getSystemMetadata() --> v1.SystemMetadatar8��ÖÅr9��}r:��(hj1��hj4��ubaubahj��ubehhflubahj ��ubeubj„��)År;��}r<��(hX≥���# Replication to MN.target2 running v2 API
* MN.v1.getReplica()
* MN.target2.v1.getSystemMetadata() --> v1.SystemMetadata
* MN.target2.v2.getSystemMetadata() --> v2.SystemMetadatahj”��hhhjÊ��h!}r=��(h#]h$]h%]h&]h)]uh+KLh,hh-]r>��(jÈ��)År?��}r@��(hX*���# Replication to MN.target2 running v2 APIrA��hj;��hhhjÌ��h!}rB��(h#]h$]h%]h&]h)]uh+KLh-]rC��h8X*���# Replication to MN.target2 running v2 APIrD��ÖÅrE��}rF��(hjA��hj?��ubaubjÛ��)ÅrG��}rH��(hU�h!}rI��(h#]h$]h%]h&]h)]uhj;��h-]rJ��h‹)ÅrK��}rL��(hU�h!}rM��(j√��X���*h&]h%]h#]h$]h)]uhjG��h-]rN��(h‚)ÅrO��}rP��(hX���MN.v1.getReplica()rQ��h!}rR��(h#]h$]h%]h&]h)]uhjK��h-]rS��hå)ÅrT��}rU��(hjQ��hjO��hhhhêh!}rV��(h#]h$]h%]h&]h)]uh+KKh-]rW��h8X���MN.v1.getReplica()rX��ÖÅrY��}rZ��(hjQ��hjT��ubaubahj��ubh‚)År[��}r\��(hX7���MN.target2.v1.getSystemMetadata() --> v1.SystemMetadatar]��h!}r^��(h#]h$]h%]h&]h)]uhjK��h-]r_��hå)År`��}ra��(hj]��hj[��hhhhêh!}rb��(h#]h$]h%]h&]h)]uh+KLh-]rc��h8X7���MN.target2.v1.getSystemMetadata() --> v1.SystemMetadatard��ÖÅre��}rf��(hj]��hj`��ubaubahj��ubh‚)Årg��}rh��(hX7���MN.target2.v2.getSystemMetadata() --> v2.SystemMetadatari��h!}rj��(h#]h$]h%]h&]h)]uhjK��h-]rk��hå)Årl��}rm��(hji��hjg��hhhhêh!}rn��(h#]h$]h%]h&]h)]uh+KMh-]ro��h8X7���MN.target2.v2.getSystemMetadata() --> v2.SystemMetadatarp��ÖÅrq��}rr��(hji��hjl��ubaubahj��ubehhflubahj ��ubeubj„��)Års��}rt��(hX$��# Updates
* CN.v1.setAccessPolicy() --> MN.target1.v1.systemMetadataChanged()
* CN.v1.setAccessPolicy() --> MN.target2.v2.systemMetadataChanged()
* CN.v2.setAccessPolicy() --> MN.target1.v1.systemMetadataChanged() ALLOWED?
* CN.v2.setAccessPolicy() --> MN.target2.v2.systemMetadataChanged()

hj”��hhhjÊ��h!}ru��(h#]h$]h%]h&]h)]uh+KSh,hh-]rv��(jÈ��)Årw��}rx��(hX	���# Updatesry��hjs��hhhjÌ��h!}rz��(h#]h$]h%]h&]h)]uh+KSh-]r{��h8X	���# Updatesr|��ÖÅr}��}r~��(hjy��hjw��ubaubjÛ��)År��}rÄ��(hU�h!}rÅ��(h#]h$]h%]h&]h)]uhjs��h-]rÇ��h‹)ÅrÉ��}rÑ��(hU�h!}rÖ��(j√��X���*h&]h%]h#]h$]h)]uhj��h-]rÜ��(h‚)Årá��}rà��(hXA���CN.v1.setAccessPolicy() --> MN.target1.v1.systemMetadataChanged()râ��h!}rä��(h#]h$]h%]h&]h)]uhjÉ��h-]rã��hå)Årå��}rç��(hjâ��hjá��hhhhêh!}ré��(h#]h$]h%]h&]h)]uh+KOh-]rè��h8XA���CN.v1.setAccessPolicy() --> MN.target1.v1.systemMetadataChanged()rê��ÖÅrë��}rí��(hjâ��hjå��ubaubahj��ubh‚)Årì��}rî��(hXA���CN.v1.setAccessPolicy() --> MN.target2.v2.systemMetadataChanged()rï��h!}rñ��(h#]h$]h%]h&]h)]uhjÉ��h-]ró��hå)Årò��}rô��(hjï��hjì��hhhhêh!}rö��(h#]h$]h%]h&]h)]uh+KPh-]rõ��h8XA���CN.v1.setAccessPolicy() --> MN.target2.v2.systemMetadataChanged()rú��ÖÅrù��}rû��(hjï��hjò��ubaubahj��ubh‚)Årü��}r†��(hXJ���CN.v2.setAccessPolicy() --> MN.target1.v1.systemMetadataChanged() ALLOWED?r°��h!}r¢��(h#]h$]h%]h&]h)]uhjÉ��h-]r£��hå)År§��}r•��(hj°��hjü��hhhhêh!}r¶��(h#]h$]h%]h&]h)]uh+KQh-]rß��h8XJ���CN.v2.setAccessPolicy() --> MN.target1.v1.systemMetadataChanged() ALLOWED?r®��ÖÅr©��}r™��(hj°��hj§��ubaubahj��ubh‚)År´��}r¨��(hXC���CN.v2.setAccessPolicy() --> MN.target2.v2.systemMetadataChanged()

h!}r≠��(h#]h$]h%]h&]h)]uhjÉ��h-]rÆ��hå)ÅrØ��}r∞��(hXA���CN.v2.setAccessPolicy() --> MN.target2.v2.systemMetadataChanged()r±��hj´��hhhhêh!}r≤��(h#]h$]h%]h&]h)]uh+KRh-]r≥��h8XA���CN.v2.setAccessPolicy() --> MN.target2.v2.systemMetadataChanged()r¥��ÖÅrµ��}r∂��(hj±��hjØ��ubaubahj��ubehhflubahj ��ubeubeubcdocutils.nodes
figure
r∑��)År∏��}rπ��(hU�hjû��hhhUfigurer∫��h!}rª��(h#]h$]h%]h&]h)]uh+KVh,hh-]rº��cdocutils.nodes
image
rΩ��)Åræ��}rø��(hX#���.. figure:: images/versions_01.png
hj∏��hhhUimager¿��h!}r¡��(UuriX���design/images/versions_01.pngr¬��h&]h%]h#]h$]U
candidatesr√��}rƒ��U*j¬��sh)]uh+KVh-]ubaubhå)År≈��}r∆��(hX@���**Figure 1.** Mixed MN API version interactions with replicationr«��hjû��hhhhêh!}r»��(h#]h$]h%]h&]h)]uh+KWh,hh-]r…��(cdocutils.nodes
strong
r ��)ÅrÀ��}rÃ��(hX
���**Figure 1.**h!}rÕ��(h#]h$]h%]h&]h)]uhj≈��h-]rŒ��h8X	���Figure 1.rœ��ÖÅr–��}r—��(hU�hjÀ��ubahUstrongr“��ubh8X3��� Mixed MN API version interactions with replicationr”��ÖÅr‘��}r’��(hX3��� Mixed MN API version interactions with replicationhj≈��ubeubcdocutils.nodes
comment
r÷��)År◊��}rÿ��(hX��@startuml images/versions_01.png
title Replicate content across mixed API versions (authMN.v1)
participant "User" as client
participant "MN.v1" as MN
participant "MN.target.v1" as MN.target.v1
participant "MN.target.v2" as MN.target.v2
participant "CN" as CN

group Create, Synch, Read
  'create content on the MN
  client -> MN: v1.create()
  'Synchronize on the CN
  CN -> MN: v1.listObjects()
  CN -> CN: v1.create()
  'Retrieve objects
  client --> MN: v1.getSystemMetadata()
  client <-- MN: v1.SystemMetadata
  client --> CN: v1.getSystemMetadata()
  client <-- CN: v1.SystemMetadata
  client --> CN: v2.getSystemMetadata()
  client <-- CN: v2.SystemMetadata
end
...
group Replicate
      'replicate to a v1 MN
  CN -> MN.target.v1: v1.replicate()
  MN.target.v1 -> MN:  v1.getReplica()
  client --> MN.target.v1: v1.getSystemMetadata()
  client <-- MN.target.v1: v1.SystemMetadata
  'replicate to a v2 MN
  CN -> MN.target.v2: v1.replicate()
  MN.target.v2 -> MN:  v1.getReplica()
  client --> MN.target.v2: v1.getSystemMetadata()
  client <-- MN.target.v2: v1.SystemMetadata
  client --> MN.target.v2: v2.getSystemMetadata()
  client <-- MN.target.v2: v2.SystemMetadata
end
...
group Update
      'update the access policy
  client -> CN: v1.setAccessPolicy()
  CN -> MN.target.v1:  v1.systemMetadataChanged()
  MN.target.v1 -> CN: v1.getSystemMetadata()
  MN.target.v1 <- CN: v1.SystemMetadata

  CN -> MN.target.v2:  v1.systemMetadataChanged()
  MN.target.v2 -> CN: v1.getSystemMetadata()
  MN.target.v2 <- CN: v1.SystemMetadata
end

 @endumlhjû��hhhUcommentrŸ��h!}r⁄��(U	xml:spacer€��Upreserver‹��h&]h%]h#]h$]h)]uh+Kèh,hh-]r›��h8X��@startuml images/versions_01.png
title Replicate content across mixed API versions (authMN.v1)
participant "User" as client
participant "MN.v1" as MN
participant "MN.target.v1" as MN.target.v1
participant "MN.target.v2" as MN.target.v2
participant "CN" as CN

group Create, Synch, Read
  'create content on the MN
  client -> MN: v1.create()
  'Synchronize on the CN
  CN -> MN: v1.listObjects()
  CN -> CN: v1.create()
  'Retrieve objects
  client --> MN: v1.getSystemMetadata()
  client <-- MN: v1.SystemMetadata
  client --> CN: v1.getSystemMetadata()
  client <-- CN: v1.SystemMetadata
  client --> CN: v2.getSystemMetadata()
  client <-- CN: v2.SystemMetadata
end
...
group Replicate
      'replicate to a v1 MN
  CN -> MN.target.v1: v1.replicate()
  MN.target.v1 -> MN:  v1.getReplica()
  client --> MN.target.v1: v1.getSystemMetadata()
  client <-- MN.target.v1: v1.SystemMetadata
  'replicate to a v2 MN
  CN -> MN.target.v2: v1.replicate()
  MN.target.v2 -> MN:  v1.getReplica()
  client --> MN.target.v2: v1.getSystemMetadata()
  client <-- MN.target.v2: v1.SystemMetadata
  client --> MN.target.v2: v2.getSystemMetadata()
  client <-- MN.target.v2: v2.SystemMetadata
end
...
group Update
      'update the access policy
  client -> CN: v1.setAccessPolicy()
  CN -> MN.target.v1:  v1.systemMetadataChanged()
  MN.target.v1 -> CN: v1.getSystemMetadata()
  MN.target.v1 <- CN: v1.SystemMetadata

  CN -> MN.target.v2:  v1.systemMetadataChanged()
  MN.target.v2 -> CN: v1.getSystemMetadata()
  MN.target.v2 <- CN: v1.SystemMetadata
end

 @endumlrfi��ÖÅrfl��}r‡��(hU�hj◊��ubaubeubh)År·��}r‚��(hU�hjò��hhhh h!}r„��(h#]h$]h%]h&]r‰��j}��ah)]rÂ��hauh+Këh,hh-]rÊ��(h/)ÅrÁ��}rË��(hjÇ��hj·��hhhh3h!}rÈ��(h&]h%]h#]h$]h)]h5j|��uh+Këh,hh-]rÍ��h8X!���MN running v2 of the API (Tier 4)rÎ��ÖÅrÏ��}rÌ��(hjÇ��hjÁ��ubaubhå)ÅrÓ��}rÔ��(hX���# MN.v2.create()
# Synchr��hj·��hhhhêh!}rÒ��(h#]h$]h%]h&]h)]uh+Kíh,hh-]rÚ��h8X���# MN.v2.create()
# SynchrÛ��ÖÅrÙ��}rı��(hj��hjÓ��ubaubj∫��)Årˆ��}r˜��(hU�hj·��hNhjΩ��h!}r¯��(h#]h$]h%]h&]h)]uh+Nh,hh-]r˘��h‹)År˙��}r˚��(hU�h!}r¸��(j√��X���*h&]h%]h#]h$]h)]uhjˆ��h-]r˝��(h‚)År˛��}rˇ��(hX���MN.v1.listOjects()r���h!}r��(h#]h$]h%]h&]h)]uhj˙��h-]r��hå)År��}r��(hj���hj˛��hhhhêh!}r��(h#]h$]h%]h&]h)]uh+Kîh-]r��h8X���MN.v1.listOjects()r��ÖÅr��}r	��(hj���hj��ubaubahj��ubh‚)År
��}r��(hX���CN.[v1|v2].create()r��h!}r
��(h#]h$]h%]h&]h)]uhj˙��h-]r��hå)År��}r��(hj��hj
��hhhhêh!}r��(h#]h$]h%]h&]h)]uh+Kïh-]r��h8X���CN.[v1|v2].create()r��ÖÅr��}r��(hj��hj��ubaubahj��ubehhflubaubj›��)År��}r��(hU�hj·��hNhj‡��h!}r��(h#]h$]h%]h&]h)]uh+Nh,hh-]r��(j„��)År��}r��(hX©���# Valid get() calls
* CN.v2.getSystemMetadata() --> v2.SystemMetadata
* CN.v1.getSystemMetadata() --> v1.SystemMetadata
* MN.v1.getSystemMetadata() --> v1.SystemMetadatahj��hhhjÊ��h!}r��(h#]h$]h%]h&]h)]uh+Kòh-]r��(jÈ��)År��}r��(hX���# Valid get() callsr ��hj��hhhjÌ��h!}r!��(h#]h$]h%]h&]h)]uh+Kòh-]r"��h8X���# Valid get() callsr#��ÖÅr$��}r%��(hj ��hj��ubaubjÛ��)År&��}r'��(hU�h!}r(��(h#]h$]h%]h&]h)]uhj��h-]r)��h‹)År*��}r+��(hU�h!}r,��(j√��X���*h&]h%]h#]h$]h)]uhj&��h-]r-��(h‚)År.��}r/��(hX/���CN.v2.getSystemMetadata() --> v2.SystemMetadatar0��h!}r1��(h#]h$]h%]h&]h)]uhj*��h-]r2��hå)År3��}r4��(hj0��hj.��hhhhêh!}r5��(h#]h$]h%]h&]h)]uh+Kóh-]r6��h8X/���CN.v2.getSystemMetadata() --> v2.SystemMetadatar7��ÖÅr8��}r9��(hj0��hj3��ubaubahj��ubh‚)År:��}r;��(hX/���CN.v1.getSystemMetadata() --> v1.SystemMetadatar<��h!}r=��(h#]h$]h%]h&]h)]uhj*��h-]r>��hå)År?��}r@��(hj<��hj:��hhhhêh!}rA��(h#]h$]h%]h&]h)]uh+Kòh-]rB��h8X/���CN.v1.getSystemMetadata() --> v1.SystemMetadatarC��ÖÅrD��}rE��(hj<��hj?��ubaubahj��ubh‚)ÅrF��}rG��(hX/���MN.v1.getSystemMetadata() --> v1.SystemMetadatarH��h!}rI��(h#]h$]h%]h&]h)]uhj*��h-]rJ��hå)ÅrK��}rL��(hjH��hjF��hhhhêh!}rM��(h#]h$]h%]h&]h)]uh+Kôh-]rN��h8X/���MN.v1.getSystemMetadata() --> v1.SystemMetadatarO��ÖÅrP��}rQ��(hjH��hjK��ubaubahj��ubehhflubahj ��ubeubj„��)ÅrR��}rS��(hX7���# Replication to MN.target running v1 API
* NOT ALLOWEDhj��hhhjÊ��h!}rT��(h#]h$]h%]h&]h)]uh+Köh,hh-]rU��(jÈ��)ÅrV��}rW��(hX)���# Replication to MN.target running v1 APIrX��hjR��hhhjÌ��h!}rY��(h#]h$]h%]h&]h)]uh+Köh-]rZ��h8X)���# Replication to MN.target running v1 APIr[��ÖÅr\��}r]��(hjX��hjV��ubaubjÛ��)År^��}r_��(hU�h!}r`��(h#]h$]h%]h&]h)]uhjR��h-]ra��h‹)Årb��}rc��(hU�h!}rd��(j√��X���*h&]h%]h#]h$]h)]uhj^��h-]re��h‚)Årf��}rg��(hX���NOT ALLOWEDrh��h!}ri��(h#]h$]h%]h&]h)]uhjb��h-]rj��hå)Årk��}rl��(hjh��hjf��hhhhêh!}rm��(h#]h$]h%]h&]h)]uh+Kõh-]rn��h8X���NOT ALLOWEDro��ÖÅrp��}rq��(hjh��hjk��ubaubahj��ubahhflubahj ��ubeubj„��)Årr��}rs��(hX≤���# Replication to MN.target running v2 API
* MN.v1.getReplica()
* MN.target.v1.getSystemMetadata() --> v1.SystemMetadata
* MN.target.v2.getSystemMetadata() --> v2.SystemMetadata

hj��hhhjÊ��h!}rt��(h#]h$]h%]h&]h)]uh+K†h,hh-]ru��(jÈ��)Årv��}rw��(hX)���# Replication to MN.target running v2 APIrx��hjr��hhhjÌ��h!}ry��(h#]h$]h%]h&]h)]uh+K†h-]rz��h8X)���# Replication to MN.target running v2 APIr{��ÖÅr|��}r}��(hjx��hjv��ubaubjÛ��)År~��}r��(hU�h!}rÄ��(h#]h$]h%]h&]h)]uhjr��h-]rÅ��h‹)ÅrÇ��}rÉ��(hU�h!}rÑ��(j√��X���*h&]h%]h#]h$]h)]uhj~��h-]rÖ��(h‚)ÅrÜ��}rá��(hX���MN.v1.getReplica()rà��h!}râ��(h#]h$]h%]h&]h)]uhjÇ��h-]rä��hå)Årã��}rå��(hjà��hjÜ��hhhhêh!}rç��(h#]h$]h%]h&]h)]uh+Kùh-]ré��h8X���MN.v1.getReplica()rè��ÖÅrê��}rë��(hjà��hjã��ubaubahj��ubh‚)Årí��}rì��(hX6���MN.target.v1.getSystemMetadata() --> v1.SystemMetadatarî��h!}rï��(h#]h$]h%]h&]h)]uhjÇ��h-]rñ��hå)Åró��}rò��(hjî��hjí��hhhhêh!}rô��(h#]h$]h%]h&]h)]uh+Kûh-]rö��h8X6���MN.target.v1.getSystemMetadata() --> v1.SystemMetadatarõ��ÖÅrú��}rù��(hjî��hjó��ubaubahj��ubh‚)Årû��}rü��(hX8���MN.target.v2.getSystemMetadata() --> v2.SystemMetadata

h!}r†��(h#]h$]h%]h&]h)]uhjÇ��h-]r°��hå)År¢��}r£��(hX6���MN.target.v2.getSystemMetadata() --> v2.SystemMetadatar§��hjû��hhhhêh!}r•��(h#]h$]h%]h&]h)]uh+Küh-]r¶��h8X6���MN.target.v2.getSystemMetadata() --> v2.SystemMetadatarß��ÖÅr®��}r©��(hj§��hj¢��ubaubahj��ubehhflubahj ��ubeubeubj∑��)År™��}r´��(hU�hj·��hhhj∫��h!}r¨��(h#]h$]h%]h&]h)]uh+K£h,hh-]r≠��jΩ��)ÅrÆ��}rØ��(hX#���.. figure:: images/versions_02.png
hj™��hhhj¿��h!}r∞��(UuriX���design/images/versions_02.pngr±��h&]h%]h#]h$]j√��}r≤��U*j±��sh)]uh+K£h-]ubaubhå)År≥��}r¥��(hXi���**Figure 2.** Mixed MN API version interactions with replication
The original MN is running v2 of the APIhj·��hhhhêh!}rµ��(h#]h$]h%]h&]h)]uh+K§h,hh-]r∂��(j ��)År∑��}r∏��(hX
���**Figure 2.**h!}rπ��(h#]h$]h%]h&]h)]uhj≥��h-]r∫��h8X	���Figure 2.rª��ÖÅrº��}rΩ��(hU�hj∑��ubahj“��ubh8X\��� Mixed MN API version interactions with replication
The original MN is running v2 of the APIræ��ÖÅrø��}r¿��(hX\��� Mixed MN API version interactions with replication
The original MN is running v2 of the APIhj≥��ubeubj÷��)År¡��}r¬��(hX	��@startuml images/versions_02.png
title Replicate content across mixed API versions (authMN.v2)
participant "User" as client
participant "MN.v2" as MN
participant "MN.target.v1" as MN.target.v1
participant "MN.target.v2" as MN.target.v2
participant "CN" as CN

group Create, Synch, Read
  'create content on the MN
  client -> MN: create()
  'Synchronize on the CN
  CN -> MN: v2.listObjects()
  CN -> CN: v2.create()
  ...
  'Retrieve objects
  client --> MN: v1.getSystemMetadata()
  client <-- MN: v1.SystemMetadata
  client --> MN: v2.getSystemMetadata()
  client <-- MN: v2.SystemMetadata
  client --> CN: v1.getSystemMetadata()
  client <-- CN: v1.SystemMetadata
  client --> CN: v2.getSystemMetadata()
  client <-- CN: v2.SystemMetadata
end
...
group Replicate
  CN -> MN.target.v2: v2.replicate()
  MN.target.v2 -> MN:  v2.getReplica()
  client --> MN.target.v2: v1.getSystemMetadata()
  client <-- MN.target.v2: v1.SystemMetadata
  client --> MN.target.v2: v2.getSystemMetadata()
  client <-- MN.target.v2: v2.SystemMetadata
  CN --> MN.target.v1: v1.replicate() NOT ALLOWED
end
...
group Update
      'update the access policy using v1
  client -> CN: v1.setAccessPolicy()
  CN -> MN.target.v2:  v1.systemMetadataChanged()
  MN.target.v2 -> CN: v1.getSystemMetadata()
  MN.target.v2 <- CN: v1.SystemMetadata
  ...
  'update the access policy using v2
  client -> CN: v2.setAccessPolicy()
  CN -> MN.target.v2:  v2.systemMetadataChanged()
  MN.target.v2 -> CN: v2.getSystemMetadata()
  MN.target.v2 <- CN: v2.SystemMetadata
end

 @endumlhj·��hhhjŸ��h!}r√��(j€��j‹��h&]h%]h#]h$]h)]uh+K⁄h,hh-]rƒ��h8X	��@startuml images/versions_02.png
title Replicate content across mixed API versions (authMN.v2)
participant "User" as client
participant "MN.v2" as MN
participant "MN.target.v1" as MN.target.v1
participant "MN.target.v2" as MN.target.v2
participant "CN" as CN

group Create, Synch, Read
  'create content on the MN
  client -> MN: create()
  'Synchronize on the CN
  CN -> MN: v2.listObjects()
  CN -> CN: v2.create()
  ...
  'Retrieve objects
  client --> MN: v1.getSystemMetadata()
  client <-- MN: v1.SystemMetadata
  client --> MN: v2.getSystemMetadata()
  client <-- MN: v2.SystemMetadata
  client --> CN: v1.getSystemMetadata()
  client <-- CN: v1.SystemMetadata
  client --> CN: v2.getSystemMetadata()
  client <-- CN: v2.SystemMetadata
end
...
group Replicate
  CN -> MN.target.v2: v2.replicate()
  MN.target.v2 -> MN:  v2.getReplica()
  client --> MN.target.v2: v1.getSystemMetadata()
  client <-- MN.target.v2: v1.SystemMetadata
  client --> MN.target.v2: v2.getSystemMetadata()
  client <-- MN.target.v2: v2.SystemMetadata
  CN --> MN.target.v1: v1.replicate() NOT ALLOWED
end
...
group Update
      'update the access policy using v1
  client -> CN: v1.setAccessPolicy()
  CN -> MN.target.v2:  v1.systemMetadataChanged()
  MN.target.v2 -> CN: v1.getSystemMetadata()
  MN.target.v2 <- CN: v1.SystemMetadata
  ...
  'update the access policy using v2
  client -> CN: v2.setAccessPolicy()
  CN -> MN.target.v2:  v2.systemMetadataChanged()
  MN.target.v2 -> CN: v2.getSystemMetadata()
  MN.target.v2 <- CN: v2.SystemMetadata
end

 @endumlr≈��ÖÅr∆��}r«��(hU�hj¡��ubaubeubeubeubhhhh h!}r»��(h#]h$]h%]h&]r…��j��ah)]r ��hauh+Kh,hh-]rÀ��(h/)ÅrÃ��}rÕ��(hj��hhhhhh3h!}rŒ��(h&]h%]h#]h$]h)]h5j��uh+Kh,hh-]rœ��h8X���Requirementsr–��ÖÅr—��}r“��(hj��hjÃ��ubaubh‹)År”��}r‘��(hU�hhhhhhflh!}r’��(j√��X���*h&]h%]h#]h$]h)]uh+Kh,hh-]r÷��(h‚)År◊��}rÿ��(hX8���All v1 objects are valid v2 objects, save for namespace.rŸ��hj”��hhhj��h!}r⁄��(h#]h$]h%]h&]h)]uh+Nh,hh-]r€��hå)År‹��}r›��(hjŸ��hj◊��hhhhêh!}rfi��(h#]h$]h%]h&]h)]uh+Kh-]rfl��h8X8���All v1 objects are valid v2 objects, save for namespace.r‡��ÖÅr·��}r‚��(hjŸ��hj‹��ubaubaubh‚)År„��}r‰��(hX4���All implementations of v2 must implement v1 methods.rÂ��hj”��hhhj��h!}rÊ��(h#]h$]h%]h&]h)]uh+Nh,hh-]rÁ��hå)ÅrË��}rÈ��(hjÂ��hj„��hhhhêh!}rÍ��(h#]h$]h%]h&]h)]uh+Kh-]rÎ��h8X4���All implementations of v2 must implement v1 methods.rÏ��ÖÅrÌ��}rÓ��(hjÂ��hjË��ubaubaubh‚)ÅrÔ��}r��(hXP���TDB: only the minimally-necessary v2 methods will be defined. This would requirerÒ��hj”��hhhj��h!}rÚ��(h#]h$]h%]h&]h)]uh+Nh,hh-]rÛ��hå)ÅrÙ��}rı��(hjÒ��hjÔ��hhhhêh!}rˆ��(h#]h$]h%]h&]h)]uh+Kh-]r˜��h8XP���TDB: only the minimally-necessary v2 methods will be defined. This would requirer¯��ÖÅr˘��}r˙��(hjÒ��hjÙ��ubaubaubeubhå)År˚��}r¸��(hX-���mixed-calls in when interacting with the API.r˝��hhhhhhêh!}r˛��(h#]h$]h%]h&]h)]uh+Kh,hh-]rˇ��h8X-���mixed-calls in when interacting with the API.r���ÖÅr��}r��(hj˝��hj˚��ubaubeubhhhUsystem_messager��h!}r��(h#]UlevelKh&]h%]Usourcehh$]h)]UlineKUtypeUWARNINGr��uh+Kh,hh-]r��hå)År��}r��(hX;���Bullet list ends without a blank line; unexpected unindent.h!}r	��(h#]h$]h%]h&]h)]uhhh-]r
��h8X;���Bullet list ends without a blank line; unexpected unindent.r��ÖÅr��}r
��(hU�hj��ubahhêubaubh)År��}r��(hU�hj•��hhhj��h!}r��(h#]UlevelKh&]h%]Usourcehh$]h)]UlineK(UtypeUERRORr��uh+K'h,hh-]r��hå)År��}r��(hX���Unexpected indentation.h!}r��(h#]h$]h%]h&]h)]uhj��h-]r��h8X���Unexpected indentation.r��ÖÅr��}r��(hU�hj��ubahhêubaubh)År��}r��(hU�hj•��hNhj��h!}r��(h#]UlevelKh&]h%]Usourcehh$]h)]UlineK*Utypej��uh+Nh,hh-]r��hå)År��}r��(hX;���Block quote ends without a blank line; unexpected unindent.h!}r ��(h#]h$]h%]h&]h)]uhj��h-]r!��h8X;���Block quote ends without a blank line; unexpected unindent.r"��ÖÅr#��}r$��(hU�hj��ubahhêubaubh)År%��}r&��(hU�hj!��hhhj��h!}r'��(h#]UlevelKh&]h%]Usourcehh$]h)]UlineK4Utypej��uh+K3h,hh-]r(��hå)År)��}r*��(hX���Unexpected indentation.h!}r+��(h#]h$]h%]h&]h)]uhj%��h-]r,��h8X���Unexpected indentation.r-��ÖÅr.��}r/��(hU�hj)��ubahhêubaubh)År0��}r1��(hU�hj!��hNhj��h!}r2��(h#]UlevelKh&]h%]Usourcehh$]h)]UlineK6Utypej��uh+Nh,hh-]r3��hå)År4��}r5��(hX;���Block quote ends without a blank line; unexpected unindent.h!}r6��(h#]h$]h%]h&]h)]uhj0��h-]r7��h8X;���Block quote ends without a blank line; unexpected unindent.r8��ÖÅr9��}r:��(hU�hj4��ubahhêubaubh)År;��}r<��(hU�hjû��hhhj��h!}r=��(h#]UlevelKh&]h%]Usourcehh$]h)]UlineKAUtypej��uh+K@h,hh-]r>��hå)År?��}r@��(hX���Unexpected indentation.h!}rA��(h#]h$]h%]h&]h)]uhj;��h-]rB��h8X���Unexpected indentation.rC��ÖÅrD��}rE��(hU�hj?��ubahhêubaubh)ÅrF��}rG��(hU�hjû��hNhj��h!}rH��(h#]UlevelKh&]h%]Usourcehh$]h)]UlineKCUtypej��uh+Nh,hh-]rI��hå)ÅrJ��}rK��(hX;���Block quote ends without a blank line; unexpected unindent.h!}rL��(h#]h$]h%]h&]h)]uhjF��h-]rM��h8X;���Block quote ends without a blank line; unexpected unindent.rN��ÖÅrO��}rP��(hU�hjJ��ubahhêubaubh)ÅrQ��}rR��(hU�hj·��hhhj��h!}rS��(h#]UlevelKh&]h%]Usourcehh$]h)]UlineKîUtypej��uh+Kìh,hh-]rT��hå)ÅrU��}rV��(hX���Unexpected indentation.h!}rW��(h#]h$]h%]h&]h)]uhjQ��h-]rX��h8X���Unexpected indentation.rY��ÖÅrZ��}r[��(hU�hjU��ubahhêubaubh)År\��}r]��(hU�hj·��hNhj��h!}r^��(h#]UlevelKh&]h%]Usourcehh$]h)]UlineKñUtypej��uh+Nh,hh-]r_��hå)År`��}ra��(hX;���Block quote ends without a blank line; unexpected unindent.h!}rb��(h#]h$]h%]h&]h)]uhj\��h-]rc��h8X;���Block quote ends without a blank line; unexpected unindent.rd��ÖÅre��}rf��(hU�hj`��ubahhêubaubeUcurrent_sourcerg��NU
decorationrh��NUautofootnote_startri��KUnameidsrj��}rk��(hj}��hj��hj��h	j-��h
jD��hjW��hjj��h
h(hh“uh-]rl��hahU�Utransformerrm��NU
footnote_refsrn��}ro��Urefnamesrp��}rq��Usymbol_footnotesrr��]rs��Uautofootnote_refsrt��]ru��Usymbol_footnote_refsrv��]rw��U	citationsrx��]ry��h,hUcurrent_linerz��NUtransform_messagesr{��]r|��h)År}��}r~��(hU�h!}r��(h#]UlevelKh&]h%]Usourcehh$]h)]UlineKUtypeUINFOrÄ��uh-]rÅ��hå)ÅrÇ��}rÉ��(hU�h!}rÑ��(h#]h$]h%]h&]h)]uhj}��h-]rÖ��h8X-���Hyperlink target "index-0" is not referenced.rÜ��ÖÅrá��}rà��(hU�hjÇ��ubahhêubahj��ubaUreporterrâ��NUid_starträ��K	U
autofootnotesr�]r�U
citation_refsr�}r�Uindirect_targetsr�]r�Usettingsr�(cdocutils.frontend
Values
rí��orì��}rî��(Ufootnote_backlinksrï��KUrecord_dependenciesrñ��NUrfc_base_urlró��Uhttps://tools.ietf.org/html/rò��U	tracebackrô��àUpep_referencesrö��NUstrip_commentsrõ��NU
toc_backlinksrú��hñU
language_coderù��Uenrû��U	datestamprü��NUreport_levelr†��KU_destinationr°��NU
halt_levelr¢��KU
strip_classesr£��Nh3NUerror_encoding_error_handlerr§��Ubackslashreplacer•��Udebugr¶��NUembed_stylesheetrß��âUoutput_encoding_error_handlerr®��Ustrictr©��U
sectnum_xformr™��KUdump_transformsr´��NU
docinfo_xformr¨��KUwarning_streamr≠��NUpep_file_url_templaterÆ��Upep-%04drØ��Uexit_status_levelr∞��KUconfigr±��NUstrict_visitorr≤��NUcloak_email_addressesr≥��àUtrim_footnote_reference_spacer¥��âUenvrµ��NUdump_pseudo_xmlr∂��NUexpose_internalsr∑��NUsectsubtitle_xformr∏��âUsource_linkrπ��NUrfc_referencesr∫��NUoutput_encodingrª��Uutf-8rº��U
source_urlrΩ��NUinput_encodingræ��U	utf-8-sigrø��U_disable_configr¿��NU	id_prefixr¡��U�U	tab_widthr¬��KUerror_encodingr√��UUTF-8rƒ��U_sourcer≈��hUgettext_compactr∆��àU	generatorr«��NUdump_internalsr»��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Ÿ��(j}��j·��j��hjW��j!��j|��jx��h(hjV��jR��j��jÉ��j,��j(��jC��j?��j��j��j��j��h6hÏj-��jò��hDhMji��je��jD��j•��h“hÀjj��jû��uUsubstitution_namesr⁄��}r€��hh,h!}r‹��(h#]h&]h%]Usourcehh$]h)]uU	footnotesr›��]rfi��Urefidsrfl��}r‡��hD]r·��hHasub.