{"id":88,"date":"2026-10-25T16:00:00","date_gmt":"2026-10-25T15:00:00","guid":{"rendered":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/"},"modified":"2026-10-16T14:00:12","modified_gmt":"2026-10-16T12:00:12","slug":"give-the-agent-the-changelog-not-its-memory","status":"publish","type":"post","link":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/","title":{"rendered":"Give the agent the changelog, not its memory"},"content":{"rendered":"<p>Every TYPO3 developer who has used an AI assistant knows this moment. You ask how to do something in v14, and you get beautiful code with a class name that never existed, or a hook that was removed three majors ago. The answer is fluent, nicely formatted and wrong. The model is not lying. It is averaging over everything it has read, and for TYPO3 that is fifteen years of versions mixed together.<\/p>\n<p>I tried the obvious fix first: longer prompts. &#8220;You are a TYPO3 v14 expert. Use only APIs that exist in v14.&#8221; It helps a little, like telling a student &#8220;please do not make mistakes&#8221;. What really helped was changing what the model has in front of it. This post is the pattern I use now when an agent works on an upgrade.<\/p>\n<h2>The idea in one sentence<\/h2>\n<p>The agent may only claim a change if it can point to the official changelog entry that describes it, and I check that the entry exists.<\/p>\n<p>TYPO3 makes this easy, because the core ships its changelog as files. Every installed core has them under <code>vendor\/typo3\/cms-core\/Documentation\/Changelog\/<\/code>, one folder per version, one RST file per change: <code>Breaking-\u2026<\/code>, <code>Deprecation-\u2026<\/code>, <code>Feature-\u2026<\/code>, <code>Important-\u2026<\/code>. Each has a description, the impact, the affected installations and a migration section. That is exactly the context an agent needs, written by the people who made the change.<\/p>\n<h2>Step 1: collect the relevant entries<\/h2>\n<p>I do not dump the whole changelog into the context. The v14.0 folder alone is huge. I select by what the code actually uses. A tiny script is enough to start:<\/p>\n<pre><code class=\"language-bash\">#!\/usr\/bin\/env bash\n# changelog-context.sh &lt;version-folder&gt; &lt;keyword&gt;...\n# Prints the file names of Breaking\/Deprecation entries that mention any keyword.\nset -euo pipefail\ndir=\"vendor\/typo3\/cms-core\/Documentation\/Changelog\/$1\"\nshift\nfor word in \"$@\"; do\n  grep -rlF -- \"$word\" \"$dir\" | grep -E '\/(Breaking|Deprecation)-' || true\ndone | sort -u<\/code><\/pre>\n<pre><code class=\"language-bash\">.\/changelog-context.sh 14.0 \"pages\" \"'url'\" \"registerModule\" \"'web'\"<\/code><\/pre>\n<p>The keywords come from the code: table and field names, class names, TypoScript keys. On my hoja.in migration, the old 7.6 database had page records of the type &#8220;External URL&#8221; with the field <code>pages.url<\/code>. Searching the 14.0 folder for it finds <code>Breaking-17406-FieldUrlInTablePagesHasBeenRemoved.rst<\/code>. That entry says the field is gone, that the page type is now called &#8220;Link&#8221; and uses <code>pages.link<\/code>, and that an upgrade wizard migrates real external URLs. My import script did that mapping directly, and the comment in the script names the entry. No memory needed.<\/p>\n<p>For larger jobs, my migration plugin has a better version of this script that accepts ids, issue numbers or keywords and falls back to a cached clone of the core repository when there is no Composer vendor copy to read, for example on an old classic-mode site. And if you want filtering by version and type without grep, an MCP server like the TYPO3 Dev Companion does the same lookups as tool calls.<\/p>\n<h2>Step 2: feed entries and code together<\/h2>\n<p>The prompt then gets three parts: the code to change, the full text of the selected entries, and a strict output format. Something like this:<\/p>\n<pre><code class=\"language-text\">You migrate the files below from TYPO3 13.4 to 14.3.\n\nSources you may rely on are ONLY the changelog entries given below.\nFor every change you make, output one line:\n  file:line | what changed | changelog file name\nIf a change is needed but no entry below covers it, do not change the code.\nList it under \"UNSUPPORTED\" with the reason instead.\n\n&lt;entries&gt;\n...full text of Breaking-17406-FieldUrlInTablePagesHasBeenRemoved.rst...\n...\n&lt;\/entries&gt;\n\n&lt;code&gt;\n...\n&lt;\/code&gt;<\/code><\/pre>\n<p>Two things in there do the work. The &#8220;only the entries below&#8221; rule turns the model from an author into a reader, which it is very good at. And the UNSUPPORTED list gives it an honest way out. Without that exit, a model under pressure to be helpful fills the gap with invention. With it, I get a short list of questions, which is much cheaper than a hidden bug.<\/p>\n<h2>Step 3: verify every citation<\/h2>\n<p>A citation is only worth something if it is real. Models can invent file names too, with very convincing numbers. So the answer goes through a dumb check before I read it:<\/p>\n<pre><code class=\"language-bash\">changelog=vendor\/typo3\/cms-core\/Documentation\/Changelog\ngrep -oE '(Breaking|Deprecation|Feature|Important)-[0-9]+-[A-Za-z0-9-]+.rst' answer.md | sort -u |\nwhile read -r entry; do\n  if find \"$changelog\" -name \"$entry\" | grep -q .; then\n    echo \"ok       $entry\"\n  else\n    echo \"MISSING  $entry\"\n  fi\ndone<\/code><\/pre>\n<p>Any <code>MISSING<\/code> line means the answer goes back, no discussion. Any change line without a file name goes back too. This sounds strict, but in practice it costs seconds, and it changes the behaviour of the whole loop: the agent learns inside the session that a source is required, and the answers get shorter and better.<\/p>\n<h2>Step 4: the citation is not the review<\/h2>\n<p>A real entry can still be applied wrongly. The changelog for module naming in v14 (<code>Feature-107628<\/code>) says the main module <code>web<\/code> was renamed to <code>content<\/code>. An agent reading only that would change every <code>'parent' =&gt; 'web'<\/code>. But if you read the v14 source, <code>web<\/code> is registered as an alias and resolved for <code>parent<\/code>, so an extension that still supports v13 should keep <code>web<\/code>. The citation tells me <em>where<\/em> to look. Reading the entry, and sometimes the core code, is still my job. Then tests and a smoke test against a baseline from before the upgrade decide.<\/p>\n<h2>Why this works better than a clever prompt<\/h2>\n<p>I think of it in terms of what the model has to do. Without sources, it must <em>remember<\/em> which of many similar APIs belongs to which version. That is hard for people too; I still mix up which version removed what. With sources, it must <em>read and apply<\/em> a text that is right in front of it. Models are much stronger at the second task. Anthropic&#8217;s engineering team writes about this as context engineering: choosing the smallest set of high-signal tokens for the job. The TYPO3 changelog is about the highest-signal text you can find for an upgrade, and it is free.<\/p>\n<p>The side effect I like most: every change in the merge request now carries its reason. A reviewer, or me in six months, can open the RST file and see why a line changed. That alone was worth the effort.<\/p>\n<p>If this pattern helps you in your next upgrade, I will be really happy. Cheers!<\/p>\n<h2>Further reading<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.typo3.org\/c\/typo3\/cms-core\/main\/en-us\/Index.html\">TYPO3 core changelog<\/a><\/li>\n<li><a href=\"https:\/\/docs.typo3.org\/permalink\/changelog:breaking-17406-1762953718\">Breaking: #17406 \u2013 Field &#8220;url&#8221; in table &#8220;pages&#8221; has been removed<\/a><\/li>\n<li><a href=\"https:\/\/www.anthropic.com\/engineering\/effective-context-engineering-for-ai-agents\">Anthropic: Effective context engineering for AI agents<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Models invent TYPO3 APIs with great confidence. My fix is context, not a better prompt: feed the real changelog entries, demand a citation per change, and reject answers without one.<\/p>\n","protected":false},"author":1,"featured_media":89,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[34,36,5,25],"class_list":["post-88","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-engineering","tag-ai-agents","tag-prompt-engineering","tag-typo3","tag-upgrades"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Give the AI agent the TYPO3 changelog, not its memory<\/title>\n<meta name=\"description\" content=\"A context pattern for AI-assisted TYPO3 upgrades: feed Breaking and Deprecation RST files, require a changelog citation per change, verify each.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Give the AI agent the TYPO3 changelog, not its memory\" \/>\n<meta property=\"og:description\" content=\"A context pattern for AI-assisted TYPO3 upgrades: feed Breaking and Deprecation RST files, require a changelog citation per change, verify each.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/\" \/>\n<meta property=\"og:site_name\" content=\"Hoja Mustaffa Abdul Latheef \u2013 Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-25T15:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hoja.in\/blog\/wp-content\/uploads\/2026\/10\/give-the-agent-the-changelog-not-its-memory.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Hoja Mustaffa Abdul Latheef\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hojaonline\" \/>\n<meta name=\"twitter:site\" content=\"@hojaonline\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hoja Mustaffa Abdul Latheef\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/give-the-agent-the-changelog-not-its-memory\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/give-the-agent-the-changelog-not-its-memory\\\/\"},\"author\":{\"name\":\"Hoja Mustaffa Abdul Latheef\",\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#\\\/schema\\\/person\\\/e6fbd54c2061674d8ea3e7861d858c7b\"},\"headline\":\"Give the agent the changelog, not its memory\",\"datePublished\":\"2026-10-25T15:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/give-the-agent-the-changelog-not-its-memory\\\/\"},\"wordCount\":896,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#\\\/schema\\\/person\\\/e6fbd54c2061674d8ea3e7861d858c7b\"},\"image\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/give-the-agent-the-changelog-not-its-memory\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hoja.in\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/give-the-agent-the-changelog-not-its-memory.jpg\",\"keywords\":[\"AI agents\",\"Prompt engineering\",\"TYPO3\",\"Upgrades\"],\"articleSection\":[\"AI engineering\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/hoja.in\\\/blog\\\/give-the-agent-the-changelog-not-its-memory\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/give-the-agent-the-changelog-not-its-memory\\\/\",\"url\":\"https:\\\/\\\/hoja.in\\\/blog\\\/give-the-agent-the-changelog-not-its-memory\\\/\",\"name\":\"Give the AI agent the TYPO3 changelog, not its memory\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/give-the-agent-the-changelog-not-its-memory\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/give-the-agent-the-changelog-not-its-memory\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hoja.in\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/give-the-agent-the-changelog-not-its-memory.jpg\",\"datePublished\":\"2026-10-25T15:00:00+00:00\",\"description\":\"A context pattern for AI-assisted TYPO3 upgrades: feed Breaking and Deprecation RST files, require a changelog citation per change, verify each.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/give-the-agent-the-changelog-not-its-memory\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/hoja.in\\\/blog\\\/give-the-agent-the-changelog-not-its-memory\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/give-the-agent-the-changelog-not-its-memory\\\/#primaryimage\",\"url\":\"https:\\\/\\\/hoja.in\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/give-the-agent-the-changelog-not-its-memory.jpg\",\"contentUrl\":\"https:\\\/\\\/hoja.in\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/give-the-agent-the-changelog-not-its-memory.jpg\",\"width\":1200,\"height\":630,\"caption\":\"Cite the changelog or stop\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/give-the-agent-the-changelog-not-its-memory\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/hoja.in\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Give the agent the changelog, not its memory\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/hoja.in\\\/blog\\\/\",\"name\":\"Hoja Mustaffa Abdul Latheef \u2013 Blog\",\"description\":\"Notes from daily work with TYPO3, PHP and AI-assisted engineering\",\"publisher\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#\\\/schema\\\/person\\\/e6fbd54c2061674d8ea3e7861d858c7b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/hoja.in\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#\\\/schema\\\/person\\\/e6fbd54c2061674d8ea3e7861d858c7b\",\"name\":\"Hoja Mustaffa Abdul Latheef\",\"logo\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#\\\/schema\\\/person\\\/image\\\/\"},\"description\":\"Senior TYPO3 Developer at jweiland.net, TYPO3 CMS Certified Developer. I write about TYPO3 upgrades, extension development, PHP and AI-assisted engineering with Claude Code.\",\"sameAs\":[\"https:\\\/\\\/hoja.in\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Give the AI agent the TYPO3 changelog, not its memory","description":"A context pattern for AI-assisted TYPO3 upgrades: feed Breaking and Deprecation RST files, require a changelog citation per change, verify each.","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:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/","og_locale":"en_US","og_type":"article","og_title":"Give the AI agent the TYPO3 changelog, not its memory","og_description":"A context pattern for AI-assisted TYPO3 upgrades: feed Breaking and Deprecation RST files, require a changelog citation per change, verify each.","og_url":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/","og_site_name":"Hoja Mustaffa Abdul Latheef \u2013 Blog","article_published_time":"2026-10-25T15:00:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/hoja.in\/blog\/wp-content\/uploads\/2026\/10\/give-the-agent-the-changelog-not-its-memory.jpg","type":"image\/jpeg"}],"author":"Hoja Mustaffa Abdul Latheef","twitter_card":"summary_large_image","twitter_creator":"@hojaonline","twitter_site":"@hojaonline","twitter_misc":{"Written by":"Hoja Mustaffa Abdul Latheef","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/#article","isPartOf":{"@id":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/"},"author":{"name":"Hoja Mustaffa Abdul Latheef","@id":"https:\/\/hoja.in\/blog\/#\/schema\/person\/e6fbd54c2061674d8ea3e7861d858c7b"},"headline":"Give the agent the changelog, not its memory","datePublished":"2026-10-25T15:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/"},"wordCount":896,"commentCount":0,"publisher":{"@id":"https:\/\/hoja.in\/blog\/#\/schema\/person\/e6fbd54c2061674d8ea3e7861d858c7b"},"image":{"@id":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/#primaryimage"},"thumbnailUrl":"https:\/\/hoja.in\/blog\/wp-content\/uploads\/2026\/10\/give-the-agent-the-changelog-not-its-memory.jpg","keywords":["AI agents","Prompt engineering","TYPO3","Upgrades"],"articleSection":["AI engineering"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/","url":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/","name":"Give the AI agent the TYPO3 changelog, not its memory","isPartOf":{"@id":"https:\/\/hoja.in\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/#primaryimage"},"image":{"@id":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/#primaryimage"},"thumbnailUrl":"https:\/\/hoja.in\/blog\/wp-content\/uploads\/2026\/10\/give-the-agent-the-changelog-not-its-memory.jpg","datePublished":"2026-10-25T15:00:00+00:00","description":"A context pattern for AI-assisted TYPO3 upgrades: feed Breaking and Deprecation RST files, require a changelog citation per change, verify each.","breadcrumb":{"@id":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/#primaryimage","url":"https:\/\/hoja.in\/blog\/wp-content\/uploads\/2026\/10\/give-the-agent-the-changelog-not-its-memory.jpg","contentUrl":"https:\/\/hoja.in\/blog\/wp-content\/uploads\/2026\/10\/give-the-agent-the-changelog-not-its-memory.jpg","width":1200,"height":630,"caption":"Cite the changelog or stop"},{"@type":"BreadcrumbList","@id":"https:\/\/hoja.in\/blog\/give-the-agent-the-changelog-not-its-memory\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hoja.in\/blog\/"},{"@type":"ListItem","position":2,"name":"Give the agent the changelog, not its memory"}]},{"@type":"WebSite","@id":"https:\/\/hoja.in\/blog\/#website","url":"https:\/\/hoja.in\/blog\/","name":"Hoja Mustaffa Abdul Latheef \u2013 Blog","description":"Notes from daily work with TYPO3, PHP and AI-assisted engineering","publisher":{"@id":"https:\/\/hoja.in\/blog\/#\/schema\/person\/e6fbd54c2061674d8ea3e7861d858c7b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hoja.in\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/hoja.in\/blog\/#\/schema\/person\/e6fbd54c2061674d8ea3e7861d858c7b","name":"Hoja Mustaffa Abdul Latheef","logo":{"@id":"https:\/\/hoja.in\/blog\/#\/schema\/person\/image\/"},"description":"Senior TYPO3 Developer at jweiland.net, TYPO3 CMS Certified Developer. I write about TYPO3 upgrades, extension development, PHP and AI-assisted engineering with Claude Code.","sameAs":["https:\/\/hoja.in\/"]}]}},"_links":{"self":[{"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/posts\/88","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/comments?post=88"}],"version-history":[{"count":1,"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/posts\/88\/revisions"}],"predecessor-version":[{"id":167,"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/posts\/88\/revisions\/167"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/media\/89"}],"wp:attachment":[{"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/media?parent=88"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/categories?post=88"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/tags?post=88"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}