VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/WhatsApp Commerce: fluxos e experiência

Conexões

Lista, cria e apaga as setas que ligam um bloco ao próximo no fluxo de conversa do seller.

Uma conexão é a seta de um bloco de origem (from_block_id) para um bloco de destino (to_block_id). O connection_type diz quando a seta é seguida:

connection_typeQuando é seguida
nextSempre, depois que o bloco de origem termina. É o padrão.
option_0, option_1, ...Quando o cliente escolhe a opção de mesmo índice de um menu, list ou button.
condition_0, condition_1, ...Quando a condição de mesmo índice de um bloco conditional é verdadeira.
defaultQuando nenhuma condição combinou. Também é a saída de um send_template cujo envio falhou.

Cada par (bloco de origem, tipo) deve ter uma só conexão: duas setas next saindo do mesmo bloco aparecem como duplicate_edge em Validar o desenho.

Listar as conexões

GET/api/v1/vendor/whatsapp/flows/{id}/connectionsSeller

Lista as conexões de um fluxo

Ordenadas por bloco de origem e depois por order_index.

Parâmetros de caminho

iduuidobrigatório
Id do fluxo.

Exemplo de requisição

bash
curl "$BASE_URL/api/v1/vendor/whatsapp/flows/$FLOW_ID/connections" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Conexões do fluxo
json
{
  "flow_id": "6f1c2d3e-9a4b-4c5d-8e7f-0a1b2c3d4e5f",
  "connections": [
    {
      "id": "c0a1b2c3-0000-4000-8000-000000000001",
      "flow_id": "6f1c2d3e-9a4b-4c5d-8e7f-0a1b2c3d4e5f",
      "from_block_id": "b1a2c3d4-0000-4000-8000-000000000001",
      "to_block_id": "b1a2c3d4-0000-4000-8000-000000000002",
      "connection_type": "next",
      "order_index": 0,
      "created_at": "2026-10-01T12:00:00Z",
      "updated_at": "2026-10-01T12:00:00Z"
    }
  ]
}

Campos da resposta

flow_iduuid
Fluxo consultado.
connectionsarray
Conexões do fluxo.
connections[].iduuid
Id da conexão. Use para apagar.
connections[].flow_iduuid
Fluxo a que pertence.
connections[].from_block_iduuid
Bloco de origem.
connections[].to_block_iduuid
Bloco de destino.
connections[].connection_typestring
Quando a seta é seguida (tabela acima).
connections[].labelstring
Rótulo livre mostrado no editor. Ausente se não definido.
connections[].order_indexinteger
Ordem entre setas do mesmo bloco.
connections[].created_atstring
RFC 3339.
connections[].updated_atstring
RFC 3339.

Erros

StatusQuandoCorpo
401 / 403Autenticação, módulo ou privilégioveja Fluxo
404Fluxo inexistente, da loja ou de outro seller{"error":"flow not found or not owned by this seller"}
500Falha ao ler{"error":"..."}

Criar uma conexão

POST/api/v1/vendor/whatsapp/flows/{id}/connectionsSeller

Liga um bloco a outro

Devolve 201 com a conexão criada. A rota não confere se os dois blocos existem nem se são deste fluxo. Se você passar o id de um bloco de outro fluxo, a conexão é gravada e só aparece como unknown_block_ref ou dangling_outbound em validate.

Parâmetros de caminho

iduuidobrigatório
Id do fluxo.

Corpo da requisição

from_block_iduuidobrigatório
Bloco de origem.
to_block_iduuidobrigatório
Bloco de destino.
connection_typestringpadrão: next
Quando a seta é seguida. Veja a tabela no início da página.
labelstring
Rótulo livre.
order_indexintegerpadrão: 0
Ordem entre as setas do bloco de origem.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/vendor/whatsapp/flows/$FLOW_ID/connections" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "from_block_id": "b1a2c3d4-0000-4000-8000-000000000002",
  "to_block_id": "b1a2c3d4-0000-4000-8000-000000000010",
  "connection_type": "option_5",
  "label": "Horário"
}'

Resposta

201Conexão criada
json
{
  "id": "c0a1b2c3-0000-4000-8000-000000000020",
  "flow_id": "6f1c2d3e-9a4b-4c5d-8e7f-0a1b2c3d4e5f",
  "from_block_id": "b1a2c3d4-0000-4000-8000-000000000002",
  "to_block_id": "b1a2c3d4-0000-4000-8000-000000000010",
  "connection_type": "option_5",
  "label": "Horário",
  "order_index": 0,
  "created_at": "2026-10-11T14:30:00Z",
  "updated_at": "2026-10-11T14:30:00Z"
}

Erros

StatusQuandoCorpo
400JSON inválido{"error":"Invalid JSON body"}
400Falta origem ou destino{"error":"whatsapp/flows: from_block_id and to_block_id are required"}
400Id de bloco que não é UUID válido{"error":"whatsapp/flows: insert connection: ..."}
401 / 403Autenticação, módulo ou privilégioveja Fluxo
404Fluxo inexistente, da loja ou de outro seller{"error":"flow not found or not owned by this seller"}
Opção nova de menu

Para acrescentar uma opção a um menu: (1) altere o bloco do menu com PATCH, enviando o config completo com a nova opção no fim de options; (2) crie a conexão option_N, onde N é o índice da nova opção contado a partir de zero.

Apagar uma conexão

DELETE/api/v1/vendor/whatsapp/connections/{conn_id}Seller

Apaga uma conexão

Exclusão lógica. A rota só apaga conexões de fluxos do próprio seller.

Parâmetros de caminho

conn_iduuidobrigatório
Id da conexão.

Exemplo de requisição

bash
curl -X DELETE "$BASE_URL/api/v1/vendor/whatsapp/connections/$CONN_ID" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Conexão apagada
json
{ "status": "deleted", "id": "c0a1b2c3-0000-4000-8000-000000000020" }

Erros

StatusQuandoCorpo
400Conexão inexistente, já apagada ou de outro seller{"error":"connection not found or not owned by this seller"}
401 / 403Autenticação, módulo ou privilégioveja Fluxo
Aqui o erro é 400, não 404

Ao contrário das rotas de bloco, apagar uma conexão que não existe (ou que não é sua) responde 400, não 404.

Veja também

  • Blocos
  • Fluxo
Anterior
Blocos
Próxima
Textos e pedidos de mudança
Nesta página
  • Listar as conexões
  • Exemplo de requisição
  • Resposta
  • Erros
  • Criar uma conexão
  • Exemplo de requisição
  • Resposta
  • Erros
  • Apagar uma conexão
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também