Alterar um produto
Altera nome, descrição, preço ou parcelamento. A regra de divisão não muda por aqui: ela tem rota própria.
PATCHhttps://api.navenaut.com/products/{productId}
Autenticação
A sessão do painel autentica esta rota, e ela é lida de forma autoritativa: não há parâmetro em que o chamador aponte para outra conta.
Esta rota não exige escopo nomeado — o que não quer dizer que ela seja aberta: sem a credencial acima ela recusa.
Exige sessão de vendedor. O dono do produto vem do vínculo da sessão, nunca da requisição.
Parâmetros
Caminho
| Nome | Tipo | Descrição |
|---|---|---|
productIdobrigatório | texto (uuid) | O identificador do produto no seu catálogo. |
Corpo da requisição
application/json.
| Campo | Tipo | Descrição |
|---|---|---|
acceptedMethods | arranjo de um de: `pix`, `card`, `paypal`, `apple_pay`, `google_pay`, `boleto` | — |
affiliateProgram | objeto | — |
category | um de: `Saúde e Esportes`, `Finanças e Investimentos`, `Relacionamento`, `Negócios e Carreira`, `Espiritualidade`, `Sexualidade`, `Entretenimento`, `Culinária e Gastronomia`, `Idiomas`, `Direito`, `Apps & Software`, `Literatura`, `Casa e Construção`, `Desenvolvimento Pessoal`, `Moda e Beleza`, `Animais e Plantas`, `Educacional`, `Hobbies`, `Internet`, `Ecologia e Meio Ambiente`, `Música e Artes`, `Tecnologia da Informação`, `Empreendedorismo Digital`, `Outros` | — |
deliveryInstructions | texto | — |
deliveryMode | um de: `members`, `manual` | — |
description | texto | O texto que acompanha o nome na vitrine. |
installmentExtraBps | inteiro | O acréscimo novo por parcela, em pontos-base. Zero tira o acréscimo. Tem de ser um número inteiro (a string 10 entre aspas é recusada com 422). Com o teto em 1 (apenas à vista), enviado agora ou já gravado, o acréscimo é gravado como 0. |
installmentLimit | inteiro | O teto de parcelas novo: 1 é só à vista. |
name | texto | O nome que o comprador vê na vitrine. |
pixRecoveryEmailEnabled | booleano | — |
priceCents | inteiro (centavos) | O preço novo, em centavos inteiros. Cobranças já criadas mantêm o valor com que nasceram. |
showAllOffers | booleano | — |
statementDescriptor | texto | — |
warrantyDays | inteiro | — |
{
"acceptedMethods": [
"pix"
],
"affiliateProgram": {
"clickModel": "first",
"commissionBps": 1,
"cookieDays": 30,
"description": "exemplo",
"enabled": true,
"manualApproval": true,
"onBump": true,
"onUpsell": true,
"rules": "exemplo",
"supportEmail": "comprador@exemplo.com.br"
},
"category": "Saúde e Esportes",
"deliveryInstructions": "exemplo",
"deliveryMode": "members",
"description": "exemplo",
"installmentExtraBps": 0,
"installmentLimit": 1,
"name": "Loja Exemplo",
"pixRecoveryEmailEnabled": true,
"priceCents": 129900,
"showAllOffers": true,
"statementDescriptor": "exemplo",
"warrantyDays": 7
}Respostas
200 · sucesso
{
"acceptedMethods": [
"pix"
],
"affiliateProgram": {
"clickModel": "first",
"commissionBps": 1,
"cookieDays": 30,
"description": "exemplo",
"enabled": true,
"manualApproval": true,
"onBump": true,
"onUpsell": true,
"rules": "exemplo",
"supportEmail": "comprador@exemplo.com.br"
},
"archivedAt": "2026-01-15T12:00:00.000Z",
"billingType": "one_time",
"category": "Saúde e Esportes",
"createdAt": "2026-01-15T12:00:00.000Z",
"deliveryInstructions": "exemplo",
"deliveryMode": "members",
"description": "exemplo",
"id": "0f2a4e6c-91c4-4e1b-9a3d-5b7c2e8f4a06",
"imageUrl": "https://loja.exemplo.com.br/webhooks",
"installmentExtraBps": 0,
"installmentLimit": 1,
"name": "Loja Exemplo",
"offers": [
{
"createdAt": "2026-01-15T12:00:00.000Z",
"id": "0f2a4e6c-91c4-4e1b-9a3d-5b7c2e8f4a06",
"interval": {
"count": 1,
"unit": "week"
},
"name": "Loja Exemplo",
"position": 1,
"price": {
"amountCents": 129900,
"currency": "BRL"
},
"principal": true,
"publicId": "7K3M9X",
"status": "active"
}
],
"parts": [
{
"beneficiaryId": "0f2a4e6c-91c4-4e1b-9a3d-5b7c2e8f4a06",
"bps": 1,
"priority": 0,
"role": "coprodutor",
"shareKind": "proportional"
}
],
"pixRecoveryEmailEnabled": true,
"price": {
"amountCents": 129900,
"currency": "BRL"
},
"publicId": "7k3m9x",
"showAllOffers": true,
"statementDescriptor": "exemplo",
"status": "draft",
"updatedAt": "2026-01-15T12:00:00.000Z",
"warrantyDays": 7
}404 · não encontrado
O produto não existe, ou não é seu.
422 · corpo inválido
O corpo não passou na validação.
Erros desta rota
| Status | Código | Quando | O que fazer |
|---|---|---|---|
| 404 | PRODUCT_NOT_FOUND | O identificador não existe, ou o produto é de outra conta. As duas causas respondem igual de propósito: distinguir revelaria a existência de produto alheio. | Confira o identificador na listagem de produtos. Repetir não muda o resultado, e nenhum campo foi alterado. |
| 422 | PRODUCT_OFFERS_INVALID | O produto é recorrente e o pedido mexe no que ele não aceita: o preço, que é o da oferta principal, ou o parcelamento, que a assinatura não tem. | Tire o campo do pedido. O preço de uma assinatura muda criando outra oferta, e nada foi alterado. |
| 422 | PRODUCT_SPLIT_RULE_INVALID | O preço novo fica abaixo da soma das cotas fixas da regra de divisão: a venda não teria de onde tirar o que a regra promete a cada perna. | Ajuste a regra de divisão (rota própria) ou mantenha um preço que a comporte. Nada foi alterado. |
Os códigos são estáveis e fazem parte do contrato. A lista completa, com todos os vocabulários, está na tabela de erros.