Corrigir uma campanha sem criar outro registro
Use esta rota para revisar a descrição, os exemplos de mensagens, a explicação do consentimento ou as características de conteúdo compatíveis de uma campanha existente. Mantenha o ID da campanha e sua marca e caso de uso atuais. Criar um novo registro não é o mecanismo de nova tentativa para corrigir uma campanha existente.
Autentique-se com uma conta de API habilitada, por HTTPS, a partir de um endereço IP de origem permitido. Somente uma campanha pertencente a essa conta fica disponível. Consulte o estado atual dela antes de preparar alterações; campanhas expiradas não podem ser atualizadas por este fluxo de trabalho.
curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"Escolher os campos que realmente mudaram
Prepare campaign-update.json com as alterações compatíveis. O portal atual envia somente os campos da campanha que foram alterados e não envia brandId, usecase, campaignId nem informações de status exclusivas da resposta. As atualizações diretas pela API também usam um objeto JSON com os campos, e não a estrutura envoltória changes/version do portal.
| Campos | O que fornecer |
|---|---|
| description, messageFlow | Uma descrição precisa do serviço e de como as pessoas dão consentimento, recebem mensagens e retiram o consentimento. Cada campo permite 40–4096 caracteres. |
| sample1–sample5 | Exemplos realistas para esta campanha, com 20–1024 caracteres por exemplo não vazio. Mantenha a quantidade de exemplos exigida pelo caso de uso para o qual a campanha foi qualificada; não envie mensagens sem relação com ela. |
| helpMessage, optinMessage, optoutMessage | As respostas pertinentes destinadas aos destinatários, com até 1024 caracteres. Quando exigido, cumpra o mínimo de 20 caracteres e explique o serviço real. Revise os requisitos de consentimento atuais antes de esvaziar um campo. |
| optinKeywords, optoutKeywords, helpKeywords | Palavras-chave separadas por vírgulas, sem espaços, com até 255 caracteres. Mantenha a coerência entre as respostas e o tratamento operacional das palavras-chave. |
| privacyPolicyLink, termsAndConditionsLink | URLs públicas pertinentes, com até 2048 caracteres, que descrevam as práticas reais deste serviço. |
| embeddedLinkSample | Um link representativo dos que as mensagens conterão, com até 255 caracteres. |
| numberPool, embeddedLink, embeddedPhone, ageGated, directLending | As características reais da campanha como valores booleanos de JSON. Use false, e não a string "false", ao desativar uma delas. |
| autoRenewal | O esquema da API pública aceita este valor booleano de JSON, embora o editor habitual de conteúdo de campanhas do portal não o disponibilize. Desativar a renovação não cancela um compromisso mínimo existente nem elimina cobranças já devidas. |
| resellerId | O esquema também permite associar um revendedor. Essa opção fica fora do formulário habitual de correção de conteúdo do portal. Não use este campo para transferir uma campanha entre clientes nem presuma que a API configurará o serviço da operadora para outro revendedor. |
O esquema de atualização não oferece brandId, usecase, subscriberOptin, subscriberOptout ou subscriberHelp como campos modificáveis. Não copie o corpo completo de uma solicitação de criação de campanha para uma atualização. Consulte a qualificação atual ao revisar os requisitos das mensagens.
Enviar uma correção específica
Este exemplo descreve, para fins ilustrativos, um serviço de lembretes de agendamentos. Adapte-o ao serviço e ao fluxo de consentimento reais da campanha antes de usá-lo.
{
"description": "Appointment reminders requested by customers of the registered business.",
"sample1": "Example business: Your requested appointment reminder is ready. Reply STOP to opt out."
}curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
--request PUT \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--data-binary @campaign-update.json \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"Mantenha a mesma chave e exatamente o mesmo método, caminho, consulta e bytes do corpo para um mesmo envio pretendido. Conteúdo alterado exige uma solicitação revisada separadamente; não troque as chaves às cegas após o esgotamento do tempo limite. Uma solicitação concluída pode retornar novamente um erro armazenado em cache, e uma duplicata ainda em processamento pode retornar 409 com Retry-After.
Consultar a campanha novamente
HTTP 200 retorna diretamente um objeto JSON da campanha. Verifique campaignId e, em seguida, consulte a mesma campanha com GET e compare os campos pretendidos. Salvar com sucesso não solicita, por si só, outra análise da operadora, não altera as atribuições de números, não ativa o envio nem envia uma mensagem.
O portal verifica a versão do formulário antes de salvar e consulta a campanha novamente depois. O endpoint público PUT não exige a correspondência dessa versão do portal: coordene as edições simultâneas. Uma chave de idempotência não detecta a atualização feita por outro editor.
Se o portal mostrar uma reprovação na análise ainda não resolvida, corrija primeiro o conteúdo e depois use a ação separada de solicitar análise, quando disponível. Essa ação verifica a campanha atual em produção e seu estado de compartilhamento. Apenas salvar o conteúdo não executa essa ação, e a existência de um ID de campanha não comprova a aprovação.
As atualizações habituais de campanhas por PUT não geram um débito separado de registro de campanha no serviço atual. As mensalidades existentes, os compromissos mínimos, o aluguel de números e o consumo de mensagens continuam a se aplicar. Para consultar as tarifas de campanha configuradas atualmente, veja as tarifas das campanhas.
Lidar com restrições e resultados incertos
Para HTTP 400, leia o erro do campo e verifique os comprimentos, o texto de consentimento e o estado da campanha. Para 401, 403 ou 404, verifique as credenciais da API, o IP de origem permitido e a titularidade. Para 429, respeite Retry-After. Em caso de 500, 502 ou de uma solicitação interrompida, preserve o ID da campanha e qualquer requestId e, em seguida, confira o registro existente em relação ao resultado esperado antes de fazer outro envio.
A cópia local do estado depende do corpo retornado. Uma resposta parcial não vazia pode omitir campos anteriores, inclusive metadados de renovação; uma resposta vazia pode manter valores desatualizados. Verifique o resultado completo de GET em vez de considerar apenas o sucesso como prova de que todos os campos foram preservados. Informe as diferenças não resolvidas ao suporte. Esta rota não atualiza atomicamente as atribuições de operadoras nem oferece uma ação geral de recuperação da ativação da operadora.