Páginas
Lista, lê, cria, altera e apaga as páginas institucionais da loja no formato da Venddor 1.0.
Uma página é um texto institucional da loja: "Sobre nós", "Política de trocas", "Como comprar". Cada página tem um título, um corpo em HTML, um tipo, uma situação e um endereço (slug). Estas rotas permitem a um CMS ou a um sistema de conteúdo manter as páginas sem abrir o painel.
A listagem traz só as páginas da loja (as páginas que um seller mantém na própria vitrine não aparecem). A leitura (GET) exige apenas um usuário autenticado; criar, alterar e apagar exigem administrador. A mesma rota existe sem /v1.0 (/api/pages).
/api/v1.0/pagesAutenticadaListar páginas (API 1.0)
Devolve o resumo de cada página. O corpo vem em description.
Parâmetros de consulta
pageintegerpadrão: 1items_per_pageintegerpadrão: 10page_typestringTLBT texto, L link, B blog.statusstringADHA ativa, D desativada, H escondida.qstring/api/v1.0/pages/{id}AutenticadaLer uma página (API 1.0)
Devolve a página completa, com os campos de SEO.
Parâmetros de caminho
iduuidobrigatório/api/pages/{id} também só o UUID é aceito./api/v1.0/pagesAdminCriar uma página (API 1.0)
Cria a página e devolve só o id. Se o slug já existe, a plataforma acrescenta -2, -3... em vez de recusar.
Corpo da requisição
pagestringobrigatóriopage).descriptionstringpage_typestringpadrão: TTLBT texto, L link, B blog.statusstringpadrão: AADHA ativa, D desativada, H escondida.slugstringpositionintegerpadrão: 0meta_titlestringmeta_descriptionstring/api/v1.0/pages/{id}AdminAlterar uma página (API 1.0)
Alteração parcial. Não altera meta_title nem meta_description: só a criação grava esses dois.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
pagestringdescriptionstringpage_typestringTLBstatusstringADHslugstringpositioninteger/api/v1.0/pages/{id}AdminApagar uma página (API 1.0)
Apaga a página. Responde 204 sem corpo.
Parâmetros de caminho
iduuidobrigatório/api/pagesAutenticadaListar páginas, sem o prefixo /v1.0
Idêntica a GET /api/v1.0/pages. Os ids saem como decimais (veja o aviso abaixo).
/api/pages/{id}AutenticadaLer uma página, sem o prefixo /v1.0
Idêntica a GET /api/v1.0/pages/{id}.
/api/pagesAdminCriar uma página, sem o prefixo /v1.0
Idêntica a POST /api/v1.0/pages.
/api/pages/{id}AdminAlterar uma página, sem o prefixo /v1.0
Idêntica a PUT /api/v1.0/pages/{id}.
/api/pages/{id}AdminApagar uma página, sem o prefixo /v1.0
Idêntica a DELETE /api/v1.0/pages/{id}.
Exemplo de requisição
curl -X POST "$BASE_URL/api/v1.0/pages" \
-u "$EMAIL:$API_KEY" \
-H "Content-Type: application/json" \
-d '{
"page": "Política de trocas",
"description": "<p>Você tem 7 dias para trocar.</p>",
"page_type": "T",
"status": "A",
"slug": "politica-de-trocas",
"position": 2,
"meta_title": "Política de trocas"
}'Listar as páginas ativas:
curl "$BASE_URL/api/v1.0/pages?status=A&items_per_page=20" \
-u "$EMAIL:$API_KEY"Resposta
{
"pages": [
{
"page_id": "751d5a75-1165-4953-bd6c-09f9517ebc7a",
"page": "Sobre nós",
"page_type": "T",
"description": "<p><strong>Quem somos.</strong> Na nossa loja ...</p>",
"status": "A",
"slug": "sobre-nos",
"timestamp": 1788965088
}
],
"params": { "page": 1, "items_per_page": 20, "total_items": 32 }
}{
"page_id": "09ca5bc2-3419-4454-8461-d25b89c0653a",
"page": "Política de trocas",
"page_type": "T",
"parent_id": 0,
"description": "<p>Você tem 7 dias para trocar.</p>",
"status": "H",
"position": 3,
"slug": "politica-de-trocas",
"timestamp": 1791752926,
"meta_title": "Política de trocas",
"meta_description": "",
"meta_keywords": "",
"usergroup_ids": "",
"company_id": ""
}{ "page_id": "09ca5bc2-3419-4454-8461-d25b89c0653a" }Campos da resposta
page_idstring/api/pages).pagestringpage_typestringTLBFPCT, L ou B.descriptionstringstatusstringADHslugstringtimestampintegerparent_idinteger0 na raiz.positionintegermeta_titlestringmeta_descriptionstringmeta_keywordsstringusergroup_idsstringcompany_idstringparamsobjectpage, items_per_page e total_items.Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo que não é JSON | {"message":"Invalid JSON","status":400} |
| 400 | page (título) ausente na criação | {"message":"Field 'page' (title) is required","status":400} |
| 401 | Sem credencial | {"message":"Authentication required. Use HTTP Basic with email:api_key or Bearer <jwt>.","status":401} |
| 403 | Escrita por quem não é administrador | {"message":"Forbidden: admin scope required","status":403} |
| 404 | Página inexistente (UUID válido) | {"message":"Page not found","status":404} |
| 500 | Id que não é UUID | {"message":"query page abc: ...","status":500} |
| 500 | page_type fora de T, L, B na criação (por exemplo F) | {"message":"insert page: ...","status":500} |
| 500 | Alteração ou remoção de página inexistente | {"message":"page not found","status":500} |
| 500 | status ou slug recusado na alteração | {"message":"invalid page status ...","status":500} |