Documentação da API v1 · Conheça a Naut
v1

Criar um produto

Cria um produto com preço em centavos inteiros e, opcionalmente, a regra de divisão dele. O produto nasce pronto para receber cobrança.

POSThttps://api.navenaut.com/products/

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

Corpo da requisição

application/json.

CampoTipoDescrição
acceptedMethodsarranjo de um de: `pix`, `card`, `paypal`, `apple_pay`, `google_pay`, `boleto`—
affiliateProgramobjeto—
billingTypeum de: `one_time`, `recurring`Como o produto cobra: one_time (avulso, o padrão) ou recurring (assinatura). Não muda depois de criado. Nesta etapa o produto recorrente já se cria e se configura, mas ainda não se vende: o checkout de assinatura por oferta vem depois, e a vitrine avulsa o trata como inexistente.
categoryum 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`—
currencyum de: `BRL`, `USD`, `EUR`A moeda do preço.
deliveryInstructionstexto—
deliveryModeum de: `members`, `manual`—
descriptiontextoO texto que acompanha o nome na vitrine.
installmentExtraBpsinteiroQuanto você quer ganhar a mais por parcela, em pontos-base (10 é +0,10% ao mês). É receita sua por inteiro. Zero é nada a mais; o teto é 250. Tem de ser um número inteiro (a string 10 entre aspas é recusada com 422). Com installmentLimit em 1 (apenas à vista) o acréscimo é gravado como 0. A taxa da plataforma não aparece nem se escreve por aqui.
installmentLimitinteiroO teto de parcelas no cartão: 1 é só à vista, de 2 em diante o produto parcela até aquela quantidade. Os juros são sempre do comprador.
nameobrigatóriotextoO nome que o comprador vê na vitrine.
offersarranjo de objetoAs ofertas do produto recorrente, cada uma com nome, preço em centavos e periodicidade (semanal, mensal de 1, 2, 3 ou 6 meses, ou anual). No produto recorrente a oferta é o plano. O produto avulso não aceita ofertas.
partsarranjo de objetoAs pernas da divisão. Cada perna aponta para um beneficiário e diz quanto dela lhe cabe.
pixRecoveryEmailEnabledbooleano—
priceCentsinteiro (centavos)O preço, em centavos inteiros. É dele que sai o valor de toda cobrança deste produto. No produto recorrente, deixe de fora: o preço do produto é o da oferta principal.
showAllOffersbooleano—
statementDescriptortexto—
warrantyDaysinteiro—
{
  "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"
  },
  "billingType": "one_time",
  "category": "Saúde e Esportes",
  "currency": "BRL",
  "deliveryInstructions": "exemplo",
  "deliveryMode": "members",
  "description": "exemplo",
  "installmentExtraBps": 0,
  "installmentLimit": 1,
  "name": "Loja Exemplo",
  "offers": [
    {
      "interval": {
        "count": 1,
        "unit": "week"
      },
      "name": "Loja Exemplo",
      "priceCents": 129900,
      "principal": true
    }
  ],
  "parts": [
    {
      "beneficiaryId": "0f2a4e6c-91c4-4e1b-9a3d-5b7c2e8f4a06",
      "bps": 1,
      "priority": 0,
      "role": "coprodutor",
      "shareKind": "proportional"
    }
  ],
  "pixRecoveryEmailEnabled": true,
  "priceCents": 129900,
  "showAllOffers": true,
  "statementDescriptor": "exemplo",
  "warrantyDays": 7
}

Respostas

200 · sucesso

{
  "billingType": "one_time",
  "id": "0f2a4e6c-91c4-4e1b-9a3d-5b7c2e8f4a06",
  "publicId": "7k3m9x",
  "status": "draft"
}

422 · corpo inválido

O corpo não passou na validação: a resposta nomeia o que recusou.

Erros desta rota

StatusCódigoQuandoO que fazer
422PRODUCT_OFFERS_INVALIDAs ofertas não combinam com o produto: o recorrente sem oferta, o avulso com oferta, periodicidade fora da lista, nomes repetidos, mais de uma oferta principal, ou parcelamento num produto recorrente.Corrija o que a resposta lista em reasons e reenvie. Todas as razões vêm de uma vez, e nada foi gravado.
422PRODUCT_SPLIT_RULE_INVALIDAs pernas da divisão não fecham: a soma não bate com o todo, uma perna repete o mesmo beneficiário, ou uma delas pede um valor que a venda não tem para dar.Some as pernas e confira contra o preço antes de reenviar. A resposta nomeia o que recusou, e nada foi gravado.

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.

Próximo passo