Visão geral
Todo mês, fazemos mudanças e lançamos vários novos recursos na X Ads API. Essas mudanças são quase sempre retrocompatíveis, no entanto, tendemos a ter algumas mudanças disruptivas por ano. Recebemos feedback dos desenvolvedores sobre os desafios que nossa cadência rápida de mudanças na Ads API traz para seus ciclos de desenvolvimento quando se trata de implementar novos recursos, lidar com depreciações e testar mudanças. Queremos melhorar a experiência do desenvolvedor usando nossa plataforma Ads, e é por isso que introduzimos o conceito de versionar nossos endpoints. Algumas definições dos conceitos que discutimos: Versão: Refere-se ao número da versão encontrado no path da URL de qualquer requisição da Ads API, por exemplo: GET //accounts. Este estilo de versionamento é conhecido como URI versioning. Mudanças disruptivas (Breaking Changes): Mudanças disruptivas são quaisquer alterações que exigem recursos do desenvolvedor para manter a funcionalidade existente. Isso inclui recursos usados para investigação sobre as mudanças que precisam ser feitas, determinação de features/endpoints sendo depreciados e implementação final de todas essas mudanças. Uma lista de mudanças disruptivas inclui coisas como:- Remover um param da requisição/resposta da API
- Modificar o nome de qualquer param ou endpoint
- Mudança na representação de valores (preview_url → card_uri)
- Mudança no comportamento de endpoints (por exemplo, async vs sync stats)
- Adicionar/mudar params opcionais ou obrigatórios (por exemplo, tornar name um campo obrigatório na requisição)
Estratégia de versionamento
Os principais princípios da estratégia são:- Todas as mudanças disruptivas serão agrupadas em uma nova versão
- A depreciação de versões existentes sempre que uma nova versão é anunciada é de 6 meses
- A qualquer momento, a API permitirá requisições de duas versões simultaneamente, mas a mais antiga das duas não terá suporte
- Para permitir a adoção mais rápida de novos produtos, estes serão lançados de forma contínua (fora da cadência de versionamento)
-
Todas as respostas da API conterão um
x-current-api-versionque será definido como a versão atual da API, além de um headerx-api-warnao chamar qualquer endpoint depreciado da API.