Dicionário de marcas
Ensina o assistente do WhatsApp a entender marcas e termos escritos errado e testa como uma frase de cliente seria interpretada.
O cliente escreve do jeito que sabe: adidaz, ifone, nik. O dicionário de marcas guarda pares grafia errada para nome correto (misspelling para canonical). Antes de procurar no catálogo, o assistente troca a grafia errada pelo nome correto. Existem dois tipos de par:
manual: criado pelo seller por esta API.auto-learned: aprendido pela própria plataforma a partir das conversas. Aparece na lista, e o seller pode ajustar ou apagar.
O weight (peso) desempata quando a mesma grafia aparece no dicionário do seller e também no dicionário geral da loja: vale o par de maior peso.
Listar os pares
/api/v1/vendor/whatsapp/brand-correctionsSellerLista os pares do dicionário do seller
Parâmetros de consulta
sourcestringmanualauto-learnedsearchstringlimitintegerpadrão: 50offsetintegerpadrão: 0Exemplo de requisição
curl "$BASE_URL/api/v1/vendor/whatsapp/brand-corrections?source=manual" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"entries": [
{
"id": "d1e2f3a4-0000-4000-8000-0000000000a1",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"misspelling": "adidaz",
"canonical": "Adidas",
"weight": 100,
"source": "manual",
"use_count": 3,
"last_used_at": "2026-10-10T20:15:00Z",
"created_at": "2026-10-02T13:00:00Z",
"updated_at": "2026-10-02T13:00:00Z"
}
],
"total": 1,
"limit": 50,
"offset": 0
}Campos da resposta
entriesarrayentries[].iduuidentries[].vendor_iduuidentries[].misspellingstringentries[].canonicalstringentries[].weightintegerentries[].sourcestringmanualauto-learnedentries[].use_countintegerentries[].last_used_atstringentries[].created_atstringentries[].updated_atstringtotalintegerlimitintegeroffsetintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token | {"error":"authentication required"} |
| 403 | Token que não é de seller; módulo desligado; falta o privilégio | veja Entradas |
| 404 | Usuário sem cadastro de seller | {"error":"vendor profile not found","code":"vendor_profile_not_found"} |
| 500 | Falha ao listar | {"error":"Failed to list brand corrections: ..."} |
Criar ou atualizar um par
/api/v1/vendor/whatsapp/brand-correctionsSellerCria um par ou atualiza o existente com a mesma grafia errada
Responde 201 com o par. Se o seller já tem um par para essa grafia errada, ele é atualizado (nome correto e peso) e a resposta continua 201.
Corpo da requisição
misspellingstringobrigatóriocanonicalstringobrigatórioweightintegerpadrão: 100vendor_iduuidExemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/whatsapp/brand-corrections" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"misspelling": "adidaz",
"canonical": "Adidas"
}'Resposta
{
"id": "d1e2f3a4-0000-4000-8000-0000000000a1",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"misspelling": "adidaz",
"canonical": "Adidas",
"weight": 100,
"source": "manual",
"use_count": 0,
"created_at": "2026-10-11T15:20:00Z",
"updated_at": "2026-10-11T15:20:00Z"
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido | {"error":"Invalid JSON body"} |
| 400 | Falta misspelling | {"error":"whatsapp brand_correction: misspelling required"} |
| 400 | Falta canonical | {"error":"whatsapp brand_correction: canonical required"} |
| 401 / 403 | Autenticação, módulo ou privilégio | veja Entradas |
Alterar um par
/api/v1/vendor/whatsapp/brand-corrections/{id}SellerAltera o nome correto ou o peso de um par
Só canonical e weight mudam. A grafia errada (misspelling) não pode ser alterada: apague o par e crie outro.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
canonicalstringweightintegerExemplo de requisição
curl -X PATCH "$BASE_URL/api/v1/vendor/whatsapp/brand-corrections/$CORRECTION_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"canonical": "Adidas Originals"
}'Resposta
{ "status": "updated", "id": "d1e2f3a4-0000-4000-8000-0000000000a1" }A resposta não traz o par atualizado: leia a lista se precisar dos valores.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido | {"error":"Invalid JSON body"} |
| 400 | canonical enviado vazio | {"error":"whatsapp brand_correction: canonical cannot be empty"} |
| 401 / 403 | Autenticação, módulo ou privilégio | veja Entradas |
| 404 | Par inexistente, apagado ou de outro seller | {"error":"Brand correction not found"} |
Alterar um par (PUT)
/api/v1/vendor/whatsapp/brand-corrections/{id}SellerAltera um par (mesmo comportamento do PATCH)
Mesmo tratamento do PATCH, inclusive o comportamento parcial: o que você não enviar não muda.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
canonicalstringweightintegerExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/vendor/whatsapp/brand-corrections/$CORRECTION_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"weight": 150
}'Resposta
{ "status": "updated", "id": "d1e2f3a4-0000-4000-8000-0000000000a1" }Resposta e erros são os do PATCH.
Apagar um par
/api/v1/vendor/whatsapp/brand-corrections/{id}SellerApaga um par do dicionário
Exclusão lógica. Vale também para pares auto-learned.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/vendor/whatsapp/brand-corrections/$CORRECTION_ID" \
-H "Authorization: Bearer $TOKEN"Resposta
{ "status": "deleted", "id": "d1e2f3a4-0000-4000-8000-0000000000a1" }Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 / 403 | Autenticação, módulo ou privilégio | veja Entradas |
| 404 | Par inexistente, já apagado ou de outro seller | {"error":"Brand correction not found"} |
| 500 | Falha ao apagar | {"error":"Failed to delete brand correction: ..."} |
Testar uma frase
/api/v1/vendor/whatsapp/brand-corrections/testSellerMostra como uma frase de cliente seria interpretada e quais produtos acharia
Executa a busca completa do assistente (correção de marcas, entendimento do pedido e busca no catálogo do seller) sobre uma frase, sem enviar nada a ninguém. Serve para conferir se o dicionário e o catálogo respondem como você espera.
Corpo da requisição
textstringobrigatórioquero um tenis adidaz 42.vendor_iduuidExemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/whatsapp/brand-corrections/test" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"text": "quero um tenis adidaz 42"
}'Resposta
{
"original_query": "quero um tenis adidaz 42",
"corrected_query": "quero um tenis Adidas 42",
"corrections": [{ "from": "adidaz", "to": "Adidas" }],
"intent": {
"intent": "product_lookup",
"confidence": 0.9,
"brand": "Adidas",
"category": "tênis",
"keywords": ["tenis", "42"]
},
"products": [
{
"id": "c3f92551-9dda-4fc7-b518-353d1c4e4035",
"name": "Tênis Adidas Run 42",
"price": 29990,
"quantity": 8,
"image_url": "https://minhaloja.io.venddor.com.br/uploads/tenis-run.jpg"
}
],
"duration_ms": 640
}Campos da resposta
original_querystringcorrected_querystringcorrectionsarrayfrom e to. Ausente quando nenhuma.intentobjectintent (por exemplo product_lookup), confidence (0 a 1), e quando identificados brand, model, category e keywords.productsarrayid, name, price em centavos (29990 = R$ 299,90), quantity em estoque, image_url e outros campos de catálogo.duration_msintegersearch_intent_idstringdisplay_querystringErros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido | {"error":"Invalid JSON body"} |
| 400 | Falha na busca | {"error":"..."} |
| 401 / 403 | Autenticação, módulo ou privilégio | veja Entradas |