{"id":503,"date":"2026-03-09T18:21:35","date_gmt":"2026-03-09T18:21:35","guid":{"rendered":"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/deno-20-in-production-2026-migration-from-nodejs-a\/"},"modified":"2026-03-18T22:31:16","modified_gmt":"2026-03-18T22:31:16","slug":"deno-20-in-production-2026-migration-from-nodejs-a","status":"publish","type":"post","link":"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/deno-20-in-production-2026-migration-from-nodejs-a\/","title":{"rendered":"Deno 2.0 en Producci\u00f3n 2026: Migraci\u00f3n desde Node.js y Qu\u00e9 Cambi\u00f3 Realmente"},"content":{"rendered":"<p>Empecemos con honestidad: migr\u00e9 a Deno 2.0 porque me lo pidieron <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/postgresql-performance-tuning-what-i-learned-optim\/\" title=\"en una\">en una<\/a> retro de equipo y yo, con toda la confianza del mundo, dije &#8220;<a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/tcnicas-avanzadas-de-prompt-engineering-chain-of-t\/\" title=\"dos semanas\">dos semanas<\/a> m\u00e1ximo&#8221;. Spoiler: fueron cuatro semanas, un incidente <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/typescript-5x-in-2026-features-that-actually-matte\/\" title=\"en Producci\u00f3n\">en producci\u00f3n<\/a> <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/setting-up-github-actions-for-python-applications\/\" title=\"a las\">a las<\/a> 11pm de un mi\u00e9rcoles, y una cantidad de tabs <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/setting-up-github-actions-for-python-applications\/\" title=\"de GitHub\">de GitHub<\/a> Issues que prefiero no recordar.<\/p>\n<p>Trabajo en un equipo de seis personas construyendo APIs para una plataforma de anal\u00edtica de contenido. Tres microservicios en Node.js 22, todos en TypeScript, todos usando ESM, con un mont\u00f3n de dependencias de npm que llevaban a\u00f1os ah\u00ed sin <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/redis-vs-valkey-in-2026-why-the-license-change-for\/\" title=\"que Nadie\">que nadie<\/a> los tocara. El candidato perfecto para la migraci\u00f3n, en teor\u00eda.<\/p>\n<h2>Tres Microservicios, Cuatro Semanas, y un Mi\u00e9rcoles Muy Complicado<\/h2>\n<p>Eleg\u00ed empezar con el servicio m\u00e1s peque\u00f1o: un worker que procesa webhooks entrantes, transforma los payloads y los encola en Redis. Unas 800 l\u00edneas de TypeScript, cuatro dependencias directas en npm. Pens\u00e9 que ser\u00eda el caso ideal para validar el proceso antes de tocar los servicios m\u00e1s cr\u00edticos.<\/p>\n<p>Lo que no calcul\u00e9 fue que &#8220;cuatro dependencias directas&#8221; significa, con el \u00e1rbol completo, algo as\u00ed como 340 paquetes. Y Deno 2.0, aunque mejor\u00f3 enormemente la compatibilidad con npm respecto a versiones anteriores, sigue teniendo sus opiniones sobre ciertas cosas.<\/p>\n<p>La migraci\u00f3n inicial fue sorprendentemente fluida. Cambias el <code>package.json<\/code> por un <code>deno.json<\/code>, reemplazas las importaciones de npm con el prefijo <code>npm:<\/code>, y listo. En teor\u00eda. Esto funciona bien:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Antes (Node.js)\nimport { Redis } from &quot;ioredis&quot;;\nimport { z } from &quot;zod&quot;;\n\n\/\/ Despu\u00e9s (Deno 2.0)\nimport { Redis } from &quot;npm:ioredis@5.3.2&quot;;\nimport { z } from &quot;npm:zod@3.22.4&quot;;\n<\/code><\/pre>\n<p>Aqu\u00ed empez\u00f3 lo interesante. Deno 2.0 con <code>\"nodeModulesDir\": \"auto\"<\/code> resuelve la mayor\u00eda de los paquetes sin problema. Pero <code>ioredis<\/code> usaba internamente <code>node:tls<\/code> con opciones que Deno maneja de forma ligeramente distinta, y el resultado era que la conexi\u00f3n se establec\u00eda, enviabas un comando, y a los 90 segundos exactos el socket se cerraba silenciosamente. Sin error. Sin log. Nada.<\/p>\n<p>Lo encontr\u00e9 porque vi que mis m\u00e9tricas de latencia ten\u00edan spikes cada 90 segundos exactos \u2014 ese patr\u00f3n tan regular fue la pista. Abr\u00ed el issue #24891 <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/claude-vs-gpt-4o-vs-gemini-20-qu-modelo-de-ia-usar\/\" title=\"en el\">en el<\/a> repositorio de Deno y result\u00f3 que ya estaba reportado desde noviembre de 2024. La soluci\u00f3n: pin de <code>ioredis@5.3.3-rc.1<\/code> que parche\u00f3 el comportamiento, y configurar <code>keepAlive: true<\/code> expl\u00edcitamente <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/claude-vs-gpt-4o-vs-gemini-20-qu-modelo-de-ia-usar\/\" title=\"en el\">en el<\/a> cliente.<\/p>\n<p>Esto lo empuj\u00e9 un mi\u00e9rcoles <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/setting-up-github-actions-for-python-applications\/\" title=\"a las\">a las<\/a> 7pm. El error volvi\u00f3 <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/setting-up-github-actions-for-python-applications\/\" title=\"a las\">a las<\/a> 11pm porque en staging no se nota \u2014 el volumen es demasiado bajo. Me enter\u00e9 por un alert de Datadog.<\/p>\n<h2>La Compatibilidad con npm <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/typescript-5x-in-2026-features-that-actually-matte\/\" title=\"en 2026:\">en 2026:<\/a> Mejor, Pero No Perfecta<\/h2>\n<p>Ser\u00e9 directo porque he visto muchos posts que pintan esto de color de rosa.<\/p>\n<p>Deno 2.x mejor\u00f3 mucho la compatibilidad con el ecosistema npm. La mayor\u00eda de paquetes que no dependen de APIs nativas de Node.js funcionan sin cambios: <code>zod<\/code>, <code>date-fns<\/code>, <code>lodash<\/code>, <code>fastify<\/code> (s\u00ed, fastify en Deno) \u2014 sin problemas. Pero hay categor\u00edas donde las cosas se complican.<\/p>\n<p>Paquetes que usan <code>__dirname<\/code> o <code>__filename<\/code> son los primeros candidatos a romper. Deno los polyfilla, pero si el paquete hace algo creativo con esas rutas para cargar archivos relativos, el comportamiento puede diferir. Me pas\u00f3 con un SDK interno que cargaba templates desde el sistema de archivos \u2014 tres horas depurando algo que no deber\u00eda haber tardado m\u00e1s de veinte minutos.<\/p>\n<p>Despu\u00e9s est\u00e1n los paquetes con addons nativos o binarios de C++. <code>sharp<\/code> para procesamiento de im\u00e1genes funciona v\u00eda <code>npm:sharp<\/code>, pero el tiempo de instalaci\u00f3n en CI subi\u00f3 de 45 segundos a 3 minutos en nuestro caso porque Deno no cachea los binarios compilados igual que npm.<\/p>\n<p>El que m\u00e1s me sorprendi\u00f3: algunos paquetes que detectan el entorno hacen <code>typeof process !== 'undefined'<\/code> para saber si est\u00e1n en Node \u2014 y Deno 2.0 expone un objeto <code>process<\/code> para compatibilidad, as\u00ed que eso est\u00e1 bien. El problema viene cuando el paquete luego consulta <code>process.versions.node<\/code> y espera una versi\u00f3n espec\u00edfica. Deno devuelve un valor emulado que no siempre cuadra con las expectativas internas del paquete.<\/p>\n<pre><code class=\"language-typescript\">\/\/ Esto puede romper paquetes que verifican la versi\u00f3n de Node\nconsole.log(process.versions.node); \/\/ En Deno: &quot;22.0.0&quot; (emulado)\nconsole.log(Deno.version.deno);     \/\/ &quot;2.2.4&quot;\n\n\/\/ Para detectar si est\u00e1s en Deno:\nconst isDenoRuntime = typeof Deno !== &quot;undefined&quot;;\n<\/code><\/pre>\n<p>JSR (el registro de paquetes de Deno) creci\u00f3 bastante en 2025. A principios de 2026 hay paquetes como <code>@std\/http<\/code>, <code>@std\/async<\/code>, <code>@std\/encoding<\/code> que son de primera clase y funcionan perfectamente. Si puedes sustituir dependencias npm por equivalentes de JSR, la experiencia mejora notablemente.<\/p>\n<h2>El Sistema de Permisos: Pesadilla Operacional o Ventaja Real<\/h2>\n<p>Cuando empec\u00e9 a migrar pens\u00e9 que el sistema de permisos iba a ser un dolor de cabeza. Que terminar\u00eda dando <code>--allow-all<\/code> <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/typescript-5x-in-2026-features-that-actually-matte\/\" title=\"en Producci\u00f3n\">en producci\u00f3n<\/a> porque qui\u00e9n sabe qu\u00e9 permisos necesita <code>ioredis<\/code> internamente, o cualquier otro paquete npm.<\/p>\n<p>Me equivoqu\u00e9, y de forma interesante.<\/p>\n<p>El proceso de descubrir los permisos que necesita tu aplicaci\u00f3n es inc\u00f3modo al principio \u2014 ejecutas sin permisos y Deno <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/autogen-vs-langgraph-vs-crewai-el-mejor-framework\/\" title=\"te dice\">te dice<\/a> exactamente qu\u00e9 necesita \u2014 pero esa incomodidad te da algo valioso: un mapa de <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/langchain-vs-llamaindex-vs-haystack-building-produ\/\" title=\"Lo que\">lo que<\/a> tu aplicaci\u00f3n realmente hace. Nuestro worker de webhooks necesitaba exactamente esto:<\/p>\n<pre><code class=\"language-jsonc\">\/\/ deno.json\n{\n  &quot;tasks&quot;: {\n    &quot;start&quot;: &quot;deno run --allow-net=redis.internal:6379,api.externa.com:443 --allow-env=REDIS_URL,WEBHOOK_SECRET,LOG_LEVEL --allow-read=\/etc\/ssl\/certs src\/main.ts&quot;\n  },\n  &quot;nodeModulesDir&quot;: &quot;auto&quot;,\n  &quot;imports&quot;: {\n    &quot;@std\/async&quot;: &quot;jsr:@std\/async@^1.0.0&quot;\n  }\n}\n<\/code><\/pre>\n<p>Eso es todo. Un servicio que en Node.js corr\u00eda con acceso total al sistema, en Deno corre con permisos expl\u00edcitos a una IP de Redis, un dominio externo, tres variables de entorno, y los certificados SSL. Si alguien introduce una dependencia que intenta leer <code>\/etc\/passwd<\/code> o hacer una petici\u00f3n a un dominio desconocido, Deno lo bloquea en runtime.<\/p>\n<p>No s\u00e9 si esto escala a aplicaciones con 50 dependencias y comportamientos din\u00e1micos complejos \u2014 probablemente hay casos donde terminas en <code>--allow-all<\/code> de todas formas. Pero para servicios peque\u00f1os y bien definidos, cambi\u00f3 c\u00f3mo pienso sobre la seguridad de <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/langchain-vs-llamaindex-vs-haystack-building-produ\/\" title=\"Lo que\">lo que<\/a> pongo <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/typescript-5x-in-2026-features-that-actually-matte\/\" title=\"en Producci\u00f3n\">en producci\u00f3n<\/a>.<\/p>\n<h2>El Tooling Integrado: <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/langchain-vs-llamaindex-vs-haystack-building-produ\/\" title=\"Lo que\">Lo Que<\/a> No Calcul\u00e9<\/h2>\n<p>Yo asum\u00eda que el formatter, linter y test runner integrados de Deno eran un nice-to-have <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/setting-up-github-actions-for-python-applications\/\" title=\"para Proyectos\">para proyectos<\/a> peque\u00f1os. <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/bun-vs-nodejs-in-production-2026-real-migration-st\/\" title=\"Despu\u00e9s de\">Despu\u00e9s de<\/a> cuatro meses, <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/08\/benchmarks-de-asistentes-de-cdigo-ia-pruebas-de-re\/\" title=\"es lo que\">es lo que<\/a> m\u00e1s valoro del ecosistema \u2014 y no lo vi venir.<\/p>\n<p>No porque <code>deno fmt<\/code> sea mejor que Prettier (honestamente son bastante similares en resultado). Sino porque elimina una categor\u00eda <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/04\/ejecutar-llms-locales-en-2026-guia-completa-de-ollama-lm-studio-y-jan\/\" title=\"Completa de\">completa de<\/a> discusiones en el equipo. Sin archivo <code>.prettierrc<\/code>. Sin conflictos de versi\u00f3n entre <code>eslint<\/code> y <code>typescript-eslint<\/code>. Sin &#8220;\u00bfqu\u00e9 <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/setting-up-github-actions-for-python-applications\/\" title=\"Configuraci\u00f3n de\">configuraci\u00f3n de<\/a> eslint usamos?&#8221; El standard es el runtime.<\/p>\n<p>La primera semana, un compa\u00f1ero que lleva seis a\u00f1os en Node.js me pregunt\u00f3 c\u00f3mo configurar el linter. Le respond\u00ed que no hab\u00eda configuraci\u00f3n. Se qued\u00f3 callado un momento y luego dijo &#8220;ah, \u00bfentonces funciona?&#8221; S\u00ed, funciona.<\/p>\n<p>El test runner tambi\u00e9n. <code>deno test<\/code> soporta cobertura <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/08\/benchmarks-de-asistentes-de-cdigo-ia-pruebas-de-re\/\" title=\"de c\u00f3digo\">de c\u00f3digo<\/a> nativa, watch mode, y el mismo formato de <code>describe\/it<\/code> al que est\u00e1s acostumbrado si vienes de Jest o Vitest:<\/p>\n<pre><code class=\"language-typescript\">import { assertEquals, assertRejects } from &quot;jsr:@std\/assert&quot;;\nimport { processWebhook } from &quot;.\/webhook.ts&quot;;\n\nDeno.test(&quot;procesa payload v\u00e1lido correctamente&quot;, async () =&gt; {\n  const payload = { event: &quot;push&quot;, repo: &quot;mi-repo&quot; };\n  const result = await processWebhook(payload);\n  assertEquals(result.status, &quot;queued&quot;);\n  assertEquals(result.jobId.startsWith(&quot;job_&quot;), true);\n});\n\nDeno.test(&quot;rechaza payload sin firma&quot;, async () =&gt; {\n  await assertRejects(\n    () =&gt; processWebhook({}, { skipSignatureVerification: false }),\n    Error,\n    &quot;Invalid signature&quot;\n  );\n});\n<\/code><\/pre>\n<p>Sin instalar nada. Sin configurar nada. <code>deno test<\/code> y ya.<\/p>\n<p>Deno Deploy merece una menci\u00f3n aparte: lo us\u00e9 para un cuarto servicio, este s\u00ed desde cero, y el workflow de deploy es genuinamente r\u00e1pido \u2014 push al repo, deploy en menos de 30 segundos, <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/08\/edge-computing-en-2026-por-qu-los-desarrolladores\/\" title=\"Edge Computing\">edge computing<\/a> global. Pero tiene sus propias restricciones (algunas APIs de filesystem no est\u00e1n disponibles, el <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/claude-vs-gpt-4o-vs-gemini-20-qu-modelo-de-ia-usar\/\" title=\"Modelo de\">modelo de<\/a> permisos cambia), as\u00ed que no es directamente equivalente a correr Deno en tu propio servidor.<\/p>\n<h2>Cuatro Meses Despu\u00e9s: El Veredicto<\/h2>\n<p>Los tres microservicios est\u00e1n <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/typescript-5x-in-2026-features-that-actually-matte\/\" title=\"en Producci\u00f3n\">en producci\u00f3n<\/a>. Funcionan. No extra\u00f1o <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/bun-vs-nodejs-in-production-2026-real-migration-st\/\" title=\"Node.js en\">Node.js en<\/a> ninguno de ellos.<\/p>\n<p>Pero te ser\u00eda deshonesto si dijera que la migraci\u00f3n fue solo positiva. El tiempo real fue el doble de lo estimado. Las incompatibilidades de npm son reales y no siempre est\u00e1n documentadas \u2014 a veces simplemente tienes que probar y ver qu\u00e9 explota. El ecosistema de JSR, aunque crece, todav\u00eda no tiene la cobertura de npm para casos de uso especializados.<\/p>\n<p>Lo que s\u00ed cambi\u00f3: el tiempo de setup de proyectos nuevos baj\u00f3 bastante. El onboarding de un desarrollador nuevo es m\u00e1s simple porque hay menos configuraci\u00f3n que explicar. Los containers de Docker son m\u00e1s peque\u00f1os porque no llevamos <code>node_modules<\/code>. Y el c\u00f3digo TypeScript se siente m\u00e1s limpio cuando Deno es tu target, porque usas las APIs web est\u00e1ndar (<code>fetch<\/code>, <code>WebSocket<\/code>, <code>crypto<\/code>) directamente, sin polyfills.<\/p>\n<p>Mi recomendaci\u00f3n concreta: si tienes un servicio Node.js con pocas dependencias npm, bien tipado en TypeScript, y est\u00e1s dispuesto a invertir una o <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/05\/tcnicas-avanzadas-de-prompt-engineering-chain-of-t\/\" title=\"dos semanas\">dos semanas<\/a> en la migraci\u00f3n, hazlo. Si tienes un monolito con 200 dependencias npm, c\u00f3digo legacy sin tipos, y deadlines apretados, no lo hagas todav\u00eda. No porque Deno sea malo, sino porque la fricci\u00f3n de compatibilidad va a comerte vivo.<\/p>\n<p>Para proyectos nuevos <a href=\"https:\/\/blog.rebalai.com\/es\/2026\/03\/09\/turborepo-vs-nx-which-monorepo-tool-wont-drive-you\/\" title=\"en 2026\">en 2026<\/a>, ya no considerar\u00eda Node.js como primera opci\u00f3n por defecto. Deno gan\u00f3 ese puesto en mi stack.<\/p>\n<p><!-- Reviewed: 2026-03-10 | Status: ready_to_publish | Changes: meta_description extendida a 155 chars, eliminado opener AI (\"Okay\/genuinamente\") en secci\u00f3n tooling, heading tooling reescrito, estructura Primero\/Segundo\/Tercero convertida a prosa fluida, acortada intro de secci\u00f3n permisos, p\u00e1rrafo final del veredicto condensado --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Empecemos con honestidad: migr\u00e9 a Deno 2.0 porque me lo pidieron en una retro de equipo y yo, con toda la confianza del mundo, dije \u201c dos semanas m\u00e1ximo\u201d.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-503","post","type-post","status-publish","format-standard","hentry","category-general"],"_links":{"self":[{"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/posts\/503","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/comments?post=503"}],"version-history":[{"count":12,"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/posts\/503\/revisions"}],"predecessor-version":[{"id":766,"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/posts\/503\/revisions\/766"}],"wp:attachment":[{"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/media?parent=503"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/categories?post=503"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rebalai.com\/es\/wp-json\/wp\/v2\/tags?post=503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}