{"id":183996,"date":"2026-08-13T15:27:20","date_gmt":"2026-08-13T06:27:20","guid":{"rendered":"https:\/\/support.questetra.com\/?p=183996"},"modified":"2026-09-08T11:22:39","modified_gmt":"2026-09-08T02:22:39","slug":"debugging-leave-request-flow","status":"publish","type":"post","link":"https:\/\/support.questetra.com\/en\/developer-blog\/debugging-leave-request-flow\/","title":{"rendered":"Building a Leave Request Workflow with Scripts (Calendar Verification)"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"58\" data-attachment-id=\"113212\" data-permalink=\"https:\/\/support.questetra.com\/en\/developer-blog\/message-start-event-http-browser\/attachment\/professional-banner-new-en\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/12\/professional-banner-new-en.png?fit=1200%2C68&amp;ssl=1\" data-orig-size=\"1200,68\" data-comments-opened=\"0\" data-image-title=\"professional-banner-new-en\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/12\/professional-banner-new-en.png?fit=1024%2C58&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/12\/professional-banner-new-en-1024x58.png?resize=1024%2C58&#038;ssl=1\" alt=\"\" class=\"wp-image-113212\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/12\/professional-banner-new-en.png?resize=1024%2C58&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/12\/professional-banner-new-en.png?resize=600%2C34&amp;ssl=1 600w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/12\/professional-banner-new-en.png?resize=768%2C44&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/12\/professional-banner-new-en.png?w=1200&amp;ssl=1 1200w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In the <a href=\"https:\/\/support.questetra.com\/en\/developer-blog\/smart-leave-request-workflow\/\">previous article<\/a>, a Leave Request Workflow was created with the following functionality:<\/p>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">Verifying whether requested dates exceed a specific availability threshold before being sent to a manager for approval.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In theory the concept was relatively straightforward. In practice however, the implementation of this feature required the configuration of Script Tasks, API integrations, and OAuth protocols.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This documentation outlines the methodology for developing a functional solution and identifies critical technical considerations.<\/p>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\"><strong>Technical Note<\/strong>: The associated code was generated via AI based on specific technical prompts. While code samples are provided for reference, the material is intended for a general audience. No advanced programming proficiency is required for comprehension.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>The Goal<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The operational requirements were defined as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If a requested date has <strong>fewer than 3 calendar entries<\/strong> \u2192 allow the request<\/li>\n\n\n\n<li>If a date has <strong>3 or more entries<\/strong> \u2192 reject and send back to the requester<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">To implement this, I used a <strong>Script Task<\/strong> to query Google Calendar and return a simple YES\/NO result to the workflow.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 1: Writing the Script<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The scripting process involves the following sequence:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Get the requested dates<\/li>\n\n\n\n<li>Call the Google Calendar API<\/li>\n\n\n\n<li>Count events<\/li>\n\n\n\n<li>Return YES\/NO<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The transition from initial draft to a functional Script Task requires several precise technical adjustments.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>First Attempt: Basic Structure<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The following pattern is applied in the script architecture:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Read q_start_date and q_end_date<\/li>\n\n\n\n<li>Build a request to the Google Calendar API<\/li>\n\n\n\n<li>Parse the response<\/li>\n\n\n\n<li>Count events<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">For example, the script begins by retrieving the workflow data:<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>const startDate = engine.findDataByVarName(&quot;q_start_date&quot;);\n\nconst endDate   = engine.findDataByVarName(&quot;q_end_date&quot;);<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The API endpoint is constructed as follows:<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>const url =\n\n  &quot;https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/&quot; +\n\n  encodeURIComponent(CALENDAR_ID) +\n\n  &quot;\/events&quot;;<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Execution of this initial logic immediately exposed issues.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 2: Authentication<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">OAuth2 authentication is required for Google Calendar API interactions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The configuration process consisted of:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creating a Google Cloud project<\/li>\n\n\n\n<li>Enabling the Google Calendar API<\/li>\n\n\n\n<li>Configuring the OAuth consent screen<\/li>\n\n\n\n<li>Creating OAuth credentials (Client ID &amp; Secret)<\/li>\n\n\n\n<li>Setting up a <strong>HTTP Authorization Setting<\/strong> in Questetra BPM Suite<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A Google Workspace account is necessary for connection. Client credentials must be generated within the Google Cloud Console under the following URL:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/console.cloud.google.com\/auth\">https:\/\/console.cloud.google.com\/auth<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"307\" data-attachment-id=\"187256\" data-permalink=\"https:\/\/support.questetra.com\/en\/developer-blog\/debugging-leave-request-flow\/attachment\/calendar-debugging-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-1.png?fit=1303%2C391&amp;ssl=1\" data-orig-size=\"1303,391\" data-comments-opened=\"0\" data-image-title=\"calendar-debugging-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-1.png?fit=1024%2C307&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-1.png?resize=1024%2C307&#038;ssl=1\" alt=\"\" class=\"wp-image-187256\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-1.png?resize=1024%2C307&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-1.png?resize=600%2C180&amp;ssl=1 600w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-1.png?resize=768%2C230&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-1.png?w=1303&amp;ssl=1 1303w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Immediate retention of the Client Secret is mandatory, as it is displayed only once by the provider. Loss of this secret necessitates the creation of a new client.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The following parameters must also be specified:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Authorization Endpoint URL<\/li>\n\n\n\n<li>Token Endpoint URL<\/li>\n\n\n\n<li>Scope<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In all cases, ChatGPT was able to recommend suitable values for each of these, and when failures were experienced during the debugging process, by sharing details of the error with the AI, it could correct the value to one that worked as desired.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This demonstrates that even with no knowledge of APIs, AI can be utilised in troubleshooting and through a process of trial-and-error a working model can be constructed for relatively complex operations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A common issue involved the absence of a refresh token:<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">The returned token does not have a refresh token<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The solution was to adjust the Authorization Endpoint URL to include:<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">access_type=offline&amp;prompt=consent<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">This ensures that Google returns a <strong>refresh token<\/strong>, which Questetra needs to maintain the connection.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 3: The \u201cUnauthenticated\u201d Error<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">After getting a token successfully, the debug process still returned this message:<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">Unauthenticated<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">At that point, the request was written like this:<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>request.bearer(&quot;Google Calendar-request&quot;);<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The problem was that:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&#8220;Google Calendar-request&#8221; is the <strong>name of the Authorization Setting<\/strong><\/li>\n\n\n\n<li>Not the actual access token<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">So the request was effectively sending:<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">Authorization: Bearer Google Calendar-request<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Which was rejected by Google.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>The Fix<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Token handling should be delegated to the Questetra engine as follows:<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>request.authSetting(&quot;Google Calendar-request&quot;);<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">This method automates the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Retrieve the correct token<\/li>\n\n\n\n<li>Attach it to the request<\/li>\n\n\n\n<li>Refresh it automatically when needed<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 4: Debugging the Response<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Debugging is facilitated by logging the API response:<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">engine.log(body);<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Logging allows for the verification of data returned by Google and confirms request accuracy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, the majority of feedback that could be passed to the AI for troubleshooting came from Questetra&#8217;s <strong>Auto-Processing Log<\/strong> function, which is accessible by switching to Administrator Mode in the case details screen. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"370\" data-attachment-id=\"187252\" data-permalink=\"https:\/\/support.questetra.com\/en\/developer-blog\/debugging-leave-request-flow\/attachment\/calendar-debugging-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-2.png?fit=936%2C370&amp;ssl=1\" data-orig-size=\"936,370\" data-comments-opened=\"0\" data-image-title=\"calendar-debugging-2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-2.png?fit=936%2C370&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-2.png?resize=936%2C370&#038;ssl=1\" alt=\"\" class=\"wp-image-187252\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-2.png?w=936&amp;ssl=1 936w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-2.png?resize=600%2C237&amp;ssl=1 600w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-2.png?resize=768%2C304&amp;ssl=1 768w\" sizes=\"auto, (max-width: 936px) 100vw, 936px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 5: Counting Events Per Day<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Initially, the Script Task was configured to check the total number of events in the entire date range.<\/p>\n\n\n\n<p class=\"has-ast-global-color-8-color has-text-color has-link-color wp-elements-1 wp-block-paragraph\">Before: Counting total events in the range<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>\/\/ Parse response\nconst json = JSON.parse(body);\nconst events = json.items || [];\n\n\/\/ Simple rule: total events in range\nconst availableFlag = (events.length &lt; 3) ? &quot;YES&quot; : &quot;NO&quot;;\n\nengine.log(&quot;Total events found: &quot; + events.length);<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">This approach presented a logical flaw:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">A multi-day request could be approved even if an individual day within the range exceeded the availability threshold.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The implementation was revised to evaluate event counts on a daily basis.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This required:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Extracting the date from each event<\/li>\n\n\n\n<li>Grouping events by date<\/li>\n\n\n\n<li>Applying the threshold (e.g. 3 events per day)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"has-ast-global-color-8-color has-text-color has-link-color wp-elements-2 wp-block-paragraph\">After: Counting events per day<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>\/\/ Parse response\nconst json = JSON.parse(body);\nconst events = json.items || [];\n\n\/\/ Count events per day\nconst countsByDate = {};\n\nfor (let i = 0; i &lt; events.length; i++) {\n  const event = events[i];\n\n  let eventDate;\n\n  if (event.start.date) {\n    \/\/ All-day event\n    eventDate = event.start.date;\n  } else if (event.start.dateTime) {\n    \/\/ Timed event\n    eventDate = event.start.dateTime.substring(0, 10);\n  } else {\n    continue;\n  }\n\n  if (!countsByDate[eventDate]) {\n    countsByDate[eventDate] = 0;\n  }\n\n  countsByDate[eventDate]++;\n}\n\n\/\/ Apply rule per day\nlet availableFlag = &quot;YES&quot;;\n\nfor (const date in countsByDate) {\n  engine.log(&quot;Events on &quot; + date + &quot;: &quot; + countsByDate[date]);\n\n  if (countsByDate[date] &gt;= 3) {\n    availableFlag = &quot;NO&quot;;\n    break;\n  }\n}<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This version provides a more accurate assessment of scheduling availability:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Each day is evaluated independently<\/li>\n\n\n\n<li>A busy day blocks the request<\/li>\n\n\n\n<li>A spread of light activity does not<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 6: Unexpected Behavior in Built-in Steps<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The built-in <strong>Google Calendar: Insert Event<\/strong> step was utilized to automate event creation upon request approval.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This would automatically create the newly approved leave request event in Google Calendar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Technical observations indicate that Script Tasks and built-in Google Calendar steps utilize distinct authentication mechanisms:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The Script Task worked fine<\/li>\n\n\n\n<li>But the Insert Event step failed with the message:<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">invalid_grant<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">This highlights an important detail:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">Script Tasks and built-in Google Calendar steps use <strong>different authentication mechanisms<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Script Task: <strong>HTTP Authorization Settings<\/strong><\/li>\n\n\n\n<li>Built-in Google steps: <strong>Google Connectivity (user-based connection)<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Successful execution of one does not guarantee the other.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questetra provides Google Connectivity settings within both System and Account Settings. The latter is required for this implementation. Connectivity is established by selecting the appropriate account and authorizing access.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"948\" height=\"388\" data-attachment-id=\"187248\" data-permalink=\"https:\/\/support.questetra.com\/en\/developer-blog\/debugging-leave-request-flow\/attachment\/calendar-debugging-3\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-3.png?fit=948%2C388&amp;ssl=1\" data-orig-size=\"948,388\" data-comments-opened=\"0\" data-image-title=\"calendar-debugging-3\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-3.png?fit=948%2C388&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-3.png?resize=948%2C388&#038;ssl=1\" alt=\"\" class=\"wp-image-187248\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-3.png?w=948&amp;ssl=1 948w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-3.png?resize=600%2C246&amp;ssl=1 600w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/06\/calendar-debugging-3.png?resize=768%2C314&amp;ssl=1 768w\" sizes=\"auto, (max-width: 948px) 100vw, 948px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The following procedure refreshes the token:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Click \u201cdisconnect\u201d<\/li>\n\n\n\n<li>Once disconnected, click \u201cconnect\u201d again, and follow the steps above<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Key Takeaways<\/strong><\/h3>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>1. Script Task is powerful &#8211; but requires proper setup<\/strong><\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">While the core logic is uncomplicated, the majority of development effort is directed toward authentication and integration protocols.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>2. OAuth configuration is often the hardest part<\/strong><\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">Omission of specific parameters, such as prompt=consent, results in authentication failure.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>3. Don\u2019t confuse \u201cnames\u201d with \u201ctokens\u201d<\/strong><\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">The distinction between Authorization Setting names and actual access tokens must be maintained.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>4. Built-in steps and custom scripts may behave differently<\/strong><\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">Built-in steps and custom scripts operate under different authentication contexts.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>5. Design first, implement second<\/strong><\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">The technical complexity of individual Script Tasks is managed within a simple overall workflow design:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>System checks availability<\/li>\n\n\n\n<li>Gateway routes based on result<\/li>\n\n\n\n<li>Human approves if valid<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Summary<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The implementation of calendar verification represents the most technical phase of the workflow development.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But importantly:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">Encapsulating this complexity within a single step preserves the integrity of the workflow architecture.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is highly beneficial for workflow design. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These points are provided to assist in the troubleshooting of future workflow implementations.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Articles in This Series<\/strong><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/support.questetra.com\/en\/developer-blog\/smart-leave-request-workflow\/\">Building a Leave Request Workflow with Scripts (Overview)<\/a><\/li>\n\n\n\n<li>Building a Leave Request Workflow with Scripts (Calendar Verification) (this article)<\/li>\n\n\n\n<li><a href=\"https:\/\/support.questetra.com\/en\/developer-blog\/auto-suggest-alt-leave-dates\/\">Building a Leave Request Workflow with Scripts (Alternative Date Suggestion)<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This article outlines the methodology for developing a functional solution, and identifies critical technical considerations when creating workflows using auto-steps and APIs.<\/p>\n","protected":false},"author":30,"featured_media":184111,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_uag_custom_page_level_css":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_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},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[296],"tags":[],"faq_section":[],"class_list":["post-183996","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developer-blog"],"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?fit=1536%2C1024&ssl=1",1536,1024,false],"thumbnail":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=440%2C440&ssl=1",440,440,true],"medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?fit=473%2C315&ssl=1",473,315,true],"medium_large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?fit=768%2C512&ssl=1",768,512,true],"large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?fit=945%2C630&ssl=1",945,630,true],"1536x1536":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?fit=1536%2C1024&ssl=1",1536,1024,true],"2048x2048":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?fit=1536%2C1024&ssl=1",1536,1024,true],"newspack-article-block-landscape-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=1200%2C900&ssl=1",1200,900,true],"newspack-article-block-portrait-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=900%2C1024&ssl=1",900,1024,true],"newspack-article-block-square-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=1200%2C1024&ssl=1",1200,1024,true],"newspack-article-block-landscape-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=800%2C600&ssl=1",800,600,true],"newspack-article-block-portrait-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=600%2C800&ssl=1",600,800,true],"newspack-article-block-square-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=800%2C800&ssl=1",800,800,true],"newspack-article-block-landscape-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=600%2C450&ssl=1",600,450,true],"newspack-article-block-portrait-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=450%2C600&ssl=1",450,600,true],"newspack-article-block-square-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=600%2C600&ssl=1",600,600,true],"newspack-article-block-landscape-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=400%2C300&ssl=1",400,300,true],"newspack-article-block-portrait-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=300%2C400&ssl=1",300,400,true],"newspack-article-block-square-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=400%2C400&ssl=1",400,400,true],"newspack-article-block-landscape-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=200%2C150&ssl=1",200,150,true],"newspack-article-block-portrait-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=150%2C200&ssl=1",150,200,true],"newspack-article-block-square-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?resize=200%2C200&ssl=1",200,200,true],"newspack-article-block-uncropped":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?fit=1200%2C800&ssl=1",1200,800,true]},"uagb_author_info":{"display_name":"Peter Glover","author_link":"https:\/\/support.questetra.com\/en\/author\/petergloverquestetra\/"},"uagb_comment_info":0,"uagb_excerpt":"This article outlines the methodology for developing a functional solution, and identifies critical technical considerations when creating workflows using auto-steps and APIs.","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9DiIh-LRG","jetpack-related-posts":[{"id":80825,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/google-cloud-vision-api-questetra\/","url_meta":{"origin":183996,"position":0},"title":"Incorporate Optical Character Reading into Workflow (AI-OCR\/BPM Integration)","author":"Tsuyoshi Kusaka","date":"2019-09-04","format":false,"excerpt":"How to link Questetra BPM Suite with Google Cloud Vision API","rel":"","context":"In &quot;Questetra Developers Blog&quot;","block_context":{"text":"Questetra Developers Blog","link":"https:\/\/support.questetra.com\/en\/category\/developer-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/08\/GoogleAPI-Questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/08\/GoogleAPI-Questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/08\/GoogleAPI-Questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/08\/GoogleAPI-Questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/08\/GoogleAPI-Questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":97078,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/how-to-add-an-event-to-an-outlook-calendar-from-the-cloud-bpm-workflow-questetra-api-integration-setup-procedure\/","url_meta":{"origin":183996,"position":1},"title":"How to Add an Event to an Outlook Calendar from the Cloud BPM Workflow Questetra (API Integration Setup Procedure)","author":"Peter Glover","date":"2020-10-28","format":false,"excerpt":"Summary of settings for linking Questetra BPM Suite and Outlook calendar","rel":"","context":"In &quot;Questetra Developers Blog&quot;","block_context":{"text":"Questetra Developers Blog","link":"https:\/\/support.questetra.com\/en\/category\/developer-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/09\/Outlook-Questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/09\/Outlook-Questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/09\/Outlook-Questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/09\/Outlook-Questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/09\/Outlook-Questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":97133,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/outlook-powerautomate-questetra\/","url_meta":{"origin":183996,"position":2},"title":"How to Start Cloud BPM Workflow Questetra Operations from Outlook Scheduler (Microsoft Power Automate integration\/API integration)","author":"Tsuyoshi Kusaka","date":"2020-10-28","format":false,"excerpt":"Summarized the settings for linking the Outlook calendar and Questetra using PowerAutomate, and with API","rel":"","context":"In &quot;Questetra Developers Blog&quot;","block_context":{"text":"Questetra Developers Blog","link":"https:\/\/support.questetra.com\/en\/category\/developer-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/09\/PowerAutomate-Questetra-eyecatch-1.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/09\/PowerAutomate-Questetra-eyecatch-1.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/09\/PowerAutomate-Questetra-eyecatch-1.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/09\/PowerAutomate-Questetra-eyecatch-1.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/09\/PowerAutomate-Questetra-eyecatch-1.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":184522,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/auto-suggest-alt-leave-dates\/","url_meta":{"origin":183996,"position":3},"title":"Building a Leave Request Workflow with Scripts (Alternative Date Suggestion)","author":"Peter Glover","date":"2026-08-20","format":false,"excerpt":"In this article, the Leave Request Workflow is enhanced to give requesters alternative suggested dates in the event of a rejection.","rel":"","context":"In &quot;Questetra Developers Blog&quot;","block_context":{"text":"Questetra Developers Blog","link":"https:\/\/support.questetra.com\/en\/category\/developer-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/alternative-leave-dates-fi-en.png?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/alternative-leave-dates-fi-en.png?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/alternative-leave-dates-fi-en.png?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/alternative-leave-dates-fi-en.png?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/alternative-leave-dates-fi-en.png?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":71241,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/zendesk-add-on\/","url_meta":{"origin":183996,"position":4},"title":"How to Collaborate with Zendesk (Zendesk Ticket Update)","author":"Tsuyoshi Kusaka","date":"2018-09-20","format":false,"excerpt":"Summarized the mutual way of linking between Zendesk support and Questetra BPM Suite","rel":"","context":"In &quot;Questetra Developers Blog&quot;","block_context":{"text":"Questetra Developers Blog","link":"https:\/\/support.questetra.com\/en\/category\/developer-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/09\/zendesk-questetra-1200-675.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/09\/zendesk-questetra-1200-675.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/09\/zendesk-questetra-1200-675.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/09\/zendesk-questetra-1200-675.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/09\/zendesk-questetra-1200-675.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":82087,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/excel-online-questetra\/","url_meta":{"origin":183996,"position":5},"title":"How to Output Data to Excel Online From the Cloud-based Workflow Questetra (API Integration Setting Procedure)","author":"Tsuyoshi Kusaka","date":"2019-11-06","format":false,"excerpt":"Questetra BPM Suite \u2192 Excel Online \u3078\u306e\u9023\u643a\u306e\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u307e\u3068\u3081\u307e\u3057\u305f","rel":"","context":"In &quot;Questetra Developers Blog&quot;","block_context":{"text":"Questetra Developers Blog","link":"https:\/\/support.questetra.com\/en\/category\/developer-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/10\/excelonline-questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/10\/excelonline-questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/10\/excelonline-questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/10\/excelonline-questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/10\/excelonline-questetra-eyecatch.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/05\/smart-leave-request-workflow2-fi-en.png?fit=1536%2C1024&ssl=1","_links":{"self":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/183996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/comments?post=183996"}],"version-history":[{"count":54,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/183996\/revisions"}],"predecessor-version":[{"id":194834,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/183996\/revisions\/194834"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media\/184111"}],"wp:attachment":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media?parent=183996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/categories?post=183996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/tags?post=183996"},{"taxonomy":"faq_section","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/faq_section?post=183996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}