Categorias próprias
Lista, cria, altera e exclui as categorias que pertencem ao próprio seller, em árvore de até 6 níveis.
Com categorias próprias o seller monta a vitrine da sua loja no marketplace sem depender do administrador: crie a categoria e use o id dela em category_id ao criar produtos.
Listar
/api/v1/vendor/categories/ownSellerListar as categorias próprias
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Exemplo de requisição (listar)
bash
curl "$BASE_URL/api/v1/vendor/categories/own" \
-H "Authorization: Bearer $TOKEN"Resposta (listar)
200Categorias
json
{
"categories": [
{
"id": "5e4d3c2b-0001-4a1b-9c2d-3e4f5a6b7c8d",
"parent_id": null,
"name": "Camisetas",
"slug": "camisetas",
"description": "Camisetas básicas e estampadas",
"image_url": null,
"position": 0,
"status": "A",
"path": "5e4d3c2b-0001-4a1b-9c2d-3e4f5a6b7c8d",
"depth": 0,
"product_count": 12,
"created_at": "2026-10-11T20:00:00Z",
"updated_at": "2026-10-11T20:00:00Z"
}
],
"total": 1
}Campos da resposta
categoriesarrayLista plana, ordenada pelo caminho da árvore e pela posição. Use parent_id e depth para montar a árvore.
idstring (uuid)Id da categoria.
parent_idstring (uuid) | nullCategoria pai; ausente na raiz.
namestringNome.
slugstringTrecho da URL, único entre as categorias.
descriptionstringDescrição.
image_urlstring | nullImagem da categoria.
positionintegerOrdem entre as irmãs.
statusstringAHDTStatus em letra.
pathstringIds dos ancestrais e o próprio id, separados por
/.depthintegerNível: 0 na raiz, até 5.
product_countintegerProdutos ativos (
A) ou pendentes (R) da categoria.whatsapp_hiddenbooleanEscondida do catálogo do WhatsApp.
created_atstringCriação (RFC 3339).
updated_atstringÚltima alteração (RFC 3339).
totalintegerQuantidade.
Erros (listar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings"]} |
| 404 | Usuário sem cadastro de seller. | {"error":"vendor profile not found"} |
Criar
/api/v1/vendor/categoriesSellerCriar uma categoria própria
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Corpo da requisição
namestringobrigatórioNome. Não pode repetir sob o mesmo pai.
slugstringTrecho da URL. Se vazio, nasce do nome. Se já existir, ganha
-2, -3...parent_idstring (uuid)Categoria pai, que precisa ser sua. Omita para criar na raiz.
descriptionstringDescrição.
image_urlstringImagem.
icon_urlstringÍcone.
positionintegerpadrão: 0Ordem entre as irmãs.
statusstringpadrão: AAHDTStatus inicial.
seo_titlestringTítulo SEO.
seo_descriptionstringDescrição SEO.
meta_keywordsstringPalavras-chave.
whatsapp_hiddenbooleanEsconde do catálogo do WhatsApp.
descriptionsobjectConteúdo por idioma (
pt-BR, en...).Exemplo de requisição (criar)
bash
curl -X POST "$BASE_URL/api/v1/vendor/categories" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Camisetas",
"description": "Camisetas básicas e estampadas",
"position": 0,
"status": "A"
}'Resposta (criar)
201Categoria criada
json
{
"id": "5e4d3c2b-0001-4a1b-9c2d-3e4f5a6b7c8d",
"parent_id": null,
"name": "Camisetas",
"slug": "camisetas",
"description": "Camisetas básicas e estampadas",
"image_url": null,
"position": 0,
"status": "A",
"path": "5e4d3c2b-0001-4a1b-9c2d-3e4f5a6b7c8d",
"depth": 0,
"product_count": 12,
"created_at": "2026-10-11T20:00:00Z",
"updated_at": "2026-10-11T20:00:00Z"
}Campos da resposta
idstring (uuid)Id da categoria.
parent_idstring (uuid) | nullCategoria pai; ausente na raiz.
namestringNome.
slugstringTrecho da URL, único entre as categorias.
descriptionstringDescrição.
image_urlstring | nullImagem da categoria.
positionintegerOrdem entre as irmãs.
statusstringAHDTStatus em letra.
pathstringIds dos ancestrais e o próprio id, separados por
/.depthintegerNível: 0 na raiz, até 5.
product_countintegerProdutos ativos (
A) ou pendentes (R) da categoria.whatsapp_hiddenbooleanEscondida do catálogo do WhatsApp.
created_atstringCriação (RFC 3339).
updated_atstringÚltima alteração (RFC 3339).
Erros (criar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings"]} |
| 400 | name ausente. | {"error":"name is required"} |
| 404 | parent_id não é uma categoria sua. | {"error":"parent category not found"} |
| 500 | Nome repetido sob o mesmo pai, mais de 6 níveis, ou pai inexistente. | {"error":"failed to create category","detail":"category name \"Camisetas\" already exists under this parent (id ...)"} |
Alterar
/api/v1/vendor/categories/{categoryId}SellerAlterar uma categoria própria
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
categoryIdstring (uuid)obrigatórioId da categoria.
Corpo da requisição
namestringNovo nome.
slugstringNovo slug.
descriptionstringDescrição.
parent_idstring (uuid)Novo pai (precisa ser seu).
"" move para a raiz.image_urlstringImagem.
icon_urlstringÍcone.
positionintegerOrdem.
statusstringAHDTStatus.
seo_titlestringTítulo SEO.
seo_descriptionstringDescrição SEO.
meta_keywordsstringPalavras-chave.
usergroup_idsarray of stringGrupos de clientes que veem a categoria. Lista vazia = todos; ausente não mexe.
whatsapp_hiddenbooleanEsconde do catálogo do WhatsApp.
look_tryon_enabledbooleanLiga o provador virtual de looks nos produtos desta categoria.
descriptionsobjectConteúdo por idioma; só os idiomas enviados mudam.
Exemplo de requisição (alterar)
bash
curl -X PUT "$BASE_URL/api/v1/vendor/categories/$CATEGORY_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"description": "Camisetas básicas, lisas e estampadas",
"position": 1
}'Resposta (alterar)
200Categoria alterada
json
{
"id": "5e4d3c2b-0001-4a1b-9c2d-3e4f5a6b7c8d",
"parent_id": null,
"name": "Camisetas",
"slug": "camisetas",
"description": "Camisetas básicas e estampadas",
"image_url": null,
"position": 1,
"status": "A",
"path": "5e4d3c2b-0001-4a1b-9c2d-3e4f5a6b7c8d",
"depth": 0,
"product_count": 12,
"created_at": "2026-10-11T20:00:00Z",
"updated_at": "2026-10-11T20:00:00Z"
}Campos da resposta
idstring (uuid)Id da categoria.
parent_idstring (uuid) | nullCategoria pai; ausente na raiz.
namestringNome.
slugstringTrecho da URL, único entre as categorias.
descriptionstringDescrição.
image_urlstring | nullImagem da categoria.
positionintegerOrdem entre as irmãs.
statusstringAHDTStatus em letra.
pathstringIds dos ancestrais e o próprio id, separados por
/.depthintegerNível: 0 na raiz, até 5.
product_countintegerProdutos ativos (
A) ou pendentes (R) da categoria.whatsapp_hiddenbooleanEscondida do catálogo do WhatsApp.
created_atstringCriação (RFC 3339).
updated_atstringÚltima alteração (RFC 3339).
Erros (alterar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings"]} |
| 404 | A categoria não existe ou não é sua (o pai também). | {"error":"category not found"} |
| 500 | Nome repetido, ciclo na árvore, mais de 6 níveis ou outra regra da árvore. | {"error":"failed to update category","detail":"..."} |
Excluir
/api/v1/vendor/categories/{categoryId}SellerExcluir uma categoria própria
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
categoryIdstring (uuid)obrigatórioId da categoria.
Parâmetros de consulta
cascadebooleanpadrão: falsetrue apaga também as subcategorias e os produtos delas. recursive=true é um apelido.Exemplo de requisição (excluir)
bash
curl -X DELETE "$BASE_URL/api/v1/vendor/categories/$CATEGORY_ID" \
-H "Authorization: Bearer $TOKEN"Resposta (excluir)
200Categoria excluída
json
{
"message": "category deleted"
}Campos da resposta
messagestringConfirmação fixa.
Erros (excluir)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings"]} |
| 404 | A categoria não existe ou não é sua (o pai também). | {"error":"category not found"} |
| 409 | A categoria tem produtos. | {"error":"category_has_products","product_count":3,"category_id":"..."} |
| 409 | A categoria tem subcategorias. | {"error":"category_has_subcategories","subcat_count":2,"category_id":"..."} |