{"id":3939,"date":"2020-07-26T11:39:02","date_gmt":"2020-07-26T12:09:02","guid":{"rendered":"https:\/\/ultering.com\/it4us\/?p=3939"},"modified":"2020-08-30T15:42:27","modified_gmt":"2020-08-30T16:12:27","slug":"rest-rest-concepts-and-practices-summary-an-ordered-information-collection-from-several-sources","status":"publish","type":"post","link":"https:\/\/ultering.com\/it4us\/?p=3939","title":{"rendered":"REST: REST Concepts and Practices Summary"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_73 counter-hierarchy ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a00b5da65217\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a00b5da65217\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#An_Ordered_Information_Collection_from_Several_Sources\" title=\"An Ordered Information Collection from Several Sources\">An Ordered Information Collection from Several Sources<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#IMPORTANT_NOTE\" title=\"IMPORTANT NOTE\">IMPORTANT NOTE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#REST\" title=\"#REST\">#REST<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#RESOURCE\" title=\"#RESOURCE\">#RESOURCE<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#Resource_archetypes\" title=\"#Resource archetypes\">#Resource archetypes<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#document\" title=\"#document\">#document<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#collection\" title=\"#collection\">#collection<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#store\" title=\"#store\">#store<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#controller\" title=\"#controller\">#controller<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#Resource_Naming_%E2%80%93_Key_Consistency_Practices\" title=\"#Resource Naming &#8211; Key Consistency Practices\">#Resource Naming &#8211; Key Consistency Practices<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#FORMATS\" title=\"#FORMATS\">#FORMATS<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#PROTOCOL\" title=\"#PROTOCOL\">#PROTOCOL<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#VERBS\" title=\"#VERBS\">#VERBS<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#other_verbs\" title=\"#other verbs\">#other verbs<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#PATCH\" title=\"#PATCH\">#PATCH<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#SUCCESS_CODE\" title=\"#SUCCESS CODE\">#SUCCESS CODE<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#SPRING_BOOT\" title=\"#SPRING BOOT\">#SPRING BOOT<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/ultering.com\/it4us\/?p=3939\/#REFERENCES\" title=\"#REFERENCES\">#REFERENCES<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"An_Ordered_Information_Collection_from_Several_Sources\"><\/span>An Ordered Information Collection from Several Sources<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"IMPORTANT_NOTE\"><\/span>IMPORTANT NOTE<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"color: #993300;\"><strong>This post is a summary of my researches.<\/strong><\/span><br \/>\n<span style=\"color: #993300;\"><strong>The texts are copied as they are or adapted to make it shorter or to make it fit the summary&#8217;s purpose.<\/strong><\/span><br \/>\n<span style=\"color: #993300;\"><strong>They are all referenced, sometimes twice \u2014 <em>in loco\u00a0<\/em>or below under References topic.<\/strong><\/span><\/p>\n<p><span style=\"color: #993300;\"><strong>There is no intention of plagiarism.<\/strong><\/span><br \/>\n<span style=\"color: #993300;\"><strong>The intention here is to share my research putting together important concepts, grouped and ordered from several resources.<\/strong><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><strong>If some content here displeasures an author, please <a style=\"color: #ff0000;\" href=\"https:\/\/ultering.com\/it4us\/?page_id=2123\">contact me<\/a> that I&#8217;ll be glad to remove it, including its reference.<\/strong><\/span><\/p>\n<p><span style=\"color: #993300;\"><strong>Thank you for all those authors that spent their time and effort to share information.<\/strong><\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"REST\"><\/span>#REST<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>First of all, REST does not define a standard message exchange format.<br \/>\nYou can build REST services with both XML and JSON.<br \/>\nHowever, JSON is a more popular format with REST.<\/p>\n<p>So, if it does not define a standard message exchange format, what is REST then?<br \/>\nREST is a style of software architecture for distributed hypermedia systems.<br \/>\nREST stands for REpresentational State Transfer.<br \/>\nThe definitions for REST can be vague.<\/p>\n<p>Key abstraction in REST is a Resource.<br \/>\nThere is no restriction on what can be a resource.<br \/>\nA <em>todo<\/em> is a resource.<br \/>\nA person on Facebook is a resource.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"RESOURCE\"><\/span>#RESOURCE<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The key abstraction of information in REST is a resource.<\/p>\n<p><em>Any information that can be named can be a resource: a document or image, a temporal service (e.g. \u201ctoday\u2019s weather in Los Angeles\u201d), a collection of other resources, a non-virtual object (e.g., a person), and so on. <\/em><\/p>\n<p><em>In other words, any concept that might be the target of an author\u2019s hypertext reference must fit within the definition of a resource. <\/em><\/p>\n<p><em>A resource is a conceptual mapping to a set of entities, not the entity that corresponds to the mapping at any particular point in time.<\/em><\/p>\n<p><a href=\"https:\/\/www.ics.uci.edu\/~fielding\/pubs\/dissertation\/rest_arch_style.htm#sec_5_2_1_1\" target=\"_blank\" rel=\"noopener noreferrer\"><em>Roy Fielding\u2019s dissertation<\/em><\/a><\/p>\n<h4><span class=\"ez-toc-section\" id=\"Resource_archetypes\"><\/span><strong>#Resource archetypes<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Four categories: document, collection, store and controller.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"document\"><\/span>#document<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>A document resource is a singular concept that is akin to an object instance or database record. In REST, you can view it as a single resource inside resource collection. A document\u2019s state representation typically includes both fields with values and links to other related resources.<\/p>\n<p>Use \u201csingular\u201d name to denote document resource archetype.<\/p>\n<pre>http:\/\/api.example.com\/device-management\/managed-devices\/{device-id}\r\nhttp:\/\/api.example.com\/user-management\/users\/{id}\r\nhttp:\/\/api.example.com\/user-management\/users\/admin<\/pre>\n<h5><span class=\"ez-toc-section\" id=\"collection\"><\/span>#collection<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>A collection resource is a server-managed directory of resources. Clients may propose new resources to be added to a collection. However, it is up to the collection to choose to create a new resource or not. A collection resource chooses what it wants to contain and also decides the URIs of each contained resource.<\/p>\n<p>Use the \u201cplural\u201d name to denote the collection resource archetype.<\/p>\n<pre>http:\/\/api.example.com\/device-management\/managed-devices\r\nhttp:\/\/api.example.com\/user-management\/users\r\nhttp:\/\/api.example.com\/user-management\/users\/{id}\/accounts<\/pre>\n<h5><span class=\"ez-toc-section\" id=\"store\"><\/span>#store<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>A store is a client-managed resource repository. A store resource lets an API client put resources in, get them back out, and decide when to delete them. A store never generates new URIs. Instead, each stored resource has a URI. The URI was chosen by a client when it was initially put into the store.<\/p>\n<p>Use \u201cplural\u201d name to denote store resource archetype.<\/p>\n<pre>http:\/\/api.example.com\/song-management\/users\/{id}\/playlists<\/pre>\n<h5><span class=\"ez-toc-section\" id=\"controller\"><\/span>#controller<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>A controller resource models a procedural concept. Controller resources are like executable functions, with parameters and return values; inputs and outputs.<\/p>\n<p>Use \u201cverb\u201d to denote the controller archetype.<\/p>\n<pre>http:\/\/api.example.com\/cart-management\/users\/{id}\/cart\/checkout\r\nhttp:\/\/api.example.com\/song-management\/users\/{id}\/playlist\/play<\/pre>\n<p>@SEE:<br \/>\n<a href=\"https:\/\/restfulapi.net\/resource-naming\/\">REST Resource Naming Guide<\/a><\/p>\n<p>&nbsp;<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Resource_Naming_%E2%80%93_Key_Consistency_Practices\"><\/span>#Resource Naming &#8211; Key Consistency Practices<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><strong>Basic Rules:<\/strong><\/p>\n<ul>\n<li>REST APIs use\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Uniform_Resource_Identifier\" target=\"_blank\" rel=\"noopener noreferrer\">Uniform Resource Identifiers<\/a>\u00a0(URIs) to address resources.<\/li>\n<li>A resource shall be mapped to a noun, except for controller resource models as procedure concept that use verbs.<br \/>\nNote: verbs are used by the HTTP protocol.<\/li>\n<li>The nouns use their plural forms, except for document.<\/li>\n<li>It is not used underscore ( _ ).<\/li>\n<li>Do not use trailing forward-slash (\/) in URIs.<\/li>\n<li>Use hyphens (-) to improve the readability of URIs.<\/li>\n<li>URIs use just lowercase.<\/li>\n<li>URIs do not carry file extensions.<\/li>\n<li>URIs do not use CRUD function names.<br \/>\nInstead use HTTP verbs to indicate.<br \/>\nExample:<\/p>\n<pre>HTTP GET http:\/\/api.example.com\/device-management\/managed-devices  \/\/Get all devices<\/pre>\n<\/li>\n<li>Use query component to filter URI collection.<br \/>\nMany times, you will come across requirements where you will need a collection of resources sorted, filtered or limited based on some certain resource attribute. For this, do not create new APIs \u2013 rather enable sorting, filtering and pagination capabilities in resource collection API and pass the input parameters as query parameters. e.g.&lt;\/<\/p>\n<pre class=\"\">http:\/\/api.example.com\/device-management\/managed-devices\r\nhttp:\/\/api.example.com\/device-management\/managed-devices?region=USA\r\nhttp:\/\/api.example.com\/device-management\/managed-devices?region=USA&brand=XYZ\r\nhttp:\/\/api.example.com\/device-management\/managed-devices?region=USA&brand=XYZ&sort=installation-date\r\n<\/pre>\n<\/li>\n<li>A resource may represent a Singleton, a Collection and a Sub-collection<\/li>\n<\/ul>\n<p>A <strong>resource can be a singleton or a collection<\/strong>.<br \/>\nFor example, \u201c<code>customers<\/code>\u201d is a collection resource and \u201c<code>customer<\/code>\u201d is a singleton resource (in a banking domain). We can identify \u201c<code>customers<\/code>\u201d collection resource using the URI \u201c<code>\/customers<\/code>\u201d. We can identify a single \u201c<code>customer<\/code>\u201d resource using the URI \u201c<code>\/customers\/{customerId}<\/code>\u201d.<\/p>\n<p>A\u00a0<strong>resource may contain sub-collection resources<\/strong>\u00a0also.<br \/>\nFor example, sub-collection resource \u201c<code>accounts<\/code>\u201d of a particular \u201c<code>customer<\/code>\u201d can be identified using the URN \u201c<code>\/customers\/{customerId}\/accounts<\/code>\u201d (in a banking domain). Similarly, a singleton resource \u201c<code>account<\/code>\u201d inside the sub-collection resource \u201c<code>accounts<\/code>\u201d can be identified as follows: \u201c<code>\/customers\/{customerId}\/accounts\/{accountId}<\/code>\u201d.<\/p>\n<p>@FROM:<br \/>\n<a href=\"https:\/\/restfulapi.net\/resource-naming\/\">REST Resource Naming Guide<\/a><\/p>\n<h3><span class=\"ez-toc-section\" id=\"FORMATS\"><\/span>#FORMATS<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>XML<br \/>\nHTML<br \/>\nJSON<br \/>\nA resource will have state. The representation of a resource should capture its current state.<br \/>\nWhen a resource is requested, we provide the representation of the resource.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"PROTOCOL\"><\/span>#PROTOCOL<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>REST and HTTP<br \/>\nREST builds on top of HTTP (Hypertext Transfer Protocol).<\/p>\n<h4><span class=\"ez-toc-section\" id=\"VERBS\"><\/span>#VERBS<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>HTTP has a few important verbs.<\/p>\n<p>POST &#8211; Create a new resource<br \/>\nGET &#8211; Read a resource<br \/>\nPUT &#8211; Update an existing resource<br \/>\nDELETE &#8211; Delete a resource<br \/>\nHTTP also defines standard response codes.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"other_verbs\"><\/span>#other verbs<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<h5><span class=\"ez-toc-section\" id=\"PATCH\"><\/span>#PATCH<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p><a href=\"https:\/\/www.baeldung.com\/http-put-patch-difference-spring\">PUT vs. PATCH Baeldung<\/a><\/p>\n<h3><span class=\"ez-toc-section\" id=\"SUCCESS_CODE\"><\/span>#SUCCESS CODE<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>200 &#8211; SUCESS<br \/>\n404 &#8211; RESOURCE NOT FOUND<br \/>\n400 &#8211; BAD REQUEST<br \/>\n201 &#8211; CREATED<br \/>\n401 &#8211; UNAUTHORIZED<br \/>\n415 &#8211; UNSUPPORTED TYPE &#8211; Representation not supported for the resource<br \/>\n500 &#8211; SERVER ERROR<\/p>\n<h2><span class=\"ez-toc-section\" id=\"SPRING_BOOT\"><\/span>#SPRING BOOT<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"https:\/\/www.springboottutorial.com\/spring-boot-crud-rest-service-with-jpa-hibernate\">Creating a CRUD REST API\/Service with Spring Boot, JPA and Hibernate<\/a><br \/>\n<a href=\"http:\/\/websystique.com\/spring-boot\/spring-boot-rest-api-example\/\">Spring Boot Rest API Example<\/a><\/p>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"REFERENCES\"><\/span>#REFERENCES<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>The references here are also used as sources since their texts may be inserted in this post as they are.<\/strong><br \/>\n<strong>There is no intention to change words to masquerade the authors&#8217; privileges.<\/strong><br \/>\n<strong>Sources&#8217; references emphasized <em>in loco <\/em>may also be referenced here or not.<\/strong><\/p>\n<p class=\"entry-title\"><a href=\"https:\/\/restfulapi.net\/resource-naming\/\">REST Resource Naming Guide<\/a><\/p>\n<p><a href=\"https:\/\/www.vinaysahni.com\/best-practices-for-a-pragmatic-restful-api\">Best Practices for Designing a Pragmatic RESTful API<\/a><\/p>\n<p><a href=\"https:\/\/www.springboottutorial.com\/spring-boot-crud-rest-service-with-jpa-hibernate\">Creating a CRUD REST API\/Service with Spring Boot, JPA and Hibernate<\/a><br \/>\n<a href=\"http:\/\/websystique.com\/spring-boot\/spring-boot-rest-api-example\/\">Spring Boot Rest API Example<\/a><\/p>\n<p><a href=\"https:\/\/www.baeldung.com\/http-put-patch-difference-spring\">PUT vs. PATCH Baeldung<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<!--CusAds0-->\n<div style=\"font-size: 0px; height: 0px; line-height: 0px; margin: 0; padding: 0; clear: both;\"><\/div>","protected":false},"excerpt":{"rendered":"<p>An Ordered Information Collection from Several Sources IMPORTANT NOTE This post is a summary of my researches. The texts are copied as they are or adapted to make it shorter or to make it fit the summary&#8217;s purpose. They are all referenced, sometimes twice \u2014 in loco\u00a0or below under References topic. There is no intention &#8230; <a href=\"https:\/\/ultering.com\/it4us\/?p=3939\" class=\"more-link\">Read More<span class=\"screen-reader-text\"> &#8220;REST: REST Concepts and Practices Summary&#8221;<\/span> &raquo;<\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"categories":[89,155,143],"tags":[],"class_list":["post-3939","post","type-post","status-publish","format-standard","hentry","category-network","category-protocol","category-web-design"],"_links":{"self":[{"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=\/wp\/v2\/posts\/3939","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3939"}],"version-history":[{"count":5,"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=\/wp\/v2\/posts\/3939\/revisions"}],"predecessor-version":[{"id":4150,"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=\/wp\/v2\/posts\/3939\/revisions\/4150"}],"wp:attachment":[{"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3939"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3939"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}