{"id":19949,"date":"2023-09-21T16:40:15","date_gmt":"2023-09-21T14:40:15","guid":{"rendered":"https:\/\/www.transparentedge.eu\/en\/blog\/"},"modified":"2025-07-08T15:19:28","modified_gmt":"2025-07-08T13:19:28","slug":"tokens-to-secure-content","status":"publish","type":"post","link":"https:\/\/www.transparentedge.eu\/en\/blog\/tokens-to-secure-content\/","title":{"rendered":"Securing content through the use of tokens"},"content":{"rendered":"\n<p>Content delivery networks play a fundamental role in video broadcasting and, more precisely, in securing the transmission itself. In recent years we have had the opportunity to work a lot on this point through the use of tokens together with one of our clients. In today&#8217;s post I tell you what we have accomplished together.<\/p>\n\n\n\n<p>Unlike other resources that can be delivered by a <a href=\"https:\/\/www.transparentedge.eu\/en\/content-delivery-cdn\/next-generation-cdn\/\">CDN<\/a>, videos have a differentiating characteristic: they are heavy, very heavy. According to our real-time traffic monitoring, more than 30% of the traffic delivered daily by our CDN corresponds to video resources, despite being only 1% of the total requests.<\/p>\n\n\n\n<p>This information simply serves to illustrate the weight I am talking about <strong>because it directly influences bandwidth and the cost of outgoing or egress traffic<\/strong>. Correctly sizing these two variables is essential to guarantee the quality of the service (availability, response time, low latency, etc.) and the user experience.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">This is how we distribute the videos<\/h3>\n\n\n\n<p>At Transparent Edge \u2013 and with permission from <a href=\"https:\/\/en.wikipedia.org\/wiki\/Julius_Caesar\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Julius Caesar<\/a> \u2013 we follow a <em>d\u00edvide et impera<\/em> approach. This approach invites us to divide a complex problem into subproblems of an equivalent but simpler nature and, consequently, more easily manageable. Thus,<strong> we carry out the transmission in a staggered and progressive manner, in smaller, lighter fragments called <em>chunks<\/em><\/strong>.<\/p>\n\n\n\n<p>We went from having a single resource, a video of a certain length, to having a multitude of small resources. To determine the order in which these chunks are played, we use an index. We call these indexes <em>manifests<\/em>.<\/p>\n\n\n\n<p>In the case of a video on demand, your manifest could be the index of all the <em>chunks <\/em>that make up that video, from start to finish; conversely, in the case of a live broadcast, this manifest will be gradually refreshed as the broadcast progresses.<\/p>\n\n\n\n<p>In terms of cache policies, in the first case we could set relatively high persistence times, for example with a \u2018<code>max-age<\/code>\u2018 of one week in the \u2018<code>Cache-Control<\/code>\u2018 header. However, in the second case, the cache policy should be radically different: with a minimum persistence of a few seconds, depending on the duration of these <em>chunks<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How to secure content using tokens<\/h3>\n\n\n\n<p>We can imagine a token as a kind of dynamic signature generated by the application from which the user plays the content and verified by the client&#8217;s origin. We say it is dynamic because it is updated as the playback progresses, being valid only for a certain period of time.<\/p>\n\n\n\n<p>To generate a token we need certain variables: the user&#8217;s IP address, the start and end of the token&#8217;s validity period, a secret key, etc. The specific variables depend in each case on the particular needs of each client.<\/p>\n\n\n\n<p>In any case, these variables are concatenated in a certain way (e.g. <code>[&lt;IP address>][&lt;valid from>][&lt;valid until>][&lt;secret key>]<\/code>) and a cryptographic or hash function is applied to them. This function will convert the input string into an unintelligible sequence of characters, as if <a href=\"https:\/\/en.wikipedia.org\/wiki\/Schr%C3%B6dinger%27s_cat\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Schr\u00f6dinger&#8217;s cat<\/a> had escaped from its box and, enraged (and perhaps zombie-like), had started jumping around on the computer keyboard.<\/p>\n\n\n\n<p>The resulting hash, together with the public variables (the user&#8217;s IP address and the start and end of the token&#8217;s validity period), will allow us to compose the token itself, which will be sent to the client&#8217;s backend, for example: <code>&lt;IP address>-&lt;hash>-&lt;valid from>-&lt;valid until><\/code>.<\/p>\n\n\n\n<p>The request received by the origin will collect this token and extract the different fields that make it up. It will take the variables and, together with the secret key, it will repeat the same steps previously executed on the user&#8217;s side and compare the resulting hashes. For the token received to be valid, both must necessarily match.<\/p>\n\n\n\n<p>At this point, we can find different scenarios:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If the origin does not receive a token or if the token is invalid, the origin might respond with a status <em>code 401 (Unauthorized)<\/em>;\u00a0<\/li>\n\n\n\n<li>If the token validity period has not yet started, the origin may return a <em>404 (Not Found)<\/em>;<\/li>\n\n\n\n<li>If the validity period has expired, the origin may return a <em>410 (Gone)<\/em>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">The challenge from a CDN perspective<\/h3>\n\n\n\n<p>The use of tokens irremediably affects the cache key. Each request will be different from all the others, even if they refer to the same resource or asset (<em>chunk <\/em>or <em>manifest<\/em>), collapsing the hit ratio and the efficiency of the cache itself.<\/p>\n\n\n\n<p>To deal with this problem we can follow two strategies:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Implement a preflight request<\/strong> so that when receiving a request for token-secured content, an external service is invoked at the client&#8217;s origin (backend) to tell us whether the token is valid or not and, if so, return the cached object. To do this, <a href=\"https:\/\/www.varnish-software.com\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Varnish Enterprise<\/a> provides us with very interesting tools, such as the http VMOD. This approach is similar to the one we follow in other use cases and scenarios of a very different nature to the one we are dealing with now, such as the implementation of payment walls or paywalls.<\/li>\n\n\n\n<li><strong>Delegate the token verification mechanism to the CDN itself<\/strong>. To do this, the client must share with us the way in which the signature is generated. This is the strategy we have used in the case I am presenting to you today. At Transparent Edge, we provide an <a href=\"https:\/\/docs.transparentedge.eu\/security\/waf\/token\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">out-of-the-box solution<\/a> to protect content using a token, which can be easily integrated into our clients&#8217; VCL configuration. Here, Varnish Enterprise provides us with the VMOD crypto, which makes our lives easier when carrying out the cryptographic operations we talked about earlier.<\/li>\n<\/ol>\n\n\n\n<p>The main advantage of the chosen approach is not only to ensure adequate cache efficiency, but also to free the client&#8217;s backend from all the computation required to validate one after another the different tokens sent in the underlying requests. In addition, executing these calculations at the edge improves the user experience thanks to the network of nodes strategically distributed around the world.<\/p>\n\n\n\n<p>In the case we are addressing in this post, we have worked alongside our client for the last few years. It is an honour to continue walking alongside them and <strong>adapting our functionalities to the particular needs of each project.<\/strong><\/p>\n\n\n\n<p>As <a href=\"https:\/\/en.wikipedia.org\/wiki\/Antonio_Machado\">Antonio Machado<\/a> said, \u201cWalker, your footprints are the path and nothing else; walker, there is no path, the path is made by walking.\u201d<\/p>\n\n\n\n<p>We keep walking.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.linkedin.com\/in\/alberto-suarez-lopez\/\">Alberto Su\u00e1rez L\u00f3pez<\/a> is a systems administrator 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>More Asturian than cider, Alberto studied Technical Engineering in Management Information Technology and a Postgraduate Degree in Web Engineering at the University of Oviedo. Since then, he has faced all possible types of UNIX infrastructure and has defeated them all thanks to his vast knowledge that makes him an all-rounder when faced with any technical problem.<\/em><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>In this post we discuss how to secure the delivery of video content with tokens and what strategy we use in our CDN.<\/p>\n","protected":false},"author":11,"featured_media":19669,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[7],"tags":[139,140,148,157],"class_list":["post-19949","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-cdn-en","tag-distribucion-de-contenidos-en","tag-contenido-audiovisual-en","tag-alta-disponibilidad-en"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Securing content through the use of tokens - Transparent Edge<\/title>\n<meta name=\"description\" content=\"In this post we discuss how to secure the delivery of video content with tokens and what strategy we use in our CDN.\" \/>\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\/tokens-to-secure-content\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Securing content through the use of tokens - Transparent Edge\" \/>\n<meta property=\"og:description\" content=\"In this post we discuss how to secure the delivery of video content with tokens and what strategy we use in our CDN.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.transparentedge.eu\/blog\/tokens-to-secure-content\/\" \/>\n<meta property=\"og:site_name\" content=\"Transparent Edge\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-21T14:40:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-08T13:19:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2022\/07\/EN-_-Blog-_-Invisibles-1024x684.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"684\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Alberto 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\\\/tokens-to-secure-content\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/tokens-to-secure-content\\\/\"},\"author\":{\"name\":\"Alberto Suarez\",\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/#\\\/schema\\\/person\\\/40882a3fd65aebc50b53cf0f75d692ec\"},\"headline\":\"Securing content through the use of tokens\",\"datePublished\":\"2023-09-21T14:40:15+00:00\",\"dateModified\":\"2025-07-08T13:19:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/tokens-to-secure-content\\\/\"},\"wordCount\":1120,\"publisher\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/tokens-to-secure-content\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.transparentedge.eu\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/EN-_-Blog-_-Invisibles.jpg\",\"keywords\":[\"CDN\",\"distribuci\u00f3n de contenidos\",\"contenido audiovisual.\",\"alta disponibilidad\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/tokens-to-secure-content\\\/\",\"url\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/tokens-to-secure-content\\\/\",\"name\":\"Securing content through the use of tokens - Transparent Edge\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/tokens-to-secure-content\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/tokens-to-secure-content\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.transparentedge.eu\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/EN-_-Blog-_-Invisibles.jpg\",\"datePublished\":\"2023-09-21T14:40:15+00:00\",\"dateModified\":\"2025-07-08T13:19:28+00:00\",\"description\":\"In this post we discuss how to secure the delivery of video content with tokens and what strategy we use in our CDN.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/tokens-to-secure-content\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/tokens-to-secure-content\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/tokens-to-secure-content\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.transparentedge.eu\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/EN-_-Blog-_-Invisibles.jpg\",\"contentUrl\":\"https:\\\/\\\/www.transparentedge.eu\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/EN-_-Blog-_-Invisibles.jpg\",\"width\":8192,\"height\":5468},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.transparentedge.eu\\\/blog\\\/tokens-to-secure-content\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/www.transparentedge.eu\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Securing content through the use of tokens\"}]},{\"@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\\\/40882a3fd65aebc50b53cf0f75d692ec\",\"name\":\"Alberto Suarez\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/alberto-suarez-lopez\\\/overlay\\\/photo\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Securing content through the use of tokens - Transparent Edge","description":"In this post we discuss how to secure the delivery of video content with tokens and what strategy we use in our CDN.","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\/tokens-to-secure-content\/","og_locale":"en_US","og_type":"article","og_title":"Securing content through the use of tokens - Transparent Edge","og_description":"In this post we discuss how to secure the delivery of video content with tokens and what strategy we use in our CDN.","og_url":"https:\/\/www.transparentedge.eu\/blog\/tokens-to-secure-content\/","og_site_name":"Transparent Edge","article_published_time":"2023-09-21T14:40:15+00:00","article_modified_time":"2025-07-08T13:19:28+00:00","og_image":[{"width":1024,"height":684,"url":"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2022\/07\/EN-_-Blog-_-Invisibles-1024x684.jpg","type":"image\/jpeg"}],"author":"Alberto 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\/tokens-to-secure-content\/#article","isPartOf":{"@id":"https:\/\/www.transparentedge.eu\/blog\/tokens-to-secure-content\/"},"author":{"name":"Alberto Suarez","@id":"https:\/\/www.transparentedge.eu\/#\/schema\/person\/40882a3fd65aebc50b53cf0f75d692ec"},"headline":"Securing content through the use of tokens","datePublished":"2023-09-21T14:40:15+00:00","dateModified":"2025-07-08T13:19:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.transparentedge.eu\/blog\/tokens-to-secure-content\/"},"wordCount":1120,"publisher":{"@id":"https:\/\/www.transparentedge.eu\/#organization"},"image":{"@id":"https:\/\/www.transparentedge.eu\/blog\/tokens-to-secure-content\/#primaryimage"},"thumbnailUrl":"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2022\/07\/EN-_-Blog-_-Invisibles.jpg","keywords":["CDN","distribuci\u00f3n de contenidos","contenido audiovisual.","alta disponibilidad"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.transparentedge.eu\/blog\/tokens-to-secure-content\/","url":"https:\/\/www.transparentedge.eu\/blog\/tokens-to-secure-content\/","name":"Securing content through the use of tokens - Transparent Edge","isPartOf":{"@id":"https:\/\/www.transparentedge.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.transparentedge.eu\/blog\/tokens-to-secure-content\/#primaryimage"},"image":{"@id":"https:\/\/www.transparentedge.eu\/blog\/tokens-to-secure-content\/#primaryimage"},"thumbnailUrl":"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2022\/07\/EN-_-Blog-_-Invisibles.jpg","datePublished":"2023-09-21T14:40:15+00:00","dateModified":"2025-07-08T13:19:28+00:00","description":"In this post we discuss how to secure the delivery of video content with tokens and what strategy we use in our CDN.","breadcrumb":{"@id":"https:\/\/www.transparentedge.eu\/blog\/tokens-to-secure-content\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.transparentedge.eu\/blog\/tokens-to-secure-content\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.transparentedge.eu\/blog\/tokens-to-secure-content\/#primaryimage","url":"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2022\/07\/EN-_-Blog-_-Invisibles.jpg","contentUrl":"https:\/\/www.transparentedge.eu\/wp-content\/uploads\/2022\/07\/EN-_-Blog-_-Invisibles.jpg","width":8192,"height":5468},{"@type":"BreadcrumbList","@id":"https:\/\/www.transparentedge.eu\/blog\/tokens-to-secure-content\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.transparentedge.eu\/en\/"},{"@type":"ListItem","position":2,"name":"Securing content through the use of tokens"}]},{"@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\/40882a3fd65aebc50b53cf0f75d692ec","name":"Alberto Suarez","sameAs":["https:\/\/www.linkedin.com\/in\/alberto-suarez-lopez\/overlay\/photo\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/posts\/19949","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\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/comments?post=19949"}],"version-history":[{"count":8,"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/posts\/19949\/revisions"}],"predecessor-version":[{"id":21142,"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/posts\/19949\/revisions\/21142"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/media\/19669"}],"wp:attachment":[{"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/media?parent=19949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/categories?post=19949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.transparentedge.eu\/en\/wp-json\/wp\/v2\/tags?post=19949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}