{"id":11748,"date":"2018-03-22T17:19:40","date_gmt":"2018-03-22T11:49:40","guid":{"rendered":"https:\/\/mobisoftinfotech.com\/resources\/?p=11748"},"modified":"2019-06-13T18:35:22","modified_gmt":"2019-06-13T13:05:22","slug":"protect-resource-hungry-apis","status":"publish","type":"post","link":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis","title":{"rendered":"How to Protect Resource Hungry APIs?"},"content":{"rendered":"<p>In general, a web application should use some type of rate limiter to block rogue clients from overloading your servers. Typically, this is done by checking the IP of the non-logged in users and session key of the logged in users. For example, you may decide:<\/p>\n<ul>\n<li>to allow only 20 requests per second from the same IP for non-logged in users.<\/li>\n<li>to allow 5 requests per second from the same session-key for the logged in users.<\/li>\n<\/ul>\n<p>However, there are certain APIs which are either expensive (for example, APIs which send SMS) or very resource hungry (for example, an API which kicks off a batch process.) For these APIs, it&#8217;s critical to have specific rate limits in the place. So rather than depending on generic middleware filters, it&#8217;s important to add specific rate limits for these APIs. Here are some things you can implement:<\/p>\n<p><strong>For APIs which send Send OTP, forgot password email, etc<\/strong><\/p>\n<ul>\n<li>These APIs are called without a session key, but these are sent to a specific number or email.<\/li>\n<li>Allow only 2 API calls per minute to send OTP to the same number or email.<\/li>\n<li>Allow a maximum of 5 (or some other sensible value which makes sense for your use case) API calls send OTP to the same number or email.<\/li>\n<li>For email or number verification, if the email or the number is already verified then don&#8217;t send the SMS or email again. Just return a quick error message.<\/li>\n<li>Also in case of register APIs, there should be a field in the API which prevents the verification number or email from going. This helps in automation testing. Here note that if this field is set then DO NOT mark the user as verified in the DB. Only the email shouldn&#8217;t go. Otherwise, hackers will use this field to bypass the verification.<\/li>\n<li>If for automation testing you need to disable verification, then it must be a backend setting which allows requests coming from a few specific IPs are permitted to register users without verification.<\/li>\n<\/ul>\n<p><strong>For APIs which send SMS or email from a request from a logged in user<\/strong><\/p>\n<ul>\n<li>An example of this, &#8220;An appointment was booked for you&#8221; type of message. These kinds of messages will be triggered when a logged in customer books an appointment for a service provider on the system.<\/li>\n<li>For such cases, we can limit the API usage by the session key of the user. In these cases, you need to add sensible limits. For example, by following the proper booking flow a user should not be able to book more than 2 appointments in 1 minute. So you can add a rate limit for the same.<\/li>\n<\/ul>\n<p>An important thing to remember: These parameters like &#8220;2&#8221; appointments in &#8220;1&#8221; minute, should be configurable via application config. So that they can be changed quickly as required.<\/p>\n<p>If your project uses Redis, then to store rate limiting stats you should use Redis.<\/p>\n<p>Similar limitations should be placed on all APIs which kick off a batch job (for example, sending mass emails or SMS) or deal with&nbsp;any aspect of payment processing.<\/p>\n<p>APIs that don&#8217;t deal directly with credit card, but are still monetary in nature, for example, some operation that deducts wallet balance or credits, should also have a stringent rate limit in place.<\/p>\n<p><em>Hope this short technical read gave you a better knowledge of using APIs efficiently.<\/em><\/p>\n<div class=\"modern-author-card\">\n    <div class=\"author-card-content\">\n        <div class=\"author-info-section\">\n            <div class=\"author-avatar\">\n                <noscript><img decoding=\"async\" src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2022\/04\/Pritam1.jpg\" alt=\"Pritam Barhate\"><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"Pritam Barhate\" data-src=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2022\/04\/Pritam1.jpg\" class=\" lazyload\">\n            <\/div>\n            <div class=\"author-details\">\n                <h3 class=\"author-name\">Pritam Barhate<\/h3>\n                <p class=\"author-title\">Head of Technology Innovation<\/p>\n                <a href=\"javascript:void(0);\" class=\"read-more-link read-more-btn\" onclick=\"toggleAuthorBio(this); return false;\">Read more <noscript><img decoding=\"async\" src=\"\/assets\/images\/blog\/Vector.png\" alt=\"expand\" class=\"read-more-arrow down-arrow\"><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"expand\" class=\"read-more-arrow down-arrow lazyload\" data-src=\"\/assets\/images\/blog\/Vector.png\"><\/a>\n                <div class=\"author-bio-expanded\">\n                    <p>Pritam Barhate, with an experience of 14+ years in technology, heads Technology Innovation at <a href=\"https:\/\/mobisoftinfotech.com\" target=\"_blank\" rel=\"noopener\">Mobisoft Infotech<\/a>. He has a rich experience in design and development. He has been a consultant for a variety of industries and startups. At Mobisoft Infotech, he primarily focuses on technology resources and develops the most advanced solutions.<\/p>\n                    <div class=\"author-social-links\">\n                        <div class=\"social-icon\">\n                            <a href=\"https:\/\/www.linkedin.com\/in\/pritam-barhate-90b93414\/\" target=\"_blank\" rel=\"nofollow noopener\"><i class=\"icon-sprite linkedin\"><\/i><\/a>\n                            <a href=\"https:\/\/twitter.com\/pritambarhate\" target=\"_blank\" rel=\"nofollow noopener\"><i class=\"icon-sprite twitter\"><\/i><\/a>\n                        <\/div>\n                    <\/div>\n                    <a href=\"javascript:void(0);\" class=\"read-more-link read-less-btn\" onclick=\"toggleAuthorBio(this); return false;\" style=\"display: none;\">Read less <noscript><img decoding=\"async\" src=\"\/assets\/images\/blog\/Vector.png\" alt=\"collapse\" class=\"read-more-arrow up-arrow\"><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"collapse\" class=\"read-more-arrow up-arrow lazyload\" data-src=\"\/assets\/images\/blog\/Vector.png\"><\/a>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"share-section\">\n            <span class=\"share-label\">Share Article<\/span>\n            <div class=\"social-share-buttons\">\n                <a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fmobisoftinfotech.com%2Fresources%2Fblog%2Fprotect-resource-hungry-apis\" target=\"_blank\" class=\"share-btn facebook-share\"><i class=\"fa fa-facebook-f\"><\/i><\/a>\n                <a href=\"https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url=https%3A%2F%2Fmobisoftinfotech.com%2Fresources%2Fblog%2Fprotect-resource-hungry-apis\" target=\"_blank\" class=\"share-btn linkedin-share\"><i class=\"fa fa-linkedin\"><\/i><\/a>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In general, a web application should use some type of rate limiter to block rogue clients from overloading your servers. Typically, this is done by checking the IP of the non-logged in users and session key of the logged in users. For example, you may decide: to allow only 20 requests per second from the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11750,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_s2mail":"yes","footnotes":""},"categories":[286],"tags":[782,663,565],"class_list":["post-11748","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-api","tag-developer-guide","tag-mobile-apps-developers"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Protect Resource Hungry APIs?<\/title>\n<meta name=\"description\" content=\"Web application should use some type of rate limiter to block rogue clients from overloading your servers. Typically, this is done by checking the IP of the non-logged in users and session key of the logged in users.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Protect Resource Hungry APIs?\" \/>\n<meta property=\"og:description\" content=\"Web application should use some type of rate limiter to block rogue clients from overloading your servers. Typically, this is done by checking the IP of the non-logged in users and session key of the logged in users.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis\" \/>\n<meta property=\"og:site_name\" content=\"Mobisoft Infotech\" \/>\n<meta property=\"article:published_time\" content=\"2018-03-22T11:49:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-06-13T13:05:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2018\/03\/How-to-protect-resource-hungry-APIs-banner.png\" \/>\n\t<meta property=\"og:image:width\" content=\"853\" \/>\n\t<meta property=\"og:image:height\" content=\"391\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Pritam Barhate\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Pritam Barhate\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#article\",\"isPartOf\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis\"},\"author\":{\"name\":\"Pritam Barhate\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/#\/schema\/person\/fa762036b3364f26abeea146c01487ee\"},\"headline\":\"How to Protect Resource Hungry APIs?\",\"datePublished\":\"2018-03-22T11:49:40+00:00\",\"dateModified\":\"2019-06-13T13:05:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis\"},\"wordCount\":567,\"image\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#primaryimage\"},\"thumbnailUrl\":\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2018\/03\/How-to-protect-resource-hungry-APIs-banner.png\",\"keywords\":[\"API\",\"Developer Guide\",\"mobile apps developers\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis\",\"url\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis\",\"name\":\"How to Protect Resource Hungry APIs?\",\"isPartOf\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#primaryimage\"},\"image\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#primaryimage\"},\"thumbnailUrl\":\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2018\/03\/How-to-protect-resource-hungry-APIs-banner.png\",\"datePublished\":\"2018-03-22T11:49:40+00:00\",\"dateModified\":\"2019-06-13T13:05:22+00:00\",\"author\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/#\/schema\/person\/fa762036b3364f26abeea146c01487ee\"},\"description\":\"Web application should use some type of rate limiter to block rogue clients from overloading your servers. Typically, this is done by checking the IP of the non-logged in users and session key of the logged in users.\",\"breadcrumb\":{\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#primaryimage\",\"url\":\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2018\/03\/How-to-protect-resource-hungry-APIs-banner.png\",\"contentUrl\":\"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2018\/03\/How-to-protect-resource-hungry-APIs-banner.png\",\"width\":853,\"height\":391,\"caption\":\"How to protect resource hungry APIs\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/mobisoftinfotech.com\/resources\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Protect Resource Hungry APIs?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/#website\",\"url\":\"https:\/\/mobisoftinfotech.com\/resources\/\",\"name\":\"Mobisoft Infotech\",\"description\":\"Discover Mobility\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/mobisoftinfotech.com\/resources\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/mobisoftinfotech.com\/resources\/#\/schema\/person\/fa762036b3364f26abeea146c01487ee\",\"name\":\"Pritam Barhate\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/0e481c7ce54b3567ac70ddfc493523eefce0bdc3ee69fd2654f8f60a79e2f178?s=96&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e481c7ce54b3567ac70ddfc493523eefce0bdc3ee69fd2654f8f60a79e2f178?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e481c7ce54b3567ac70ddfc493523eefce0bdc3ee69fd2654f8f60a79e2f178?s=96&r=g\",\"caption\":\"Pritam Barhate\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Protect Resource Hungry APIs?","description":"Web application should use some type of rate limiter to block rogue clients from overloading your servers. Typically, this is done by checking the IP of the non-logged in users and session key of the logged in users.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis","og_locale":"en_US","og_type":"article","og_title":"How to Protect Resource Hungry APIs?","og_description":"Web application should use some type of rate limiter to block rogue clients from overloading your servers. Typically, this is done by checking the IP of the non-logged in users and session key of the logged in users.","og_url":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis","og_site_name":"Mobisoft Infotech","article_published_time":"2018-03-22T11:49:40+00:00","article_modified_time":"2019-06-13T13:05:22+00:00","og_image":[{"width":853,"height":391,"url":"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2018\/03\/How-to-protect-resource-hungry-APIs-banner.png","type":"image\/png"}],"author":"Pritam Barhate","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Pritam Barhate","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#article","isPartOf":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis"},"author":{"name":"Pritam Barhate","@id":"https:\/\/mobisoftinfotech.com\/resources\/#\/schema\/person\/fa762036b3364f26abeea146c01487ee"},"headline":"How to Protect Resource Hungry APIs?","datePublished":"2018-03-22T11:49:40+00:00","dateModified":"2019-06-13T13:05:22+00:00","mainEntityOfPage":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis"},"wordCount":567,"image":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#primaryimage"},"thumbnailUrl":"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2018\/03\/How-to-protect-resource-hungry-APIs-banner.png","keywords":["API","Developer Guide","mobile apps developers"],"articleSection":["Blog"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis","url":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis","name":"How to Protect Resource Hungry APIs?","isPartOf":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/#website"},"primaryImageOfPage":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#primaryimage"},"image":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#primaryimage"},"thumbnailUrl":"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2018\/03\/How-to-protect-resource-hungry-APIs-banner.png","datePublished":"2018-03-22T11:49:40+00:00","dateModified":"2019-06-13T13:05:22+00:00","author":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/#\/schema\/person\/fa762036b3364f26abeea146c01487ee"},"description":"Web application should use some type of rate limiter to block rogue clients from overloading your servers. Typically, this is done by checking the IP of the non-logged in users and session key of the logged in users.","breadcrumb":{"@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#primaryimage","url":"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2018\/03\/How-to-protect-resource-hungry-APIs-banner.png","contentUrl":"https:\/\/mobisoftinfotech.com\/resources\/wp-content\/uploads\/2018\/03\/How-to-protect-resource-hungry-APIs-banner.png","width":853,"height":391,"caption":"How to protect resource hungry APIs"},{"@type":"BreadcrumbList","@id":"https:\/\/mobisoftinfotech.com\/resources\/blog\/protect-resource-hungry-apis#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/mobisoftinfotech.com\/resources\/"},{"@type":"ListItem","position":2,"name":"How to Protect Resource Hungry APIs?"}]},{"@type":"WebSite","@id":"https:\/\/mobisoftinfotech.com\/resources\/#website","url":"https:\/\/mobisoftinfotech.com\/resources\/","name":"Mobisoft Infotech","description":"Discover Mobility","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mobisoftinfotech.com\/resources\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/mobisoftinfotech.com\/resources\/#\/schema\/person\/fa762036b3364f26abeea146c01487ee","name":"Pritam Barhate","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0e481c7ce54b3567ac70ddfc493523eefce0bdc3ee69fd2654f8f60a79e2f178?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0e481c7ce54b3567ac70ddfc493523eefce0bdc3ee69fd2654f8f60a79e2f178?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e481c7ce54b3567ac70ddfc493523eefce0bdc3ee69fd2654f8f60a79e2f178?s=96&r=g","caption":"Pritam Barhate"}}]}},"_links":{"self":[{"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/posts\/11748","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/comments?post=11748"}],"version-history":[{"count":3,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/posts\/11748\/revisions"}],"predecessor-version":[{"id":16546,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/posts\/11748\/revisions\/16546"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/media\/11750"}],"wp:attachment":[{"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/media?parent=11748"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/categories?post=11748"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mobisoftinfotech.com\/resources\/wp-json\/wp\/v2\/tags?post=11748"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}