{"id":338028,"date":"2026-08-21T15:08:48","date_gmt":"2026-08-21T15:08:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/glin-payments-for-woocommerce\/"},"modified":"2026-10-26T18:13:37","modified_gmt":"2026-10-26T18:13:37","slug":"glin-payments-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/en-au.wordpress.org\/plugins\/glin-payments-for-woocommerce\/","author":23530095,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.14","stable_tag":"0.1.14","tested":"7.1.3","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Glin Payments for WooCommerce","header_author":"Glin","header_description":"Accept Brazilian card and PIX payments in BRL through Glin while settling WooCommerce orders in the merchant currency.","assets_banners_color":"","last_updated":"2026-10-26 18:13:37","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/glin.com.br","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":545,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.1":{"tag":"0.1.1","author":"lucianoglin","date":"2026-08-21 15:08:25","revision":3659262},"0.1.10":{"tag":"0.1.10","author":"lucianoglin","date":"2026-09-22 03:57:26","revision":3706579},"0.1.12":{"tag":"0.1.12","author":"lucianoglin","date":"2026-09-22 23:28:17","revision":3708243},"0.1.14":{"tag":"0.1.14","author":"lucianoglin","date":"2026-10-26 18:13:37","revision":3767072},"0.1.2":{"tag":"0.1.2","author":"lucianoglin","date":"2026-08-21 16:06:54","revision":3659335},"0.1.3":{"tag":"0.1.3","author":"lucianoglin","date":"2026-08-27 16:09:53","revision":3669206},"0.1.4":{"tag":"0.1.4","author":"lucianoglin","date":"2026-09-02 20:59:59","revision":3678665},"0.1.5":{"tag":"0.1.5","author":"lucianoglin","date":"2026-09-02 21:47:43","revision":3678711},"0.1.6":{"tag":"0.1.6","author":"lucianoglin","date":"2026-09-16 05:24:39","revision":3697938},"0.1.7":{"tag":"0.1.7","author":"lucianoglin","date":"2026-09-17 14:28:26","revision":3700434},"0.1.8":{"tag":"0.1.8","author":"lucianoglin","date":"2026-09-17 23:33:58","revision":3701107}},"upgrade_notice":{"0.1.14":"<p>Fixes card payments on the block checkout, which could never be completed, and orders with\ncents being refused by Glin on some hosts. Update as soon as possible.<\/p>","0.1.5":"<p>Adds safer debug logs for failed Glin API requests. Debug logging remains disabled\nby default and does not include card tokens, CPF\/CNPJ, email, phone, or address\nvalues.<\/p>","0.1.4":"<p>Improves checkout errors when an order amount is outside Glin&#039;s supported API\nrange.<\/p>","0.1.3":"<p>Fixes webhook signature verification. Earlier versions rejected every Glin webhook as\nhaving an invalid signature, so paid orders were never marked paid automatically.\nUpdate as soon as possible.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3669205,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3669205,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3659387,"resolution":false,"location":"assets","locale":false}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.1","0.1.10","0.1.12","0.1.14","0.1.2","0.1.3","0.1.4","0.1.5","0.1.6","0.1.7","0.1.8"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[11475,6593,1887,49349,286],"plugin_category":[45],"plugin_contributors":[276843],"plugin_business_model":[],"class_list":["post-338028","plugin","type-plugin","status-publish","hentry","plugin_tags-credit-card","plugin_tags-payment-gateway","plugin_tags-payments","plugin_tags-pix","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-lucianoglin","plugin_committers-lucianoglin"],"banners":[],"icons":{"svg":"https:\/\/ps.w.org\/glin-payments-for-woocommerce\/assets\/icon.svg?rev=3659387","icon":"https:\/\/ps.w.org\/glin-payments-for-woocommerce\/assets\/icon.svg?rev=3659387","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Glin Payments for WooCommerce adds Glin as a WooCommerce payment gateway. It lets Brazilian shoppers pay in BRL using card or PIX while the WooCommerce order remains in the merchant settlement currency supported by Glin.<\/p>\n\n<p>The plugin loads the official Glin Checkout SDK automatically, sends tokenized payment data from WordPress to Glin with the merchant API key, and reconciles final order state through signed Glin webhooks. Merchants do not need to configure a custom SDK URL.<\/p>\n\n<p>Main capabilities:<\/p>\n\n<ul>\n<li>Card and PIX checkout support.<\/li>\n<li>Classic checkout and WooCommerce Checkout Blocks support.<\/li>\n<li>Automatic Glin remittance reservation during checkout.<\/li>\n<li>Automatic webhook registration when gateway settings are saved.<\/li>\n<li>Short card status polling so fast declines can keep shoppers on checkout.<\/li>\n<li>Order-received polling and bounded WordPress cron reconciliation as webhook fallbacks.<\/li>\n<\/ul>\n\n<p>Requirements:<\/p>\n\n<ul>\n<li>WooCommerce 7.8 or newer.<\/li>\n<li>A Glin merchant account.<\/li>\n<li>Glin API and public checkout keys for sandbox or live mode.<\/li>\n<li>A WooCommerce store currency supported by Glin.<\/li>\n<li>Public HTTPS store URL for automatic webhook registration.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to Glin services to process payments and keep WooCommerce orders synchronized with Glin payment status.<\/p>\n\n<p>Service provider: Glin Brasil Servicos Digitais LTDA and Glin, INC.<\/p>\n\n<p>Service endpoints used by the plugin:<\/p>\n\n<ul>\n<li><code>https:\/\/sdk.glin.com.br\/v1\/glin-checkout.js<\/code> loads the Glin Checkout SDK in the shopper browser when Glin is available at checkout.<\/li>\n<li><code>https:\/\/pay.glin.com.br<\/code> is used by the WordPress server in Live mode.<\/li>\n<li><code>https:\/\/pay.staging.glin.com.br<\/code> is used by the WordPress server in Sandbox mode.<\/li>\n<\/ul>\n\n<p>Data sent to Glin and when it is sent:<\/p>\n\n<ul>\n<li>When checkout is prepared, the plugin sends the WooCommerce cart amount, currency, generated checkout reference, success URL, and cancel URL so Glin can create or reuse a remittance.<\/li>\n<li>When the shopper submits payment, the plugin sends the Glin remittance ID, selected payment method, tokenized card data or PIX request data, installments when applicable, billing name, email, phone, CPF\/CNPJ, and billing address so Glin can process the payment.<\/li>\n<li>When payment status is checked, the plugin sends the Glin remittance ID and public checkout key so Glin can return the current payment status.<\/li>\n<li>When gateway settings are saved and the store URL is public HTTPS, the plugin sends the WooCommerce webhook URL and subscribed event types so Glin can deliver payment status updates to the store.<\/li>\n<li>Glin sends signed webhook events back to the WooCommerce store webhook URL when a remittance is paid, canceled, expired, delivered, or disbursed.<\/li>\n<\/ul>\n\n<p>Terms of service: https:\/\/www.glin.com.br\/legal\/terms<\/p>\n\n<p>General platform terms: https:\/\/www.glin.com.br\/legal\/general-terms<\/p>\n\n<p>Privacy policy: https:\/\/www.glin.com.br\/legal\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>Install this plugin from Plugins &gt; Add New, or upload the plugin ZIP from Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate Glin Payments for WooCommerce.<\/li>\n<li>Open WooCommerce &gt; Settings &gt; Payments.<\/li>\n<li>Enable Glin.<\/li>\n<li>Choose Sandbox or Live mode.<\/li>\n<li>Enter the matching Glin API key and public checkout key.<\/li>\n<li>Choose the payment methods to expose, then save settings.<\/li>\n<\/ol>\n\n<p>After settings are saved, the plugin attempts to register the store webhook with Glin. Local HTTP stores can still test checkout flows, but webhook registration requires a public HTTPS URL.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20this%20plugin%20be%20used%20without%20woocommerce%3F\"><h3>Can this plugin be used without WooCommerce?<\/h3><\/dt>\n<dd><p>No. This is a WooCommerce payment gateway. WordPress can install the plugin, but checkout functionality requires WooCommerce to be installed and active.<\/p><\/dd>\n<dt id=\"does%20the%20merchant%20need%20to%20configure%20an%20sdk%20url%3F\"><h3>Does the merchant need to configure an SDK URL?<\/h3><\/dt>\n<dd><p>No. The plugin uses Glin's configured Checkout SDK URL internally.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20sandbox%20testing%3F\"><h3>Does the plugin support sandbox testing?<\/h3><\/dt>\n<dd><p>Yes. Merchants can choose Sandbox mode and enter sandbox API\/public checkout keys.<\/p><\/dd>\n<dt id=\"how%20do%20webhooks%20work%3F\"><h3>How do webhooks work?<\/h3><\/dt>\n<dd><p>When gateway settings are saved, the plugin attempts to register the WooCommerce store webhook URL with Glin. Glin sends signed payment\/remittance events to that URL. The plugin verifies the signature, finds the WooCommerce order by stored Glin identifiers, and updates the order status idempotently.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20webhook%20is%20delayed%3F\"><h3>What happens if a webhook is delayed?<\/h3><\/dt>\n<dd><p>The plugin also polls pending order-received pages and schedules bounded WordPress cron reconciliation for orders left waiting.<\/p><\/dd>\n<dt id=\"can%20i%20refund%20a%20glin%20order%20from%20woocommerce%3F\"><h3>Can I refund a Glin order from WooCommerce?<\/h3><\/dt>\n<dd><p>Not yet. Glin's merchant API has no refund operation, so the plugin cannot offer one and WooCommerce will only let you record a manual refund against the order. Ask Glin support to refund the payment, then record the refund in WooCommerce to keep your reports straight.<\/p><\/dd>\n<dt id=\"the%20gateway%20is%20enabled%20but%20payments%20fail%2C%20or%20wp-admin%20says%20glin%20rejected%20the%20api%20key\"><h3>The gateway is enabled but payments fail, or wp-admin says Glin rejected the API key<\/h3><\/dt>\n<dd><p>The key in the settings is not one Glin accepts for the selected environment. Check that a Live key is pasted under Live (and a Sandbox key under Sandbox), and that the key is still active in your Glin dashboard. Saving the settings re-tests the connection and reports the result; a standing error notice in wp-admin means the last attempt was still refused.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.14<\/h4>\n\n<ul>\n<li>Fixed: a card payment could never be completed on the block checkout -- WooCommerce's\ndefault checkout for new stores. Placing the order returned \"Cannot place an order, your\ncart is empty\": the card flow loads the cart twice in one request while preparing the\npayment, and WooCommerce fills a replacement cart from the session only once per\nrequest, so the second one stayed empty and was written back over the shopper's cart.\nPIX was unaffected because it does not use that request. The cart is now loaded at most\nonce per request.<\/li>\n<li>Fixed: orders whose total has cents could be refused with \"Glin does not support this\norder amount\". The amount was sent as a number, so what went over the wire depended on\nthe store's PHP configuration -- on some hosts R$96.60 was transmitted as\n96.599999999999994315658113919198513031005859375, which Glin rejects. Only totals whose\ncents happen to be exact in binary (.00, .25, .50, .75) were unaffected. The amount is\nnow sent as a fixed two-decimal value and cannot be reshaped by the host.<\/li>\n<li>Fixed: that rejection also told the shopper to reduce the order total, which was wrong\nfor every total except one genuinely above Glin's limit. The two causes are now told\napart and only a real limit says to reduce the total.<\/li>\n<li>Fixed: an API key Glin refuses is no longer silent. Saving the settings tests the\nconnection and reports the result, a standing notice appears in wp-admin while the keys\nare being refused, and a failing check is no longer retried on every page load -- it\nused to repeat a blocking request on each checkout and admin page, with a 30-second\ntimeout, for as long as the key stayed wrong. The connection check also now uses the\nkeys you just saved rather than the ones loaded before the save.<\/li>\n<li>Fixed: the block checkout showed the old one-line summary. It now shows the same\nitemised breakdown as the classic checkout -- exchange rate, IOF, card or PIX fee, Glin\nfee, total -- following the method the payer selects. Both checkouts render it from one\nshared source.<\/li>\n<li>Fixed: the block checkout accepted a non-Brazilian billing address and left Glin to\nrefuse the payment. Billing country, CPF\/CNPJ, number, neighborhood and phone are now\nchecked on the server for both checkouts, before anything is reserved at Glin, so the\npayer gets a message they can act on instead of an API error.<\/li>\n<li>Fixed: every message the checkout scripts showed was hard-coded English, including the\none a PIX payer sees while waiting for confirmation. All of them are translatable now.<\/li>\n<li>Declared compatibility with WooCommerce High-Performance Order Storage, which is the\ndefault for new stores; the plugin was listed as incompatible.<\/li>\n<li>Card payments no longer hold the checkout request open for up to twelve seconds waiting\nfor the card status. Three attempts, then the order-received page and the existing\nreconciliation finish the job -- the previous wait could exceed the request timeout on\nsome hosts and lose the payment page.<\/li>\n<li>Webhook signing keys are cached for twelve hours instead of being fetched on every\ndelivery, and are refreshed automatically when Glin rotates them.<\/li>\n<li>Tested with WordPress 7.1 and WooCommerce 11.2.<\/li>\n<\/ul>\n\n<h4>0.1.13<\/h4>\n\n<ul>\n<li>The Card and PIX settings are now enforced, not only hidden. Until now switching one off\nremoved it from the checkout markup but Glin was never told, so a request that did not go\nthrough that markup could still be paid with the method the store had switched off. The\nrestriction is now sent with the charge and refused on Glin's side.<\/li>\n<li>Switching a method back on now applies to carts that are already in progress. A cart holds\nits reserved charge for up to 45 minutes, and that charge used to keep the restriction it was\ncreated under, so a shopper could not use a method the store had just enabled.<\/li>\n<\/ul>\n\n<h4>0.1.12<\/h4>\n\n<ul>\n<li>Stop creating a second remittance for the same cart. The plugin created one every time\nWooCommerce refreshed the checkout, which happens on page load as well as on every address,\nshipping, quantity and coupon change -- so a single page load could produce two remittances\nseconds apart, and the spare expired unpaid. Creating a remittance is now tied to the cart\ntotal actually changing; a refresh that only replaces the page re-attaches the existing one.<\/li>\n<li>When the remittance field is lost by one of those refreshes, the order now reuses the\nremittance already reserved for the cart where it can, instead of always creating another.<\/li>\n<\/ul>\n\n<h4>0.1.11<\/h4>\n\n<ul>\n<li>Tell the checkout SDK which language the store speaks. The SDK renders the card form\nitself and defaulted it to Portuguese regardless of the store, so an English store showed\nEnglish labels wrapped around a Portuguese card form. It now follows the WordPress site\nlanguage on both the classic and block checkouts.<\/li>\n<\/ul>\n\n<h4>0.1.10<\/h4>\n\n<ul>\n<li><p>Show the payer an itemised cost breakdown at checkout, the same one Glin's own checkout\nshows: foreign currency amount, exchange rate, converted amount, IOF with its rate, the\ncard or PIX fee, the Glin fee, and the total -- following whichever method the payer\nselects. Previously this was a single line (\"You pay R$X. Merchant order amount: $Y.\"),\nwhich told the payer the total had grown but not by what, leaving merchants to explain an\nunexplained gap against the spot exchange rate.<\/p><\/li>\n<li><p>Check the store currency against your Glin payout currency instead of a fixed list. Glin\ncharges in the payout currency chosen when your account was created, so a store selling in\nanything else could never complete a payment -- but the gateway still appeared at checkout\nand the payment failed in front of the customer, with nothing shown in the admin. The\ngateway is now hidden in that case and an admin notice names both currencies. If the\npayout currency cannot be read the previous behaviour is kept, so a temporary connection\nproblem cannot take a working store offline.<\/p><\/li>\n<li>Removed BRL from the accepted store currencies: Glin issues no BRL payout contracts, so a\nBRL store could not take a payment.<\/li>\n<\/ul>\n\n<h4>0.1.9<\/h4>\n\n<ul>\n<li>Identify the plugin on every API call. Requests used WordPress's default user agent, which\nis identical to every other plugin on the same site, so nothing in our own logs attributed\na request to this plugin -- answering \"is the plugin working in production?\" meant reading\nraw load-balancer logs and guessing. Calls now send\n\"GlinPaymentsWooCommerce\/; WordPress\/; \", which adds\nattribution without sending anything the default agent did not already send.<\/li>\n<\/ul>\n\n<h4>0.1.8<\/h4>\n\n<ul>\n<li>Load the checkout styles and the payment-status script on the My Account order page too.\nA pending PIX order shown there had an unstyled QR code and a status line that said it\nwas waiting for confirmation but never updated, because nothing was polling it.<\/li>\n<\/ul>\n\n<h4>0.1.7<\/h4>\n\n<ul>\n<li>Stop the PIX QR code filling the whole column on desktop. The size was set on the image,\nand Elementor's <code>.elementor img { max-width: 100% }<\/code> is a more specific selector, so it\nwon and the code stretched to the width of the page. The QR code is now sized by a\ncontainer of its own, which a theme has no reason to restyle.<\/li>\n<\/ul>\n\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Fix classic checkout never sending payment data. WooCommerce dispatches\n  checkout_place_order_ with <code>triggerHandler()<\/code>, which does not bubble, so the\nhandler bound on <code>document.body<\/code> never ran and orders were placed with an empty payload\nand immediately failed with \"Glin payment was not ready.\"<\/li>\n<li>Bind the place-order handler to <code>form.checkout<\/code> directly and re-bind it after each\ncheckout update.<\/li>\n<li>Fix every card payment failing with \"This remittance is not available for the current\ncheckout session.\" The <code>{remittanceId}<\/code> placeholder in the prepare endpoint URL was\nstripped by <code>esc_url_raw()<\/code>, so the request went to a literal <code>remittanceId<\/code> path.\nAffected both classic and block checkout.<\/li>\n<li>Send the billing phone in E.164 when preparing a payment. WooCommerce stores whatever\nthe shopper typed, and the unnormalized value was rejected, so card payments could not\nget past the prepare step. The pay request already normalized; prepare did not.<\/li>\n<li>Stop mangling phone numbers in area code 55, and accept a phone written with the\nnational trunk \"0\" before the area code. Brazil's country code and the Santa Maria area\ncode are the same two digits, so testing for a \"55\" prefix removed those shoppers' area\ncode instead of adding the country code and their payments were rejected. Length tells\nthe two apart once the trunk \"0\" is stripped.<\/li>\n<li>POST the 3D Secure challenge with its <code>creq<\/code> field instead of opening the ACS URL as a\nplain link. EMV 3DS 2.x answers a bare GET with an error page. Falls back to a link when\nthe provider sends no <code>creq<\/code>.<\/li>\n<li>Treat an expired or canceled remittance as terminal. A checkout abandoned before any\norder exists reports only <code>remittanceStatus<\/code>, so orders previously stayed in \"pending\npayment\" forever and consumed every reconciliation attempt.<\/li>\n<li>Keep polling for payment confirmation for the full 32 minutes a PIX code can be paid in,\nup from 6, and tell the payer when the page stops watching instead of leaving \"Waiting\nfor payment confirmation\" on screen forever.<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>Log sanitized Glin API failure context to WooCommerce logs when debug logging is\nenabled.<\/li>\n<li>Include request method, endpoint path, status code, safe remittance fields, and\nboolean presence checks for sensitive customer, address, and card payload fields.<\/li>\n<li>Keep card tokens, device fingerprints, CPF\/CNPJ, email, phone, and full address\nvalues out of plugin logs.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Validate WooCommerce order totals against the Glin merchant API amount range before\ninitializing checkout.<\/li>\n<li>Replace raw API validation text with a shopper-safe order amount message.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Verify the webhook JWS over the raw request body, as required by the unencoded\ndetached payload form (RFC 7797). Earlier versions base64url-encoded the body first\nand rejected every valid signature.<\/li>\n<li>Check the protected header claims before trusting a webhook: <code>alg<\/code> is RS256, <code>b64<\/code> is\nfalse, <code>aud<\/code> matches the integration account, and <code>kid<\/code> names a key in Glin's JWKS.<\/li>\n<li>Send the API key as a Bearer token when fetching the JWKS, which that endpoint requires.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Remove screenshot captions until matching WordPress.org screenshot assets are available.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Initial pilot release of the Glin WooCommerce gateway.<\/li>\n<\/ul>","raw_excerpt":"Accept Brazilian card and PIX payments through Glin in WooCommerce.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/338028","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=338028"}],"author":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lucianoglin"}],"wp:attachment":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=338028"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=338028"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=338028"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=338028"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=338028"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=338028"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}