Páginas do seller
Lista, consulta, cria, altera e apaga as páginas de conteúdo do microsite do seller.
Páginas guardam texto fixo: política de trocas, sobre a loja, perguntas frequentes. Cada uma tem uma URL própria a partir do slug. O corpo é HTML.
Listar páginas
/api/v1/vendor/pagesSellerLista as páginas do seller
Páginas não apagadas, por position e depois da mais nova. Sem paginação.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Exemplo de requisição
bash
curl -X GET "$BASE_URL/api/v1/vendor/pages" \
-H "Authorization: Bearer $TOKEN"200Páginas
json
{
"pages": [
{
"id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
"title": "Política de trocas",
"slug": "politica-de-trocas",
"body": "<p>Aceitamos trocas em até 7 dias.</p>",
"status": "active",
"page_type": "page",
"seo_title": "Política de trocas",
"seo_description": "Como trocar um produto.",
"position": 0,
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}
],
"total": 1
}Campos da resposta
pagesarrayPáginas do seller.
iduuidId da página.
titlestringTítulo.
slugstringParte da URL, minúscula e sem acento.
bodystringConteúdo em HTML, já limpo de scripts.
statusstringactivehiddendraftactive, hidden ou draft.page_typestringpagebloglinkpage, blog ou link.seo_titlestringTítulo para buscadores. Ausente se vazio.
seo_descriptionstringDescrição para buscadores. Ausente se vazia.
positionintegerOrdem de exibição.
vendor_iduuidSeller dono.
created_atstringCriação (RFC 3339, UTC).
updated_atstringÚltima alteração (RFC 3339, UTC).
page_id, page, page_title, seo_name, description, timestamp, updated_timestampvariousCampos de compatibilidade com a plataforma antiga. Ignore em integrações novas.
totalintegerQuantidade de páginas.
Consultar página
/api/v1/vendor/pages/{id}SellerDevolve uma página
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Parâmetros de caminho
iduuidobrigatórioId da página.
Exemplo de requisição
bash
curl -X GET "$BASE_URL/api/v1/vendor/pages/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60" \
-H "Authorization: Bearer $TOKEN"200Página
json
{
"id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
"title": "Política de trocas",
"slug": "politica-de-trocas",
"body": "<p>Aceitamos trocas em até 7 dias.</p>",
"status": "active",
"page_type": "page",
"seo_title": "Política de trocas",
"seo_description": "Como trocar um produto.",
"position": 0,
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}Campos da resposta
...objectOs campos de cada página da lista.
Criar página
/api/v1/vendor/pagesSellerCria uma página
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Corpo da requisição
titlestringobrigatórioTítulo. Não pode ser vazio. Tags HTML são removidas.
slugstringobrigatórioParte da URL. Obrigatório nesta rota (a criação do administrador gera um a partir do título). Normalizado para
a-z0-9-.page_typestringobrigatóriopagebloglinkTipo da página.
bodystringConteúdo em HTML. Scripts, eventos
on* e javascript: são removidos.statusstringpadrão: activeactivehiddendraftdisabledactive, hidden, draft ou disabled (também as letras). Vazio vira active.seo_titlestringTítulo para buscadores.
seo_descriptionstringDescrição para buscadores.
positionintegerpadrão: 0Ordem de exibição.
descriptionsobjectTítulo, corpo e textos de SEO por idioma, indexados pelo código do idioma (
lang_code, title, body, seo_title, seo_description). Idiomas omitidos são copiados dos campos principais.Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/vendor/pages" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Política de trocas",
"slug": "politica-de-trocas",
"page_type": "page",
"body": "<p>Aceitamos trocas em até 7 dias.</p>",
"status": "active",
"seo_title": "Política de trocas",
"seo_description": "Como trocar um produto."
}'201Página criada
json
{
"id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
"title": "Política de trocas",
"slug": "politica-de-trocas",
"body": "<p>Aceitamos trocas em até 7 dias.</p>",
"status": "active",
"page_type": "page",
"seo_title": "Política de trocas",
"seo_description": "Como trocar um produto.",
"position": 0,
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}Alterar página
/api/v1/vendor/pages/{id}SellerAltera uma página
Parcial. Um title ou slug enviado em branco é recusado; um slug que já existe em qualquer página da loja também. Envie ao menos um campo.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Parâmetros de caminho
iduuidobrigatórioId da página.
Corpo da requisição
...objectQualquer campo do corpo da criação, todos opcionais.
Exemplo de requisição
bash
curl -X PUT "$BASE_URL/api/v1/vendor/pages/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "hidden"
}'200Página atualizada
json
{
"id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
"title": "Política de trocas",
"slug": "politica-de-trocas",
"body": "<p>Aceitamos trocas em até 7 dias.</p>",
"status": "hidden",
"page_type": "page",
"seo_title": "Política de trocas",
"seo_description": "Como trocar um produto.",
"position": 0,
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}Apagar página
/api/v1/vendor/pages/{id}SellerApaga uma página
Apagamento lógico: a página sai das listas e da vitrine, e a URL deixa de responder.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Parâmetros de caminho
iduuidobrigatórioId da página.
Exemplo de requisição
bash
curl -X DELETE "$BASE_URL/api/v1/vendor/pages/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60" \
-H "Authorization: Bearer $TOKEN"200Página apagada
json
{
"message": "page deleted"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador). | {"error":"insufficient permissions"} |
| 403 | O usuário do seller (equipe) não tem nenhum dos privilégios exigidos. O dono da loja nunca recebe este erro. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","vendor_manage_delivery_areas","vendor_manage_whatsapp","vendor_manage_documents","vendor_manage_kyc","vendor_view_plan","vendor_manage_application","vendor_manage_vacation"]} |
| 403 | O usuário autenticado não está vinculado a nenhum seller. | {"error":"no vendor account associated with this user"} |
| 400 | JSON inválido. | {"error":"invalid request body","detail":"..."} |
| 400 | Título ausente na criação ou em branco na alteração (mensagem em português). | {"error":"informe o título da página"} |
| 400 | Slug ausente na criação ou em branco na alteração (mensagem em português). | {"error":"informe o slug (URL) da página"} |
| 400 | status fora da lista. | {"error":"invalid page status \"x\": must be one of active, disabled, draft, hidden"} |
| 400 | Alteração com slug já usado ou sem nenhum campo. | {"error":"slug \"politica-de-trocas\" already in use"} |
| 400 | page_type ausente ou fora de page, blog, link na criação (a mensagem começa com insert page:). | {"error":"insert page: ..."} |
| 404 | A página não existe ou é de outro seller. | {"error":"page not found"} |