{"id":98501,"date":"2019-03-02T12:50:35","date_gmt":"2019-03-02T12:50:35","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/auto-refresh-api-ajax\/"},"modified":"2026-03-30T20:24:45","modified_gmt":"2026-03-30T20:24:45","slug":"auto-refresh-api-ajax","status":"publish","type":"plugin","link":"https:\/\/bal.wordpress.org\/plugins\/auto-refresh-api-ajax\/","author":14229339,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.0.1","stable_tag":"2.0.1","tested":"6.9.4","requires":"5.5","requires_php":"7.4","requires_plugins":null,"header_name":"Live Data Display","header_author":"Bernhard Kux","header_description":"Load JSON-data via Ajax, display it and reload it","assets_banners_color":"edf4fd","last_updated":"2026-03-30 20:24:45","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/json-content-importer.com\/auto-refresh-api-ajax\/","header_author_uri":"https:\/\/json-content-importer.com","rating":5,"author_block_rating":0,"active_installs":30,"downloads":5896,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"berkux","date":"2019-03-03 19:11:16"},"1.1.0":{"tag":"1.1.0","author":"berkux","date":"2019-08-06 07:26:35"},"1.2.0":{"tag":"1.2.0","author":"berkux","date":"2019-08-16 08:44:49"},"1.2.1":{"tag":"1.2.1","author":"berkux","date":"2019-12-20 08:08:08"},"1.2.10":{"tag":"1.2.10","author":"berkux","date":"2025-04-16 20:22:23"},"1.2.2":{"tag":"1.2.2","author":"berkux","date":"2020-09-24 12:57:52"},"1.2.3":{"tag":"1.2.3","author":"berkux","date":"2021-10-24 09:12:04"},"1.2.4":{"tag":"1.2.4","author":"berkux","date":"2021-12-08 23:05:24"},"1.2.5":{"tag":"1.2.5","author":"berkux","date":"2021-12-26 21:03:01"},"1.2.6":{"tag":"1.2.6","author":"berkux","date":"2022-11-13 18:50:46"},"1.2.7":{"tag":"1.2.7","author":"berkux","date":"2023-01-26 20:29:47"},"1.2.8":{"tag":"1.2.8","author":"berkux","date":"2023-11-04 23:27:54"},"1.2.9":{"tag":"1.2.9","author":"berkux","date":"2024-04-09 19:43:21"},"2.0.0":{"tag":"2.0.0","author":"berkux","date":"2026-03-29 21:25:27"},"2.0.1":{"tag":"2.0.1","author":"berkux","date":"2026-03-30 20:24:45"}},"upgrade_notice":{"2.0.1":"<ul>\n<li><strong>Bugfix:<\/strong> Catch the fatal error if wp_generate_password is not available \u2014 the function may not be loaded early enough in WordPress.<\/li>\n<\/ul>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3494029,"resolution":"128x128","location":"assets","locale":""},"icon-16x16.png":{"filename":"icon-16x16.png","revision":3494035,"resolution":"16x16","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3494032,"resolution":"256x256","location":"assets","locale":""},"icon-64x64.png":{"filename":"icon-64x64.png","revision":3494028,"resolution":"64x64","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3494042,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3494043,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.2.0","1.2.1","1.2.10","1.2.2","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.2.8","1.2.9","2.0.0","2.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3494034,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3494037,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3494038,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3494039,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Slot settings page","2":"Gutenberg block in the editor"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[221,1556,9631,1118,12728],"plugin_category":[59],"plugin_contributors":[82483],"plugin_business_model":[],"class_list":["post-98501","plugin","type-plugin","status-publish","hentry","plugin_tags-ajax","plugin_tags-api","plugin_tags-auto-refresh","plugin_tags-json","plugin_tags-live-ticker","plugin_category-utilities-and-tools","plugin_contributors-berkux","plugin_committers-berkux"],"banners":{"banner":"https:\/\/ps.w.org\/auto-refresh-api-ajax\/assets\/banner-772x250.png?rev=3494043","banner_2x":"https:\/\/ps.w.org\/auto-refresh-api-ajax\/assets\/banner-1544x500.png?rev=3494042","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/auto-refresh-api-ajax\/assets\/icon-128x128.png?rev=3494029","icon_2x":"https:\/\/ps.w.org\/auto-refresh-api-ajax\/assets\/icon-256x256.png?rev=3494032","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/auto-refresh-api-ajax\/assets\/screenshot-1.png?rev=3494034","caption":"Slot settings page"},{"src":"https:\/\/ps.w.org\/auto-refresh-api-ajax\/assets\/screenshot-2.png?rev=3494037","caption":"Gutenberg block in the editor"},{"src":"https:\/\/ps.w.org\/auto-refresh-api-ajax\/assets\/screenshot-3.png?rev=3494038","caption":""},{"src":"https:\/\/ps.w.org\/auto-refresh-api-ajax\/assets\/screenshot-4.png?rev=3494039","caption":""}],"raw_content":"<!--section=description-->\n<h4>Live Data Display is a powerful WordPress plugin that loads JSON feeds via HTTP and displays live-updating values on your site \u2014 with no page reload required.<\/h4>\n\n<p>Perfect for live tickers, stock prices, sports results, weather data, sensor readings, and any other real-time data source.<\/p>\n\n<p><strong>Key Features:<\/strong><\/p>\n\n<ul>\n<li><strong>Multiple independent slots:<\/strong> Configure as many data slots as you need, each with its own API URL, refresh interval, and display target.<\/li>\n<li><strong>Shortcode and Gutenberg block:<\/strong> Place data anywhere with <code>[araa slot=\"slot_1\"]<\/code> or the built-in block.<\/li>\n<li><strong>Auto-refresh:<\/strong> Each slot refreshes independently at a configurable interval (minimum 500 ms).<\/li>\n<li><strong>Server-side initial value:<\/strong> For slots with a refresh interval \u2265 10 s the initial value is pre-rendered server-side and cached, so visitors see data immediately \u2014 no flash of empty content.<\/li>\n<li><strong>Proxy for cross-origin APIs:<\/strong> Optional server-side proxy (admin-ajax or REST API) fetches external URLs from the server, bypassing browser CORS restrictions.<\/li>\n<li><strong>Customisable GET parameters:<\/strong> Use <code>#GET_key#<\/code> placeholders in the API URL to pass the current page's GET parameters to the remote API.<\/li>\n<li><strong>Prefix \/ Suffix:<\/strong> Wrap every displayed value with configurable text (e.g. currency symbol, unit).<\/li>\n<li><strong>Error text:<\/strong> Show a custom fallback message when the API request fails or the JSON path is not found.<\/li>\n<li><strong>Page-visibility aware:<\/strong> Slots pause polling while the browser tab is hidden and resume immediately when it becomes visible again.<\/li>\n<li><strong>Active \/ Inactive toggle:<\/strong> Enable or disable individual slots without deleting their configuration.<\/li>\n<li><strong>Built-in demo APIs:<\/strong> The plugin ships with six ready-to-use REST API endpoints that can serve as live data sources straight away \u2014 no external service needed. Each endpoint must be individually enabled under <em>Settings \u2192 Live Data Display \u2192 API<\/em>:\n\n<ul>\n<li><code>\/wp-json\/araa\/v1\/api\/time<\/code> \u2014 current server time, date, weekday, and timezone<\/li>\n<li><code>\/wp-json\/araa\/v1\/api\/countdown<\/code> \u2014 seconds\/days until a target date (<code>?to=YYYY-MM-DD<\/code>; defaults to next New Year)<\/li>\n<li><code>\/wp-json\/araa\/v1\/api\/random<\/code> \u2014 random integer within a configurable range (<code>?min=1&amp;max=100<\/code>)<\/li>\n<\/ul><\/li>\n<li><strong>Clean uninstall:<\/strong> All plugin data is removed on deletion (optional: keep settings).<\/li>\n<\/ul>\n\n<p><strong>How It Works:<\/strong><\/p>\n\n<ol>\n<li><strong>Add a slot:<\/strong> Go to <em>Settings \u2192 Live Data Display<\/em> and create a slot.<\/li>\n<li><strong>Enter the API URL:<\/strong> Paste the JSON feed URL. Use <code>#GET_key#<\/code> for dynamic GET parameters.<\/li>\n<li><strong>Set the JSON path:<\/strong> Enter the dot-separated path to the value you need (e.g. <code>items.0.score<\/code>).<\/li>\n<li><strong>Choose a proxy method<\/strong> (only needed for external\/cross-origin URLs): admin-ajax or REST API proxy.<\/li>\n<li><strong>Set the refresh interval:<\/strong> How often (in milliseconds) should the value be updated?<\/li>\n<li><strong>Place the output:<\/strong> Use the shortcode <code>[araa slot=\"slot_1\"]<\/code>, the Gutenberg block, or a custom CSS\/jQuery selector.<\/li>\n<li><strong>Optional:<\/strong> Add prefix, suffix, placeholder, error text, and an initial-hide selector.<\/li>\n<li><strong>Optional \u2014 enable REST API:<\/strong> To expose slot values via the plugin's own REST API endpoints, go to <em>Settings \u2192 Live Data Display \u2192 API<\/em> and activate the feature. The endpoints are disabled by default.<\/li>\n<\/ol>\n\n<p>[youtube https:\/\/www.youtube.com\/watch?v=mzQLX8xkfOU]<\/p>\n\n<!--section=installation-->\n<p>For detailed installation instructions, please read the <a href=\"http:\/\/codex.wordpress.org\/Managing_Plugins#Installing_Plugins\">standard installation procedure for WordPress plugins<\/a>.<\/p>\n\n<ol>\n<li>Log in to your WordPress installation.<\/li>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <em>Plugins<\/em> menu.<\/li>\n<li>Click on <em>Live Data Display<\/em> in the left sidebar and configure your slots.<\/li>\n<\/ol>\n\n<h4>Where is this plugin from?<\/h4>\n\n<p>Made in Munich, Bavaria, Germany \u2014\nfamous for Oktoberfest, FC Bayern Munich, the Allianz Arena, TU Munich, BMW, Siemens, the Alps, and much more.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20can%20i%20see%20a%20live%20example%3F\"><h3>Where can I see a live example?<\/h3><\/dt>\n<dd><p><a href=\"https:\/\/kux.de\" title=\"Example: See the date and time in the right column\">Example on kux.de<\/a>.<\/p><\/dd>\n<dt id=\"can%20i%20display%20data%20from%20a%20protected%20api%20%28with%20authentication%29%3F\"><h3>Can I display data from a protected API (with authentication)?<\/h3><\/dt>\n<dd><p>If the API requires authorisation headers, use the companion plugin <a href=\"https:\/\/json-content-importer.com\" title=\"JSON Content Importer\">JSON Content Importer<\/a> to create an authenticated feed and point this plugin at the result.<\/p><\/dd>\n<dt id=\"what%20is%20the%20minimum%20refresh%20interval%3F\"><h3>What is the minimum refresh interval?<\/h3><\/dt>\n<dd><p>500 ms. Values below 500 ms are clamped to 500 ms automatically.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20without%20jquery%3F\"><h3>Does the plugin work without jQuery?<\/h3><\/dt>\n<dd><p>No. The frontend script depends on jQuery, which is bundled with WordPress.<\/p><\/dd>\n<dt id=\"what%20built-in%20api%20endpoints%20does%20the%20plugin%20provide%3F\"><h3>What built-in API endpoints does the plugin provide?<\/h3><\/dt>\n<dd><p>The plugin ships with six optional REST API endpoints under the namespace <code>araa\/v1\/api\/<\/code>. All are <strong>disabled by default<\/strong> and must be activated individually under <em>Settings \u2192 Live Data Display \u2192 API<\/em>.<\/p>\n\n\n\n\n  Endpoint\n  Description\n  Optional parameters\n\n\n\n\n  <code>\/wp-json\/araa\/v1\/api\/time<\/code>\n  Current server time, date, weekday, and timezone\n  \u2014\n\n\n  <code>\/wp-json\/araa\/v1\/api\/countdown<\/code>\n  Countdown to a target date (days, hours, minutes, seconds)\n  <code>to=YYYY-MM-DD<\/code> (default: next New Year)\n\n\n  <code>\/wp-json\/araa\/v1\/api\/random<\/code>\n  Random integer in a configurable range\n  <code>min=1&amp;max=100<\/code>\n\n\n\n\n<p>All endpoints are publicly accessible (no authentication required) and return JSON.<\/p><\/dd>\n<dt id=\"when%20should%20i%20use%20%22admin-ajax%22%20and%20when%20%22rest%20api%22%20as%20the%20proxy%20method%3F\"><h3>When should I use \"admin-ajax\" and when \"REST API\" as the proxy method?<\/h3><\/dt>\n<dd><p>Both methods let the WordPress server fetch an external JSON URL on behalf of the browser, bypassing CORS restrictions. They differ in how the browser communicates with WordPress:<\/p>\n\n<p><strong>admin-ajax<\/strong> (<code>\/wp-admin\/admin-ajax.php<\/code>)\n- The browser sends a POST request containing only the slot ID and a WordPress nonce. The external URL is never transmitted to the browser \u2014 it stays entirely on the server.\n- Secured with a WordPress nonce (CSRF protection) and server-side URL validation.\n- Works on every WordPress installation, including environments where the REST API is disabled by a security plugin or by the hosting provider.\n- <strong>Choose this when<\/strong> you want to keep the external URL (and any parameters or tokens embedded in it) hidden from the browser, or when the REST API is unavailable.<\/p>\n\n<p><strong>REST API proxy<\/strong> (<code>\/wp-json\/araa\/v1\/geturl<\/code>)\n- The browser sends a GET request to a WordPress REST endpoint. The external URL is included in the request as a query parameter, signed with an HMAC-SHA256 key to prevent tampering. The WordPress server then fetches the external URL and returns the result.\n- Access to the endpoint is restricted to requests originating from the same server (localhost \/ server IP), so it is suited to local development environments or setups where WordPress makes internal loopback requests.\n- Requires the WordPress REST API to be accessible.\n- <strong>Choose this when<\/strong> you are running WordPress locally or in a controlled environment where loopback requests are used, and you prefer the modern REST API transport.<\/p>\n\n<p><strong>In practice:<\/strong> for most live production sites the <strong>admin-ajax<\/strong> method is the safer and more compatible choice. The REST API proxy is the right pick for local development setups or when an admin-ajax conflict forces you to look for an alternative.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20slot%27s%20api%20request%20fails%3F\"><h3>What happens when a slot's API request fails?<\/h3><\/dt>\n<dd><p>If an <em>Error text<\/em> is configured for the slot, it is displayed in place of the value. Otherwise the last successfully loaded value remains visible.<\/p><\/dd>\n<dt id=\"will%20my%20settings%20be%20lost%20when%20i%20update%20the%20plugin%3F\"><h3>Will my settings be lost when I update the plugin?<\/h3><\/dt>\n<dd><p>No. Settings are stored in the WordPress database and survive updates. A migration routine automatically converts the old single-slot format from versions before 1.3.0.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.1<\/h4>\n\n<ul>\n<li><strong>Bugfix:<\/strong> Catch the fatal error if wp_generate_password is not available \u2014 the function may not be loaded early enough in WordPress.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li><strong>New name:<\/strong> Plugin renamed from <em>Auto Refresh API AJAX<\/em> to <em>Live Data Display<\/em>. The plugin slug (<code>auto-refresh-api-ajax<\/code>) and all existing settings are unchanged.<\/li>\n<li><strong>Multiple slots:<\/strong> The plugin now supports any number of independent data slots, each with its own URL, refresh interval, JSON path, selector, prefix, suffix, error text, and active flag.<\/li>\n<li><strong>Shortcode:<\/strong> New <code>[araa slot=\"slot_1\"]<\/code> shortcode renders a self-contained element with the correct ID and class. Accepts optional <code>tag<\/code> and <code>class<\/code> attributes.<\/li>\n<li><strong>Gutenberg block:<\/strong> Native block with live editor preview via a REST endpoint (<code>\/wp-json\/araa\/v1\/preview<\/code>).<\/li>\n<li><strong>Server-side initial value:<\/strong> Slots with refresh interval \u2265 10 s pre-render their value on the server (two-level cache: per-request static + WP transient). Visitors see data immediately without waiting for the first Ajax cycle.<\/li>\n<li><strong>Security \u2014 CSRF\/abuse protection:<\/strong> All admin-ajax proxy requests are now verified with a WordPress nonce (<code>araa_ajax_nonce<\/code>).<\/li>\n<li><strong>Security \u2014 SSRF mitigation:<\/strong> The admin-ajax proxy validates the target URL with <code>wp_http_validate_url()<\/code> before fetching.<\/li>\n<li><strong>Security \u2014 XSS fix:<\/strong> API values injected into the page via the output buffer are now HTML-escaped with <code>esc_html()<\/code>.<\/li>\n<li><strong>Security \u2014 output-buffer fix:<\/strong> Replaced nested <code>ob_start()<\/code> calls (one per slot) with a single buffer that applies all placeholder replacements at once.<\/li>\n<li><strong>Prefix \/ suffix \/ error text<\/strong> fields added to every slot.<\/li>\n<li><strong>Active \/ inactive toggle<\/strong> per slot.<\/li>\n<li><strong>Page-visibility API:<\/strong> Frontend pauses polling while the tab is hidden.<\/li>\n<li><strong>Built-in demo APIs:<\/strong> Three public REST API endpoints under <code>\/wp-json\/araa\/v1\/api\/<\/code> provide ready-to-use live data (time, countdown, random number). Each endpoint is <strong>opt-in<\/strong> and must be activated individually under <em>Settings \u2192 Live Data Display \u2192 API<\/em>.<\/li>\n<li><strong>Settings migration:<\/strong> Automatically migrates settings from v1.2.10 (flat option) and v1.2.11 (single-slot JSON) to the new multi-slot format.<\/li>\n<li><strong>Tested up to WordPress 6.9.<\/strong> <\/li>\n<\/ul>\n\n<h4>1.2.10<\/h4>\n\n<ul>\n<li>Plugin is ok with WP 6.5.4.<\/li>\n<li>Compatible with Plugin Check Plugin 1.0.1 (one expected warning regarding nonce-less GET parameter handling \u2014 see FAQ).<\/li>\n<li><code>wp_remote_get<\/code> replaces <code>file_get_contents<\/code>.<\/li>\n<li>Added <code>wp_json_encode<\/code> before using received JSON.<\/li>\n<li>Improved output-escaping and nonce-checking.<\/li>\n<\/ul>\n\n<h4>1.2.9<\/h4>\n\n<ul>\n<li>Plugin is ok with WP 6.4.3 and PHP 8.<\/li>\n<li>Improved backend design.<\/li>\n<li>Fix: <code>$_SERVER['SERVER_NAME']<\/code> may be unset when running under WP-CLI.<\/li>\n<\/ul>\n\n<h4>1.2.8<\/h4>\n\n<ul>\n<li>Security fix: Cross-Site Scripting (XSS) vulnerability in the admin area reported by Rio D. \u2014 thank you!<\/li>\n<\/ul>\n\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>Plugin is ok with WP 6.1.1.<\/li>\n<li>Fixes for PHP 8.1 compatibility.<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Pass GET parameters from the current page to the remote JSON API using <code>#GET_key#<\/code> placeholders in the API URL.<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Plugin is ok with WP 5.8.2.<\/li>\n<li>Bugfix: sorting out local vs. external JSON URLs.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Plugin is ok with WP 5.8.1.<\/li>\n<li>Bugfix: local server JSON URLs now handled correctly.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Plugin is ok with WP 5.5.1.<\/li>\n<li>Bugfix: passing parameters from PHP to JS; added validation on the settings page.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Plugin is ok with WP 5.4 and PHP 7.4.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Minor bugfix: missing function added.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added server-side initial value loading and initial-hide selector.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added second proxy method for cross-origin Ajax calls.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Load JSON data via API, display it on your WordPress site, and auto-refresh it at custom intervals \u2014 without reloading the page.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/98501","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=98501"}],"author":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/berkux"}],"wp:attachment":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=98501"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=98501"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=98501"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=98501"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=98501"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=98501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}