{"id":1325,"date":"2026-10-13T04:01:28","date_gmt":"2026-10-13T07:01:28","guid":{"rendered":"https:\/\/adrianosantostreina.com.br\/blog\/ia-code-review-como-usar-sem-se-enganar-2\/"},"modified":"2026-10-13T04:01:37","modified_gmt":"2026-10-13T07:01:37","slug":"ia-code-review-como-usar-sem-se-enganar-2","status":"publish","type":"post","link":"https:\/\/adrianosantostreina.com.br\/blog\/ia-code-review-como-usar-sem-se-enganar-2\/","title":{"rendered":"O Aprovador Autom\u00e1tico: Por Que Sua IA de Code Review Pode Estar Carimbando Bugs Como &#8220;LGTM&#8221;"},"content":{"rendered":"<p>Um pull request chega com tr\u00eas arquivos modificados, oitenta linhas de diff, e o bot de revis\u00e3o de IA comenta: &#8220;C\u00f3digo bem estruturado, segue os padr\u00f5es do projeto, nenhuma vulnerabilidade detectada. Aprovado.&#8221; O time l\u00ea o coment\u00e1rio, v\u00ea o selo verde, aprova em cima e segue para o merge. Duas semanas depois, em produ\u00e7\u00e3o, uma condi\u00e7\u00e3o de corrida silenciosa come\u00e7a a corromper registros em um sistema de reserva de estoque \u2014 exatamente o tipo de problema que um revisor humano experiente teria sentido s\u00f3 de olhar para a ordem das opera\u00e7\u00f5es, mas que o bot, otimizado para padr\u00f5es sint\u00e1ticos e heur\u00edsticas de estilo, nunca foi treinado para enxergar como um risco concreto naquele contexto de neg\u00f3cio.<\/p>\n<p>Esse cen\u00e1rio n\u00e3o \u00e9 hipot\u00e9tico nem raro. \u00c9 a consequ\u00eancia previs\u00edvel de tratar ferramentas de IA para code review como substitutas do julgamento humano, em vez de como um filtro adicional com escopo bem definido. O mercado de <a href=\"https:\/\/pt.aikido.dev\/blog\/best-ai-code-review-tools\" target=\"_blank\" rel=\"noopener\">ferramentas de revis\u00e3o de c\u00f3digo com IA cresceu rapidamente em 2026<\/a>, e a promessa \u00e9 sedutora: menos tempo gasto em coment\u00e1rios mec\u00e2nicos, mais foco em arquitetura. O problema \u00e9 que a ado\u00e7\u00e3o est\u00e1 acontecendo mais r\u00e1pido do que a compreens\u00e3o dos seus limites. Este artigo \u00e9 sobre onde a IA no code review realmente ajuda, onde ela engana por omiss\u00e3o, e como desenhar um processo que aproveite a velocidade sem herdar a cegueira do modelo.<\/p>\n<h2>O que a IA de code review realmente avalia (e o que ela finge avaliar)<\/h2>\n<p>A maioria das ferramentas de revis\u00e3o com IA \u2014 sejam integra\u00e7\u00f5es de LLM gen\u00e9ricas via API, sejam produtos dedicados como os listados em comparativos de <a href=\"https:\/\/www.verdent.ai\/pt\/guides\/best-ai-for-code-review-2026\" target=\"_blank\" rel=\"noopener\">revis\u00e3o de c\u00f3digo com IA para 2026<\/a> \u2014 opera sobre um contexto limitado: o diff, talvez alguns arquivos vizinhos, \u00e0s vezes um resumo do README ou de guias de estilo do reposit\u00f3rio. Isso \u00e9 suficiente para capturar uma classe espec\u00edfica de problemas:<\/p>\n<ul>\n<li>Inconsist\u00eancias de nomenclatura e formata\u00e7\u00e3o em rela\u00e7\u00e3o ao padr\u00e3o do projeto.<\/li>\n<li>Padr\u00f5es sint\u00e1ticos conhecidos de vulnerabilidade (SQL injection por concatena\u00e7\u00e3o de string, uso de <code>eval<\/code>, segredos hardcoded).<\/li>\n<li>Fun\u00e7\u00f5es com complexidade ciclom\u00e1tica exagerada ou duplica\u00e7\u00e3o \u00f3bvia.<\/li>\n<li>Aus\u00eancia de tratamento de erro em chamadas que tipicamente falham (I\/O, rede, parsing).<\/li>\n<\/ul>\n<p>O que ela n\u00e3o captura, estruturalmente, \u00e9 qualquer problema que dependa de contexto de neg\u00f3cio, de estado distribu\u00eddo ao longo do tempo, ou de invariantes que n\u00e3o est\u00e3o escritos em lugar nenhum do c\u00f3digo \u2014 porque vivem na cabe\u00e7a de quem desenhou o sistema. Um revisor humano s\u00eanior, ao ver uma fun\u00e7\u00e3o que atualiza saldo sem lock, pergunta &#8220;essa rotina pode ser chamada concorrentemente?&#8221; porque ele sabe, por experi\u00eancia com aquele dom\u00ednio, que esse servi\u00e7o \u00e9 invocado por tr\u00eas filas diferentes. A IA n\u00e3o sabe disso a menos que esteja escrito explicitamente no diff ou em algum arquivo que ela tenha acesso \u2014 e normalmente n\u00e3o est\u00e1.<\/p>\n<h3>O vi\u00e9s da flu\u00eancia: por que o coment\u00e1rio da IA parece mais confi\u00e1vel do que \u00e9<\/h3>\n<p>H\u00e1 um efeito psicol\u00f3gico pouco discutido: coment\u00e1rios gerados por LLM tendem a ser bem escritos, estruturados e assertivos, o que cria uma falsa correla\u00e7\u00e3o entre qualidade da prosa e qualidade da an\u00e1lise. Um revisor humano inseguro escreve &#8220;acho que isso pode dar problema, n\u00e3o tenho certeza&#8221;. O modelo escreve &#8220;esta implementa\u00e7\u00e3o apresenta um risco de vazamento de recursos devido \u00e0 aus\u00eancia de libera\u00e7\u00e3o expl\u00edcita do descritor de arquivo&#8221; \u2014 com a mesma confian\u00e7a, esteja ele certo ou completamente errado sobre o contexto. Essa assimetria de tom \u00e9 perigosa porque desarma o ceticismo natural do revisor humano que est\u00e1 lendo o coment\u00e1rio.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> Uma discuss\u00e3o recorrente em comunidades de desenvolvedores brasileiros, como no <a href=\"https:\/\/www.reddit.com\/r\/brdev\/comments\/1ssq33a\/ia_gerando_c%C3%B3digo_sem_revis%C3%A3o_e_apenas_testando_o\/\" target=\"_blank\" rel=\"noopener\">t\u00f3pico sobre IA gerando c\u00f3digo sem revis\u00e3o no r\/brdev<\/a>, aponta que a \u00fanica forma de confiar em c\u00f3digo gerado por IA sem interven\u00e7\u00e3o humana seria combinando m\u00faltiplas camadas de verifica\u00e7\u00e3o automatizada e determin\u00edstica \u2014 n\u00e3o apenas mais uma camada de IA checando a anterior. Revis\u00e3o por IA sobre c\u00f3digo gerado por IA, sem um terceiro elemento (testes, an\u00e1lise est\u00e1tica, contrato formal), tende a reproduzir o mesmo ponto cego duas vezes.<\/p><\/blockquote>\n<h2>Desenhando um pipeline de revis\u00e3o em camadas<\/h2>\n<p>A forma correta de usar IA no code review n\u00e3o \u00e9 como gate \u00fanico, mas como uma camada entre outras, cada uma cobrindo um tipo de risco que as demais n\u00e3o cobrem. Um pipeline maduro costuma ter esta ordem de responsabilidades:<\/p>\n<ol>\n<li><strong>An\u00e1lise est\u00e1tica determin\u00edstica<\/strong> (linters, type checkers, SAST) \u2014 captura classes de erro conhecidas com zero ambiguidade.<\/li>\n<li><strong>Testes automatizados<\/strong> (unit\u00e1rios, integra\u00e7\u00e3o, propriedade) \u2014 captura regress\u00f5es de comportamento.<\/li>\n<li><strong>Revis\u00e3o por IA<\/strong> \u2014 captura padr\u00f5es sutis de estilo, poss\u00edveis vulnerabilidades n\u00e3o cobertas pelo SAST, e sugest\u00f5es de refatora\u00e7\u00e3o.<\/li>\n<li><strong>Revis\u00e3o humana<\/strong> \u2014 captura decis\u00f5es de arquitetura, trade-offs de neg\u00f3cio, e tudo que depende de contexto t\u00e1cito.<\/li>\n<\/ol>\n<p>O erro mais comum \u00e9 inverter essa ordem de confian\u00e7a: tratar o coment\u00e1rio da IA como se fosse equivalente \u00e0 camada 4, quando na pr\u00e1tica ele deveria ser tratado com o mesmo n\u00edvel de ceticismo da camada 1 \u2014 \u00fatil, mas sem poder de veto definitivo.<\/p>\n<h3>Exemplo pr\u00e1tico: configurando um gate de CI que usa IA sem lhe dar autoridade final<\/h3>\n<p>Veja um exemplo de workflow de GitHub Actions que invoca uma revis\u00e3o por IA, mas a trata como um coment\u00e1rio informativo, n\u00e3o como um check obrigat\u00f3rio:<\/p>\n<pre><code>name: ai-code-review\n\non:\n  pull_request:\n    types: [opened, synchronize]\n\njobs:\n  static-checks:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\/checkout@v4\n      - name: Rodar linter e type checker\n        run: |\n          npm ci\n          npm run lint\n          npm run typecheck\n\n  ai-review:\n    runs-on: ubuntu-latest\n    needs: static-checks\n    continue-on-error: true   # nunca bloqueia o merge sozinho\n    steps:\n      - uses: actions\/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Gerar diff do PR\n        run: git diff origin\/${{ github.base_ref }}...HEAD &gt; pr.diff\n\n      - name: Enviar diff para revis\u00e3o por IA\n        env:\n          API_KEY: ${{ secrets.LLM_API_KEY }}\n        run: |\n          python scripts\/ai_review.py \\\n            --diff pr.diff \\\n            --context-files \"src\/domain\/**\/*.py\" \\\n            --output review_comment.md\n\n      - name: Postar coment\u00e1rio no PR\n        uses: actions\/github-script@v7\n        with:\n          script: |\n            const fs = require('fs');\n            const body = fs.readFileSync('review_comment.md', 'utf8');\n            github.rest.issues.createComment({\n              issue_number: context.issue.number,\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              body: `\u26a0\ufe0f **Revis\u00e3o automatizada (n\u00e3o bloqueante):**\\n\\n${body}`\n            });\n<\/code><\/pre>\n<p>Note o uso de <code>continue-on-error: true<\/code> e o prefixo expl\u00edcito no coment\u00e1rio avisando que a revis\u00e3o n\u00e3o \u00e9 bloqueante. Isso \u00e9 desenho de processo, n\u00e3o s\u00f3 configura\u00e7\u00e3o t\u00e9cnica: voc\u00ea est\u00e1 deliberadamente impedindo que a IA vire um aprovador autom\u00e1tico por omiss\u00e3o de aten\u00e7\u00e3o da equipe.<\/p>\n<h3>Dando contexto de dom\u00ednio ao modelo, n\u00e3o s\u00f3 o diff<\/h3>\n<p>Um erro recorrente \u00e9 enviar apenas o diff para o modelo, sem nenhum contexto sobre invariantes do dom\u00ednio. O script abaixo, em Python, ilustra como montar um prompt que inclui regras de neg\u00f3cio expl\u00edcitas \u2014 reduzindo, ainda que n\u00e3o eliminando, o ponto cego de contexto:<\/p>\n<pre><code>import subprocess\nfrom openai import OpenAI\n\nclient = OpenAI()\n\nDOMAIN_RULES = \"\"\"\nRegras de neg\u00f3cio relevantes para este reposit\u00f3rio:\n- Saldo de estoque \u00e9 compartilhado entre o servi\u00e7o de pedidos, o de devolu\u00e7\u00f5es\n  e o job noturno de reconcilia\u00e7\u00e3o. Qualquer altera\u00e7\u00e3o de saldo deve considerar\n  acesso concorrente.\n- Nenhuma opera\u00e7\u00e3o de escrita em `orders` pode ocorrer sem transa\u00e7\u00e3o expl\u00edcita.\n- Campos monet\u00e1rios usam Decimal, nunca float.\n\"\"\"\n\ndef revisar_diff(diff_path: str) -&gt; str:\n    with open(diff_path, \"r\", encoding=\"utf-8\") as f:\n        diff = f.read()\n\n    prompt = f\"\"\"\nVoc\u00ea \u00e9 um revisor de c\u00f3digo s\u00eanior. Analise o diff abaixo considerando\nEXCLUSIVAMENTE os riscos listados nas regras de dom\u00ednio fornecidas.\nN\u00e3o comente estilo ou formata\u00e7\u00e3o, isso j\u00e1 \u00e9 coberto por outra etapa.\nSe n\u00e3o houver viola\u00e7\u00e3o clara das regras, responda apenas \"Sem viola\u00e7\u00f5es\nde dom\u00ednio detectadas no escopo analisado\" \u2014 n\u00e3o invente riscos gen\u00e9ricos.\n\n{DOMAIN_RULES}\n\nDiff:\n{diff}\n\"\"\"\n\n    resposta = client.chat.completions.create(\n        model=\"gpt-4.1\",\n        messages=[{\"role\": \"user\", \"content\": prompt}],\n        temperature=0,\n    )\n    return resposta.choices[0].message.content\n\nif __name__ == \"__main__\":\n    print(revisar_diff(\"pr.diff\"))\n<\/code><\/pre>\n<p>Repare em dois detalhes deliberados: <code>temperature=0<\/code> para reduzir varia\u00e7\u00e3o entre execu\u00e7\u00f5es do mesmo diff, e uma instru\u00e7\u00e3o expl\u00edcita para o modelo admitir quando n\u00e3o encontrar nada \u2014 combater o vi\u00e9s de sempre produzir algum coment\u00e1rio, mesmo sem subst\u00e2ncia, que \u00e9 comum em modelos ajustados para parecerem \u00fateis.<\/p>\n<h2>Casos dif\u00edceis: onde a IA erra silenciosamente<\/h2>\n<h3>C\u00f3digo correto sintaticamente, errado semanticamente<\/h3>\n<p>O exemplo cl\u00e1ssico \u00e9 a troca de operadores l\u00f3gicos em condi\u00e7\u00f5es compostas. Um &#8220;AND&#8221; que deveria ser &#8220;OR&#8221; compila, passa no linter, n\u00e3o dispara nenhuma regra de SAST, e muitas vezes passa despercebido por uma IA de revis\u00e3o porque o c\u00f3digo &#8220;parece&#8221; plaus\u00edvel \u2014 segue conven\u00e7\u00f5es, tem nomes de vari\u00e1vel sensatos, est\u00e1 formatado corretamente. A plausibilidade sint\u00e1tica mascara o erro sem\u00e2ntico.<\/p>\n<h3>Mudan\u00e7as que parecem isoladas mas quebram contrato impl\u00edcito<\/h3>\n<p>Alterar o valor de retorno de uma fun\u00e7\u00e3o de <code>None<\/code> para uma lista vazia parece uma melhoria defensiva. Mas se em algum lugar do c\u00f3digo existe um <code>if resultado is None:<\/code> que depende exatamente desse sentinela para decidir se deve buscar dados em cache, a IA de revis\u00e3o \u2014 limitada ao contexto do diff \u2014 n\u00e3o tem como saber disso sem varredura completa da base, algo que a maioria das ferramentas n\u00e3o faz por custo de tokens e lat\u00eancia.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> Como destacado em discuss\u00f5es sobre <a href=\"https:\/\/codecapital.substack.com\/p\/por-que-voce-deveria-programar-com-ia-em-2026\" target=\"_blank\" rel=\"noopener\">programar com IA em 2026<\/a>, o ganho de produtividade real vem de combinar IA com testes de propriedade e contratos expl\u00edcitos (type hints r\u00edgidos, invariantes documentadas), n\u00e3o de confiar na IA para inferir inten\u00e7\u00e3o a partir de um recorte pequeno de c\u00f3digo.<\/p><\/blockquote>\n<h3>Falso negativo por aus\u00eancia de dados de produ\u00e7\u00e3o<\/h3>\n<p>Modelos de revis\u00e3o n\u00e3o t\u00eam acesso a m\u00e9tricas de produ\u00e7\u00e3o, volume real de tr\u00e1fego, ou distribui\u00e7\u00e3o de dados. Uma query sem \u00edndice, que parece inofensiva em um diff pequeno, \u00e9 catastr\u00f3fica em uma tabela com dezenas de milh\u00f5es de linhas e inofensiva em uma com mil. A IA n\u00e3o sabe o tamanho da tabela a menos que isso esteja expl\u00edcito em algum schema que ela tenha acesso \u2014 e raramente est\u00e1.<\/p>\n<h2>Um checklist de configura\u00e7\u00e3o para n\u00e3o se enganar<\/h2>\n<p>Antes de adotar qualquer ferramenta de revis\u00e3o por IA \u2014 seja um produto dedicado, seja uma integra\u00e7\u00e3o caseira \u2014 vale fixar algumas pr\u00e1ticas operacionais:<\/p>\n<ul>\n<li><strong>Nunca torne o check de IA um requisito bloqueante de merge sozinho.<\/strong> Ele deve ser informativo, complementando revis\u00e3o humana e testes, nunca os substituindo.<\/li>\n<li><strong>Audite periodicamente falsos positivos e falsos negativos.<\/strong> Mantenha um registro de bugs que passaram pela revis\u00e3o de IA sem alerta, e use isso para recalibrar o escopo de contexto fornecido ao modelo.<\/li>\n<li><strong>Restrinja o escopo do prompt a categorias espec\u00edficas de risco<\/strong>, em vez de pedir uma &#8220;revis\u00e3o geral&#8221; \u2014 isso reduz alucina\u00e7\u00e3o de problemas gen\u00e9ricos e aumenta a precis\u00e3o nos que realmente importam para aquele dom\u00ednio.<\/li>\n<li><strong>Trate coment\u00e1rios da IA com o mesmo ceticismo que trataria um j\u00fanior entusiasmado<\/strong>: \u00fatil, r\u00e1pido, mas sem hist\u00f3rico de julgamento comprovado no seu dom\u00ednio espec\u00edfico.<\/li>\n<li><strong>Combine com an\u00e1lise est\u00e1tica determin\u00edstica<\/strong> para as classes de erro que n\u00e3o dependem de julgamento \u2014 n\u00e3o desperdice os tokens do modelo verificando coisas que um linter resolve de gra\u00e7a.<\/li>\n<\/ul>\n<h3>M\u00e9tricas que importam mais do que &#8220;quantos bugs a IA encontrou&#8221;<\/h3>\n<p>Times que adotam revis\u00e3o por IA tendem a medir o volume de coment\u00e1rios gerados, como se mais coment\u00e1rios significassem mais valor. A m\u00e9trica que realmente importa \u00e9 a taxa de coment\u00e1rios acion\u00e1veis versus ru\u00eddo \u2014 e, mais importante ainda, o n\u00famero de incidentes em produ\u00e7\u00e3o que passaram pelo processo completo (IA + humano) sem alerta algum. Sem esse segundo n\u00famero, voc\u00ea n\u00e3o sabe se est\u00e1 ganhando tempo ou apenas trocando revis\u00e3o cuidadosa por uma ilus\u00e3o de seguran\u00e7a bem redigida.<\/p>\n<h2>Onde a IA realmente compensa o investimento<\/h2>\n<p>Apesar de tudo isso, h\u00e1 cen\u00e1rios em que a IA no code review entrega valor real e mensur\u00e1vel:<\/p>\n<ul>\n<li>PRs de rotina, com baixo risco de neg\u00f3cio (ajustes de formata\u00e7\u00e3o, atualiza\u00e7\u00e3o de depend\u00eancias, refatora\u00e7\u00f5es mec\u00e2nicas) \u2014 libera tempo do revisor humano para focar em PRs de maior risco.<\/li>\n<li>Primeira passada em PRs grandes, sinalizando trechos que merecem aten\u00e7\u00e3o priorit\u00e1ria do revisor humano, funcionando como um roteiro de leitura em vez de veredito.<\/li>\n<li>Consist\u00eancia de estilo em times grandes e distribu\u00eddos, onde padronizar manualmente seria custoso.<\/li>\n<li>Detec\u00e7\u00e3o de padr\u00f5es conhecidos de vulnerabilidade em c\u00f3digo escrito rapidamente sob press\u00e3o de prazo, como uma rede de seguran\u00e7a adicional.<\/li>\n<\/ul>\n<p>O denominador comum desses casos \u00e9 que todos t\u00eam escopo bem delimitado e risco de falso negativo toler\u00e1vel. Nenhum deles substitui revis\u00e3o humana em c\u00f3digo que toca dinheiro, dados sens\u00edveis, ou l\u00f3gica concorrente \u2014 ali, a IA \u00e9 um assistente de leitura, nunca o juiz final.<\/p>\n<h2>Comunidade Dev&#8217;s AI: trocando experi\u00eancias reais sobre esse limite<\/h2>\n<p>Definir onde a IA ajuda e onde ela engana n\u00e3o \u00e9 uma decis\u00e3o que se toma sozinho lendo documenta\u00e7\u00e3o de produto \u2014 \u00e9 uma calibra\u00e7\u00e3o que se refina trocando experi\u00eancias com quem j\u00e1 levou um susto em produ\u00e7\u00e3o ou j\u00e1 economizou horas de revis\u00e3o de verdade. Na <a href=\"https:\/\/adrianosantos.link\/ComunidadeDevAI\" target=\"_blank\" rel=\"noopener\">Comunidade Dev&#8217;s AI<\/a> discutimos exatamente esses casos concretos: configura\u00e7\u00f5es de pipeline que funcionaram, falsos positivos que geraram retrabalho, e os padr\u00f5es de prompt que realmente reduzem alucina\u00e7\u00e3o em revis\u00e3o de c\u00f3digo. Se voc\u00ea est\u00e1 desenhando ou revisando seu processo de code review com IA, vale somar sua experi\u00eancia \u00e0 de quem j\u00e1 passou pelos mesmos dilemas.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>IA no code review n\u00e3o \u00e9 uma pergunta de &#8220;usar ou n\u00e3o usar&#8221; \u2014 \u00e9 uma pergunta de desenho de processo. A ferramenta \u00e9 genuinamente \u00fatil quando ocupa o lugar certo na cadeia de verifica\u00e7\u00e3o: depois da an\u00e1lise est\u00e1tica, ao lado dos testes automatizados, e sempre antes do julgamento humano final, nunca no lugar dele. O risco real n\u00e3o est\u00e1 no modelo errar \u2014 modelos erram, assim como humanos erram \u2014, mas em uma equipe inteira parar de prestar aten\u00e7\u00e3o porque um coment\u00e1rio bem escrito e assertivo criou a ilus\u00e3o de que algu\u00e9m, ou algo, j\u00e1 verificou tudo o que precisava ser verificado. Como em qualquer automa\u00e7\u00e3o de julgamento cr\u00edtico, a pergunta que separa quem usa IA com maturidade de quem apenas delega responsabilidade n\u00e3o \u00e9 &#8220;o que a ferramenta disse&#8221;, mas &#8220;o que a ferramenta n\u00e3o tinha como saber&#8221;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um pull request chega com tr\u00eas arquivos modificados, oitenta linhas de diff, e o bot de revis\u00e3o de IA comenta: &#8220;C\u00f3digo bem estruturado, segue os padr\u00f5es do projeto, nenhuma vulnerabilidade detectada. Aprovado.&#8221; O time l\u00ea o coment\u00e1rio, v\u00ea o selo verde, aprova em cima e segue para o merge. Duas semanas depois, em produ\u00e7\u00e3o, uma [&hellip;]<\/p>\n","protected":false},"author":127,"featured_media":1326,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1325","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1325","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/users\/127"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1325"}],"version-history":[{"count":1,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1325\/revisions"}],"predecessor-version":[{"id":1327,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1325\/revisions\/1327"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media\/1326"}],"wp:attachment":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1325"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1325"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}