Blocos da home
Devolve de uma vez os banners, categorias, vitrines de produtos e sellers que o app desenha na tela inicial.
A tela inicial do app é montada a partir do layout que o administrador desenhou no painel (a mesma disposição da home da loja na web). Esta rota lê esse layout e devolve cada bloco já preenchido com o conteúdo: os banners com a imagem, as vitrines com os cartões de produto, as categorias e os sellers. O app só precisa desenhar.
A rota é anônima (a ekey é opcional). Com a ekey, os produtos seguem o preço e a visibilidade do grupo do cliente. A resposta nunca é guardada em cache (Cache-Control: private, no-store).
/api/4.0/sra_bm_layouts/{layoutID}/sra_bm_locations/{location}/sra_bm_blocksPúblicaBlocos de uma página do app
Devolve os blocos da página indicada, na ordem em que aparecem.
Parâmetros de caminho
layoutIDstringobrigatórioSempre
2572. É um valor fixo que o app envia; qualquer outro responde 404. Não é o id de um layout da loja.locationstringobrigatórioCódigo da página cujo layout você quer. A home é
index.index. Páginas sem layout próprio caem nos blocos padrão.Exemplo de requisição
bash
curl "$BASE_URL/api/4.0/sra_bm_layouts/2572/sra_bm_locations/index.index/sra_bm_blocks"Resposta
200Blocos da home
json
{
"blocks": {
"banners": {
"type": "banners",
"name": "Banners",
"order": 0,
"content": {
"items": [
{
"banner": "Campanha de inverno",
"main_pair": {
"icon": {
"image_path": "https://minhaloja.io.venddor.com.br/uploads/banners/inverno.png?w=1200",
"http_image_path": "https://minhaloja.io.venddor.com.br/uploads/banners/inverno.png?w=1200",
"https_image_path": "https://minhaloja.io.venddor.com.br/uploads/banners/inverno.png?w=1200"
}
},
"url": "https://minhaloja.io.venddor.com.br/uploads/banners/inverno.png?w=1200",
"target_type": "category",
"target_value": "878363454"
}
]
},
"properties": { "delay": 5 }
},
"categories": {
"type": "categories",
"name": "Categorias",
"order": 1,
"content": {
"items": [
{ "category": "Escritório", "category_id": "878363454", "parent_id": "0", "position": "0", "product_count": "305", "seo_name": "escritorio", "status": "A", "subcategories": [] }
]
},
"properties": { "delay": 5 }
},
"products": {
"type": "products",
"name": "Produtos",
"order": 2,
"content": { "items": [ { "product_id": "1585658495", "product": "Caneca Esmaltada 350ml", "price": 52.9, "...": "cartão de produto, veja Produtos" } ] },
"properties": { "delay": 5 }
},
"vendors": {
"type": "vendors",
"name": "Vendedores",
"order": 3,
"content": { "items": [ { "company": "Loja Exemplo", "company_id": "496868694" } ] },
"properties": { "delay": 5 }
}
}
}Campos da resposta
blocksobjectMapa de blocos. A chave é o id do bloco no layout; blocos criados pela plataforma usam o tipo como chave (
banners, categories, products, vendors) ou bg-<nome> para imagens de fundo. Desenhe na ordem de order, não na ordem das chaves.blocks.*.typestringbannerscategoriesproductsproduct_showcasevendorsO que o bloco contém e como desenhar.
blocks.*.namestringTítulo do bloco. Quando o layout não dá nome, vem o padrão do tipo (Banners, Categorias, Produtos, Vitrine, Vendedores).
blocks.*.orderintegerPosição do bloco na tela, a partir de 0.
blocks.*.content.itemsarrayOs itens. Em
banners: banner (nome), main_pair.icon (imagem), url (a imagem), target_type e target_value. Em categories: o objeto de Categorias. Em products e product_showcase: o cartão de Produtos. Em vendors: company, company_id e, quando há logotipo, logos.theme.image.blocks.*.content.items[].target_typestringproductcategorymobile_pageexternal_linkPara onde o toque no banner leva. Vazio quando o banner não tem link.
blocks.*.content.items[].target_valuestringId do produto, id da categoria, slug da página do app ou endereço externo, conforme o
target_type.blocks.*.properties.delayintegerSegundos entre uma imagem e outra num carrossel. Padrão 5.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Authorization presente mas não é uma ekey válida | {"error":"unauthorized"} |
| 404 | layoutID diferente de 2572, ou location vazio | {"error":"layout not found"} |
| 500 | Falha ao montar os blocos | {"error":"failed to get page layout","detail":"..."} |