POSTEditar design com a VI
Envia um retrato da página e um pedido em linguagem natural e recebe operações de edição estruturadas.
É o "Pedir para a VI" do editor de design. Você manda o pedido ("deixe o fundo do banner azul-escuro e o texto branco") junto com um retrato leve dos blocos, linhas e colunas da página; a Venddor Intelligence (VI) devolve uma lista de operações que seu cliente aplica depois com as rotas normais de bloco, linha e coluna. A rota não grava nada na loja.
A VI só ajusta estilo e configuração: nunca adiciona, remove nem move blocos, linhas ou colunas. Cada operação mira exatamente um alvo (block_id, row_id ou column_id). Operações inválidas (sem alvo, com mais de um alvo, tipo desconhecido, caminho que o bloco não suporta) são descartadas antes da resposta, então a lista pode vir menor do que a VI propôs.
/api/v1/admin/advanced-layouts/design-ai-editAdminGerar operações de edição de design
Requer o privilégio manage_layouts. O retorno depende de a loja ter a VI habilitada.
Corpo da requisição
requeststringobrigatóriodispatchstringindex.index.selected_block_idintegerselected_row_idintegerselected_column_idintegerblocksobject[]id, type, type_label, name, title_text, aliases[], config, design, custom_css (cortado em 1.800 caracteres), custom_class, column_id, row_id.rowsobject[]id, section, full_width, bg_color, bg_image, spacing, display_mode, custom_class, custom_css (cortado em 1.200), visibility, design, column_ids[].columnsobject[]id, row_id, width_desktop, width_tablet, width_mobile, custom_class, visibility, design, block_ids[].settings_by_typeobjectelements_by_typeobjectblock_type para sub-elementos estilizáveis: id, label_pt, selector.catalogobjectcategories[] com id, name e slug (até 200), para a VI traduzir "categoria Calçados" em um id real.ui_hintsstring[]Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/advanced-layouts/design-ai-edit" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"request": "Deixe o fundo deste bloco azul-escuro e o texto branco",
"dispatch": "index.index",
"selected_block_id": 11081,
"blocks": [
{
"id": 11081,
"type": "banner_slider",
"name": "Main Banner",
"config": {
"autoplay": true
}
}
]
}'Resposta
{
"summary_pt": "Fundo azul-escuro e texto branco no banner.",
"ops": [
{
"kind": "set",
"block_id": 11081,
"path": "design.base.background.type",
"value": "color"
},
{
"kind": "set",
"block_id": 11081,
"path": "design.base.background.color",
"value": "#0f172a"
},
{
"kind": "set",
"block_id": 11081,
"path": "design.base.typography.text_color",
"value": "#ffffff"
}
]
}{
"summary_pt": "Não consegui interpretar a resposta da VI. Tente reformular o pedido.",
"ops": [],
"raw": "..."
}Campos da resposta
summary_ptstringopsobject[]Operações a aplicar.
kindstringsetcssset grava um valor no caminho; css grava declarações CSS para um sub-elemento de bloco (ou para a linha).block_idintegerblock_id, row_id, column_id.row_idintegercolumn_idintegercss.pathstringset: caminho do campo, por exemplo config.bar_bg, design.base.background.color, bg_color, width_desktop ou custom_css.valueanyset: o valor. Cores em #rrggbb ou rgba().element_idstringcss de bloco: id do sub-elemento (do elements_by_type).cssobjectcss: mapa propriedade para valor.rawstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo inválido. | {"error":"invalid_body","detail":"..."} |
| 400 | request vazio. | {"error":"request_required","detail":"request text is required"} |
| 400 | Nenhum bloco, linha ou coluna no retrato. | {"error":"snapshot_required","detail":"at least one block, row, or column snapshot is required"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | Seu usuário não tem o privilégio manage_layouts. | {"error":"insufficient privileges","required":"manage_layouts"} |
| 502 | A VI falhou ao responder. | {"error":"completion_failed","detail":"..."} |
| 503 | A VI não está configurada ou disponível para a loja. | {"error":"intelligence_unavailable","detail":"..."} |