{"id":11985,"date":"2015-07-12T13:59:33","date_gmt":"2015-07-12T17:59:33","guid":{"rendered":"http:\/\/scruss.com\/blog\/?p=11985"},"modified":"2025-08-04T17:26:55","modified_gmt":"2025-08-04T21:26:55","slug":"thermal-printer-driver-for-cups-linux-and-raspberry-pi-zj-58","status":"publish","type":"post","link":"https:\/\/scruss.com\/blog\/2015\/07\/12\/thermal-printer-driver-for-cups-linux-and-raspberry-pi-zj-58\/","title":{"rendered":"Thermal Printer driver for CUPS, Linux, and Raspberry Pi: zj-58"},"content":{"rendered":"\n<p>This might be my last post on <a href=\"http:\/\/scruss.com\/blog\/2014\/08\/02\/notes-on-mini-printers-and-linux\/\">mini-printers<\/a>, as I&#8217;ve found a driver that just works with <a href=\"https:\/\/www.cups.org\/\">CUPS<\/a> on Raspberry Pi. It also works on Ubuntu on my laptop, and should work (though untried) on Mac OS. You&#8217;ll have to build it from source, but it&#8217;s not too hard.<\/p>\n\n\n\n<p>The hard part is working out if your thermal printer will work or not. There are many out there, and they&#8217;re all slightly different. If they support the <a href=\"https:\/\/reference.epson-biz.com\/modules\/ref_escpos\/index.php?content_id=2\">ESC\/POS<\/a> bitmap command <strong>GS v 0<\/strong> on 58 mm wide paper, they <em>should <\/em>work. The ones I&#8217;ve tested are:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Catex POS5890U \u2014 USB, cheap, fast.<\/li>\n\n\n\n<li>\u201c701\u201d control board panel printer \u2014 fairly generic, decent quality printer with serial input. A bit slow for daily use at 9600 baud.<\/li>\n\n\n\n<li>Xiamen Embedded Printer DP-EH600 \u2014 as above.<\/li>\n<\/ol>\n\n\n\n<p>The following should also work, but haven&#8217;t been tried:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Adafruit <a href=\"https:\/\/www.adafruit.com\/products\/597\">Mini Thermal Receipt Printer<\/a> \u2014 again, serial, so not super fast.<\/li>\n\n\n\n<li>Sparkfun <a href=\"https:\/\/www.sparkfun.com\/products\/10438\">thermal printer<\/a> \u2014  which now appears to be identical to the Adafruit unit, and is referred to as the &#8220;A1 (<em>or A2<\/em>) micro panel printer&#8221;\u009d in the documentation.<\/li>\n<\/ul>\n\n\n\n<p>Known <em>not <\/em>to work:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>BTHT-V6 printer \u2014 which uses a completely different command set. (Roughly that of an Epson FX-80 for image commands, if you care.)<\/li>\n<\/ul>\n\n\n\n<p>If you have a manual for your printer, check it to see if it prints bitmaps by sending a three byte header of <em>29 118 48<\/em> (or <em>1D 76 30<\/em> in hexadecimal). If you&#8217;re not sure, try it with a small test image, and be ready by the power switch \u2026<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Getting and building the driver<\/h2>\n\n\n\n<p>The driver is meant for a <a href=\"http:\/\/www.zjiang.com\/index.asp\">ZiJiang<\/a> ZJ-58 printer, and lives here on Github: <a href=\"https:\/\/github.com\/klirichek\/zj-58\">klirichek\/zj-58<\/a>.<\/p>\n\n\n\n<p><span style=\"color: #ff00ff;\"><strong>Now read and follow the <a style=\"color: #ff00ff;\" href=\"https:\/\/github.com\/klirichek\/zj-58#building-and-installing\">Building &amp; Installing<\/a> section of the README, and do what it says. I&#8217;ll wait \u2026<\/strong><\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Setting up the printer<\/h2>\n\n\n\n<p>This bit is much more graphical. You&#8217;ll need the system-config-printer package:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt install -y system-config-printer cups<\/pre>\n\n\n\n<p>Open up the printer settings window<em> (<em>Preferences \u2192 Print Settings<\/em>)<\/em>:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-220946_452x281_scrot.png\"><img loading=\"lazy\" decoding=\"async\" width=\"452\" height=\"281\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-220946_452x281_scrot.png\" alt=\"2015-07-11-220946_452x281_scrot\" class=\"wp-image-11986\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-220946_452x281_scrot.png 452w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-220946_452x281_scrot-160x99.png 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-220946_452x281_scrot-320x199.png 320w\" sizes=\"auto, (max-width: 452px) 100vw, 452px\" \/><\/a><\/figure>\n\n\n\n<p>Select the <strong>Add<\/strong> icon, and the New Printer window opens:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221141_602x592_scrot.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"592\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221141_602x592_scrot.png\" alt=\"2015-07-11-221141_602x592_scrot\" class=\"wp-image-11987\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221141_602x592_scrot.png 602w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221141_602x592_scrot-160x157.png 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221141_602x592_scrot-320x315.png 320w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><\/figure>\n\n\n\n<p>The POS5890U shows up as \u201cUnknown\u201d on my USB port, as Linux doesn\u2019t know the name of this device from its USB ID.<\/p>\n\n\n\n<p><span style=\"color: #333333;\"><strong>Update<\/strong> (for the <em>slightly desperate<\/em>): In the land of &#8220;Things have changed!<\/span>&#8220;<span style=\"color: #333333;\">\u009d, my Catex printer isn&#8217;t\/wasn&#8217;t showing up at all. I had to resort to this in the <strong>Enter URI<\/strong> option:<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2016-12-13-115620_587x401_scrot.png\"><img loading=\"lazy\" decoding=\"async\" width=\"587\" height=\"401\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2016-12-13-115620_587x401_scrot.png\" alt=\"thermal printer usb lp uri\" class=\"wp-image-13593\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2016-12-13-115620_587x401_scrot.png 587w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2016-12-13-115620_587x401_scrot-160x109.png 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2016-12-13-115620_587x401_scrot-320x219.png 320w\" sizes=\"auto, (max-width: 587px) 100vw, 587px\" \/><\/a><figcaption class=\"wp-element-caption\"><span style=\"color: #333333;\"><em>(hey, this image doesn&#8217;t quite match the flow. Look only at the the Device UR\u009dI bit please)<\/em><\/span><\/figcaption><\/figure>\n\n\n\n<p><span style=\"color: #333333;\"><em>parallel:\/dev\/usb\/lp0<\/em> seems to work. Another option might be looking at the output of<\/span><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><span style=\"color: #333333;\">sudo \/usr\/lib\/cups\/backend\/usb<\/span><\/pre>\n\n\n\n<p><span style=\"color: #333333;\">which suggests that <em>usb:\/\/Unknown\/Printer<\/em> might work too. (All of this might need to have been preceded by<\/span><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><span style=\"color: #333333;\">sudo usermod -a -G lp pi<\/span><\/pre>\n\n\n\n<p><span style=\"color: #333333;\">and a logout or reboot; I <em>did<\/em> say this was for the slightly desperate \u2026)<\/span><\/p>\n\n\n\n<p>If the above doesn&#8217;t apply, your printer might have an known ID, or show up as a serial port. Select the right one, and click <strong>Forward<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221221_602x592_scrot.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"592\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221221_602x592_scrot.png\" alt=\"2015-07-11-221221_602x592_scrot\" class=\"wp-image-11988\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221221_602x592_scrot.png 602w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221221_602x592_scrot-160x157.png 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221221_602x592_scrot-320x315.png 320w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><\/figure>\n\n\n\n<p>Here, I\u2019m <em>really<\/em> pleased that the driver is for a <strong>Z<\/strong>ijiang unit, as it\u2019s conveniently at the end of the list. Click <strong>Forward<\/strong> \u2026<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221240_602x592_scrot.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"592\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221240_602x592_scrot.png\" alt=\"2015-07-11-221240_602x592_scrot\" class=\"wp-image-11989\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221240_602x592_scrot.png 602w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221240_602x592_scrot-160x157.png 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221240_602x592_scrot-320x315.png 320w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><\/figure>\n\n\n\n<p>No options here, so again, <strong>Forward<\/strong> \u2026<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221311_602x592_scrot.png\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"592\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221311_602x592_scrot.png\" alt=\"2015-07-11-221311_602x592_scrot\" class=\"wp-image-11990\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221311_602x592_scrot.png 602w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221311_602x592_scrot-160x157.png 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-221311_602x592_scrot-320x315.png 320w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><\/figure>\n\n\n\n<p>I changed the name from the default <strong>ZJ-58<\/strong> to the more unixly <strong>zj58<\/strong>. You don&#8217;t have to, but either way, <strong>Apply<\/strong> the changes.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222030_452x281_scrot.png\"><img loading=\"lazy\" decoding=\"async\" width=\"452\" height=\"281\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222030_452x281_scrot.png\" alt=\"2015-07-11-222030_452x281_scrot\" class=\"wp-image-11991\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222030_452x281_scrot.png 452w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222030_452x281_scrot-160x99.png 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222030_452x281_scrot-320x199.png 320w\" sizes=\"auto, (max-width: 452px) 100vw, 452px\" \/><\/a><\/figure>\n\n\n\n<p>And there it is, registered as a printer!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Printer Options<\/h2>\n\n\n\n<p>Most printers expect paper wider than 58 mm, but mini-printers can&#8217;t do that. To tell the system about paper sizes, right click on the printer&#8217;s icon, and change the printer settings:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222225_570x560_scrot.png\"><img loading=\"lazy\" decoding=\"async\" width=\"570\" height=\"560\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222225_570x560_scrot.png\" alt=\"2015-07-11-222225_570x560_scrot\" class=\"wp-image-11992\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222225_570x560_scrot.png 570w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222225_570x560_scrot-160x157.png 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222225_570x560_scrot-320x314.png 320w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/a><\/figure>\n\n\n\n<p>A test page might print properly now, but you should probably go into <strong>Printer Options<\/strong> first:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222239_570x560_scrot.png\"><img loading=\"lazy\" decoding=\"async\" width=\"570\" height=\"560\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222239_570x560_scrot.png\" alt=\"2015-07-11-222239_570x560_scrot\" class=\"wp-image-11993\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222239_570x560_scrot.png 570w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222239_570x560_scrot-160x157.png 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/2015-07-11-222239_570x560_scrot-320x314.png 320w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/a><\/figure>\n\n\n\n<p>You do want to set the media size to at least 58 \u00d7 210 mm. This is just the longest strip it will print in one \u2018page\u2019; if your print is shorter, it won\u2019t waste extra paper. You can choose longer prints, but not wider. The default assume your local standard paper size which \u2014be it A4, Letter, or whatever \u2014 will <em>not<\/em> be what you want here. Hit <strong>OK<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Printing something<\/h2>\n\n\n\n<p>You could print the self test page, but it&#8217;s long and boring. If you&#8217;re fairly sure your printer will be supported, try this scaled PDF version of the <a href=\"https:\/\/www.raspberrypi.org\/\">Raspberry Pi<\/a> Logo: <a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/raspberry-pi-logo.pdf\">raspberry-pi-logo<\/a>. Printed and scanned, it came out like this:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/raspberry-pi-logo-miniprinter.png\"><img loading=\"lazy\" decoding=\"async\" width=\"543\" height=\"702\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/raspberry-pi-logo-miniprinter.png\" alt=\"raspberry-pi-logo-miniprinter\" class=\"wp-image-11995\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/raspberry-pi-logo-miniprinter.png 543w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/raspberry-pi-logo-miniprinter-124x160.png 124w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/raspberry-pi-logo-miniprinter-248x320.png 248w\" sizes=\"auto, (max-width: 543px) 100vw, 543px\" \/><\/a><\/figure>\n\n\n\n<p>Not the best rendition, but not bad for a $30 receipt printer. My <a href=\"http:\/\/scruss.com\/blog\/2015\/06\/21\/just-in-case-you-were-needing-a-thermal-printer-test-image\/\">test image<\/a> came out like this (iffy scan, sorry):<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/zj58-driver-test.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"194\" height=\"151\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/zj58-driver-test.jpg\" alt=\"zj58-driver-test\" class=\"wp-image-11996\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/zj58-driver-test.jpg 194w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/zj58-driver-test-160x125.jpg 160w\" sizes=\"auto, (max-width: 194px) 100vw, 194px\" \/><\/a><\/figure>\n\n\n\n<p>I haven&#8217;t covered the intricacies of setting up serial port connections here; maybe another time. Also, there&#8217;s a short delay (maybe 10\u201320 s) between selecting <em>Print<\/em> and the printer coming to life. CUPS is pretty complex, and is doing things in the background while you wait.<\/p>\n\n\n\n<p>(<em>Seeing as I use their logo prominently up there, I should totes acknowledge that <a href=\"https:\/\/web.archive.org\/web\/20210224121309\/https:\/\/www.raspberrypi.org\/trademark-rules\/\">\u201cRaspberry Pi is a trademark of the Raspberry Pi Foundation\u201d<\/a>. Also, I couldn\u2019t have done all this without the support of <a href=\"https:\/\/web.archive.org\/web\/20210224121309\/http:\/\/reed-printer.blogspot.ca\/\">Reed Zhao<\/a>. Though Reed has moved on to bigger things and doesn\u2019t sell printers any more, his help \u2014 not to mention the generous gift of a couple of printers \u2014 was very welcome.<\/em>)<\/p>\n\n\n\n<p>\u2192 you might also be interested in my <a href=\"http:\/\/scruss.com\/blog\/2014\/08\/02\/notes-on-mini-printers-and-linux\/\">notes on mini-printers and Linux<\/a> &#8211; it has some manuals too.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This might be my last post on mini-printers, as I&#8217;ve found a driver that just works with CUPS on Raspberry Pi. It also works on Ubuntu on my laptop, and should work (though untried) on Mac OS. You&#8217;ll have to build it from source, but it&#8217;s not too hard. The hard part is working out [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7],"tags":[2894,2895,270,922,2542,2261,2824,229,2897],"class_list":["post-11985","post","type-post","status-publish","format-standard","hentry","category-computers-suck","tag-cups","tag-driver","tag-linux","tag-printer","tag-serial","tag-sparkfun","tag-thermal","tag-usb","tag-zj58"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pQNZZ-37j","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/11985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/comments?post=11985"}],"version-history":[{"count":15,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/11985\/revisions"}],"predecessor-version":[{"id":17907,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/11985\/revisions\/17907"}],"wp:attachment":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/media?parent=11985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/categories?post=11985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/tags?post=11985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}