Registar o endpoint do Flow na Meta
Regista o NOSSO proxy como endpoint_uri deste Flow na Meta — o ato deliberado que o PUT neste mesmo recurso se recusa a fazer. Sem isto o data_exchange é inalcançável: a Meta recusa publicar um Flow cujo modelo de routing precisa de endpoint, com “Publishing without specifying ‘endpoint_uri’ is forbidden”.
⛔ É um verbo diferente e não um efeito colateral do PUT porque os dois atos têm sujeitos diferentes. Guardar um destino é o tenant a descrever o webhook DELE; isto é nós a dizer à META para encaminhar o Flow por nós. Fundir os dois faria com que um tenant que corre o próprio endpoint de Flow perdesse todas as trocas na próxima vez que corrigisse uma gralha numa URL.
⚠️ O corpo é OPCIONAL — ao contrário do PUT, este verbo não tem campo obrigatório, portanto sem corpo, string vazia e {} são todos aceites. Um corpo truncado continua a ser recusado (400 FLOW_BODY_INVALID), e confirmOverwrite é o único campo aceite.
⛔ confirmOverwrite não é formalidade. O endpoint_uri atual é lido AO VIVO do Graph — não de metaEndpointUri, que uma sincronia horária escreve e que por isso está muda sobre um URI registado na última hora. Se o Flow já aponta para outro sítio, registar leva TODAS as trocas de quem responde hoje, por isso o padrão é 409 FLOW_ENDPOINT_URI_WOULD_OVERWRITE — cujo corpo traz um QUARTO campo de topo, currentEndpointUri, nomeando o endpoint que seria deslocado. O nosso nunca é ecoado: embute o token de caminho do endpoint do número. Um não-booleano é recusado e nunca convertido (400 FLOW_ENDPOINT_CONFIRM_INVALID), porque "false" lido como verdadeiro assumiria um endpoint vivo num pedido cujo autor acreditava ter recusado.
Idempotente: um Flow que já aponta para nós responde 200 sem escrita no Graph, e metaEndpointUri é atualizado de qualquer forma. Um número sem par de chaves de endpoint é recusado com 422 FLOW_ENDPOINT_NUMBER_HAS_NO_KEY — registar mesmo assim diz à Meta para cifrar para um par de chaves que não existe, e todas as trocas do Flow publicado dariam 421. Permissão flows:manage.
Exige chave com escopo de número. Uma chave de tenant precisa nomear o número no header x-whatsapp-number-id, senão recebe 403 TENANT_SCOPE_NOT_ALLOWED.
Autorizações
Sua chave de API ps_
Parâmetros de caminho
O id local do Flow — o campo id que GET /v1/flows devolve, nunca o metaFlowId.
Corpo
Consentimento para deslocar um endpoint_uri que não é nosso. Tem de ser um booleano de verdade — a string "false" é recusada, nunca convertida. Desnecessário quando a Meta não tem endpoint_uri, ou já tem o nosso.
true
Resposta
A Meta passa a apontar este Flow para o nosso proxy. metaEndpointUri é atualizado a partir do que acabou de ser escrito, não do espelho horário. Sem secret: registar não cunha nada