{"id":39716,"date":"2024-11-21T12:35:03","date_gmt":"2024-11-21T07:05:03","guid":{"rendered":"https:\/\/www.inogic.com\/blog\/?p=39716"},"modified":"2024-11-22T16:53:17","modified_gmt":"2024-11-22T11:23:17","slug":"optimizing-resource-allocation-with-the-resource-search-availability-api-in-dynamics-365-field-service","status":"publish","type":"post","link":"https:\/\/www.inogic.com\/blog\/2024\/11\/optimizing-resource-allocation-with-the-resource-search-availability-api-in-dynamics-365-field-service\/","title":{"rendered":"Optimizing Resource Allocation with the Resource Search Availability API in Dynamics 365 Field Service"},"content":{"rendered":"<p><img decoding=\"async\" class=\"alignnone size-full wp-image-39734\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/Dynamics-365-Field-Service.png\" alt=\"Dynamics 365 Field Service\" width=\"1925\" height=\"1100\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/Dynamics-365-Field-Service.png 1925w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/Dynamics-365-Field-Service-300x171.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/Dynamics-365-Field-Service-1024x585.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/Dynamics-365-Field-Service-768x439.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/Dynamics-365-Field-Service-1536x878.png 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/Dynamics-365-Field-Service-660x377.png 660w\" sizes=\"(max-width: 1925px) 100vw, 1925px\" \/><\/p>\n<p>For any organization using Dynamics 365 Field Service, the ability to efficiently allocate resources can make all the difference in meeting customer demands and maintaining a competitive edge. <a href=\"https:\/\/www.inogic.com\/services\/ai-solutions\/microsoft-dynamics365-field-service-copilot-consulting-services\/\" target=\"_blank\" rel=\"noopener\">Dynamics 365 Field Service<\/a> allows us to leverage the Resource Search Availability API that revolutionizes resource allocation by providing real-time insights into resource availability. This API empowers businesses to streamline scheduling processes, optimize resource utilization, and ultimately deliver exceptional service experiences to customers.<\/p>\n<p>With the integration of Dynamics 365 Field Service v8.8.43.51 and Universal Resource Scheduling v3.12.46.21, organizations gain access to the <strong>msdyn_SearchResourceAvailability<\/strong> API.<\/p>\n<p>In this blog post, we&#8217;ll dive into how this API works with different programming languages like JavaScript and C#. We&#8217;ll cover what input details you need to provide and what results you can expect. By the end, you&#8217;ll have a clearer understanding of how to use this API to manage resources effectively and streamline your operations.<\/p>\n<p><strong>API Name<\/strong>: msdyn_SearchResourceAvailability<\/p>\n<p><strong>Input Parameters<\/strong>: Below are the critical input parameters necessary for using this API:<\/p>\n<ul>\n<li><strong>Version<\/strong>: Specifies the API version.<\/li>\n<li><strong>IsWebApi<\/strong>: Set to true if using the API within Web API; otherwise, set to false.<\/li>\n<li><strong>Requirement<\/strong>: This parameter includes several key attributes:<\/li>\n<li><strong>msdyn_fromdate<\/strong>: The start date range for checking resource availability.<\/li>\n<li><strong>msdyn_todate<\/strong>: The end date range for checking resource availability.<\/li>\n<li><strong>msdyn_remainingduration<\/strong>: Remaining time required in minutes.<\/li>\n<li><strong>msdyn_duration<\/strong>: Total time required in minutes for the job.<\/li>\n<li><strong>Settings<\/strong>: Represents the organizational settings for availability, including attributes like <strong>ConsiderSlotsWithProposedBookings<\/strong> and <strong>ConsiderSlotsWithLessThanRequiredCapacity<\/strong>.<\/li>\n<li><strong>ResourceSpecification<\/strong>: Filters resources based on attributes such as Resource Type and Organizational Unit.<\/li>\n<\/ul>\n<h4><strong>Scenario in Dynamics 365 CRM<\/strong><\/h4>\n<p>Imagine a situation where a user needs to schedule a booking for a specific resource. It\u2019s essential to confirm that the resource is available within the requested timeframe, ensuring efficient scheduling. If the resource is available, the booking proceeds; if not, the system restricts the user from scheduling, maintaining effective resource utilization.<\/p>\n<p>A custom development approach can validate resource availability during the creation or update of a booking using the msdyn_SearchResourceAvailability API. If the resource is available, the system will allow the booking; otherwise, it will display a notification indicating that the resource is unavailable during the requested timeslot.<\/p>\n<h4><strong>Preparing Resources: Setting Up Working Hours for Resources<\/strong><\/h4>\n<p>To use the Resource Availability API effectively, it\u2019s crucial first to configure working hours for each resource. Follow these steps:<\/p>\n<p><strong>Step 1: <\/strong>Go to the Resource record in CRM, open the Work Hours tab, and click New. Here, you can set the resource\u2019s working hours, time zone, and break times.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-39718\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/1Resource-Search-Availability-API-in-Dynamics-365-Field-Service.png\" alt=\"Resource Search Availability API in Dynamics 365 Field Service\" width=\"1345\" height=\"664\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/1Resource-Search-Availability-API-in-Dynamics-365-Field-Service.png 1345w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/1Resource-Search-Availability-API-in-Dynamics-365-Field-Service-300x148.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/1Resource-Search-Availability-API-in-Dynamics-365-Field-Service-1024x506.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/1Resource-Search-Availability-API-in-Dynamics-365-Field-Service-768x379.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/1Resource-Search-Availability-API-in-Dynamics-365-Field-Service-660x326.png 660w\" sizes=\"(max-width: 1345px) 100vw, 1345px\" \/><\/p>\n<p><strong>Step 2:<\/strong> Ensure that the defined timeslots are visible in the Calendar view.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-39719\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/2Resource-Search-Availability-API-in-Dynamics-365-Field-Service.png\" alt=\"Resource Search Availability API in Dynamics 365 Field Service\" width=\"1910\" height=\"945\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/2Resource-Search-Availability-API-in-Dynamics-365-Field-Service.png 1910w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/2Resource-Search-Availability-API-in-Dynamics-365-Field-Service-300x148.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/2Resource-Search-Availability-API-in-Dynamics-365-Field-Service-1024x507.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/2Resource-Search-Availability-API-in-Dynamics-365-Field-Service-768x380.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/2Resource-Search-Availability-API-in-Dynamics-365-Field-Service-1536x760.png 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/2Resource-Search-Availability-API-in-Dynamics-365-Field-Service-660x327.png 660w\" sizes=\"(max-width: 1910px) 100vw, 1910px\" \/><\/p>\n<p>With the working hours configured, the next step is to establish restrictions for booking creation if a dispatcher tries to book a resource outside available hour. This setup involves developing a plugin that will trigger when a booking is created. It checks the resource&#8217;s availability, and if the resource is unavailable, it prevents the booking from being created.<\/p>\n<h4><strong>Plugin Code for Resource Availability Validation<\/strong><\/h4>\n<p>Below is a structured overview of the plugin code registered on the pre-validation operation for the Bookable Resource Booking entity in CRM:<\/p>\n<h4>1. Initialization and Global Parameters<\/h4>\n<p>The plugin initializes services and context objects essential for execution:<\/p>\n<p><em>ITracingService logs information and traces plugin execution steps.<\/em><\/p>\n<p><em>IPluginExecutionContext retrieves data on the execution context.<\/em><\/p>\n<p><em>IOrganizationService allows interaction with CRM data.<\/em><\/p>\n<pre class=\"lang:css gutter:true start:1\">ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));\r\n\r\n<em>IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));<\/em>\r\n\r\n<em>IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));<\/em>\r\n\r\n<em>IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);<\/em><\/pre>\n<h4>2. Extracting Start and End Times<\/h4>\n<p>The plugin fetches the starttime and endtime attributes from the target entity to define the timeframe for resource availability.<\/p>\n<pre class=\"lang:css gutter:true start:1\"><em>DateTime StartTime = TargetEn.GetAttributeValue&lt;DateTime&gt;(\"starttime\");<\/em>\r\n\r\n<em>DateTime EndTime = TargetEn.GetAttributeValue&lt;DateTime&gt;(\"endtime\");\r\n\r\n<\/em><\/pre>\n<h4>3. Setting Up Resource Requirements<\/h4>\n<p>An Entity object representing the resource requirement (msdyn_resourcerequirement) is created, with attributes for date range and duration.<\/p>\n<pre class=\"lang:css gutter:true start:1\"><em>var requirement = new Entity(\"msdyn_resourcerequirement\");<\/em>\r\n\r\n<em>requirement.Attributes.Add(\"msdyn_fromdate\", fromDate);<\/em>\r\n\r\n<em>requirement.Attributes.Add(\"msdyn_todate\", toDate);<\/em>\r\n\r\n<em>requirement.Attributes.Add(\"msdyn_duration\", 60);\r\n\r\n<\/em><\/pre>\n<h4>4. Configuring Resource Types<\/h4>\n<p>Using the helper method BuildOptionSetValueEntityCollection, the plugin specifies resource types to be considered in the availability check, added to the resource specification entity.<\/p>\n<pre class=\"lang:css gutter:true start:1\"><em>var resourceTypes = BuildOptionSetValueEntityCollection(\"resourcetypes\", \"value\", new List&lt;int&gt; { 2, 3 });<\/em>\r\n\r\n<em>resourceSpecification.Attributes.Add(\"ResourceTypes\", resourceTypes);\r\n\r\n<\/em><\/pre>\n<h4>5. Defining Search Settings<\/h4>\n<p>A settings entity is created to specify additional search parameters, such as including slots with proposed bookings.<\/p>\n<pre class=\"lang:css gutter:true start:1\"><em>var settings = new Entity(\"organization\");<\/em>\r\n\r\n<em>settings.Attributes.Add(\"ConsiderSlotsWithProposedBookings\", false);\r\n<\/em><\/pre>\n<h4>6. Executing the Search Request<\/h4>\n<p>The plugin prepares and executes an OrganizationRequest for msdyn_SearchResourceAvailability with configured settings, resource specifications, and versioning details.<\/p>\n<pre class=\"lang:css gutter:true start:1\"><em>var request = new OrganizationRequest() { RequestName = \"msdyn_SearchResourceAvailability\" };<\/em>\r\n\r\n<em>request[\"Version\"] = \"1\";<\/em>\r\n\r\n<em>request[\"Requirement\"] = requirement;<\/em>\r\n\r\n<em>request[\"IsWebApi\"] = false;<\/em>\r\n\r\n<em>request[\"Settings\"] = settings;<\/em>\r\n\r\n<em>request[\"ResourceSpecification\"] = resourceSpecification;<\/em>\r\n\r\n<em>var response = service.Execute(request);\r\n<\/em><\/pre>\n<h4>7. Parsing Available Time Slots<\/h4>\n<p>The plugin retrieves time slot data from the response and processes each entry to convert start and end times to local time. It checks for conflicts, such as overlapping times or slots marked as unavailable.<\/p>\n<pre class=\"lang:css gutter:true start:1\"><em>private static string showTimeSlotsUsingEntities(EntityCollection timeSlots, ITracingService tracingService) {<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0 \/\/ Code to process time slots and construct the output string<\/em>\r\n\r\n<em>If(conflict)<\/em>\r\n\r\n<em>{\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 throw new InvalidPluginExecutionException(\"Conflict found: Timeslot overlaps with target's StartTime and EndTime, and Potential is set to 'False'.\");<\/em>\r\n\r\n<em>}<\/em>\r\n\r\n<em>}\r\n\r\n<\/em><\/pre>\n<h4>The Resource Availability API Response Structure<\/h4>\n<p>This example output shows various attributes of each timeslot:<\/p>\n<ol>\n<li><strong>Booking Time<\/strong>: Shows the overall requested booking time:\n<ol>\n<li><strong>Booking Start<\/strong>: 11\/14\/2024 5:00:00 PM<\/li>\n<li><strong>Booking End<\/strong>: 11\/14\/2024 5:30:00 PM<\/li>\n<\/ol>\n<\/li>\n<li><strong>TimeSlot Details<\/strong>: Each timeslot within this resource&#8217;s schedule is detailed, including:\n<ol>\n<li><strong>Start and End Times<\/strong>: For example, 11\/14\/2024 2:00:00 PM to 11\/14\/2024 3:00:00 PM.<\/li>\n<li><strong>Type<\/strong>: Indicates the status of the timeslot. Types include:\n<ol>\n<li><strong>Scheduled<\/strong>: Indicates the timeslot is already booked.<\/li>\n<li><strong>Available<\/strong>: The timeslot is open for new bookings.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<ul>\n<li><strong>Off<\/strong>: The timeslot is not available due to resource unavailability.<\/li>\n<\/ul>\n<ol>\n<li><strong>Potential<\/strong>: A boolean indicating if the timeslot is potentially available (True) or confirmed as unavailable (False).<\/li>\n<li><strong>Resource<\/strong>: The resource assigned to this timeslot. In this case, all timeslots belong to &#8220;<strong>Michel Markel<\/strong>&#8220;.<\/li>\n<\/ol>\n<p><strong>Example Analysis<\/strong><\/p>\n<p>The details of each timeslot are as follows:<\/p>\n<p>Booking Time : 11\/14\/2024 5:00:00 PM to 11\/14\/2024 5:30:00 PM<\/p>\n<p>TimeSlots Data:<\/p>\n<p>&#8211; TimeSlot: Start: 11\/14\/2024 2:00:00 PM, End: 11\/14\/2024 3:00:00 PM, Type: Scheduled, Potential: False, Resource: Michel Markel<\/p>\n<p>&#8211; TimeSlot: Start: 11\/14\/2024 2:22:00 PM, End: 11\/14\/2024 2:22:00 PM, Type: Off, Potential: False, Resource: Michel Markel<\/p>\n<p>&#8211; TimeSlot: Start: 11\/14\/2024 3:00:00 PM, End: 11\/14\/2024 3:30:00 PM, Type: Available, Potential: True, Resource: Michel Markel<\/p>\n<p>&#8211; TimeSlot: Start: 11\/14\/2024 3:30:00 PM, End: 11\/14\/2024 4:00:00 PM, Type: Scheduled, Potential: False, Resource: Michel Markel<\/p>\n<p>&#8211; TimeSlot: Start: 11\/14\/2024 4:00:00 PM, End: 11\/14\/2024 6:00:00 PM, Type: Available, Potential: True, Resource: Michel Markel<\/p>\n<p><strong>Example Booking Conflict Detection for Resource \u201cMichel Markel\u201d<\/strong><\/p>\n<p>If the booking time overlaps with a period when the resource is unavailable due to breaks, time-off, or other bookings, the plugin throws an exception with a message indicating the conflict: \u201c<strong><em>Conflict found: Timeslot overlaps with Booking\u2019s StartTime and EndTime, and Resource is unavailable for this time.<\/em><\/strong>\u201d<br \/>\n<strong><br \/>\nExample Scenario <\/strong>To illustrate, we attempt to book Resource \u201c<strong>Michel Markel<\/strong>\u201d for 3:00 PM to 4:00 PM. If a second booking is attempted from 3:30 PM to 4:00 PM, a conflict message will display, preventing the booking. Below are sample screenshots showing the booking process and conflict message:<\/p>\n<p><strong>Booking 1: <\/strong><\/p>\n<p><strong> <img decoding=\"async\" class=\"alignnone size-full wp-image-39720\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/3Resource-Search-Availability-API-in-Dynamics-365-Field-Service.png\" alt=\"Resource Search Availability API in Dynamics 365 Field Service\" width=\"1919\" height=\"943\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/3Resource-Search-Availability-API-in-Dynamics-365-Field-Service.png 1919w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/3Resource-Search-Availability-API-in-Dynamics-365-Field-Service-300x147.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/3Resource-Search-Availability-API-in-Dynamics-365-Field-Service-1024x503.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/3Resource-Search-Availability-API-in-Dynamics-365-Field-Service-768x377.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/3Resource-Search-Availability-API-in-Dynamics-365-Field-Service-1536x755.png 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/3Resource-Search-Availability-API-in-Dynamics-365-Field-Service-660x324.png 660w\" sizes=\"(max-width: 1919px) 100vw, 1919px\" \/><\/strong><\/p>\n<p><strong>Booking 2: <\/strong><\/p>\n<p><strong> <img decoding=\"async\" class=\"alignnone size-full wp-image-39721\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/4Resource-Search-Availability-API-in-Dynamics-365-Field-Service.png\" alt=\"Resource Search Availability API in Dynamics 365 Field Service\" width=\"1919\" height=\"922\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/4Resource-Search-Availability-API-in-Dynamics-365-Field-Service.png 1919w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/4Resource-Search-Availability-API-in-Dynamics-365-Field-Service-300x144.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/4Resource-Search-Availability-API-in-Dynamics-365-Field-Service-1024x492.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/4Resource-Search-Availability-API-in-Dynamics-365-Field-Service-768x369.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/4Resource-Search-Availability-API-in-Dynamics-365-Field-Service-1536x738.png 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/11\/4Resource-Search-Availability-API-in-Dynamics-365-Field-Service-660x317.png 660w\" sizes=\"(max-width: 1919px) 100vw, 1919px\" \/><\/strong><\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>By leveraging the Resource Search Availability API in Dynamics 365 Field Service, organizations can automate resource availability validation, avoiding scheduling conflicts and optimizing resource allocation for enhanced operational efficiency.<\/p>\n<p><a href=\"https:\/\/www.maplytics.com\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"alignnone wp-image-36029\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/Maplytics-A-Powerful-Tool-for-Scheduling-Tracking-and-Managing-Field-Service-1.gif\" alt=\"\" width=\"760\" height=\"217\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>For any organization using Dynamics 365 Field Service, the ability to efficiently allocate resources can make all the difference in meeting customer demands and maintaining a competitive edge. Dynamics 365 Field Service allows us to leverage the Resource Search Availability API that revolutionizes resource allocation by providing real-time insights into resource availability. This API empowers\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.inogic.com\/blog\/2024\/11\/optimizing-resource-allocation-with-the-resource-search-availability-api-in-dynamics-365-field-service\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[16,2867],"tags":[2968],"class_list":["post-39716","post","type-post","status-publish","format-standard","hentry","category-dynamics-365","category-dynamics-365-field-service","tag-resource-search-availability-api-in-dynamics-365-field-service"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/39716","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/comments?post=39716"}],"version-history":[{"count":0,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/39716\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/media?parent=39716"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/categories?post=39716"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/tags?post=39716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}