Äcdocutils.nodes
document
q)Åq}q(U	nametypesq}q(X#���use case 23 - owner expunge contentqNX���uc23qàX���historyqàuUsubstitution_defsq	}q
Uparse_messagesq]qUcurrent_sourceq
NU
decorationqNUautofootnote_startqKUnameidsq}q(hU!use-case-23-owner-expunge-contentqhUuc23qhUhistoryquUchildrenq]q(cdocutils.nodes
target
q)Åq}q(U	rawsourceqX	���.. _UC23:UparentqhUsourceqXj���/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/UseCases/23_uc.txtqUtagnameqUtargetqU
attributesq }q!(Uidsq"]Ubackrefsq#]Udupnamesq$]Uclassesq%]Unamesq&]Urefidq'huUlineq(KUdocumentq)hh]ubcdocutils.nodes
section
q*)Åq+}q,(hU�hhhhUexpect_referenced_by_nameq-}q.hhshUsectionq/h }q0(h$]h%]h#]h"]q1(hheh&]q2(hheuh(Kh)hUexpect_referenced_by_idq3}q4hhsh]q5(cdocutils.nodes
title
q6)Åq7}q8(hX#���Use Case 23 - Owner Expunge Contentq9hh+hhhUtitleq:h }q;(h$]h%]h#]h"]h&]uh(Kh)hh]q<cdocutils.nodes
Text
q=X#���Use Case 23 - Owner Expunge Contentq>ÖÅq?}q@(hh9hh7ubaubcsphinx.addnodes
index
qA)ÅqB}qC(hU�hh+hhhUindexqDh }qE(h"]h#]h$]h%]h&]UentriesqF]qG((UsingleqHX���Use Case 23Uindex-0qIU�NtqJ(hHX���UC23hIU�NtqK(hHX���expungehIU�NtqL(hHX���remove contenthIU�NtqM(hHX	���take downhIU�NtqNeUinlineqOâuh(Kh)hh]ubh)ÅqP}qQ(hU�hh+hhhhh }qR(h"]h#]h$]h%]h&]h'hIuh(Kh)hh]ubcdocutils.nodes
definition_list
qS)ÅqT}qU(hU�hh+hhh-}hUdefinition_listqVh }qW(h$]h%]h#]h"]qXhIah&]uh(Nh)hh3}qYhIhPsh]qZ(cdocutils.nodes
definition_list_item
q[)Åq\}q](hX,���Revisions
View document revision history_.

hhThhhUdefinition_list_itemq^h }q_(h$]h%]h#]h"]h&]uh(K
h]q`(cdocutils.nodes
term
qa)Åqb}qc(hX	���Revisionsqdhh\hhhUtermqeh }qf(h$]h%]h#]h"]h&]uh(K
h]qgh=X	���RevisionsqhÖÅqi}qj(hhdhhbubaubcdocutils.nodes
definition
qk)Åql}qm(hU�h }qn(h$]h%]h#]h"]h&]uhh\h]qocdocutils.nodes
paragraph
qp)Åqq}qr(hX ���View document revision history_.hhlhhhU	paragraphqsh }qt(h$]h%]h#]h"]h&]uh(K	h]qu(h=X���View document revision qvÖÅqw}qx(hX���View document revision hhqubcdocutils.nodes
reference
qy)Åqz}q{(hX���history_Uresolvedq|KhhqhU	referenceq}h }q~(UnameX���historyqUrefuriqÄXî���https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/23_uc.txtqÅh"]h#]h$]h%]h&]uh]qÇh=X���historyqÉÖÅqÑ}qÖ(hU�hhzubaubh=X���.ÖÅqÜ}qá(hX���.hhqubeubahU
definitionqàubeubh[)Åqâ}qä(hX[���Goal
User can find out where all copies of my data are in the system and can
expunge them.
hhThhhh^h }qã(h$]h%]h#]h"]h&]uh(Kh)hh]qå(ha)Åqç}qé(hX���Goalqèhhâhhhheh }qê(h$]h%]h#]h"]h&]uh(Kh]qëh=X���GoalqíÖÅqì}qî(hhèhhçubaubhk)Åqï}qñ(hU�h }qó(h$]h%]h#]h"]h&]uhhâh]qòhp)Åqô}qö(hXU���User can find out where all copies of my data are in the system and can
expunge them.qõhhïhhhhsh }qú(h$]h%]h#]h"]h&]uh(K
h]qùh=XU���User can find out where all copies of my data are in the system and can
expunge them.qûÖÅqü}q†(hhõhhôubaubahhàubeubh[)Åq°}q¢(hX≈��Summary
In some cases it may be desirable for a data owner to remove all their
content from the system, however this use case conflicts with the general
premise of DataONE to preserve information. A useful compromise *may* be to
expunge content that has no known references to it.

There may be situations where content removal may be necessary for system
or community integrity - for example if content uploaded to the system is
determined to contain dangerous content such as viruses, the data owner is
discovered to have committed fraud, or the content may be protected and must
be removed for legal reasons.

In any case, it would seem that a data manager or curator should be involved
in such decisions.
hhThhhh^h }q£(h$]h%]h#]h"]h&]uh(Kh)hh]q§(ha)Åq•}q¶(hX���Summaryqßhh°hhhheh }q®(h$]h%]h#]h"]h&]uh(Kh]q©h=X���Summaryq™ÖÅq´}q¨(hhßhh•ubaubhk)Åq≠}qÆ(hU�h }qØ(h$]h%]h#]h"]h&]uhh°h]q∞(hp)Åq±}q≤(hX��In some cases it may be desirable for a data owner to remove all their
content from the system, however this use case conflicts with the general
premise of DataONE to preserve information. A useful compromise *may* be to
expunge content that has no known references to it.hh≠hhhhsh }q≥(h$]h%]h#]h"]h&]uh(Kh]q¥(h=X—���In some cases it may be desirable for a data owner to remove all their
content from the system, however this use case conflicts with the general
premise of DataONE to preserve information. A useful compromise qµÖÅq∂}q∑(hX—���In some cases it may be desirable for a data owner to remove all their
content from the system, however this use case conflicts with the general
premise of DataONE to preserve information. A useful compromise hh±ubcdocutils.nodes
emphasis
q∏)Åqπ}q∫(hX���*may*h }qª(h$]h%]h#]h"]h&]uhh±h]qºh=X���mayqΩÖÅqæ}qø(hU�hhπubahUemphasisq¿ubh=X:��� be to
expunge content that has no known references to it.q¡ÖÅq¬}q√(hX:��� be to
expunge content that has no known references to it.hh±ubeubhp)Åqƒ}q≈(hXI��There may be situations where content removal may be necessary for system
or community integrity - for example if content uploaded to the system is
determined to contain dangerous content such as viruses, the data owner is
discovered to have committed fraud, or the content may be protected and must
be removed for legal reasons.q∆hh≠hhhhsh }q«(h$]h%]h#]h"]h&]uh(Kh]q»h=XI��There may be situations where content removal may be necessary for system
or community integrity - for example if content uploaded to the system is
determined to contain dangerous content such as viruses, the data owner is
discovered to have committed fraud, or the content may be protected and must
be removed for legal reasons.q…ÖÅq }qÀ(hh∆hhƒubaubhp)ÅqÃ}qÕ(hX_���In any case, it would seem that a data manager or curator should be involved
in such decisions.qŒhh≠hhhhsh }qœ(h$]h%]h#]h"]h&]uh(Kh]q–h=X_���In any case, it would seem that a data manager or curator should be involved
in such decisions.q—ÖÅq“}q”(hhŒhhÃubaubehhàubeubh[)Åq‘}q’(hXá���Actors
- Data owner
- Data curator
- Member Nodes
- Coordinating Nodes
- Notification system (referrers should be notified of removal)
hhThhhh^h }q÷(h$]h%]h#]h"]h&]uh(K$h)hh]q◊(ha)Åqÿ}qŸ(hX���Actorsq⁄hh‘hhhheh }q€(h$]h%]h#]h"]h&]uh(K$h]q‹h=X���Actorsq›ÖÅqfi}qfl(hh⁄hhÿubaubhk)Åq‡}q·(hU�h }q‚(h$]h%]h#]h"]h&]uhh‘h]q„cdocutils.nodes
bullet_list
q‰)ÅqÂ}qÊ(hU�h }qÁ(UbulletqËX���-h"]h#]h$]h%]h&]uhh‡h]qÈ(cdocutils.nodes
list_item
qÍ)ÅqÎ}qÏ(hX
���Data ownerqÌh }qÓ(h$]h%]h#]h"]h&]uhhÂh]qÔhp)Åq}qÒ(hhÌhhÎhhhhsh }qÚ(h$]h%]h#]h"]h&]uh(K h]qÛh=X
���Data ownerqÙÖÅqı}qˆ(hhÌhhubaubahU	list_itemq˜ubhÍ)Åq¯}q˘(hX���Data curatorq˙h }q˚(h$]h%]h#]h"]h&]uhhÂh]q¸hp)Åq˝}q˛(hh˙hh¯hhhhsh }qˇ(h$]h%]h#]h"]h&]uh(K!h]r���h=X���Data curatorr��ÖÅr��}r��(hh˙hh˝ubaubahh˜ubhÍ)År��}r��(hX���Member Nodesr��h }r��(h$]h%]h#]h"]h&]uhhÂh]r��hp)År	��}r
��(hj��hj��hhhhsh }r��(h$]h%]h#]h"]h&]uh(K"h]r��h=X���Member Nodesr
��ÖÅr��}r��(hj��hj	��ubaubahh˜ubhÍ)År��}r��(hX���Coordinating Nodesr��h }r��(h$]h%]h#]h"]h&]uhhÂh]r��hp)År��}r��(hj��hj��hhhhsh }r��(h$]h%]h#]h"]h&]uh(K#h]r��h=X���Coordinating Nodesr��ÖÅr��}r��(hj��hj��ubaubahh˜ubhÍ)År��}r��(hX>���Notification system (referrers should be notified of removal)
h }r��(h$]h%]h#]h"]h&]uhhÂh]r��hp)År ��}r!��(hX=���Notification system (referrers should be notified of removal)r"��hj��hhhhsh }r#��(h$]h%]h#]h"]h&]uh(K$h]r$��h=X=���Notification system (referrers should be notified of removal)r%��ÖÅr&��}r'��(hj"��hj ��ubaubahh˜ubehUbullet_listr(��ubahhàubeubh[)År)��}r*��(hXz���Preconditions
- Content exists in the system that must be removed
- A decision has been made to remove all / some content
hhThhhh^h }r+��(h$]h%]h#]h"]h&]uh(K(h)hh]r,��(ha)År-��}r.��(hX
���Preconditionsr/��hj)��hhhheh }r0��(h$]h%]h#]h"]h&]uh(K(h]r1��h=X
���Preconditionsr2��ÖÅr3��}r4��(hj/��hj-��ubaubhk)År5��}r6��(hU�h }r7��(h$]h%]h#]h"]h&]uhj)��h]r8��h‰)År9��}r:��(hU�h }r;��(hËX���-h"]h#]h$]h%]h&]uhj5��h]r<��(hÍ)År=��}r>��(hX1���Content exists in the system that must be removedr?��h }r@��(h$]h%]h#]h"]h&]uhj9��h]rA��hp)ÅrB��}rC��(hj?��hj=��hhhhsh }rD��(h$]h%]h#]h"]h&]uh(K'h]rE��h=X1���Content exists in the system that must be removedrF��ÖÅrG��}rH��(hj?��hjB��ubaubahh˜ubhÍ)ÅrI��}rJ��(hX6���A decision has been made to remove all / some content
h }rK��(h$]h%]h#]h"]h&]uhj9��h]rL��hp)ÅrM��}rN��(hX5���A decision has been made to remove all / some contentrO��hjI��hhhhsh }rP��(h$]h%]h#]h"]h&]uh(K(h]rQ��h=X5���A decision has been made to remove all / some contentrR��ÖÅrS��}rT��(hjO��hjM��ubaubahh˜ubehj(��ubahhàubeubh[)ÅrU��}rV��(hX]���Triggers
- All triggers for this should be through administrative / curatorial
  procedures.
hhThhhh^h }rW��(h$]h%]h#]h"]h&]uh(K,h)hh]rX��(ha)ÅrY��}rZ��(hX���Triggersr[��hjU��hhhheh }r\��(h$]h%]h#]h"]h&]uh(K,h]r]��h=X���Triggersr^��ÖÅr_��}r`��(hj[��hjY��ubaubhk)Åra��}rb��(hU�h }rc��(h$]h%]h#]h"]h&]uhjU��h]rd��h‰)Åre��}rf��(hU�h }rg��(hËX���-h"]h#]h$]h%]h&]uhja��h]rh��hÍ)Åri��}rj��(hXP���All triggers for this should be through administrative / curatorial
procedures.
h }rk��(h$]h%]h#]h"]h&]uhje��h]rl��hp)Årm��}rn��(hXO���All triggers for this should be through administrative / curatorial
procedures.ro��hji��hhhhsh }rp��(h$]h%]h#]h"]h&]uh(K+h]rq��h=XO���All triggers for this should be through administrative / curatorial
procedures.rr��ÖÅrs��}rt��(hjo��hjm��ubaubahh˜ubahj(��ubahhàubeubh[)Åru��}rv��(hX~���Post Conditions
- The targeted content is no longer present in the DataONE system
- Subscribers are be notified of the change
hhThhhh^h }rw��(h$]h%]h#]h"]h&]uh(K0h)hh]rx��(ha)Åry��}rz��(hX���Post Conditionsr{��hju��hhhheh }r|��(h$]h%]h#]h"]h&]uh(K0h]r}��h=X���Post Conditionsr~��ÖÅr��}rÄ��(hj{��hjy��ubaubhk)ÅrÅ��}rÇ��(hU�h }rÉ��(h$]h%]h#]h"]h&]uhju��h]rÑ��h‰)ÅrÖ��}rÜ��(hU�h }rá��(hËX���-h"]h#]h$]h%]h&]uhjÅ��h]rà��(hÍ)Årâ��}rä��(hX?���The targeted content is no longer present in the DataONE systemrã��h }rå��(h$]h%]h#]h"]h&]uhjÖ��h]rç��hp)Åré��}rè��(hjã��hjâ��hhhhsh }rê��(h$]h%]h#]h"]h&]uh(K/h]rë��h=X?���The targeted content is no longer present in the DataONE systemrí��ÖÅrì��}rî��(hjã��hjé��ubaubahh˜ubhÍ)Årï��}rñ��(hX*���Subscribers are be notified of the change
h }ró��(h$]h%]h#]h"]h&]uhjÖ��h]rò��hp)Årô��}rö��(hX)���Subscribers are be notified of the changerõ��hjï��hhhhsh }rú��(h$]h%]h#]h"]h&]uh(K0h]rù��h=X)���Subscribers are be notified of the changerû��ÖÅrü��}r†��(hjõ��hjô��ubaubahh˜ubehj(��ubahhàubeubeubcdocutils.nodes
comment
r°��)År¢��}r£��(hX ��@startuml images/23_seq.png

 actor "User (Data Owner)" as user
 participant "Client" as app_client << Application >>
 user -> app_client
 participant "Authentication API" as c_authenticate << Coordinating Node >>
 app_client -> c_authenticate: login (user, pw)
 app_client <-- c_authenticate: token or failure
 participant "Query API" as c_query << Coordinating Node >>
 app_client -> c_query: getAllCopies (token, ownerID)
 participant "Authorization API" as c_authorize << Coordinating Node >>
 c_query -> c_authorize: isAuth (token, resultset)
 participant "Verify API" as c_ver << Coordinating Node >>
 c_authorize -> c_ver: isValidToken (token)
 c_authorize <-- c_ver: T or F
 c_query <-- c_authorize: T or F
 app_client <-- c_query: records or fail
 participant "CRUD API" as c_crud << Coordinating Node >>
 app_client -> c_crud: deleteRecords (token, listOfPids)
 app_client <-- c_crud: ack or fail
 note right
 Can the Query API find out where all
 copies of my data are in the system
 or should this be handled by another
 API?
 end note
 @endumlhh+hhhUcommentr§��h }r•��(U	xml:spacer¶��Upreserverß��h"]h#]h$]h%]h&]uh(KNh)hh]r®��h=X ��@startuml images/23_seq.png

 actor "User (Data Owner)" as user
 participant "Client" as app_client << Application >>
 user -> app_client
 participant "Authentication API" as c_authenticate << Coordinating Node >>
 app_client -> c_authenticate: login (user, pw)
 app_client <-- c_authenticate: token or failure
 participant "Query API" as c_query << Coordinating Node >>
 app_client -> c_query: getAllCopies (token, ownerID)
 participant "Authorization API" as c_authorize << Coordinating Node >>
 c_query -> c_authorize: isAuth (token, resultset)
 participant "Verify API" as c_ver << Coordinating Node >>
 c_authorize -> c_ver: isValidToken (token)
 c_authorize <-- c_ver: T or F
 c_query <-- c_authorize: T or F
 app_client <-- c_query: records or fail
 participant "CRUD API" as c_crud << Coordinating Node >>
 app_client -> c_crud: deleteRecords (token, listOfPids)
 app_client <-- c_crud: ack or fail
 note right
 Can the Query API find out where all
 copies of my data are in the system
 or should this be handled by another
 API?
 end note
 @endumlr©��ÖÅr™��}r´��(hU�hj¢��ubaubcdocutils.nodes
image
r¨��)År≠��}rÆ��(hX���.. image:: images/23_seq.png
hh+hhhUimagerØ��h }r∞��(UuriX!���design/UseCases/images/23_seq.pngr±��h"]h#]h$]h%]U
candidatesr≤��}r≥��U*j±��sh&]uh(KPh)hh]ubhp)År¥��}rµ��(hX���*Figure 1.* Interactions for use case 23, User can find out where all copies
of my data are in the system and\ncan expunge themhh+hhhhsh }r∂��(h$]h%]h#]h"]h&]uh(KQh)hh]r∑��(h∏)År∏��}rπ��(hX���*Figure 1.*h }r∫��(h$]h%]h#]h"]h&]uhj¥��h]rª��h=X	���Figure 1.rº��ÖÅrΩ��}ræ��(hU�hj∏��ubahh¿ubh=Xs��� Interactions for use case 23, User can find out where all copies
of my data are in the system andncan expunge themrø��ÖÅr¿��}r¡��(hXt��� Interactions for use case 23, User can find out where all copies
of my data are in the system and\ncan expunge themhj¥��ubeubhp)År¬��}r√��(hX	���**Notes**rƒ��hh+hhhhsh }r≈��(h$]h%]h#]h"]h&]uh(KUh)hh]r∆��cdocutils.nodes
strong
r«��)År»��}r…��(hjƒ��h }r ��(h$]h%]h#]h"]h&]uhj¬��h]rÀ��h=X���NotesrÃ��ÖÅrÕ��}rŒ��(hU�hj»��ubahUstrongrœ��ubaubh‰)År–��}r—��(hU�hh+hhhj(��h }r“��(hËX���-h"]h#]h$]h%]h&]uh(KWh)hh]r”��hÍ)År‘��}r’��(hXO���Dealing with inappropriate usage of (ie, copyrighted objects that are
stored)

