{"id":13227,"date":"2024-12-17T17:19:14","date_gmt":"2024-12-17T14:19:14","guid":{"rendered":"https:\/\/dhtmlx.com\/blog\/?p=13227"},"modified":"2025-02-27T16:34:20","modified_gmt":"2025-02-27T13:34:20","slug":"dhtmlx-scheduler-7-2","status":"publish","type":"post","link":"https:\/\/dhtmlx.com\/blog\/dhtmlx-scheduler-7-2\/","title":{"rendered":"DHTMLX Scheduler 7.2: Enhanced Editing of Recurring Events, Modified Live Updates, and More"},"content":{"rendered":"<p>As the festive season approaches, we\u2019re excited to announce one more update from the DHTMLX team! This time, we are delighted to announce the release of DHTMLX Scheduler 7.2. This update will enhance the coding experience with our <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxScheduler\/\" rel=\"noopener\" target=\"_blank\">JS scheduling library<\/a> and ensure even greater usability for calendars built with it.<\/p>\n<p>Based on the robust foundation of previous versions, v7.2 adds a new editing option for recurring events, modified collaborative editing, and enhanced control over event display in Day and Week views.<br \/>\n\n\t\t<div class='post-banner'>\n\t\t    <div class='post-banner__inside'>\n\t\t        <div>\n\t\t            <div class=\"post-banner__title\">Download DHTMLX Scheduler v7.2<\/div>\n\t\t            <div class=\"post-banner__text\">Estimate the updated functionality for building modern JavaScript scheduling calendars<\/div>\n                <\/div>\n\t\t            \n                \n            <div class='post-banner__btn'>\n                <a href='https:\/\/dhtmlx.com\/docs\/products\/dhtmlxScheduler\/download.shtml' title='' class='button-secondary'>Get free trial<\/a>\n            <\/div>\n        \n            <\/div>\n\t\t<\/div>\n\t<\/p>\n<p>Let\u2019s delve into the key features of v7.2.<\/p>\n<h5>New Editing Option for Recurring Events<\/h5>\n<p>In version 7.1, we introduced support for the RRULE format for recurring events, aligning with the widely accepted RFC-5545 standard. DHTMLX Scheduler 7.2 takes this functionality further, allowing you to seamlessly modify parts of recurring series.<\/p>\n<p>This feature is available by default and does not require extra configuration. Thus, it will be easy for end-users to simultaneously edit a set of recurring events. All that has to be done is to specify a particular event, from which changes in the recurring series will be applied. In the user interface it can be done in two ways:<\/p>\n<ul>\n<li>Reschedule the needed event by dragging it to a certain cell in the timeline and selecting \u201cThis and following events\u201d, which will apply the same changes to the rest of the recurring series.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/12\/editing-of-recurring-events-with-dnd.gif\" alt=\"new option for editing of recurring events\" width=\"1856\" height=\"856\" class=\"aligncenter size-full wp-image-13228\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/utvnjrnd?tag=scheduler&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<ul>\n<li>\u0421lick on the needed event in the recurring series and select the \u201cThis and following events\u201d option in the popup menu that will apply further changes to the subsequent part of the recurring series.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/12\/image4.gif\" alt=\"editing recurring series\" width=\"1852\" height=\"852\" class=\"aligncenter size-full wp-image-13229\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/utvnjrnd?tag=scheduler&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><br \/>\nThis approach does not require any changes in the server-side code of your app.<\/p>\n<h5>Modified Live Updates Module for Collaborative Editing<\/h5>\n<p>In v7.2, Scheduler&#8217;s collaboration capabilities reach a new level. Our developers modified the Live Updates module, providing real-time synchronization and collaborative editing across multiple users.<\/p>\n<p>The new implementation brings modern, efficient support for live data updates, ensuring that changes made by one end-user are instantly visible to all others.<\/p>\n<p>The client-side handler for live updates is now embedded into the Scheduler component. To enable it, you just need to include the following code in your app:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/span> AUTH_TOKEN <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;token&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\nscheduler.<span class=\"me1\">init<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'scheduler_here'<\/span><span class=\"sy0\">,<\/span> <span class=\"kw1\">new<\/span> <span class=\"kw4\">Date<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">2025<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">3<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">20<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;week&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nscheduler.<span class=\"me1\">load<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\/events&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">const<\/span> dp <span class=\"sy0\">=<\/span> scheduler.<span class=\"me1\">createDataProcessor<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; url<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;\/events&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; mode<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;REST-JSON&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; headers<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;Remote-Token&quot;<\/span><span class=\"sy0\">:<\/span> AUTH_TOKEN<br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">const<\/span> <span class=\"br0\">&#123;<\/span> RemoteEvents<span class=\"sy0\">,<\/span> remoteUpdates <span class=\"br0\">&#125;<\/span> <span class=\"sy0\">=<\/span> scheduler.<span class=\"me1\">ext<\/span>.<span class=\"me1\">liveUpdates<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">const<\/span> remoteEvents <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> RemoteEvents<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\/api\/v1&quot;<\/span><span class=\"sy0\">,<\/span> AUTH_TOKEN<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nremoteEvents.<span class=\"me1\">on<\/span><span class=\"br0\">&#40;<\/span>remoteUpdates<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>The live collaboration functionality requires a compatible backend implementation. To speed up this process, we prepared for you a <a href=\"https:\/\/docs.dhtmlx.com\/scheduler\/multiuser_live_updates.html\" rel=\"noopener\" target=\"_blank\">communication schema<\/a> description and a simplified demo that is available on <a href=\"https:\/\/github.com\/DHTMLX\/scheduler-multiuser-backend-demo\" rel=\"noopener\" target=\"_blank\">GitHub<\/a>.<\/p>\n<p> This implementation uses a unified communication protocol, enabling live updates for all DHTMLX components that support this feature, such as <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxScheduler\/\" rel=\"noopener\" target=\"_blank\">Scheduler<\/a>, <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxGantt\/\" rel=\"noopener\" target=\"_blank\">Gantt<\/a>, and <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxKanban\/\" rel=\"noopener\" target=\"_blank\">Kanban<\/a>.<\/p>\n<h5>Improved Display of Overnight Events<\/h5>\n<p>This approach does not require any changes in the server-side code of your app. From now on, some functionality of the <strong><a href=\"https:\/\/docs.dhtmlx.com\/scheduler\/api__scheduler_all_timed_config.html\" rel=\"noopener\" target=\"_blank\">all_timed<\/a><\/strong> plugin is enabled by default, making the display of overnight events more comprehensible.<\/p>\n<p>Events that start on one day and end on the next (lasting less than 24 hours) are now displayed within the main columns of the Day and Week views, rather than in the multiday section at the top.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/12\/image1-1.png\" alt=\"display of overnight events\" width=\"1868\" height=\"690\" class=\"aligncenter size-full wp-image-13230\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/12\/image1-1.png 1868w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/12\/image1-1-300x111.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/12\/image1-1-768x284.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/12\/image1-1-1024x378.png 1024w\" sizes=\"auto, (max-width: 1868px) 100vw, 1868px\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/id88xxyf?tag=scheduler&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><br \/>\nThe new behavior can be disabled by setting the <strong><a href=\"https:\/\/docs.dhtmlx.com\/scheduler\/api__scheduler_all_timed_config.html\" rel=\"noopener\" target=\"_blank\">all_timed<\/a><\/strong> config to <em>false<\/em>.<\/p>\n<p>In addition to that, we added new API options that give you greater control over events displayed in the multiday section and the main columns. Thus, you can specify criteria for event placement, ensuring that your JavaScript scheduling calendar displays events in a way that best suits your needs.<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/span> <span class=\"br0\">&#123;<\/span> isMainAreaEvent <span class=\"br0\">&#125;<\/span> <span class=\"sy0\">=<\/span> scheduler.<span class=\"me1\">ext<\/span>.<span class=\"me1\">allTimed<\/span><span class=\"sy0\">;<\/span><br \/>\nscheduler.<span class=\"me1\">ext<\/span>.<span class=\"me1\">allTimed<\/span>.<span class=\"me1\">isMainAreaEvent<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>event<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span>event.<span class=\"me1\">multidaySection<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"kw1\">else<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> isMainAreaEvent<span class=\"br0\">&#40;<\/span>event<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>With this novelty, you get extra flexibility for displaying scheduled overnight events in various scenarios, thereby enhancing the usability of your app.<\/p>\n<h5>Other Improvements<\/h5>\n<h6>Non-Mutating Date Functions<\/h6>\n<p>The <strong>scheduler.date.{unit}_start<\/strong> functions have been updated to no longer mutate the input date. This change ensures that date calculations are pure functions, preventing unintended side effects and making your code more predictable and reliable.<\/p>\n<h6>New API Events for Mini Calendar<\/h6>\n<p>There are also new API events for the mini calendar (<a href=\"https:\/\/docs.dhtmlx.com\/scheduler\/minicalendar.html\" rel=\"noopener\" target=\"_blank\">date picker<\/a>) extension that provide more control over user interactions with this element.<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/span> dateToStr <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span>date<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">=&gt;<\/span> date <span class=\"sy0\">?<\/span> scheduler.<span class=\"me1\">templates<\/span>.<span class=\"me1\">format_date<\/span><span class=\"br0\">&#40;<\/span>date<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">:<\/span> <span class=\"kw2\">null<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span> calendar <span class=\"sy0\">=<\/span> scheduler.<span class=\"me1\">renderCalendar<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; container<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;cal_here&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; navigation<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; events<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; onBeforeMonthChange<span class=\"sy0\">:<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>oldDate<span class=\"sy0\">,<\/span> newDate<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scheduler.<span class=\"me1\">message<\/span><span class=\"br0\">&#40;<\/span>`Before change from $<span class=\"br0\">&#123;<\/span>dateToStr<span class=\"br0\">&#40;<\/span>oldDate<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#125;<\/span> to $<span class=\"br0\">&#123;<\/span>dateToStr<span class=\"br0\">&#40;<\/span>newDate<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#125;<\/span>`<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; onMonthChange<span class=\"sy0\">:<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>oldDate<span class=\"sy0\">,<\/span> newDate<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scheduler.<span class=\"me1\">message<\/span><span class=\"br0\">&#40;<\/span>`Changed from $<span class=\"br0\">&#123;<\/span>dateToStr<span class=\"br0\">&#40;<\/span>oldDate<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#125;<\/span> to $<span class=\"br0\">&#123;<\/span>dateToStr<span class=\"br0\">&#40;<\/span>newDate<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#125;<\/span>`<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; onDateClick<span class=\"sy0\">:<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>date<span class=\"sy0\">,<\/span> e<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scheduler.<span class=\"me1\">setCurrentView<\/span><span class=\"br0\">&#40;<\/span>date<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scheduler.<span class=\"me1\">message<\/span><span class=\"br0\">&#40;<\/span>`Selected date $<span class=\"br0\">&#123;<\/span>dateToStr<span class=\"br0\">&#40;<\/span>date<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#125;<\/span>`<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; onDateMouseOver<span class=\"sy0\">:<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>date<span class=\"sy0\">,<\/span> e<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scheduler.<span class=\"me1\">message<\/span><span class=\"br0\">&#40;<\/span>`Mouse over $<span class=\"br0\">&#123;<\/span>dateToStr<span class=\"br0\">&#40;<\/span>date<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#125;<\/span>`<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>This novelty allows you to implement specific behaviors when interacting with the date picker.<\/p>\n<p>Look through all the features delivered in Scheduler 7.2 by visiting the &#8220;<a href=\"https:\/\/docs.dhtmlx.com\/scheduler\/what_s_new.html#72\" rel=\"noopener\" target=\"_blank\">What&#8217;s New<\/a>&#8221; page. Also, check out <a href=\"https:\/\/docs.dhtmlx.com\/scheduler\/migration_from_older_version.html#7172\" rel=\"noopener\" target=\"_blank\">migration notes<\/a> to v7.2<\/p>\n<p>If you want to estimate all the novelties in your use-case scenarios, download a <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxScheduler\/download.shtml\" rel=\"noopener\" target=\"_blank\">free 30-day trial version<\/a>. Existing customers can access the latest version via their <a href=\"https:\/\/dhtmlx.com\/clients\/\" rel=\"noopener\" target=\"_blank\">Client&#8217;s Area<\/a>.<\/p>\n<p>You are welcome to share your thoughts and experiences with DHTMLX Scheduler 7.2 in the comments below.<\/p>\n<h5>Related Materials<\/h5>\n<ul>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/scheduler\/what_s_new.html#72\" rel=\"noopener\" target=\"_blank\">What\u2019s new in v7.2<\/a><\/li>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/scheduler\/\" rel=\"noopener\" target=\"_blank\">DHTMLX Scheduler documentation<\/a><\/li>\n<li><a href=\"https:\/\/snippet.dhtmlx.com\/utvnjrnd?tag=scheduler&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">DHTMLX Scheduler samples<\/a><\/li>\n<li><a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxScheduler\/download.shtml\" rel=\"noopener\" target=\"_blank\">Free 30-day trial version<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>As the festive season approaches, we\u2019re excited to announce one more update from the DHTMLX team! This time, we are delighted to announce the release of DHTMLX Scheduler 7.2. &#8230;<\/p>\n","protected":false},"author":101014,"featured_media":13233,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70],"tags":[33,15],"class_list":["post-13227","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-releases","tag-all-posts","tag-dhtmlxscheduler"],"_links":{"self":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/13227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/users\/101014"}],"replies":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/comments?post=13227"}],"version-history":[{"count":5,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/13227\/revisions"}],"predecessor-version":[{"id":13237,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/13227\/revisions\/13237"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media\/13233"}],"wp:attachment":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media?parent=13227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/categories?post=13227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/tags?post=13227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}