Abrir a sessão
Cria o token de visitante, lista os sellers com mini-loja, lê a marca da loja, troca um código curto por token e abre o estado da sessão.
Estas cinco rotas são o começo de toda visita à mini-loja. As quatro primeiras não exigem token (a loja é resolvida pelo host da requisição) e servem para você chegar a um token válido e pintar a primeira tela. A última, GET /session/{token}, é a que o front-end chama ao abrir a página: ela devolve a sacola atual, se o cliente está identificado e a mensagem de boas-vindas.
Uma loja de vários sellers (seller é o lojista que vende dentro da plataforma) pode ter um número de WhatsApp por seller. Nesse caso a visita precisa dizer de qual seller é a mini-loja: o POST /guest exige o parâmetro v com o slug do seller, que você descobre em GET /sellers.
Criar o token de visitante
/api/v1/storefront/wa-coex/guestPúblicaCria um token de visitante para a loja do host
Sem corpo. A loja vem do host (https://minhaloja.io.venddor.com.br).
Parâmetros de consulta
vstringslug do seller. Obrigatório só quando a loja tem mais de um seller com mini-loja; nas demais, é ignorado. Maiúsculas e minúsculas são tratadas igual.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/storefront/wa-coex/guest"Resposta
{ "token": "eyJ0IjoiZGZlMjU1NWUt...Y1Fl" }Campos da resposta
tokenstringErros
| Status | Quando | Corpo |
|---|---|---|
| 403 | A loja desligou a mini-loja. | {"error":"web preview disabled","message":"Nossa loja no WhatsApp não está disponível no momento."} |
| 404 | O host não é de uma loja. | {"error":"store unavailable"} |
| 404 | v não é o slug de um seller com mini-loja. | {"error":"seller_not_found","message":"Não encontramos essa loja."} |
| 409 | A loja tem vários sellers e v não foi enviado. | {"error":"seller_required","message":"Escolha a loja que você quer abrir."} |
| 500 | Falha ao assinar o token. | {"error":"..."} |
As mensagens message saem em português, como o servidor as devolve.
Listar os sellers
/api/v1/storefront/wa-coex/sellersPúblicaLista os sellers com mini-loja ativa
Devolve a lista só quando há mais de um seller dono de número de WhatsApp ativo. Lojas de um seller só, e lojas que vendem o catálogo de todos os sellers juntos (marketplace), recebem multi: false e lista vazia.
{
"multi": true,
"sellers": [
{ "slug": "casa-do-cafe", "name": "Casa do Café", "logo_url": "/uploads/.../logo.png", "short": "94bd7e9a" }
]
}Campos da resposta
multibooleantrue quando o cliente precisa escolher um seller antes de abrir a mini-loja.sellersarraySellers ativos, ordenados pelo nome da empresa.
slugstringv de POST /guest.namestringlogo_urlstringshortstringOs erros são os mesmos de POST /guest (403 e store unavailable).
Ler a marca da loja
/api/v1/storefront/wa-coex/brandPúblicaNome, logotipo e cores da loja, antes de ter token
Serve para pintar a tela de abertura enquanto o token ainda está sendo criado. Tem cache público de 120 segundos.
{
"storefront_layout": "",
"store_name": "Loja de Demonstração Venddor",
"logo_url": "/uploads/dfe2555e/theme/logo/logo-v1.png",
"accent_color": "#2563eb",
"header_color": "#2563eb",
"tenant_id": "dfe2555e-bfd0-41a8-9fa1-9586999f3798"
}Campos da resposta
storefront_layoutstringstore_namestringlogo_urlstringaccent_colorstringheader_colorstringtenant_iduuidErros próprios: 503 {"error":"brand_unavailable"} quando a plataforma não conseguiu ler as cores do tema (guarde a última marca boa e tente de novo), além do 403 web preview disabled e do 404 store unavailable.
Trocar um código curto por token
/api/v1/storefront/wa-coex/short/{code}PúblicaTroca o código curto de um link de WhatsApp pelo token
Os links enviados pela conversa podem usar um código curto no lugar do token inteiro. Esta rota devolve o token correspondente, para você guardar em cookie.
Parâmetros de caminho
codestringobrigatório{ "token": "eyJ0IjoiZGZlMjU1NWUt...Y1Fl" }Erro próprio: 404 {"error":"unknown_link"} quando o código não existe (ou não é desta loja). Mais 403 web preview disabled e 404 store unavailable.
Abrir o estado da sessão
/api/v1/storefront/wa-coex/session/{token}PúblicaEstado da sessão: identificação, sacola e boas-vindas
Chame ao abrir a página. Registra o clique no link (para as métricas da loja) e devolve tudo que a primeira tela precisa.
Parâmetros de caminho
tokenstringobrigatórioExemplo de requisição
curl "$BASE_URL/api/v1/storefront/wa-coex/session/$TOKEN"Resposta
{
"account_required": false,
"phone_masked": "",
"anonymous": true,
"identified": false,
"welcome": {
"text": "Olá! Seja bem-vindo(a) à *Loja de Demonstração Venddor*!",
"buttons": [
{ "id": "welcome:0:comprar", "label": "Quero comprar" },
{ "id": "welcome:2:pedidos", "label": "Meus pedidos" }
],
"login_required": false
},
"campaign_ref": "web",
"cart": {
"cart_id": "74481399-0286-4dd1-ac8e-13328e00b86d",
"items": [],
"subtotal_cents": 0,
"total_cents": 0,
"supports_line_selection": true,
"currency": "BRL",
"item_count": 0
}
}Campos da resposta
account_requiredbooleantrue quando a loja exige conta para finalizar a compra (não permite visitante navegar e comprar sem login).phone_maskedstringanonymousbooleantrue para token de visitante. Omitido quando false.identifiedbooleantrue quando o token já está ligado a uma conta de cliente.namestringuser_iduuidwelcomeobjecttext, buttons (lista de id e label) e login_required.auth_revokedbooleantrue quando o cliente saiu da conta pelo WhatsApp: descarte credenciais guardadas no navegador.campaign_refstringweb).cartobjectdraftobjectregistration, o rascunho do cadastro). Só aparece em token de link; token de visitante nunca recebe draft.saved_documentstringcredit_available_centsintegersignup_phonestringErros
| Status | Quando | Corpo |
|---|---|---|
| 409 | O número do link já está ligado a outra conta. | {"error":"account_binding_conflict"} |
| 503 | Não foi possível montar a sessão. | {"error":"session_unavailable"} |