hj–��hhhh˜h }r÷��(h$]h%]h#]h"]h&]uh(Nh)hh]r◊��hp)Årÿ��}rŸ��(hXM���Dealing with inappropriate usage of (ie, copyrighted objects that are
stored)r⁄��hj‘��hhhhsh }r€��(h$]h%]h#]h"]h&]uh(KWh]r‹��h=XM���Dealing with inappropriate usage of (ie, copyrighted objects that are
stored)r›��ÖÅrfi��}rfl��(hj⁄��hjÿ��ubaubaubaubh)År‡��}r·��(hX°���.. _history: https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/23_uc.txtU
referencedr‚��Khh+hhhhh }r„��(hÄhÅh"]r‰��hah#]h$]h%]h&]rÂ��hauh(K[h)hh]ubeubehU�UtransformerrÊ��NU
footnote_refsrÁ��}rË��UrefnamesrÈ��}rÍ��h]rÎ��hzasUsymbol_footnotesrÏ��]rÌ��Uautofootnote_refsrÓ��]rÔ��Usymbol_footnote_refsr��]rÒ��U	citationsrÚ��]rÛ��h)hUcurrent_linerÙ��NUtransform_messagesrı��]rˆ��(cdocutils.nodes
system_message
r˜��)År¯��}r˘��(hU�h }r˙��(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypeUINFOr˚��uh]r¸��hp)År˝��}r˛��(hU�h }rˇ��(h$]h%]h#]h"]h&]uhj¯��h]r���h=X*���Hyperlink target "uc23" is not referenced.r��ÖÅr��}r��(hU�hj˝��ubahhsubahUsystem_messager��ubj˜��)År��}r��(hU�h }r��(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypej˚��uh]r��hp)År	��}r
��(hU�h }r��(h$]h%]h#]h"]h&]uhj��h]r��h=X-���Hyperlink target "index-0" is not referenced.r
��ÖÅr��}r��(hU�hj	��ubahhsubahj��ubeUreporterr��NUid_startr��KU
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#��Uentryr$��U
language_coder%��Uenr&��U	datestampr'��NUreport_levelr(��KU_destinationr)��NU
halt_levelr*��KU
strip_classesr+��Nh:NUerror_encoding_error_handlerr,��Ubackslashreplacer-��Udebugr.��NUembed_stylesheetr/��âUoutput_encoding_error_handlerr0��Ustrictr1��U
sectnum_xformr2��KUdump_transformsr3��NU
docinfo_xformr4��KUwarning_streamr5��NUpep_file_url_templater6��Upep-%04dr7��Uexit_status_levelr8��KUconfigr9��NUstrict_visitorr:��NUcloak_email_addressesr;��àUtrim_footnote_reference_spacer<��âUenvr=��NUdump_pseudo_xmlr>��NUexpose_internalsr?��NUsectsubtitle_xformr@��âUsource_linkrA��NUrfc_referencesrB��NUoutput_encodingrC��Uutf-8rD��U
source_urlrE��NUinput_encodingrF��U	utf-8-sigrG��U_disable_configrH��NU	id_prefixrI��U�U	tab_widthrJ��KUerror_encodingrK��UUTF-8rL��U_sourcerM��hUgettext_compactrN��àU	generatorrO��NUdump_internalsrP��NUsmart_quotesrQ��âUpep_base_urlrR��U https://www.python.org/dev/peps/rS��Usyntax_highlightrT��UlongrU��Uinput_encoding_error_handlerrV��j1��Uauto_id_prefixrW��UidrX��Udoctitle_xformrY��âUstrip_elements_with_classesrZ��NU
_config_filesr[��]r\��Ufile_insertion_enabledr]��àUraw_enabledr^��KU
dump_settingsr_��NubUsymbol_footnote_startr`��K�Uidsra��}rb��(hh+hIhThh+hj‡��uUsubstitution_namesrc��}rd��hh)h }re��(h$]h"]h#]Usourcehh%]h&]uU	footnotesrf��]rg��Urefidsrh��}ri��(hI]rj��hPah]rk��hauub.