{"id":19730,"date":"2024-10-10T16:48:08","date_gmt":"2024-10-10T15:48:08","guid":{"rendered":"https:\/\/www.equalexperts.com\/?p=19730"},"modified":"2024-12-09T14:23:53","modified_gmt":"2024-12-09T14:23:53","slug":"just-say-no-to-versioning-apis","status":"publish","type":"post","link":"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/","title":{"rendered":"Just say no &#8211; to versioning APIs"},"content":{"rendered":"<p>As a concept, non-versioning is controversial, but I believe that we should never version our APIs.<\/p>\n<p>In my experience, we all agree on the fundamental, core principle that producers of APIs should not break consumers of APIs through change. That\u2019s helpful common ground to start a debate &#8211; but let\u2019s define the principle more clearly: API consumers expect never to be broken by a change in the API that they consume.<\/p>\n<p>I\u2019m not the first to push the idea of no-versioning &#8211; the concept was first described by Roy Fielding, who wrote a <a href=\"https:\/\/ics.uci.edu\/~fielding\/pubs\/dissertation\/top.htm\">thesis<\/a> describing RESTful APIs. Fielding introduced the world to the concept of HATEOAS (though the thesis never uses the weird acronym) and talks about no-versioning in the context of REST APIs. He adopts the attitude of \u2018be damned if you go for non-REST\u2019.<\/p>\n<p>REST is an elegant architectural style that makes building evolvable APIs easy, without succumbing to versioning. This post isn\u2019t a place for detailing REST (<a href=\"https:\/\/www.amazon.co.uk\/REST-Practice-Hypermedia-Systems-Architecture\/dp\/0596805829\">this book<\/a> is a particularly good resource) but using RESTful principles for API design is probably a strong starting position.<\/p>\n<p>However, REST isn\u2019t the only solution, and good API design can overcome versioning.<\/p>\n<p>API producers have broadly taken two approaches to not breaking consumers. The most common practice and the one that\u2019s considered to be the standard by most, is to version APIs, deprecating the older versions and encouraging consumers to migrate. There are multiple ways of describing the version in the request. The most visible (and the one most organisations default to) is in the URL. Others will pass the version via the Accept header in the request. You\u2019ll likely come across several resources that suggest this is best practice.<\/p>\n<p>However, API versioning has downsides regardless of the patterns used. For one thing, supporting more than one version of anything is a pain. Finding a bug in one version necessitates confirming it doesn\u2019t exist in other versions. If it does, you need to fix it in all versions (meaning more testing is needed) or fix the latest version only, and insist that consumers move to a version without the bug &#8211; which may be the latest, or does a superseded version need fixing?<\/p>\n<p>Of course, some patterns minimise the pain of versioning. And advocates of versioning will argue that the concerns I raise can be resolved &#8211; but this is fixing a self-inflicted problem. No-versioning stops the problem in its tracks. The API consumer benefits either way: they don\u2019t need to change, are not broken by changes to the API, always have the latest functionality, and the documentation they need to read is minimal.<\/p>\n<p>I started this post by saying that we should never version APIs. Backtracking slightly, I believe that versioning is unnecessary because I\u2019ve yet to come across a situation in API design and development that actually needed it. And I\u2019ve yet to be convinced in practice that versioning is a necessity, or even preferable to the alternative.<\/p>\n<p><strong>Why you may want to version your API (but don\u2019t need to)\u00a0<\/strong><\/p>\n<p>I have yet to come across a situation in API design that needed versioning. Below is a sanitised version of the sort of conversation I have, when suggesting that we shouldn\u2019t version:<\/p>\n<p><strong>What if we need to add a new mandatory field in the request?\u00a0<\/strong><\/p>\n<p>If it\u2019s really mandatory, why have an API version that doesn\u2019t require it?<\/p>\n<p><strong>We need versioning to carry out new business logic\u00a0<\/strong><\/p>\n<p>Again, this shouldn\u2019t be described as \u2018mandatory\u2019 new business logic &#8211; at best, it\u2019s an optional field that may change the path your code goes down. If it\u2019s truly mandatory, why support a version that doesn\u2019t need it?<\/p>\n<p><strong>We made a spelling mistake in the field name, and if we change field names, it will break the consumers\u00a0<\/strong><\/p>\n<p>So don\u2019t change the field name, if consumers are using it fine. If it isn\u2019t causing harm, leave it. If you really want to change a spelling or name, support both &#8211; maybe only document the new one, but don\u2019t break if the old spelling is used.<\/p>\n<p><strong>We want to change the structure of our response\u00a0<\/strong><\/p>\n<p>Articulating <em><strong>why<\/strong><\/em> you need to change the structure may help you to design it in a non-breaking way. If necessary, consider content negotiation, where a consumer includes the media type they expect in the \u201caccept\u201d header. If the structure is significantly different maybe it isn\u2019t a new version of the API but a new representation of the resource that the API returns. The key is to handle the change internally rather than forcing consumers to change.<\/p>\n<p><strong>Github versions APIs<\/strong><\/p>\n<p>I think Github does APIs really well. If you used them as your exemplar, you wouldn\u2019t go far wrong. Github is on version 4 of their APIs. How do we reconcile the two views &#8211; GitHub is good, but don\u2019t do versioning?<\/p>\n<p>Well, Github is only on version 4 of their APIs after 13 years. That\u2019s one new version every three (and a bit) years. But still, it is a new version.<\/p>\n<p>Another thing to note is that all the APIs were versioned at the same time, rather than individual versioning. There is a reason for that. The move from version 3 to version 4 was a move from REST APIs to GraphQL. This isn\u2019t about versioning the APIs, but rather the architectural style.<\/p>\n<p>While I\u2019m not privy to the thinking behind this, if you visit Github\u2019s docs home page they do not talk about version 3 and version 4 of their APIs, but the REST APIs and GraphQL APIs. I\u2019d suggest this is further evidence they see this as a change of architectural style.<\/p>\n<p>You\u00a0 will likely identify other scenarios requiring versioning, which I would love to hear about in the comments. I\u2019m even happy to work with people on the design. I don\u2019t want this to seem like a straightforward thing to do, especially if you do not start from a solid API design base.<\/p>\n<p>When you consider versioning as an option, take into account the following:<\/p>\n<ul>\n<li aria-level=\"1\">Make all changes to response or request optional rather than mandatory.<\/li>\n<li aria-level=\"1\">If they are mandatory changes, why do you support a version that doesn\u2019t have those changes?<\/li>\n<li aria-level=\"1\">Keep the API contract as simple as possible. Limit the number of input requirements to what is absolutely necessary to make the system work. Any business logic inputs should be retrieved from internal sources as much as possible. By making the API do the work, changes to the contract will be rare.<\/li>\n<li aria-level=\"1\">Would the change to the API benefit every consumer? If not, think about how impactful the change is for consumers who don\u2019t need it?<\/li>\n<li aria-level=\"1\">Would you support every version forever? Or will you start to decommission versions and force consumers to move across?<\/li>\n<li aria-level=\"1\">Is the change due to new business logic? If so, will the new business logic be part of every version?<\/li>\n<li aria-level=\"1\">If the change is due to new business logic, should that even be a concern for your consumers?<\/li>\n<li aria-level=\"1\">Does a new version make things easier or more challenging for the consumers of your APIs?<\/li>\n<\/ul>\n<p>Ultimately, ask yourself, \u201cDoes the benefit of this change justify the time, effort and impact of supporting multiple versions, to our consumers and us?\u201d<\/p>\n<p>The success of your APIs is in making them easy to consume. That should include not forcing the consumer to change. Rethink the approach to anything that makes API consumption more difficult. Do the hard work at the design stage, and hopefully, you\u2019ll have easy to use, evolvable APIs that will be maintainable and keep everyone happy.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As a concept, non-versioning is controversial, but I believe that we should never version our APIs. In my experience, we all agree on the fundamental, core principle that producers of APIs should not break consumers of APIs through change. That\u2019s helpful common ground to start a debate &#8211; but let\u2019s define the principle more clearly: [&hellip;]<\/p>\n","protected":false},"author":269,"featured_media":19735,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"footnotes":""},"categories":[5,3],"tags":[603,597,598,600,602,599,601],"location":[],"class_list":["post-19730","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-our-thinking","category-tech-focus","tag-agile-development","tag-api-design","tag-api-versioning","tag-consumer-driven-contracts","tag-continuous-integration","tag-software-architecture","tag-software-maintenance"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Just say no - to versioning APIs | Equal Experts<\/title>\n<meta name=\"description\" content=\"Learn why API versioning hinders scalability and explore alternatives like HATEOAS and consumer-driven contracts to improve API design and compatibility.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Just say no - to versioning APIs\" \/>\n<meta property=\"og:description\" content=\"Learn why API versioning hinders scalability and explore alternatives like HATEOAS and consumer-driven contracts to improve API design and compatibility.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/\" \/>\n<meta property=\"og:site_name\" content=\"Equal Experts\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-10T15:48:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-09T14:23:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2024\/10\/no-to-versioning-LEAD-1200x514-1-e1733754137144.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"466\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Reda Hmeid\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@EqualExperts\" \/>\n<meta name=\"twitter:site\" content=\"@EqualExperts\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Reda Hmeid\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/\"},\"author\":{\"name\":\"Reda Hmeid\",\"@id\":\"https:\/\/www.equalexperts.com\/#\/schema\/person\/55dc23efa76617aa5552d569151de77e\"},\"headline\":\"Just say no &#8211; to versioning APIs\",\"datePublished\":\"2024-10-10T15:48:08+00:00\",\"dateModified\":\"2024-12-09T14:23:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/\"},\"wordCount\":1294,\"publisher\":{\"@id\":\"https:\/\/www.equalexperts.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2024\/12\/no-to-versioning-LEAD-1200x514-1-e1733754156660.jpg\",\"keywords\":[\"Agile development\",\"API design\",\"API versioning\",\"Consumer-Driven contracts\",\"Continuous integration\",\"Software Architecture\",\"Software maintenance\"],\"articleSection\":[\"Our Thinking\",\"Tech Focus\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/\",\"url\":\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/\",\"name\":\"Just say no - to versioning APIs | Equal Experts\",\"isPartOf\":{\"@id\":\"https:\/\/www.equalexperts.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2024\/12\/no-to-versioning-LEAD-1200x514-1-e1733754156660.jpg\",\"datePublished\":\"2024-10-10T15:48:08+00:00\",\"dateModified\":\"2024-12-09T14:23:53+00:00\",\"description\":\"Learn why API versioning hinders scalability and explore alternatives like HATEOAS and consumer-driven contracts to improve API design and compatibility.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#primaryimage\",\"url\":\"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2024\/12\/no-to-versioning-LEAD-1200x514-1-e1733754156660.jpg\",\"contentUrl\":\"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2024\/12\/no-to-versioning-LEAD-1200x514-1-e1733754156660.jpg\",\"width\":1200,\"height\":462},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.equalexperts.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Just say no &#8211; to versioning APIs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.equalexperts.com\/#website\",\"url\":\"https:\/\/www.equalexperts.com\/\",\"name\":\"Equal Experts\",\"description\":\"Making Software. Better.\",\"publisher\":{\"@id\":\"https:\/\/www.equalexperts.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.equalexperts.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.equalexperts.com\/#organization\",\"name\":\"Equal Experts\",\"url\":\"https:\/\/www.equalexperts.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.equalexperts.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2018\/08\/Equal_Experts_Logo_CMYK_Colour.jpg\",\"contentUrl\":\"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2018\/08\/Equal_Experts_Logo_CMYK_Colour.jpg\",\"width\":719,\"height\":340,\"caption\":\"Equal Experts\"},\"image\":{\"@id\":\"https:\/\/www.equalexperts.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/EqualExperts\",\"https:\/\/www.linkedin.com\/company\/equal-experts\/?viewAsMember=true\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.equalexperts.com\/#\/schema\/person\/55dc23efa76617aa5552d569151de77e\",\"name\":\"Reda Hmeid\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.equalexperts.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f8d5aafbd48087c672ab625733a8a5a591b900785eb45631979de8ca905028f5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f8d5aafbd48087c672ab625733a8a5a591b900785eb45631979de8ca905028f5?s=96&d=mm&r=g\",\"caption\":\"Reda Hmeid\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Just say no - to versioning APIs | Equal Experts","description":"Learn why API versioning hinders scalability and explore alternatives like HATEOAS and consumer-driven contracts to improve API design and compatibility.","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:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/","og_locale":"en_GB","og_type":"article","og_title":"Just say no - to versioning APIs","og_description":"Learn why API versioning hinders scalability and explore alternatives like HATEOAS and consumer-driven contracts to improve API design and compatibility.","og_url":"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/","og_site_name":"Equal Experts","article_published_time":"2024-10-10T15:48:08+00:00","article_modified_time":"2024-12-09T14:23:53+00:00","og_image":[{"width":1200,"height":466,"url":"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2024\/10\/no-to-versioning-LEAD-1200x514-1-e1733754137144.jpg","type":"image\/jpeg"}],"author":"Reda Hmeid","twitter_card":"summary_large_image","twitter_creator":"@EqualExperts","twitter_site":"@EqualExperts","twitter_misc":{"Written by":"Reda Hmeid","Estimated reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#article","isPartOf":{"@id":"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/"},"author":{"name":"Reda Hmeid","@id":"https:\/\/www.equalexperts.com\/#\/schema\/person\/55dc23efa76617aa5552d569151de77e"},"headline":"Just say no &#8211; to versioning APIs","datePublished":"2024-10-10T15:48:08+00:00","dateModified":"2024-12-09T14:23:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/"},"wordCount":1294,"publisher":{"@id":"https:\/\/www.equalexperts.com\/#organization"},"image":{"@id":"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#primaryimage"},"thumbnailUrl":"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2024\/12\/no-to-versioning-LEAD-1200x514-1-e1733754156660.jpg","keywords":["Agile development","API design","API versioning","Consumer-Driven contracts","Continuous integration","Software Architecture","Software maintenance"],"articleSection":["Our Thinking","Tech Focus"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/","url":"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/","name":"Just say no - to versioning APIs | Equal Experts","isPartOf":{"@id":"https:\/\/www.equalexperts.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#primaryimage"},"image":{"@id":"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#primaryimage"},"thumbnailUrl":"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2024\/12\/no-to-versioning-LEAD-1200x514-1-e1733754156660.jpg","datePublished":"2024-10-10T15:48:08+00:00","dateModified":"2024-12-09T14:23:53+00:00","description":"Learn why API versioning hinders scalability and explore alternatives like HATEOAS and consumer-driven contracts to improve API design and compatibility.","breadcrumb":{"@id":"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#primaryimage","url":"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2024\/12\/no-to-versioning-LEAD-1200x514-1-e1733754156660.jpg","contentUrl":"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2024\/12\/no-to-versioning-LEAD-1200x514-1-e1733754156660.jpg","width":1200,"height":462},{"@type":"BreadcrumbList","@id":"https:\/\/www.equalexperts.com\/blog\/our-thinking\/just-say-no-to-versioning-apis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.equalexperts.com\/"},{"@type":"ListItem","position":2,"name":"Just say no &#8211; to versioning APIs"}]},{"@type":"WebSite","@id":"https:\/\/www.equalexperts.com\/#website","url":"https:\/\/www.equalexperts.com\/","name":"Equal Experts","description":"Making Software. Better.","publisher":{"@id":"https:\/\/www.equalexperts.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.equalexperts.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/www.equalexperts.com\/#organization","name":"Equal Experts","url":"https:\/\/www.equalexperts.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.equalexperts.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2018\/08\/Equal_Experts_Logo_CMYK_Colour.jpg","contentUrl":"https:\/\/www.equalexperts.com\/wp-content\/uploads\/2018\/08\/Equal_Experts_Logo_CMYK_Colour.jpg","width":719,"height":340,"caption":"Equal Experts"},"image":{"@id":"https:\/\/www.equalexperts.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/EqualExperts","https:\/\/www.linkedin.com\/company\/equal-experts\/?viewAsMember=true"]},{"@type":"Person","@id":"https:\/\/www.equalexperts.com\/#\/schema\/person\/55dc23efa76617aa5552d569151de77e","name":"Reda Hmeid","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.equalexperts.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f8d5aafbd48087c672ab625733a8a5a591b900785eb45631979de8ca905028f5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f8d5aafbd48087c672ab625733a8a5a591b900785eb45631979de8ca905028f5?s=96&d=mm&r=g","caption":"Reda Hmeid"}}]}},"_links":{"self":[{"href":"https:\/\/www.equalexperts.com\/wp-json\/wp\/v2\/posts\/19730","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.equalexperts.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.equalexperts.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.equalexperts.com\/wp-json\/wp\/v2\/users\/269"}],"replies":[{"embeddable":true,"href":"https:\/\/www.equalexperts.com\/wp-json\/wp\/v2\/comments?post=19730"}],"version-history":[{"count":0,"href":"https:\/\/www.equalexperts.com\/wp-json\/wp\/v2\/posts\/19730\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.equalexperts.com\/wp-json\/wp\/v2\/media\/19735"}],"wp:attachment":[{"href":"https:\/\/www.equalexperts.com\/wp-json\/wp\/v2\/media?parent=19730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.equalexperts.com\/wp-json\/wp\/v2\/categories?post=19730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.equalexperts.com\/wp-json\/wp\/v2\/tags?post=19730"},{"taxonomy":"location","embeddable":true,"href":"https:\/\/www.equalexperts.com\/wp-json\/wp\/v2\/location?post=19730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}