Versionamento
Semver do SDK, estabilidade do contrato e política de depreciação.
Semver do SDK
O @wabroker/sdk segue SemVer. Esta documentação reflete a série 0.31. Enquanto o SDK estiver em 0.x, mudanças incompatíveis podem ocorrer em incrementos de minor (0.31 → 0.32); correções e adições compatíveis chegam em patch. Fixe uma faixa que você controla:
npm install @wabroker/sdk@~0.31A partir de 1.0
1.0, quebras passam a ser exclusivas de major. Até lá, leia as notas de cada minor antes de atualizar.SDK .NET (Wabroker.Sdk)
O Wabroker.Sdk, publicado no NuGet, segue a mesma disciplina de SemVer do @wabroker/sdk — está em 0.2.0, então mudanças incompatíveis também podem vir em incrementos de minor enquanto o pacote estiver em 0.x. Fixe uma faixa:
dotnet add package Wabroker.Sdk --version 0.2.*Em ambos os SDKs, o cliente compõe a versão da API no path da requisição — {baseUrl}/{apiVersion}{path}, com apiVersion opcional e v1 por default. Sobrescrever apiVersion (ex.: para testar um endpoint em outra versão) não muda nada além do path — o resto do cliente segue igual.
A cobertura de recursos é parcial nesta série. Os 9 recursos de /v1 abaixo já têm cliente tipado e verificação de webhook (WabrokerWebhooks.VerifyAndParse):
messageschannelstagspoolstemplatesdeliveriessuppressionsmemberswarming
Os 7 recursos restantes ainda não têm cliente dedicado no Wabroker.Sdk — estão no roadmap; até lá, fale com eles direto pela API HTTP (/v1/*): billing, apiKeys, settings, webhooks-config, compliance, meta e me.
Escolhendo entre TS e .NET
@wabroker/sdk tem cobertura completa dos 16 recursos e é a opção mais madura hoje. O Wabroker.Sdk é a escolha natural para um backend .NET, com paridade crescente a cada minor.Estabilidade do contrato
O SDK é o dono do contrato compartilhado com o broker: os tipos de evento, de conteúdo e os códigos de erro vivem no pacote, então cliente e servidor não podem divergir. Dois princípios sustentam a compatibilidade:
- Uniões fechadas —
EventType,OutboundContentporkindeBrokerErrorCodesão fechados. Trate-os exaustivamente e umdefaultdefensivo cobre valores futuros. - Campos aditivos são opcionais — novos campos entram como opcionais (ex.:
profileName,filenameem mensagens recebidas, ou ochannelNumberque os eventos ganharam para amarrar conversas). Um consumidor de uma versão anterior simplesmente os ignora, sem quebrar.
Escreva código tolerante
default de todo switch sobre um discriminante. É o que mantém sua integração funcionando quando o contrato ganha um valor novo.Verificação assinada e o contrato de fio
O header de assinatura (X-WaBroker-Signature) e o algoritmo de HMAC moram no pacote compartilhado — quem assina (broker) e quem verifica (você, via verifyAndParse) usam exatamente o mesmo código. Uma correção de segurança vale para os dois lados sem chance de drift. Mantenha o SDK atualizado para receber essas correções.
Política de depreciação
- Um método ou campo a ser removido é primeiro marcado como deprecado, mantendo o comportamento, com a alternativa indicada (ex.:
channels.connectioné o nome canônico;channels.connectsegue por compatibilidade). - A remoção efetiva acontece só num incremento que a SemVer permite (minor em
0.x; major a partir de1.0). - Prefira sempre o nome canônico documentado nestas páginas.
Atualizar com segurança
- Fixe a faixa (
~0.31) e atualize deliberadamente. - Rode seu typecheck após atualizar — o SDK é tipado, e uma quebra de contrato aparece em compilação.
- Valide envio e recebimento de ponta a ponta num ambiente de teste antes de promover.