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

Endereço e ambientes

Como montar a URL base da API, como a plataforma identifica a loja de cada requisição e quais famílias de rotas existem.

A Venddor é uma plataforma multi-loja. Cada loja (o termo técnico é tenant) tem o seu próprio catálogo, os seus próprios clientes e pedidos e o seu próprio banco de dados. Não existe uma "API global" que enxergue todas as lojas: cada chamada que você faz opera uma loja, e a primeira coisa que a plataforma faz ao receber a requisição é descobrir qual.

Pontos-chave
  • A URL base é o endereço da própria loja: https://<loja>.io.venddor.com.br, ou o domínio próprio que a loja configurou.
  • Na grande maioria dos casos o endereço basta. O cabeçalho X-Tenant-ID existe para escolher a loja explicitamente (testes, ambientes sem domínio por loja).
  • Um token de login fica preso a uma loja: usado em outra, a resposta é 403.
  • Loja inexistente ou desativada responde 404; loja suspensa responde 503.
  • A mesma loja atende a API administrativa, o painel do seller e a vitrine pelo mesmo endereço, em prefixos diferentes.

Loja e tenant

Pense em cada loja como uma instalação independente da plataforma. O que você cria numa loja (produto, cliente, pedido) não existe nas outras, e os ids (UUID) de uma loja não significam nada em outra. Se a sua empresa tem três lojas, você terá três URLs base e três credenciais.

Dentro de uma loja podem existir vários sellers (lojistas): empresas que vendem pelo mesmo site, num modelo de marketplace. A API administrativa enxerga todos eles; veja Sub-pedidos para o efeito disso nos pedidos.

Endereço base

Use o endereço público da loja, sempre com https:

Tipo de endereçoExemploQuando
Subdomínio da plataformahttps://minhaloja.io.venddor.com.brTodas as lojas têm um. O trecho antes de .io.venddor.com.br é o identificador (slug) da loja.
Domínio própriohttps://www.minhaloja.com.brQuando a loja configurou um domínio. A API responde no mesmo domínio da vitrine.

Nos exemplos desta documentação, $BASE_URL é esse endereço, sem barra no final, e $TOKEN é o seu JWT.

bash
export BASE_URL="https://minhaloja.io.venddor.com.br"

Como a plataforma descobre a loja

A cada requisição, a plataforma resolve a loja nesta ordem:

  1. Cabeçalho X-Tenant-ID, se vier na requisição. Ele tem prioridade sobre qualquer outra coisa. O valor é o identificador (slug) da loja, por exemplo minhaloja.
  2. O host da requisição (Host, ou X-Forwarded-Host quando há um proxy na frente): o subdomínio da plataforma ou um domínio próprio cadastrado.

Se nenhum dos dois identificar uma loja, a resposta é 404:

json
{ "error": "tenant not found", "message": "could not resolve storefront from request" }

Se o identificador existe mas a loja não, ou foi desativada:

json
{ "error": "tenant not found", "message": "storefront does not exist or is disabled" }
Quando usar o X-Tenant-ID

Se você chama a loja pelo endereço dela, não precisa do cabeçalho. Use-o quando várias lojas respondem pelo mesmo endereço de entrada (um ambiente de homologação, por exemplo) ou quando o seu sistema fala com várias lojas pelo mesmo host. Mesmo que você escolha outra loja, o seu token só vale na loja que o emitiu.

Token e loja

O JWT emitido no login contém a loja. Numa rota administrativa, um token de outra loja é recusado:

json
{ "error": "token not valid for this storefront" }

Estados da loja

RespostaCorpoSignificado
404tenant_not_foundA loja foi cancelada ou excluída.
503tenant_suspendedA loja está suspensa. Aguarde ou fale com a Venddor.
503tenant_maintenanceA loja está em modo de manutenção. Vale para as rotas públicas da vitrine; o painel e as APIs administrativas continuam no ar.
404storefront_disabledA vitrine pública foi despublicada. As APIs administrativas continuam funcionando.

Famílias de rotas

A mesma loja responde por várias famílias de rotas. Este guia rápido usa a primeira.

PrefixoQuem usaCredencial
/api/v1/admin/...Integrações (ERP, PDV, BI) e o painel de administração.Bearer JWT de um usuário administrador.
/api/v1/vendor/...O painel do seller.Bearer JWT de um usuário seller.
/api/v1/storefront/...A vitrine: carrinho, checkout, conta do comprador.Público ou Bearer JWT do comprador.
/api/v1/auth/...Login, renovação e conta, para todos os perfis.Pública (login) ou Bearer JWT.
Minúsculas

Escreva os caminhos sempre em minúsculas, como nos exemplos: /api/v1/admin/orders.

Ambientes

Todas as páginas desta documentação usam o ambiente de produção. Se você precisa de um ambiente de homologação para testar a integração antes de ligá-la na loja real, peça à Venddor: ele tem o mesmo contrato, o mesmo código e um endereço próprio. Nunca teste escrita (criar cliente, criar pedido) numa loja de produção com dados de verdade.

Duas lições práticas:

  • Ids não são portáveis entre ambientes. O UUID de um produto em homologação não existe em produção, mesmo que a loja seja uma cópia.
  • Credenciais também não. A senha de homologação não funciona em produção, e vice-versa.

Cabeçalhos de resposta úteis

Toda resposta traz X-Request-Id, um identificador único da requisição. Guarde-o nos seus logs e informe-o ao suporte quando abrir um chamado: é o que permite localizar a chamada do outro lado.

Veja também

Autenticação
Como obter e usar a credencial.
Convenções
Formatos de dados e paginação.
Erros
O que cada código de erro significa.
Anterior
Primeiros passos
Próxima
Autenticação
Nesta página
  • Loja e tenant
  • Endereço base
  • Como a plataforma descobre a loja
  • Token e loja
  • Estados da loja
  • Famílias de rotas
  • Ambientes
  • Cabeçalhos de resposta úteis
  • Veja também