€cdocutils.nodes document q)q}q(U nametypesq}q(X#use case 23 - owner expunge contentqNXuc23qˆXhistoryqˆ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,(hUhhhhUexpect_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…q?}q@(hh9hh7ubaubcsphinx.addnodes index qA)qB}qC(hUhh+hhhUindexqDh }qE(h"]h#]h$]h%]h&]UentriesqF]qG((UsingleqHX Use Case 23Uindex-0qIUNtqJ(hHXUC23hIUNtqK(hHXexpungehIUNtqL(hHXremove contenthIUNtqM(hHX take downhIUNtqNeUinlineqO‰uh(Kh)hh]ubh)qP}qQ(hUhh+hhhhh }qR(h"]h#]h$]h%]h&]h'hIuh(Kh)hh]ubcdocutils.nodes definition_list qS)qT}qU(hUhh+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(hUh }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=XView document revision qv…qw}qx(hXView document revision hhqubcdocutils.nodes reference qy)qz}q{(hXhistory_Uresolvedq|KhhqhU referenceq}h }q~(UnameXhistoryqUrefuriq€X”https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/23_uc.txtqh"]h#]h$]h%]h&]uh]q‚h=Xhistoryqƒ…q„}q…(hUhhzubaubh=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Ž(hXGoalqhh‰hhhheh }q(h$]h%]h#]h"]h&]uh(Kh]q‘h=XGoalq’…q“}q”(hhhhubaubhk)q•}q–(hUh }q—(h$]h%]h#]h"]h&]uhh‰h]q˜hp)q™}qš(hXUUser 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]qh=XUUser 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¦(hXSummaryq§hh¡hhhheh }q¨(h$]h%]h#]h"]h&]uh(Kh]q©h=XSummaryqª…q«}q¬(hh§hh¥ubaubhk)q­}q®(hUh }q¯(h$]h%]h#]h"]h&]uhh¡h]q°(hp)q±}q²(hXIn 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=Xmayq½…q¾}q¿(hUhh¹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Å(hXIThere 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=XIThere 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Ù(hXActorsqÚhhÔhhhheh }qÛ(h$]h%]h#]h"]h&]uh(K$h]qÜh=XActorsqÝ…qÞ}qß(hhÚhhØubaubhk)qà}qá(hUh }qâ(h$]h%]h#]h"]h&]uhhÔh]qãcdocutils.nodes bullet_list qä)qå}qæ(hUh }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]rh=X Data curatorr…r}r(hhúhhýubaubahh÷ubhê)r}r(hX Member Nodesrh }r(h$]h%]h#]h"]h&]uhhåh]rhp)r }r (hjhjhhhhsh }r (h$]h%]h#]h"]h&]uh(K"h]r h=X Member Nodesr …r}r(hjhj ubaubahh÷ubhê)r}r(hXCoordinating Nodesrh }r(h$]h%]h#]h"]h&]uhhåh]rhp)r}r(hjhjhhhhsh }r(h$]h%]h#]h"]h&]uh(K#h]rh=XCoordinating Nodesr…r}r(hjhjubaubahh÷ubhê)r}r(hX>Notification system (referrers should be notified of removal) h }r(h$]h%]h#]h"]h&]uhhåh]rhp)r }r!(hX=Notification system (referrers should be notified of removal)r"hjhhhhsh }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÷ubehU bullet_listr(ubahhˆubeubh[)r)}r*(hXzPreconditions - 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]r1h=X Preconditionsr2…r3}r4(hj/hj-ubaubhk)r5}r6(hUh }r7(h$]h%]h#]h"]h&]uhj)h]r8hä)r9}r:(hUh }r;(hèX-h"]h#]h$]h%]h&]uhj5h]r<(hê)r=}r>(hX1Content exists in the system that must be removedr?h }r@(h$]h%]h#]h"]h&]uhj9h]rAhp)rB}rC(hj?hj=hhhhsh }rD(h$]h%]h#]h"]h&]uh(K'h]rEh=X1Content exists in the system that must be removedrF…rG}rH(hj?hjBubaubahh÷ubhê)rI}rJ(hX6A decision has been made to remove all / some content h }rK(h$]h%]h#]h"]h&]uhj9h]rLhp)rM}rN(hX5A decision has been made to remove all / some contentrOhjIhhhhsh }rP(h$]h%]h#]h"]h&]uh(K(h]rQh=X5A decision has been made to remove all / some contentrR…rS}rT(hjOhjMubaubahh÷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(hXTriggersr[hjUhhhheh }r\(h$]h%]h#]h"]h&]uh(K,h]r]h=XTriggersr^…r_}r`(hj[hjYubaubhk)ra}rb(hUh }rc(h$]h%]h#]h"]h&]uhjUh]rdhä)re}rf(hUh }rg(hèX-h"]h#]h$]h%]h&]uhjah]rhhê)ri}rj(hXPAll triggers for this should be through administrative / curatorial procedures. h }rk(h$]h%]h#]h"]h&]uhjeh]rlhp)rm}rn(hXOAll triggers for this should be through administrative / curatorial procedures.rohjihhhhsh }rp(h$]h%]h#]h"]h&]uh(K+h]rqh=XOAll triggers for this should be through administrative / curatorial procedures.rr…rs}rt(hjohjmubaubahh÷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(hXPost Conditionsr{hjuhhhheh }r|(h$]h%]h#]h"]h&]uh(K0h]r}h=XPost Conditionsr~…r}r€(hj{hjyubaubhk)r}r‚(hUh }rƒ(h$]h%]h#]h"]h&]uhjuh]r„hä)r…}r†(hUh }r‡(hèX-h"]h#]h$]h%]h&]uhjh]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]rhp)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]rh=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«(hUhj¢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¾(hUhj¸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=XNotesrÌ…rÍ}rÎ(hUhjÈubahUstrongrÏubaubhä)rÐ}rÑ(hUhh+hhhj(h }rÒ(hèX-h"]h#]h$]h%]h&]uh(KWh)hh]rÓhê)rÔ}rÕ(hXODealing 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Ù(hXMDealing with inappropriate usage of (ie, copyrighted objects that are stored)rÚhjÔhhhhsh }rÛ(h$]h%]h#]h"]h&]uh(KWh]rÜh=XMDealing with inappropriate usage of (ie, copyrighted objects that are stored)rÝ…rÞ}rß(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€hh"]rähah#]h$]h%]h&]råhauh(K[h)hh]ubeubehUU transformerræ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ù(hUh }rú(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypeUINFOrûuh]rühp)rý}rþ(hUh }rÿ(h$]h%]h#]h"]h&]uhjøh]rh=X*Hyperlink target "uc23" is not referenced.r…r}r(hUhjýubahhsubahUsystem_messagerubj÷)r}r(hUh }r(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypejûuh]rhp)r }r (hUh }r (h$]h%]h#]h"]h&]uhjh]r h=X-Hyperlink target "index-0" is not referenced.r …r}r(hUhj ubahhsubahjubeUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttps://tools.ietf.org/html/rU 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_handlerr0Ustrictr1U sectnum_xformr2KUdump_transformsr3NU docinfo_xformr4KUwarning_streamr5NUpep_file_url_templater6Upep-%04dr7Uexit_status_levelr8KUconfigr9NUstrict_visitorr:NUcloak_email_addressesr;ˆUtrim_footnote_reference_spacer<‰Uenvr=NUdump_pseudo_xmlr>NUexpose_internalsr?NUsectsubtitle_xformr@‰U source_linkrANUrfc_referencesrBNUoutput_encodingrCUutf-8rDU source_urlrENUinput_encodingrFU utf-8-sigrGU_disable_configrHNU id_prefixrIUU tab_widthrJKUerror_encodingrKUUTF-8rLU_sourcerMhUgettext_compactrNˆU generatorrONUdump_internalsrPNU smart_quotesrQ‰U pep_base_urlrRU https://www.python.org/dev/peps/rSUsyntax_highlightrTUlongrUUinput_encoding_error_handlerrVj1Uauto_id_prefixrWUidrXUdoctitle_xformrY‰Ustrip_elements_with_classesrZNU _config_filesr[]r\Ufile_insertion_enabledr]ˆU raw_enabledr^KU dump_settingsr_NubUsymbol_footnote_startr`KUidsra}rb(hh+hIhThh+hjàuUsubstitution_namesrc}rdhh)h }re(h$]h"]h#]Usourcehh%]h&]uU footnotesrf]rgUrefidsrh}ri(hI]rjhPah]rkhauub.