<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@DengXian";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:remialcxesans;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-AU link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Doing partial MARC updates could be interesting, although repeatable fields make it a bit difficult. I think that you’d have to do a complete replacement for all fields matching that tag number. Would need to document that endpoint very well.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>What’s the use case for a partial MARC update? <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>In my experience, bulk endpoints where you can update many records at once tend to be more practical/performant than narrowly scoped endpoints. So perhaps /api/v1/biblios/field/789 and then send an array of objects (each with a Koha biblionumber and the fields to update)? I suppose that’s not very RESTful but quite practical.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>David Cook<o:p></o:p></p><p class=MsoNormal>Software Engineer<o:p></o:p></p><p class=MsoNormal>Prosentient Systems<o:p></o:p></p><p class=MsoNormal>Suite 7.03<o:p></o:p></p><p class=MsoNormal>6a Glen St<o:p></o:p></p><p class=MsoNormal>Milsons Point NSW 2061<o:p></o:p></p><p class=MsoNormal>Australia<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Office: 02 9212 0899<o:p></o:p></p><p class=MsoNormal>Online: 02 8005 0595<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US>From:</span></b><span lang=EN-US> Koha-devel <koha-devel-bounces@lists.koha-community.org> <b>On Behalf Of </b>Tomas Cohen Arazi<br><b>Sent:</b> Saturday, 23 January 2021 12:45 AM<br><b>To:</b> Marcel de Rooy <M.de.Rooy@rijksmuseum.nl><br><b>Cc:</b> koha-devel <koha-devel@lists.koha-community.org><br><b>Subject:</b> Re: [Koha-devel] REST API / MARC fields<o:p></o:p></span></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><div><div><p class=MsoNormal>El vie., 22 ene. 2021 10:09, Marcel de Rooy <<a href="mailto:M.de.Rooy@rijksmuseum.nl" target="_blank">M.de.Rooy@rijksmuseum.nl</a>> escribió:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'>Thanks. Overlaying the whole marc record is interesting too. Overwriting specific fields might offer some more fine grained control however too. <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'>Something like:<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'>PUT /api/v1/biblios/123456/marc<o:p></o:p></span></p></div></div></blockquote></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>The fact you're passing MARC is just Content-Type, no need to make it part of the URL. PUT and POST are in the roadmap. I was mostly waiting for Koha::Biblio to have new_from_marc and set_from_marc methods.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><div><div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'>POST, PUT /api/v1/biblios/123456/marc/field/789  ?<o:p></o:p></span></p></div></div></div></blockquote></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I think the MARC-in-JSON format is simple enough to just handle this using PATCH. <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><div><div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'><o:p> </o:p></span></p></div></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'>Marcel<o:p></o:p></span></p></div><div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'><o:p> </o:p></span></p></div><div><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width="100%" style='width:100.0%'><tr><td valign=top style='padding:0cm 0cm 0cm 0cm'><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0><tr><td valign=top style='padding:0cm 0cm 0cm 0cm'><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0><tr><td valign=top style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal><a href="https://www.rijksmuseum.nl/nl/steun/vriendschappen" target="_blank" id="m_6456824216072055415m_-539272169462994413LPlnk689713"><span style='font-size:1.0pt;text-decoration:none'><img border=0 width=250 height=66 style='width:2.6041in;height:.6875in' id="_x0000_i1037" src="cid:image737934.png@472DE82C.A485212C"></span></a><span style='font-size:1.0pt'><o:p></o:p></span></p></td></tr><tr><td valign=top style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal><span style='font-family:"Verdana",sans-serif;color:white'>X</span><span style='font-size:1.0pt;font-family:"remialcxesans",serif;color:white'>​</span><span style='font-family:"Verdana",sans-serif;color:white'><o:p></o:p></span></p></td></tr><tr><td valign=top style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal><span style='font-family:"Verdana",sans-serif;color:white'>X!<o:p></o:p></span></p></td></tr><tr><td valign=top style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal><a href="https://www.rijksmuseum.nl/" target="_blank" id="m_6456824216072055415m_-539272169462994413LPlnk689713"><span style='font-size:1.0pt;text-decoration:none'><img border=0 width=217 height=26 style='width:2.2604in;height:.2708in' id="_x0000_i1036" src="cid:image057227.jpg@554D9F74.4920F257"></span></a><span style='font-size:1.0pt'><o:p></o:p></span></p></td></tr><tr><td valign=top style='padding:0cm 0cm 0cm 0cm'><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0><tr><td style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal style='line-height:15.0pt'><b><span style='font-size:9.0pt;font-family:"Arial",sans-serif;color:#000001'><br>​T/m 18 jaar gratis <br><a href="https://www.rijksmuseum.nl/nl/tickets/artikelen" target="_blank" title=Tickets id="m_6456824216072055415m_-539272169462994413LPlnk689713"><strong><span style='font-family:"Arial",sans-serif;color:#000001;text-decoration:none'>​In verband met de coronamaatregelen is het </span></strong><span style='color:#000001;text-decoration:none'><br><strong><span style='font-family:"Arial",sans-serif'>​boeken van een starttijd noodzakelijk.</span></strong></span></a><br>​<br>​Kijk <u><a href="https://youtu.be/OI_uT2o7bqc" target="_blank" title="Rijksmuseum Unlocked" id="m_6456824216072055415m_-539272169462994413LPlnk689713"><strong><span style='font-family:"Arial",sans-serif;color:#000001'>hier</span></strong></a></u> de nieuwste aflevering van Rijksmuseum Unlocked<o:p></o:p></span></b></p></td></tr></table></td></tr></table></td></tr><tr><td valign=top style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal><span style='font-family:"Verdana",sans-serif;color:white'>x!<o:p></o:p></span></p></td></tr><tr><td valign=top style='padding:0cm 0cm 0cm 0cm'></td></tr><tr><td valign=top style='padding:0cm 0cm 0cm 0cm'><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0><tr><td valign=top style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal><a href="https://www.instagram.com/rijksmuseum/" target="_blank" id="m_6456824216072055415m_-539272169462994413LPlnk689713"><span style='font-size:1.0pt;text-decoration:none'><img border=0 width=25 height=25 style='width:.2604in;height:.2604in' id="_x0000_i1035" src="cid:image481710.png@F688075F.9D4F456B"></span></a><span style='font-size:1.0pt'><o:p></o:p></span></p></td><td valign=top style='padding:0cm 0cm 0cm 0cm'><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=2 style='width:1.5pt'><tr><td style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal><span style='font-family:"Verdana",sans-serif;color:white'>x<o:p></o:p></span></p></td></tr></table></td><td valign=top style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal><a href="https://www.facebook.com/rijksmuseum" target="_blank" id="m_6456824216072055415m_-539272169462994413LPlnk689713"><span style='font-size:1.0pt;text-decoration:none'><img border=0 width=25 height=25 style='width:.2604in;height:.2604in' id="_x0000_i1034" src="cid:image676877.png@F510032E.790B3EFD"></span></a><span style='font-size:1.0pt'><o:p></o:p></span></p></td><td nowrap valign=top style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal><span style='font-family:"Verdana",sans-serif;color:white'>x<o:p></o:p></span></p></td><td valign=top style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal><a href="https://www.linkedin.com/company/rijksmuseum/" target="_blank" id="m_6456824216072055415m_-539272169462994413LPlnk689713"><span style='font-size:1.0pt;text-decoration:none'><img border=0 width=25 height=25 style='width:.2604in;height:.2604in' id="_x0000_i1033" src="cid:image447450.png@CBD249C7.9C798847"></span></a><span style='font-size:1.0pt'><o:p></o:p></span></p></td><td nowrap valign=top style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal><span style='font-family:"Verdana",sans-serif;color:white'>x<o:p></o:p></span></p></td><td valign=top style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal><a href="https://twitter.com/rijksmuseum" target="_blank" id="m_6456824216072055415m_-539272169462994413LPlnk689713"><span style='font-size:1.0pt;text-decoration:none'><img border=0 width=25 height=25 style='width:.2604in;height:.2604in' id="_x0000_i1032" src="cid:image637524.png@A8B35D54.EEBC28EB"></span></a><span style='font-size:1.0pt'><o:p></o:p></span></p></td></tr></table></td></tr><tr><td valign=top style='padding:0cm 0cm 0cm 0cm'><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Verdana",sans-serif;color:#00B050'><br></span></b><b><span style='font-size:9.0pt;font-family:"Arial",sans-serif;color:#00B050'>​</span></b><b><span style='font-size:9.0pt;font-family:"Verdana",sans-serif;color:#00B050'>Please think before you print<o:p></o:p></span></b></p></td></tr></table></td></tr></table></div><div class=MsoNormal align=center style='text-align:center'><hr size=2 width="98%" align=center></div><div id="m_6456824216072055415m_-539272169462994413divRplyFwdMsg"><p class=MsoNormal><b><span style='color:black'>Van:</span></b><span style='color:black'> Koha-devel <<a href="mailto:koha-devel-bounces@lists.koha-community.org" target="_blank">koha-devel-bounces@lists.koha-community.org</a>> namens Tomas Cohen Arazi <<a href="mailto:tomascohen@gmail.com" target="_blank">tomascohen@gmail.com</a>><br><b>Verzonden:</b> vrijdag 22 januari 2021 13:38<br><b>Aan:</b> Marcel de Rooy <<a href="mailto:rooy.de.m@gmail.com" target="_blank">rooy.de.m@gmail.com</a>><br><b>CC:</b> koha-devel <<a href="mailto:koha-devel@lists.koha-community.org" target="_blank">koha-devel@lists.koha-community.org</a>><br><b>Onderwerp:</b> Re: [Koha-devel] REST API / MARC fields</span> <o:p></o:p></p><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><div><p class=MsoNormal>We could have a route to overlay the MARC representation of a biblio (if acceptable). We could use <o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>PATCH /biblios/:biblio_id<o:p></o:p></p></div><div><p class=MsoNormal>Content-Type: application/marc-in-json<o:p></o:p></p></div><div><p class=MsoNormal>{ ...<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>El vie., 22 ene. 2021 6:20, Marcel de Rooy <<a href="mailto:rooy.de.m@gmail.com" target="_blank">rooy.de.m@gmail.com</a>> escribió:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><div><p class=MsoNormal>Hi all, <o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Any thoughts here about how we should handle updating fields in MARC which have no specific corresponding database field.<o:p></o:p></p></div><div><p class=MsoNormal>I am thinking about e.g. a persistent identifier in MARC21 field 024 or an OCLC number in field 035.<o:p></o:p></p></div><div><p class=MsoNormal>Could we add REST API entries for such changes as well? They will only generate changes in the marcxml for now..<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Thanks,<o:p></o:p></p></div><div><p class=MsoNormal>Marcel<o:p></o:p></p></div></div><p class=MsoNormal>_______________________________________________<br>Koha-devel mailing list<br><a href="mailto:Koha-devel@lists.koha-community.org" target="_blank">Koha-devel@lists.koha-community.org</a><br><a href="https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.koha-community.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fkoha-devel&data=04%7C01%7Cm.de.rooy%40rijksmuseum.nl%7C8a43a8da6b554e41b3b108d8bed2ba1d%7C635b05eb66c748e1a94fb4b05a1b058b%7C0%7C0%7C637469159561939658%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=stBfgoLskKrgvFhMGNVV16wPP%2B%2Fujj3cxlnNjZHx8P8%3D&reserved=0" target="_blank">https://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-devel</a><br>website : <a href="https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.koha-community.org%2F&data=04%7C01%7Cm.de.rooy%40rijksmuseum.nl%7C8a43a8da6b554e41b3b108d8bed2ba1d%7C635b05eb66c748e1a94fb4b05a1b058b%7C0%7C0%7C637469159561949653%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=1cSgyDiK99%2Fts6gHaB2ykUq14RnsqLA7oYrMnQZ1Xho%3D&reserved=0" target="_blank">https://www.koha-community.org/</a><br>git : <a href="https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.koha-community.org%2F&data=04%7C01%7Cm.de.rooy%40rijksmuseum.nl%7C8a43a8da6b554e41b3b108d8bed2ba1d%7C635b05eb66c748e1a94fb4b05a1b058b%7C0%7C0%7C637469159561949653%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=uY%2BCVgf8svk4GJqQQPNbZdOlxQo%2BWB4psGleHBf14zw%3D&reserved=0" target="_blank">https://git.koha-community.org/</a><br>bugs : <a href="https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.koha-community.org%2F&data=04%7C01%7Cm.de.rooy%40rijksmuseum.nl%7C8a43a8da6b554e41b3b108d8bed2ba1d%7C635b05eb66c748e1a94fb4b05a1b058b%7C0%7C0%7C637469159561959648%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=I8u%2FDourFHEiGEEscgPFGcfPMzP3VtqgzVNky1NNoTY%3D&reserved=0" target="_blank">https://bugs.koha-community.org/</a><o:p></o:p></p></blockquote></div></div></div></div></blockquote></div></div></div></div></body></html>