Mudanças de API

Changelogs de API internas: o que muda para o outro time

6 min de leitura

Todo outro artigo neste hub assume que quem chama uma API está fora da empresa: a engenheira de uma cliente, uma parceira, alguém que achou a documentação sozinho. Muitas APIs têm um tipo de chamador completamente diferente, um time na sala ao lado ou a dois andares de distância, e isso muda a conta do que um changelog deve a ele, porque uma mensagem no Slack alcança essa pessoa e normalmente nenhum ticket de suporte chega a ser aberto. A maioria dos times conclui daí que APIs internas não precisam de changelog. O que realmente precisam é de um diferente.

O que torna o changelog de uma API interna diferente do de uma pública?

O público é alcançável diretamente, o que remove o principal motivo pelo qual a maioria dos changelogs de API pública existe: transmitir para chamadores que não podem ser contatados individualmente. O time dono de uma API interna geralmente sabe exatamente quais outros times a chamam, às vezes até o serviço específico. Isso faz de uma mensagem direcionada, não um feed público, a escolha padrão natural, e é por isso que APIs internas tão frequentemente acabam sem nenhum changelog: o time dono avisa os dois ou três times que lembra, presumindo que isso cobre todo mundo.

Changelog de API públicaChangelog de API interna
Quem lêQualquer chamador externo, geralmente inalcançável diretamenteUm conjunto pequeno, geralmente conhecido, de times internos
Canal padrãoUma página e um feedUma mensagem para os times chamadores, idealmente também uma página
Maior riscoUm chamador perde a entrada completamenteO time dono esquece um chamador cuja existência nem lembra
O que substitui “não sabemos quem nos chama”Nada; publicar amplamenteUm registro real de chamadores, mantido atualizado

Por que “simplesmente avisamos os times que nos chamam” falha?

Porque o conjunto de chamadores nunca é tão pequeno ou estático quanto o time dono lembra. Um serviço construído para uma consumidora ganha um segundo chamador seis meses depois, por uma integração que ninguém anunciou, e a lista mental de “quem nos chama” do time dono agora está errada sem que ninguém perceba. A falha é comum e ordinária, o resultado padrão de confiar na memória em vez de em um registro, não um sinal de que alguém foi descuidado. O que é um breaking change cobre como decidir se uma mudança de API sequer conta como quebradora; o caso interno adiciona uma segunda pergunta, mais difícil, em cima dessa: saber a quem avisar.

Uma API interna sequer precisa de uma página de changelog no estilo público?

Geralmente sim, mesmo que o canal principal seja direto. Uma página dá à mensagem direta algo para apontar, então o aviso pode ficar curto (“breaking change em /v2/accounts, detalhes aqui”) em vez de tentar carregar toda a explicação em uma mensagem de chat que vai sumir na rolagem. Também se torna o que um time novo, ou um que perdeu a mensagem direta, pode conferir quando a integração dele quebra e ele tenta entender por quê. A página não precisa ser polida nem pública; precisa ser linkável e sobreviver ao tópico do Slack que a anunciou.

Quem realmente mantém a lista de chamadores?

O time dono, e isso precisa ser tratado como um artefato de verdade, não como conhecimento tribal. A versão mais barata é um arquivo no próprio repositório da API, uma lista curta de serviços consumidores com uma responsável por entrada, atualizada toda vez que uma nova integração é construída, a mesma disciplina de qualquer declaração de dependência. A alternativa, perguntar por aí antes de cada breaking change, funciona até aquela vez em que alguém esquece de perguntar à pessoa certa, e uma API interna que quebra silenciosamente para um time é um incidente menor que um público, mas continua sendo um incidente, geralmente descoberto pelo próprio plantão daquele time em vez de pela dona da API.

# consumers.yml
- service: billing-service
  owner: "#team-billing"
  since: 2026-03-01
- service: reporting-pipeline
  owner: "#team-analytics"
  since: 2026-06-14

Um arquivo assim transforma “a quem precisamos avisar” de uma pergunta em uma consulta. Ferramentas construídas exatamente para esse problema, como o catálogo de serviços do Backstage, modelam APIs como entidades de primeira classe com consumidores declarados pela mesma razão: assim que uma organização tem serviços internos suficientes, a memória de ninguém sobre quem chama o quê continua precisa sozinha, e algo precisa guardar esse registro no lugar dela. A documentação de qualquer ferramenta que vocês já rodem internamente geralmente é o lugar certo para checar antes de construir uma própria.

O que pertence a uma entrada de changelog interna que uma pública não precisaria?

Mais especificidade operacional, porque quem lê é outra engenheira que vai agir com base nisso dentro da mesma infraestrutura, não ler isso como um resumo. Em quais ambientes a mudança está no ar e quando, porque serviços internos costumam ser promovidos por estágios que um chamador público nunca vê. Se a mudança exige uma atualização de configuração ou de biblioteca cliente do lado da consumidora, formulada como um comando se existir um. E, porque chamadores internos costumam poder coordenar a correção diretamente com o time dono, um contato nomeado em vez de um canal de suporte: “avise a @maria se isso quebrar alguma coisa” é uma linha perfeitamente razoável em uma entrada interna e uma estranha em um changelog de API pública.

Isso se aplica do mesmo jeito a um changelog dentro de um monorepo?

Isso agudiza o mesmo problema em vez de substituí-lo. Changelogs de monorepo cobre quando um pacote precisa do próprio changelog; uma API interna que é um entre vários pacotes em um monorepo ainda precisa que seus consumidores sejam rastreados explicitamente, porque compartilhar o mesmo repositório com quem a chama não significa que essas pessoas vão notar uma mudança a menos que algo diga a elas para olhar. Proximidade no repositório não é a mesma coisa que proximidade na atenção.

FAQ

Uma API puramente interna precisa de changelog se tiver só um chamador? Quase nada, e uma mensagem direta para esse único time geralmente basta. O changelog se paga assim que existe mais de um chamador, ou assim que a lista de chamadores já surpreendeu o time dono uma vez, porque esse é o sinal de que a memória sozinha não é mais confiável.

Mudanças de API internas deveriam passar pela mesma revisão que as públicas? A redação pode ser mais leve, já que quem lê é uma colega e não uma chamadora externa, mas a decisão de se uma mudança é quebradora merece o mesmo cuidado nos dois casos. Uma chamadora interna ainda tem código em produção que depende do comportamento antigo.

Como descobrir quem chama uma API interna se isso nunca foi rastreado? Logs do servidor ou dados de tráfego de um service mesh são a resposta honesta se nenhum registro de consumidores nunca foi mantido; trate essa descoberta como o momento de começar um, não como uma faxina única.

Uma mensagem no Slack basta, ou uma mudança interna ainda precisa de uma entrada formal de changelog? As duas coisas, para qualquer coisa que não seja puramente aditiva. A mensagem é o que se lê a tempo; a entrada é o que um time investigando um problema semanas depois, que nunca viu a mensagem, ainda consegue encontrar.


As afirmações técnicas deste artigo não foram revisadas de forma independente. Se algo estiver errado, avise a gente e vamos corrigir.

Relacionado na changeloop: Documentação para desenvolvedores, Comparativo de ferramentas de changelog

changeloop
O time por trás de um changelog que fecha o loop. Os usuários pedem algo, sua equipe entrega, quem pediu fica sabendo.