Planos
Lista, consulta, cria, altera e apaga os planos de seller.
Cada plano tem preço, comissão, limites e recursos, além de nome e descrição por idioma.
Listar planos
/api/v1/admin/vendor-plansAdminLista planos de seller
Parâmetros de consulta
pageintegerpadrão: 1Página.
per_pageintegerpadrão: 50Itens por página, de 1 a 100; fora disso vale 20.
lang_codestringpadrão: pt-BRIdioma (padrão
pt-BR).Exemplo de requisição
bash
curl "$BASE_URL/api/v1/admin/vendor-plans?page=1&per_page=20" \
-H "Authorization: Bearer $TOKEN"Resposta
200Planos
json
{
"plans": [
{
"id": 8,
"status": "A",
"position": 0,
"is_default": false,
"price_cents": 9900,
"periodicity": "month",
"commission_bps": 700,
"fixed_commission_cents": 0,
"products_limit": 6000,
"revenue_limit_cents": 0,
"vendor_store": false,
"categories": "",
"include_shipping": false,
"include_taxes": false,
"price_on_request": false,
"ministore_enabled": false,
"ministore_whatsapp_payment": false,
"ministore_pix_auto": false,
"ministore_search_text": false,
"ministore_search_audio": false,
"ministore_search_image": false,
"ministore_search_list_ai": false,
"ministore_dashboard_simple": false,
"ministore_dashboard_metrics": false,
"ministore_dashboard_custom": false,
"ministore_cart_recovery": false,
"ministore_crm": false,
"ministore_human_transfer": false,
"ministore_integrations": false,
"ministore_orders_included": 0,
"ministore_excess_per_order_cents": 0,
"ministore_excess_percentage_bps": 0,
"created_at": "2026-07-11T19:45:31Z",
"updated_at": "2026-09-10T13:29:00Z",
"descriptions": [
{
"plan_id": 8,
"lang_code": "pt-BR",
"name": "Pro",
"description": "Plano para sellers em crescimento"
}
],
"vendors_count": 1
}
],
"total": 14,
"page": 1,
"per_page": 20,
"total_pages": 1
}Campos da resposta
totalintegerTotal de planos.
pageintegerPágina.
per_pageintegerTamanho da página.
total_pagesintegerTotal de páginas.
plansarrayPlanos.
idintegerId do plano.
statusstringAHDA ativo, H oculto, D desativado.positionintegerOrdem de exibição.
is_defaultbooleanPlano padrão dos sellers novos.
price_centsintegerPreço por período em centavos.
periodicitystringmonthyearonetimemonth, year ou onetime.commission_bpsintegerComissão percentual em pontos-base.
fixed_commission_centsintegerComissão fixa por pedido em centavos.
products_limitintegerMáximo de produtos.
0 = ilimitado.revenue_limit_centsintegerTeto de faturamento em centavos.
0 = ilimitado.vendor_storebooleanPermite loja/página própria do seller.
categoriesstringIds de categorias permitidas, separados por vírgula. Vazio = todas.
include_shippingbooleanO frete entra na base da comissão.
include_taxesbooleanOs impostos entram na base da comissão.
price_on_requestbooleanPlano sob consulta: esconde o preço fixo.
ministore_*mixedRecursos da mini-loja de WhatsApp, todos opcionais:
ministore_enabled, ministore_whatsapp_payment, ministore_pix_auto, ministore_search_text|audio|image|list_ai, ministore_dashboard_simple|metrics|custom, ministore_cart_recovery, ministore_crm, ministore_human_transfer, ministore_integrations (booleanos), ministore_orders_included (inteiro, 0 = ilimitado), ministore_excess_per_order_cents (centavos) e ministore_excess_percentage_bps (pontos-base).descriptionsarrayNome e descrição por idioma:
plan_id, lang_code, name, description.vendors_countintegerSellers no plano.
created_atstringCriação.
updated_atstringÚltima alteração.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem manage_vendors nem view_vendors. | {"error":"insufficient privileges","privilege_required_any":["manage_vendors","view_vendors"]} |
| 403 | O módulo vendor-plans está desligado na loja. | {"error":"module_disabled","module":"vendor-plans"} |
Consultar um plano
/api/v1/admin/vendor-plans/{id}AdminConsulta um plano
Parâmetros de caminho
idintegerobrigatórioId numérico do plano.
Exemplo de requisição
bash
curl "$BASE_URL/api/v1/admin/vendor-plans/8" \
-H "Authorization: Bearer $TOKEN"Resposta
200Plano
json
{
"id": 8,
"status": "A",
"position": 0,
"is_default": false,
"price_cents": 9900,
"periodicity": "month",
"commission_bps": 700,
"fixed_commission_cents": 0,
"products_limit": 6000,
"revenue_limit_cents": 0,
"vendor_store": false,
"categories": "",
"include_shipping": false,
"include_taxes": false,
"price_on_request": false,
"ministore_enabled": false,
"ministore_whatsapp_payment": false,
"ministore_pix_auto": false,
"ministore_search_text": false,
"ministore_search_audio": false,
"ministore_search_image": false,
"ministore_search_list_ai": false,
"ministore_dashboard_simple": false,
"ministore_dashboard_metrics": false,
"ministore_dashboard_custom": false,
"ministore_cart_recovery": false,
"ministore_crm": false,
"ministore_human_transfer": false,
"ministore_integrations": false,
"ministore_orders_included": 0,
"ministore_excess_per_order_cents": 0,
"ministore_excess_percentage_bps": 0,
"created_at": "2026-07-11T19:45:31Z",
"updated_at": "2026-09-10T13:29:00Z",
"descriptions": [
{
"plan_id": 8,
"lang_code": "pt-BR",
"name": "Pro",
"description": "Plano para sellers em crescimento"
}
],
"vendors_count": 1
}Campos da resposta
idintegerId do plano.
statusstringAHDA ativo, H oculto, D desativado.positionintegerOrdem de exibição.
is_defaultbooleanPlano padrão dos sellers novos.
price_centsintegerPreço por período em centavos.
periodicitystringmonthyearonetimemonth, year ou onetime.commission_bpsintegerComissão percentual em pontos-base.
fixed_commission_centsintegerComissão fixa por pedido em centavos.
products_limitintegerMáximo de produtos.
0 = ilimitado.revenue_limit_centsintegerTeto de faturamento em centavos.
0 = ilimitado.vendor_storebooleanPermite loja/página própria do seller.
categoriesstringIds de categorias permitidas, separados por vírgula. Vazio = todas.
include_shippingbooleanO frete entra na base da comissão.
include_taxesbooleanOs impostos entram na base da comissão.
price_on_requestbooleanPlano sob consulta: esconde o preço fixo.
ministore_*mixedRecursos da mini-loja de WhatsApp, todos opcionais:
ministore_enabled, ministore_whatsapp_payment, ministore_pix_auto, ministore_search_text|audio|image|list_ai, ministore_dashboard_simple|metrics|custom, ministore_cart_recovery, ministore_crm, ministore_human_transfer, ministore_integrations (booleanos), ministore_orders_included (inteiro, 0 = ilimitado), ministore_excess_per_order_cents (centavos) e ministore_excess_percentage_bps (pontos-base).descriptionsarrayNome e descrição por idioma:
plan_id, lang_code, name, description.vendors_countintegerSellers no plano.
created_atstringCriação.
updated_atstringÚltima alteração.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | id não numérico. | {"error":"invalid plan ID"} |
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem manage_vendors nem view_vendors. | {"error":"insufficient privileges","privilege_required_any":["manage_vendors","view_vendors"]} |
| 403 | O módulo vendor-plans está desligado na loja. | {"error":"module_disabled","module":"vendor-plans"} |
| 404 | Plano inexistente. | {"error":"plan not found"} |
Criar um plano
/api/v1/admin/vendor-plansAdminCria um plano
Corpo da requisição
statusstringpadrão: AAHDA (padrão), H ou D.positionintegerOrdem de exibição.
is_defaultbooleanTorna este o plano padrão e tira a marca dos outros.
price_centsintegerPreço em centavos.
periodicitystringpadrão: monthmonthyearonetimemonth (padrão), year ou onetime.commission_bpsintegerComissão em pontos-base.
fixed_commission_centsintegerComissão fixa por pedido, em centavos.
products_limitinteger0 = ilimitado.revenue_limit_centsinteger0 = ilimitado.vendor_storebooleanLoja própria.
categoriesstringIds de categorias separados por vírgula.
include_shippingbooleanFrete na base.
include_taxesbooleanImpostos na base.
price_on_requestbooleanSob consulta.
ministore_*mixedOs mesmos recursos
ministore_* da resposta.descriptionsarrayNome e descrição por idioma. Cada item: lang_code (pt-BR, en...), name, description.
lang_codestringobrigatórioIdioma.
namestringobrigatórioNome do plano.
descriptionstringDescrição.
Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/admin/vendor-plans" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "A",
"price_cents": 9900,
"periodicity": "month",
"commission_bps": 700,
"products_limit": 6000,
"descriptions": [
{
"lang_code": "pt-BR",
"name": "Pro",
"description": "Plano para sellers em crescimento"
}
]
}'Resposta
201Plano criado
json
{
"id": 8,
"status": "A",
"position": 0,
"is_default": false,
"price_cents": 9900,
"periodicity": "month",
"commission_bps": 700,
"fixed_commission_cents": 0,
"products_limit": 6000,
"revenue_limit_cents": 0,
"vendor_store": false,
"categories": "",
"include_shipping": false,
"include_taxes": false,
"price_on_request": false,
"ministore_enabled": false,
"ministore_whatsapp_payment": false,
"ministore_pix_auto": false,
"ministore_search_text": false,
"ministore_search_audio": false,
"ministore_search_image": false,
"ministore_search_list_ai": false,
"ministore_dashboard_simple": false,
"ministore_dashboard_metrics": false,
"ministore_dashboard_custom": false,
"ministore_cart_recovery": false,
"ministore_crm": false,
"ministore_human_transfer": false,
"ministore_integrations": false,
"ministore_orders_included": 0,
"ministore_excess_per_order_cents": 0,
"ministore_excess_percentage_bps": 0,
"created_at": "2026-07-11T19:45:31Z",
"updated_at": "2026-09-10T13:29:00Z",
"descriptions": [
{
"plan_id": 8,
"lang_code": "pt-BR",
"name": "Pro",
"description": "Plano para sellers em crescimento"
}
],
"vendors_count": 1
}Campos da resposta
idintegerId do plano.
statusstringAHDA ativo, H oculto, D desativado.positionintegerOrdem de exibição.
is_defaultbooleanPlano padrão dos sellers novos.
price_centsintegerPreço por período em centavos.
periodicitystringmonthyearonetimemonth, year ou onetime.commission_bpsintegerComissão percentual em pontos-base.
fixed_commission_centsintegerComissão fixa por pedido em centavos.
products_limitintegerMáximo de produtos.
0 = ilimitado.revenue_limit_centsintegerTeto de faturamento em centavos.
0 = ilimitado.vendor_storebooleanPermite loja/página própria do seller.
categoriesstringIds de categorias permitidas, separados por vírgula. Vazio = todas.
include_shippingbooleanO frete entra na base da comissão.
include_taxesbooleanOs impostos entram na base da comissão.
price_on_requestbooleanPlano sob consulta: esconde o preço fixo.
ministore_*mixedRecursos da mini-loja de WhatsApp, todos opcionais:
ministore_enabled, ministore_whatsapp_payment, ministore_pix_auto, ministore_search_text|audio|image|list_ai, ministore_dashboard_simple|metrics|custom, ministore_cart_recovery, ministore_crm, ministore_human_transfer, ministore_integrations (booleanos), ministore_orders_included (inteiro, 0 = ilimitado), ministore_excess_per_order_cents (centavos) e ministore_excess_percentage_bps (pontos-base).descriptionsarrayNome e descrição por idioma:
plan_id, lang_code, name, description.vendors_countintegerSellers no plano.
created_atstringCriação.
updated_atstringÚltima alteração.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo inválido, status fora de A/H/D ou periodicity inválida. | {"error":"failed to create plan","detail":"invalid status: X (must be A, H, or D)"} |
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem o privilégio manage_vendors. | {"error":"insufficient privileges","required":"manage_vendors"} |
| 403 | O módulo vendor-plans está desligado na loja. | {"error":"module_disabled","module":"vendor-plans"} |
Alterar um plano
Atualização parcial: só os campos enviados mudam. Enviar descriptions grava os textos dos idiomas informados.
/api/v1/admin/vendor-plans/{id}AdminAltera um plano
Parâmetros de caminho
idintegerobrigatórioId numérico do plano.
Corpo da requisição
statusstringpadrão: AAHDA (padrão), H ou D.positionintegerOrdem de exibição.
is_defaultbooleanTorna este o plano padrão e tira a marca dos outros.
price_centsintegerPreço em centavos.
periodicitystringpadrão: monthmonthyearonetimemonth (padrão), year ou onetime.commission_bpsintegerComissão em pontos-base.
fixed_commission_centsintegerComissão fixa por pedido, em centavos.
products_limitinteger0 = ilimitado.revenue_limit_centsinteger0 = ilimitado.vendor_storebooleanLoja própria.
categoriesstringIds de categorias separados por vírgula.
include_shippingbooleanFrete na base.
include_taxesbooleanImpostos na base.
price_on_requestbooleanSob consulta.
ministore_*mixedOs mesmos recursos
ministore_* da resposta.descriptionsarrayNome e descrição por idioma. Cada item: lang_code (pt-BR, en...), name, description.
lang_codestringobrigatórioIdioma.
namestringobrigatórioNome do plano.
descriptionstringDescrição.
Exemplo de requisição
bash
curl -X PUT "$BASE_URL/api/v1/admin/vendor-plans/8" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"price_cents": 10900,
"commission_bps": 650
}'Resposta
200Plano alterado
json
{
"id": 8,
"status": "A",
"position": 0,
"is_default": false,
"price_cents": 10900,
"periodicity": "month",
"commission_bps": 650,
"fixed_commission_cents": 0,
"products_limit": 6000,
"revenue_limit_cents": 0,
"vendor_store": false,
"categories": "",
"include_shipping": false,
"include_taxes": false,
"price_on_request": false,
"ministore_enabled": false,
"ministore_whatsapp_payment": false,
"ministore_pix_auto": false,
"ministore_search_text": false,
"ministore_search_audio": false,
"ministore_search_image": false,
"ministore_search_list_ai": false,
"ministore_dashboard_simple": false,
"ministore_dashboard_metrics": false,
"ministore_dashboard_custom": false,
"ministore_cart_recovery": false,
"ministore_crm": false,
"ministore_human_transfer": false,
"ministore_integrations": false,
"ministore_orders_included": 0,
"ministore_excess_per_order_cents": 0,
"ministore_excess_percentage_bps": 0,
"created_at": "2026-07-11T19:45:31Z",
"updated_at": "2026-09-10T13:29:00Z",
"descriptions": [
{
"plan_id": 8,
"lang_code": "pt-BR",
"name": "Pro",
"description": "Plano para sellers em crescimento"
}
],
"vendors_count": 1
}Campos da resposta
idintegerId do plano.
statusstringAHDA ativo, H oculto, D desativado.positionintegerOrdem de exibição.
is_defaultbooleanPlano padrão dos sellers novos.
price_centsintegerPreço por período em centavos.
periodicitystringmonthyearonetimemonth, year ou onetime.commission_bpsintegerComissão percentual em pontos-base.
fixed_commission_centsintegerComissão fixa por pedido em centavos.
products_limitintegerMáximo de produtos.
0 = ilimitado.revenue_limit_centsintegerTeto de faturamento em centavos.
0 = ilimitado.vendor_storebooleanPermite loja/página própria do seller.
categoriesstringIds de categorias permitidas, separados por vírgula. Vazio = todas.
include_shippingbooleanO frete entra na base da comissão.
include_taxesbooleanOs impostos entram na base da comissão.
price_on_requestbooleanPlano sob consulta: esconde o preço fixo.
ministore_*mixedRecursos da mini-loja de WhatsApp, todos opcionais:
ministore_enabled, ministore_whatsapp_payment, ministore_pix_auto, ministore_search_text|audio|image|list_ai, ministore_dashboard_simple|metrics|custom, ministore_cart_recovery, ministore_crm, ministore_human_transfer, ministore_integrations (booleanos), ministore_orders_included (inteiro, 0 = ilimitado), ministore_excess_per_order_cents (centavos) e ministore_excess_percentage_bps (pontos-base).descriptionsarrayNome e descrição por idioma:
plan_id, lang_code, name, description.vendors_countintegerSellers no plano.
created_atstringCriação.
updated_atstringÚltima alteração.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | id inválido, corpo inválido, status/periodicity inválidos ou tentativa de desativar plano com sellers. | {"error":"failed to update plan","detail":"cannot disable plan with 3 active vendors"} |
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem o privilégio manage_vendors. | {"error":"insufficient privileges","required":"manage_vendors"} |
| 403 | O módulo vendor-plans está desligado na loja. | {"error":"module_disabled","module":"vendor-plans"} |
| 404 | Plano inexistente. | {"error":"plan not found"} |
Apagar um plano
/api/v1/admin/vendor-plans/{id}AdminApaga um plano
Parâmetros de caminho
idintegerobrigatórioId numérico do plano.
Exemplo de requisição
bash
curl -X DELETE "$BASE_URL/api/v1/admin/vendor-plans/8" \
-H "Authorization: Bearer $TOKEN"Resposta
200Apagado
json
{
"status": "deleted"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | id não numérico. | {"error":"invalid plan ID"} |
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem o privilégio manage_vendors. | {"error":"insufficient privileges","required":"manage_vendors"} |
| 403 | O módulo vendor-plans está desligado na loja. | {"error":"module_disabled","module":"vendor-plans"} |
| 409 | Há sellers usando o plano. | {"error":"cannot delete plan","detail":"cannot delete plan: 1 vendors are using it"} |