VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Conceitos

Lojas e resolução de host

Como a plataforma descobre de qual loja é cada chamada, o isolamento entre lojas e o que as respostas 404 e 503 de loja significam.

Na Venddor uma loja (internamente chamada de tenant) é um negócio completo: catálogo, clientes, pedidos, administradores, sellers, tema e configurações. Cada loja tem o seu próprio banco de dados. Nada de uma loja é visível em outra: um id de produto da loja A simplesmente não existe na loja B, e um usuário da loja A não existe na loja B, mesmo que o e-mail seja o mesmo.

Por isso, toda chamada precisa dizer de qual loja ela é. É a primeira coisa que a plataforma resolve, antes de olhar o token.

Pontos-chave
  • A loja é identificada pelo host da URL: minhaloja.io.venddor.com.br ou um domínio personalizado que a loja cadastrou.
  • Em desenvolvimento, ou ao chamar um endereço compartilhado, o cabeçalho X-Tenant-ID também nomeia a loja e tem prioridade sobre o host.
  • O token carrega a loja que o emitiu e é recusado em qualquer outra.
  • Loja suspensa, removida, sem vitrine publicada ou em manutenção responde com erros próprios, listados abaixo.

Como a loja é resolvida

A plataforma segue esta ordem e usa a primeira que der resultado.

  1. Cabeçalho X-Tenant-ID

    Se a requisição trouxer X-Tenant-ID, o valor (o identificador curto da loja, como store1) é usado. É útil em testes e ao chamar um endereço que não é o da loja.

  2. Subdomínio

    O host da requisição é comparado ao domínio base da plataforma. minhaloja.io.venddor.com.br resolve para a loja minhaloja. Quando a chamada passa por um proxy ou CDN que reescreve o host, o cabeçalho X-Forwarded-Host é lido no lugar.

  3. Domínio personalizado

    Se o host não termina no domínio base (por exemplo loja.exemplo.com.br), a plataforma procura esse domínio entre os que as lojas cadastraram. Se achar, a loja dona do domínio é a resolvida.

Se nada resolver, a resposta é 404 com tenant not found e a requisição nem chega à rota.

Use o host da loja

Em produção, prefira sempre o endereço da própria loja e não envie X-Tenant-ID. O endereço é o que o seu cliente final e o painel da loja usam, e é o que não muda quando você troca de ambiente de teste para produção. Se você só tem o e-mail do usuário ou o nome da loja, a rota pública de localização de loja devolve o domínio certo.

Isolamento e tokens

Depois de resolver a loja, a autenticação confere que o tenant_id dentro do token é o da loja resolvida. Se não for, a chamada é recusada com 403 token not valid for this storefront. Na prática: faça login em cada loja separadamente e guarde um token por loja. Os detalhes do token estão em Tokens e escopos.

Os ids também são isolados. Ao integrar várias lojas, guarde sempre o par (loja, id) no seu sistema.

Estados da loja

Uma loja pode estar fora do ar por motivos diferentes. Cada um tem uma resposta própria, e saber qual é evita horas de diagnóstico.

StatuserrorQuando acontece
404tenant not found (could not resolve storefront from request)Nenhuma loja foi identificada no host nem no cabeçalho.
404tenant not found (storefront does not exist or is disabled)O identificador existe como texto, mas não há loja ativa com ele.
404tenant_not_foundA loja foi removida ou cancelada.
503tenant_suspendedA loja está suspensa (bloqueio feito pela operação da plataforma).
503tenant_unavailableA loja está em um estado que a plataforma não reconhece como ativo.
404storefront_disabledA vitrine pública está despublicada. Só as rotas públicas de vitrine respondem isso; login, painel de administrador e de seller, e webhooks seguem funcionando.
503tenant_maintenanceA loja está em manutenção (ligada pelo lojista no painel ou por uma operação controlada). Só a vitrine pública responde 503; o painel continua acessível. A mensagem vem em português: loja em manutencao.

Todos esses corpos têm o formato {"error": "...", "message": "..."}. Veja o quadro completo em Erros.

Exemplo

bash
# Pelo host da loja (recomendado)
curl "https://minhaloja.io.venddor.com.br/api/v1/storefront/categories"

# Por um endereço compartilhado, nomeando a loja
curl "https://io.venddor.com.br/api/v1/auth/login" \
  -H "X-Tenant-ID: minhaloja" \
  -H "Content-Type: application/json" \
  -d '{"email":"admin@minhaloja.com.br","password":"SENHA"}'
404Loja não identificada
json
{
  "error": "tenant not found",
  "message": "could not resolve storefront from request"
}

Erros comuns

  • Testar contra localhost ou um IP sem X-Tenant-ID. Sem host de loja e sem cabeçalho, o resultado é 404 tenant not found.
  • Enviar X-Tenant-ID com a loja errada e um token de outra. O cabeçalho tem prioridade sobre o host; o token então não bate e a resposta é 403.
  • Cachear o token entre lojas. Um token por loja.
  • Confundir storefront_disabled com loja inexistente. A loja existe e o painel funciona; só a vitrine pública está fora.

Veja também

Atores e APIs
Quem chama e por qual prefixo.
Tokens e escopos
O token e a loja que o emitiu.
Erros
Os formatos de erro.
Anterior
Conceitos da API
Próxima
Atores e APIs
Nesta página
  • Como a loja é resolvida
  • Isolamento e tokens
  • Estados da loja
  • Exemplo
  • Erros comuns
  • Veja também