Vitrine do seller
Lê e grava a vitrine própria do seller (microsite): logo, banner, cores, SEO, redes sociais, domínio e publicação.
O microsite é a página própria do seller dentro da loja: uma vitrine com a identidade dele, que lista os produtos, páginas e posts do seller. Estas duas rotas leem e gravam a configuração visual dessa vitrine. Elas exigem um privilégio de configuração do seller (por exemplo vendor_settings).
Ler a vitrine
Devolve a configuração gravada. Se o seller nunca gravou nada, devolve um objeto padrão (color_scheme e social_links vazios, is_published: false) em vez de 404.
/api/v1/vendor/storefront-configSellerLer a vitrine do seller
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário do painel do seller (lojista), obtido no login (veja Tokens).Exemplo de requisição
bash
curl "$BASE_URL/api/v1/vendor/storefront-config" \
-H "Authorization: Bearer $TOKEN"Resposta
200Configuração
json
{
"id": "3f2b9c1e-6d4a-4e58-8a77-1c9d0e5b2a64",
"vendor_id": "7c1f0b52-3a64-4d1e-9a40-5f0c2b6a91d3",
"custom_domain": "loja.minhaempresa.com.br",
"logo_url": "https://cdn.example.com/vendor/logo.png",
"banner_url": "https://cdn.example.com/vendor/banner.jpg",
"color_scheme": {
"primary": "#0044ff",
"accent": "#ffb400"
},
"description": "Cafeteiras e acessórios para sua cozinha.",
"seo_title": "Cafeteiras e acessórios | Minha Empresa",
"seo_description": "As melhores cafeteiras com envio rápido para todo o Brasil.",
"social_links": {
"instagram": "https://instagram.com/minhaempresa",
"whatsapp": "https://wa.me/5511987654321"
},
"custom_css": null,
"is_published": true,
"created_at": "2026-09-01T12:00:00Z",
"updated_at": "2026-10-11T18:20:00Z"
}Campos da resposta
iduuidId da configuração. Ausente enquanto o seller nunca gravou a vitrine.
vendor_iduuidSeller dono da vitrine.
custom_domainstringDomínio próprio da vitrine. Ausente se não houver.
logo_urlstringURL do logo. Ausente se não houver.
banner_urlstringURL do banner. Ausente se não houver.
color_schemeobjectMapa de nomes de cor para valores (por exemplo
primary, accent). Sempre um objeto, {} quando vazio.descriptionstringTexto de apresentação. Ausente se não houver.
seo_titlestringTítulo para buscadores. Ausente se não houver.
seo_descriptionstringDescrição para buscadores. Ausente se não houver.
social_linksobjectMapa de rede social para URL. Sempre um objeto.
custom_cssstringCSS personalizado da vitrine. Ausente se não houver.
is_publishedbooleanSe a vitrine está publicada.
created_atstringRFC 3339. Ausente enquanto nunca gravada.
updated_atstringRFC 3339.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} / {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é de um administrador da loja). | {"error":"insufficient permissions"} |
| 403 | O cadastro do seller ainda está em análise (só a tela de cadastro funciona até a aprovação). | {"error":"vendor_pending_review","message":"..."} |
| 403 | O usuário da equipe do seller não tem nenhum dos privilégios de configuração (por exemplo vendor_settings). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings", "..."]} |
| 404 | O usuário não está ligado a nenhum seller. | {"error":"VENDOR_NOT_FOUND","detail":"vendor profile not found"} |
| 500 | Falha ao ler. | {"error":"STOREFRONT_GET_FAILED","detail":"..."} |
Gravar a vitrine
Cria ou substitui a configuração da vitrine (upsert por seller). Todos os campos são regravados com o que você enviar.
/api/v1/vendor/storefront-configSellerGravar a vitrine do seller
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário do painel do seller (lojista), obtido no login (veja Tokens).Content-Typestringobrigatórioapplication/json.Corpo da requisição
custom_domainstringDomínio próprio, por exemplo
loja.minhaempresa.com.br. Omitido, é apagado.logo_urlstringURL do logo (veja Upload de mídia).
banner_urlstringURL do banner.
color_schemeobjectMapa de nome de cor para valor. Omitido, vira
{}.descriptionstringTexto de apresentação.
seo_titlestringTítulo para buscadores.
seo_descriptionstringDescrição para buscadores.
social_linksobjectMapa de rede social para URL. Omitido, vira
{}.custom_cssstringCSS personalizado da vitrine.
is_publishedbooleanpadrão: falsetrue publica a vitrine. Omitido, vale false.Exemplo de requisição
bash
curl -X PUT "$BASE_URL/api/v1/vendor/storefront-config" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"custom_domain": "loja.minhaempresa.com.br",
"logo_url": "https://cdn.example.com/vendor/logo.png",
"banner_url": "https://cdn.example.com/vendor/banner.jpg",
"color_scheme": {
"primary": "#0044ff",
"accent": "#ffb400"
},
"description": "Cafeteiras e acessórios para sua cozinha.",
"seo_title": "Cafeteiras e acessórios | Minha Empresa",
"seo_description": "As melhores cafeteiras com envio rápido para todo o Brasil.",
"social_links": {
"instagram": "https://instagram.com/minhaempresa",
"whatsapp": "https://wa.me/5511987654321"
},
"is_published": true
}'Resposta
200Configuração gravada
json
{
"id": "3f2b9c1e-6d4a-4e58-8a77-1c9d0e5b2a64",
"vendor_id": "7c1f0b52-3a64-4d1e-9a40-5f0c2b6a91d3",
"custom_domain": "loja.minhaempresa.com.br",
"logo_url": "https://cdn.example.com/vendor/logo.png",
"banner_url": "https://cdn.example.com/vendor/banner.jpg",
"color_scheme": {
"primary": "#0044ff",
"accent": "#ffb400"
},
"description": "Cafeteiras e acessórios para sua cozinha.",
"seo_title": "Cafeteiras e acessórios | Minha Empresa",
"seo_description": "As melhores cafeteiras com envio rápido para todo o Brasil.",
"social_links": {
"instagram": "https://instagram.com/minhaempresa",
"whatsapp": "https://wa.me/5511987654321"
},
"custom_css": null,
"is_published": true,
"created_at": "2026-09-01T12:00:00Z",
"updated_at": "2026-10-11T18:20:00Z"
}Campos da resposta
iduuidId da configuração. Ausente enquanto o seller nunca gravou a vitrine.
vendor_iduuidSeller dono da vitrine.
custom_domainstringDomínio próprio da vitrine. Ausente se não houver.
logo_urlstringURL do logo. Ausente se não houver.
banner_urlstringURL do banner. Ausente se não houver.
color_schemeobjectMapa de nomes de cor para valores (por exemplo
primary, accent). Sempre um objeto, {} quando vazio.descriptionstringTexto de apresentação. Ausente se não houver.
seo_titlestringTítulo para buscadores. Ausente se não houver.
seo_descriptionstringDescrição para buscadores. Ausente se não houver.
social_linksobjectMapa de rede social para URL. Sempre um objeto.
custom_cssstringCSS personalizado da vitrine. Ausente se não houver.
is_publishedbooleanSe a vitrine está publicada.
created_atstringRFC 3339. Ausente enquanto nunca gravada.
updated_atstringRFC 3339.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} / {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é de um administrador da loja). | {"error":"insufficient permissions"} |
| 403 | O cadastro do seller ainda está em análise (só a tela de cadastro funciona até a aprovação). | {"error":"vendor_pending_review","message":"..."} |
| 403 | O usuário da equipe do seller não tem nenhum dos privilégios de configuração (por exemplo vendor_settings). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings", "..."]} |
| 400 | Corpo que não é JSON. | {"error":"INVALID_INPUT","detail":"invalid JSON body"} |
| 400 | Falha ao gravar (por exemplo, domínio já usado por outro seller). | {"error":"STOREFRONT_UPDATE_FAILED","detail":"..."} |
| 404 | O usuário não está ligado a nenhum seller. | {"error":"VENDOR_NOT_FOUND","detail":"vendor profile not found"} |