titlefacultatif | string | |
descriptionfacultatif | string | HTML. |
shortDescriptionfacultatif | string | |
internalNamefacultatif | string | Nome visto só pela equipe. |
bannerUrlfacultatif | string (uri) | |
featuredImageUrlfacultatif | string (uri) | |
slugfacultatif | string | |
typefacultatif | SUBSCRIPTION | ONE_TIME | INSTALLMENT | |
pricefacultatif | number | `0` é produto gratuito (`ONE_TIME` ou `SUBSCRIPTION`; `INSTALLMENT` com preço 0 dá 400, `param = price`). Um gratuito vai ao ar sem informações comerciais aprovadas; o cliente o pega por `POST /api/checkout`, sem cobrança. · ≥ 0 |
kindfacultatif | digital | physical | event | course | download | O que o produto é, independente de `type` (a forma de cobrar). `digital` (padrão, estoque opcional); `physical` (estoque obrigatório: `hasStock` + `stockQuantity`, senão 400 `param = hasStock`; o checkout pede o endereço de entrega). `event` e `course` nascem com o evento ou o curso (1:1) e **não** se criam por esta rota (400, `param = kind`); `download` é reservado. Não muda depois de criado (400 `param = kind`). |
capacityfacultatif | integer | Só na edição de produto `event`/`course`: capacidade **total** (vagas). `null` = ilimitada. As vagas livres (`available`) são recalculadas; reduzir abaixo dos inscritos não remove ninguém. Nesses produtos `hasStock`/`stockQuantity` dão 400 (`param = capacity`). · ≥ 0 |
includedInPlanIdsfacultatif | string (uuid)[] | Planos (grupos de assinatura) que incluem este produto sem custo extra; quem tem assinatura ativa de um deles tem o produto. Substitui a lista; `[]` limpa; omitido mantém. |
billingIntervalfacultatif | HOURLY | DAILY | WEEKLY | MONTHLY | YEARLY | Só para `SUBSCRIPTION`. |
trialDaysfacultatif | integer | ≥ 0, ≤ 365 |
requiresCardForTrialfacultatif | boolean | |
allowCancellationfacultatif | boolean | |
commitmentMonthsfacultatif | integer | Fidelidade. Só `SUBSCRIPTION` `MONTHLY`. · ≥ 1, ≤ 36 |
installmentsfacultatif | integer | Para `INSTALLMENT`. · ≥ 2, ≤ 24 |
installmentPricefacultatif | number | ≥ 0.01 |
allowedPaymentMethodsfacultatif | string[] | Métodos aceitos no checkout, como `CREDIT_CARD`, `PIX` e `BOLETO`. |
maxInstallmentsfacultatif | integer | ≥ 1, ≤ 12 |
installmentInterestPayerfacultatif | BUYER | ORGANIZATION | |
feePayerfacultatif | ORGANIZATION | BUYER | |
accessDurationfacultatif | integer | Dias de acesso; ausente = vitalício. Na edição, null volta o produto a vitalício. · ≥ 1 |
hasStockfacultatif | boolean | Controla estoque. Só produto avulso (`ONE_TIME`, `INSTALLMENT`); em `SUBSCRIPTION` responde 400 (`param = hasStock`). Exige `stockQuantity` (400, `param = stockQuantity`). |
stockQuantityfacultatif | integer | Unidades disponíveis agora: o número informado é o disponível, e cada pedido em aberto já desconta a dele. Visível só nas respostas de gestão; o comprador vê apenas `soldOut`. · ≥ 0 |
isHighlightedfacultatif | boolean | |
directLinkEnabledfacultatif | boolean | |
grantedCreditsfacultatif | integer | Créditos concedidos uma vez quando a compra é concluída (idempotente por compra; reembolso ou contestação revoga o que não foi usado). Só produto digital de pagamento único (outro tipo: 400, `param = grantedCredits`). Valor acima de 0 exige um space de Reservas ou de Agendamento na comunidade, senão 403. Produto incluído em plano não concede. Padrão 0. · ≥ 0, ≤ 100000 |
grantedCreditsValidityDaysfacultatif | integer | Validade, em dias, dos créditos de `grantedCredits`; `null` ou ausente = não vencem. · ≥ 1, ≤ 3650 |
pricingModefacultatif | MONEY | POINTS | POINTS_OR_MONEY | Como o produto é pago. `POINTS` (só pontos) e `POINTS_OR_MONEY` (a pessoa escolhe) só em `ONE_TIME` de `kind` `digital`, `physical`, `event` (por tipo de ingresso), `course` ou `download`; assinatura, parcelado, reserva e adicional dão 400 (`param = pricingMode`). Com `POINTS` o `price` fica 0 e o produto **nunca** sai pelo checkout em dinheiro, pelo resgate grátis nem por cupom (400): é resgatado em `POST /api/storefront/products/{id}/redeem`. |
pointsPricefacultatif | integer | O preço em pontos, obrigatório fora de `MONEY` (400, `param = pointsPrice`). Vale para resgates seguintes; quem já resgatou não muda. · ≥ 1 |
sortOrderfacultatif | integer | ≥ 0 |
spaceIdsfacultatif | string (uuid)[] | |
subscriptionGroupIdsfacultatif | string (uuid)[] | |
prerequisiteGroupIdsfacultatif | string (uuid)[] | Obsoleto na escrita; prefira `addOnProductIds` no plano. |
thankYouMessagefacultatif | string | max 5000 |
redirectUrlfacultatif | string (uri) | |
metadatafacultatif | object | |