{"id":22129,"date":"2025-12-11T17:07:19","date_gmt":"2025-12-11T16:07:19","guid":{"rendered":"https:\/\/www.transparentedge.eu\/en\/blog\/"},"modified":"2025-12-12T11:46:41","modified_gmt":"2025-12-12T10:46:41","slug":"the-vary-header-leveraging-content-negotiation","status":"publish","type":"post","link":"https:\/\/www.transparentedge.eu\/en\/blog\/the-vary-header-leveraging-content-negotiation\/","title":{"rendered":"The Vary header: leveraging content negotiation to do (a little) of everything"},"content":{"rendered":"\n<p>If you&#8217;ve been working with CDNs or caching systems like Nginx or Varnish for a while, or if you&#8217;re an expert in the HTTP protocol and web performance, you&#8217;ve probably come across the <code>Vary<\/code> header more than once. It&#8217;s one of those largely misunderstood (due to its complexity) elements of the protocol, and it&#8217;s a double-edged sword; it can be your best ally for delivering the right content or your worst enemy, destroying your hit-ratio.<\/p>\n\n\n\n<p>Recently, <a href=\"https:\/\/x.com\/simonw\/status\/1988982228895084823\" target=\"_blank\" rel=\"noreferrer noopener\">one of the creators of Django<\/a> was talking about our competition in the world of caching and web performance, highlighting a limitation (which, of course, we don&#8217;t have B-) ). Beyond that, it made me think about the lack of awareness that exists, even among prestigious professionals, regarding the use of this header.<\/p>\n\n\n\n<p>Today we&#8217;re going to break down exactly what <code>Vary<\/code> does, why it&#8217;s crucial for content negotiation, and how to tame the beast so your cachet soars in a relatively painless way.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What exactly is <code>Vary<\/code>?<\/strong><\/h2>\n\n\n\n<p>The basic rule of thumb that everyone uses is: \u201cOne URL = One cached object.\u201d<\/p>\n\n\n\n<p>If a user requests \/home in a <code>GET <\/code>request, the cache saves the response and serves it to the next request, as long as the response headers allow it.<\/p>\n\n\n\n<p>But the modern web is complex. Sometimes, the same URL needs to return different content depending on who requests it or how. <em>Enter content negotiation.<\/em><\/p>\n\n\n\n<p>The <code>Vary<\/code> response header tells the cache (and the browser):<\/p>\n\n\n\n<p><em>&#8220;Hey, to decide whether to serve this saved copy, don&#8217;t just look at the URL. Also look at these headers in the user&#8217;s request.&#8221;<\/em><\/p>\n\n\n\n<p>And what the hell is this going to do me any good, you might ask? Let&#8217;s get to the classic problem:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The \u201cjack, queen and king\u201d: the compression of responses<\/strong><\/h2>\n\n\n\n<p>The most common case is <code>Vary: Accept-Encoding<\/code>.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Browser A (supports gzip) requests \/styles.css. The server responds with the compressed file.<\/li>\n\n\n\n<li>Browser B (Curl, for example) asks for \/styles.css:<\/li>\n<\/ol>\n\n\n\n<p>If the cache ignored <code>Vary<\/code>, it could deliver to browser B the compressed (gzip) version it saved from browser A. Result: the user sees garbage on the screen.<\/p>\n\n\n\n<p>With <code>Vary: Accept-Encoding<\/code>, the cache stores different variations of the same URL based on the client&#8217;s compression capabilities.<\/p>\n\n\n\n<p>This mechanism is so common that most cache servers or CDNs use it by default. Furthermore, since there are few different &#8220;values&#8221; for <code>Accept-Encoding<\/code>, the impact on the hit ratio is minimal.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The impact on the CHR: the attack of the clones<\/strong><\/h2>\n\n\n\n<p>This is where we need to put on our systems architect hats. Every variation you add reduces the probability of a cache hit.<\/p>\n\n\n\n<p>Let&#8217;s say that your backend application returns:<\/p>\n\n\n\n<p><code>Vary: User-Agent<\/code><\/p>\n\n\n\n<p>This is one of the most dangerous configurations. There are thousands of different User-Agent strings (Chrome version X, Y, Z; Safari on iOS 14, 15, etc.). If you use <code>Vary: User-Agent<\/code> without any control, Varnish will save an identical copy of your page for every single version of every browser. And that&#8217;s not even considering <code>Vary: cookie<\/code> or <code>Vary: Accept-Language<\/code>. For those, you can just clear the cache and save yourself a step in your web suicide.<\/p>\n\n\n\n<p>Consequences of this type of error:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Memory fill-up: If you&#8217;re using a shared cache, you&#8217;ll be evicting important content to fill the cache with duplicates. Your caching system had better be able to handle the increased memory usage, or you&#8217;ll fill it up very quickly.<\/li>\n\n\n\n<li>Low Hit-Ratio: Most users will receive a MISS because their User-Agent varies slightly from the previous one.<\/li>\n\n\n\n<li>Backend stress: your origin server will work much harder.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Common use cases (and how to handle them)<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Accept-Encoding (Compression)<\/h3>\n\n\n\n<p>It&#8217;s required if you serve dynamically compressed content. The good news is that most caching servers or CDNs do it by default.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Risk: Browsers send complex headers (gzip, deflate, br).<\/li>\n\n\n\n<li>Solution: Normalize the header. By ordering the items in the input header, you can convert it into a simple header like gzip or br, and act accordingly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. Origin (CORS)<\/h3>\n\n\n\n<p>If your API is consumed by different domains and you use <em>Cross-Origin Resource Sharing<\/em>, the server will return different <code>Access-Control-Allow-Origin<\/code> headers depending on who makes the request.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use: <code>Vary: Origin<\/code><\/li>\n\n\n\n<li>Solution: Necessary for API security, but make sure to normalize origins if possible and block those that should not be served.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. Accept-Language<\/h3>\n\n\n\n<p>You serve the same HTML in English or Spanish, depending on the browser&#8217;s preference, at the same URL.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use: Avoid it if you can.<\/li>\n\n\n\n<li>Best practice: It&#8217;s much better for SEO and caching to use different URLs (<code>\/en\/page<\/code>, <code>\/es\/page<\/code>). If you use <code>Vary: Accept-Language<\/code>, The cache will become extremely fragmented given that user language combinations are virtually infinite.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. Accept<\/h3>\n\n\n\n<p>This is the basis of many content frameworks. If the browser&#8217;s Accept header indicates support for, say, <code>text\/markdown<\/code>, the server can return a version of the content (using the same URL) in this format instead of the HTML. At Transparent Edge, we use this &#8220;trick&#8221; to serve images optimized with our i3 optimizer under the same URL.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use: <code>Vary: Accept<\/code><\/li>\n\n\n\n<li>Caution! If you don&#8217;t normalize <code>Accept<\/code>, you risk the clone attack we mentioned earlier.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Transparent Edge recipes (like Gallina Blanca, but without ultra-processing anything)<\/strong><\/h2>\n\n\n\n<p>The secret to a high hit rate using <code>Vary<\/code> is normalization. Don&#8217;t rely on the raw header sent by the user. Transform it into generic categories before the cache decides to look for the object. At Transparent Edge, we provide auxiliary headers so the system can perform <code>Vary<\/code> for them. One example is the <code>X-Device<\/code> header.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sub  vcl_recv {\n    set req.http.X-Vary-TCDN = req.http.X-Vary-TCDN + \";\" +req.http.X-Device;\n    # <em>You will only have 3 variants per URL (mobile, tablet, desktop), not 20,000<\/em>.\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">What are you taking home?<\/h2>\n\n\n\n<p>At Transparent Edge, we encourage you to use <code>Vary<\/code> judiciously and strategically, and to use our auxiliary <code>X-Vary-TCDN<\/code> header so the system can perform <code>Vary<\/code> operations based on any criteria. If you need more information, don&#8217;t hesitate to ask us, and our support team will be happy to assist you with your specific use case.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.linkedin.com\/in\/diegosuarezgarcia\/\">Diego Su\u00e1rez<\/a> is Chief Technology Officer at Transparent Edge.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>If you&#8217;re ever looking for Diego, you\u2019ll likely find him where there\u2019s an operating system involved\u2014not taking the easy path, but always diving into the most complex alternative. His constant edge-walking gives him the versatility and vision needed to shape the tech strategy at the core of Transparent Edge. Always straddling development and systems, he still finds time to stay in touch with users\u2014because ultimately, they\u2019re who every tech company works for.<\/em><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Taking advantage of content negotiation to do (a little) of everything with the Vary header.<\/p>\n","protected":false},"author":12,"featured_media":22743,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-22129","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The Vary header: leveraging content negotiation to do (a little) of everything - Transparent Edge<\/title>\n<meta name=\"description\" content=\"Taking advantage of content negotiation to do (a little) of everything with the Vary header.\" \/>\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.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Vary header: leveraging content negotiation to do (a little) of everything - Transparent Edge\" \/>\n<meta property=\"og:description\" content=\"Taking advantage of content negotiation to do (a little) of everything with the Vary header.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/\" \/>\n<meta property=\"og:site_name\" content=\"Transparent Edge\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-11T16:07:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-12T10:46:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2025\/12\/6-1024x576.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Diego Suarez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@tedgeservices\" \/>\n<meta name=\"twitter:site\" content=\"@tedgeservices\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/the-vary-header-leveraging-content-negotiation\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/the-vary-header-leveraging-content-negotiation\\\/\"},\"author\":{\"name\":\"Diego Suarez\",\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/#\\\/schema\\\/person\\\/0c024f4c2da7992942a924c64b1ab21a\"},\"headline\":\"The Vary header: leveraging content negotiation to do (a little) of everything\",\"datePublished\":\"2025-12-11T16:07:19+00:00\",\"dateModified\":\"2025-12-12T10:46:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/the-vary-header-leveraging-content-negotiation\\\/\"},\"wordCount\":1059,\"publisher\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/the-vary-header-leveraging-content-negotiation\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.transparentedge.eu\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/vary.png\",\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/the-vary-header-leveraging-content-negotiation\\\/\",\"url\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/the-vary-header-leveraging-content-negotiation\\\/\",\"name\":\"The Vary header: leveraging content negotiation to do (a little) of everything - Transparent Edge\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/the-vary-header-leveraging-content-negotiation\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/the-vary-header-leveraging-content-negotiation\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.transparentedge.eu\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/vary.png\",\"datePublished\":\"2025-12-11T16:07:19+00:00\",\"dateModified\":\"2025-12-12T10:46:41+00:00\",\"description\":\"Taking advantage of content negotiation to do (a little) of everything with the Vary header.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/the-vary-header-leveraging-content-negotiation\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/the-vary-header-leveraging-content-negotiation\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/the-vary-header-leveraging-content-negotiation\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.transparentedge.eu\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/vary.png\",\"contentUrl\":\"https:\\\/\\\/www.transparentedge.eu\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/vary.png\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/the-vary-header-leveraging-content-negotiation\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/www.transparentedge.eu\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Vary header: leveraging content negotiation to do (a little) of everything\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/#website\",\"url\":\"https:\\\/\\\/www.transparentedge.eu\\\/\",\"name\":\"Transparent Edge\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/#organization\"},\"alternateName\":\"Transparent Edge\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.transparentedge.eu\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/#organization\",\"name\":\"Transparent Edge Services\",\"alternateName\":\"Transparent Edge\",\"url\":\"https:\\\/\\\/www.transparentedge.eu\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.transparentedge.eu\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logotipo-cuadrado.jpg\",\"contentUrl\":\"https:\\\/\\\/www.transparentedge.eu\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logotipo-cuadrado.jpg\",\"width\":1328,\"height\":1180,\"caption\":\"Transparent Edge Services\"},\"image\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/tedgeservices\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/transparent-edge\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC5zZoyZmiLGBTAdiFpj2xHA\\\/videos\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/#\\\/schema\\\/person\\\/0c024f4c2da7992942a924c64b1ab21a\",\"name\":\"Diego Suarez\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/diegosuarezgarcia\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Vary header: leveraging content negotiation to do (a little) of everything - Transparent Edge","description":"Taking advantage of content negotiation to do (a little) of everything with the Vary header.","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.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/","og_locale":"en_US","og_type":"article","og_title":"The Vary header: leveraging content negotiation to do (a little) of everything - Transparent Edge","og_description":"Taking advantage of content negotiation to do (a little) of everything with the Vary header.","og_url":"https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/","og_site_name":"Transparent Edge","article_published_time":"2025-12-11T16:07:19+00:00","article_modified_time":"2025-12-12T10:46:41+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2025\/12\/6-1024x576.png","type":"image\/png"}],"author":"Diego Suarez","twitter_card":"summary_large_image","twitter_creator":"@tedgeservices","twitter_site":"@tedgeservices","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/#article","isPartOf":{"@id":"https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/"},"author":{"name":"Diego Suarez","@id":"https:\/\/www.transparentedge.eu\/#\/schema\/person\/0c024f4c2da7992942a924c64b1ab21a"},"headline":"The Vary header: leveraging content negotiation to do (a little) of everything","datePublished":"2025-12-11T16:07:19+00:00","dateModified":"2025-12-12T10:46:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/"},"wordCount":1059,"publisher":{"@id":"https:\/\/www.transparentedge.eu\/#organization"},"image":{"@id":"https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/#primaryimage"},"thumbnailUrl":"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2025\/12\/vary.png","inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/","url":"https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/","name":"The Vary header: leveraging content negotiation to do (a little) of everything - Transparent Edge","isPartOf":{"@id":"https:\/\/www.transparentedge.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/#primaryimage"},"image":{"@id":"https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/#primaryimage"},"thumbnailUrl":"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2025\/12\/vary.png","datePublished":"2025-12-11T16:07:19+00:00","dateModified":"2025-12-12T10:46:41+00:00","description":"Taking advantage of content negotiation to do (a little) of everything with the Vary header.","breadcrumb":{"@id":"https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/#primaryimage","url":"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2025\/12\/vary.png","contentUrl":"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2025\/12\/vary.png","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/www.transparentedge.eu\/blog\/the-vary-header-leveraging-content-negotiation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.transparentedge.eu\/en\/"},{"@type":"ListItem","position":2,"name":"The Vary header: leveraging content negotiation to do (a little) of everything"}]},{"@type":"WebSite","@id":"https:\/\/www.transparentedge.eu\/#website","url":"https:\/\/www.transparentedge.eu\/","name":"Transparent Edge","description":"","publisher":{"@id":"https:\/\/www.transparentedge.eu\/#organization"},"alternateName":"Transparent Edge","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.transparentedge.eu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.transparentedge.eu\/#organization","name":"Transparent Edge Services","alternateName":"Transparent Edge","url":"https:\/\/www.transparentedge.eu\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.transparentedge.eu\/#\/schema\/logo\/image\/","url":"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2023\/07\/logotipo-cuadrado.jpg","contentUrl":"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2023\/07\/logotipo-cuadrado.jpg","width":1328,"height":1180,"caption":"Transparent Edge Services"},"image":{"@id":"https:\/\/www.transparentedge.eu\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/tedgeservices","https:\/\/www.linkedin.com\/company\/transparent-edge\/","https:\/\/www.youtube.com\/channel\/UC5zZoyZmiLGBTAdiFpj2xHA\/videos"]},{"@type":"Person","@id":"https:\/\/www.transparentedge.eu\/#\/schema\/person\/0c024f4c2da7992942a924c64b1ab21a","name":"Diego Suarez","sameAs":["https:\/\/www.linkedin.com\/in\/diegosuarezgarcia\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/posts\/22129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/comments?post=22129"}],"version-history":[{"count":3,"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/posts\/22129\/revisions"}],"predecessor-version":[{"id":22138,"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/posts\/22129\/revisions\/22138"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/media\/22743"}],"wp:attachment":[{"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/media?parent=22129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/categories?post=22129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/tags?post=22129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}