Skip to main content

📦 Visão Geral

O sistema de Produtos permite que você gerencie um catálogo completo de produtos que podem ser associados a links de pagamento. Isso facilita a criação de links recorrentes e o controle de estoque centralizado.

✨ Funcionalidades

  • CRUD Completo: Criar, ler, atualizar e deletar produtos
  • Controle de Estoque: Gerencie quantidade disponível
  • Preços: Defina preços em centavos
  • Descrições: Adicione descrições detalhadas
  • Status: Ative ou desative produtos
  • Associação com Links: Use produtos em múltiplos links de pagamento

🚀 Criando um Produto

Requisição Básica

curl -X POST "https://https://upay-sistema-api.onrender.com//api/v1/products" \
  -H "Authorization: Bearer SUA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Curso de JavaScript",
    "description": "Curso completo de JavaScript do zero ao avançado",
    "priceCents": 19900,
    "currency": "BRL",
    "stockQuantity": 100,
    "stockEnabled": true
  }'

Resposta

{
  "success": true,
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Curso de JavaScript",
    "description": "Curso completo de JavaScript do zero ao avançado",
    "price": 199.00,
    "priceCents": 19900,
    "currency": "BRL",
    "stockQuantity": 100,
    "stockEnabled": true,
    "status": "ACTIVE",
    "createdAt": "2025-12-30T00:00:00.000Z",
    "updatedAt": "2025-12-30T00:00:00.000Z"
  }
}

📋 Campos Disponíveis

Campos Obrigatórios

  • name (string): Nome do produto (máx. 255 caracteres)

Campos Opcionais

  • description (string): Descrição detalhada do produto
  • priceCents (number): Preço em centavos (ex: 19900 = R$ 199,00)
  • currency (string): Moeda (padrão: “BRL”)
  • stockQuantity (number): Quantidade em estoque
  • stockEnabled (boolean): Ativar controle de estoque (padrão: false)
  • status (enum): “ACTIVE” ou “INACTIVE” (padrão: “ACTIVE”)

📖 Exemplos Completos

Produto Simples

const response = await fetch('https://https://upay-sistema-api.onrender.com//api/v1/products', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'E-book de Marketing Digital',
    description: 'Guia completo com estratégias de marketing digital',
    priceCents: 4900, // R$ 49,00
    currency: 'BRL'
  })
});

Produto com Estoque

const response = await fetch('https://https://upay-sistema-api.onrender.com//api/v1/products', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Camiseta Personalizada',
    description: 'Camiseta 100% algodão com estampa personalizada',
    priceCents: 7900, // R$ 79,00
    currency: 'BRL',
    stockQuantity: 50,
    stockEnabled: true
  })
});

Produto Digital (Sem Estoque)

const response = await fetch('https://https://upay-sistema-api.onrender.com//api/v1/products', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Acesso Premium',
    description: 'Acesso completo à plataforma por 1 ano',
    priceCents: 29900, // R$ 299,00
    currency: 'BRL',
    stockEnabled: false // Produto digital, sem limite de estoque
  })
});

🔍 Listando Produtos

Listar Todos os Produtos

curl -X GET "https://https://upay-sistema-api.onrender.com//api/v1/products?page=1&limit=20" \
  -H "Authorization: Bearer SUA_API_KEY"

Buscar Produto Específico

curl -X GET "https://https://upay-sistema-api.onrender.com//api/v1/products/{id}" \
  -H "Authorization: Bearer SUA_API_KEY"

Filtrar por Status

curl -X GET "https://https://upay-sistema-api.onrender.com//api/v1/products?status=ACTIVE" \
  -H "Authorization: Bearer SUA_API_KEY"

✏️ Atualizando um Produto

Atualização Completa (PUT)

curl -X PUT "https://https://upay-sistema-api.onrender.com//api/v1/products/{id}" \
  -H "Authorization: Bearer SUA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Curso de JavaScript - Atualizado",
    "description": "Nova descrição",
    "priceCents": 17900,
    "stockQuantity": 80
  }'

Atualização Parcial (PATCH)

curl -X PATCH "https://https://upay-sistema-api.onrender.com//api/v1/products/{id}" \
  -H "Authorization: Bearer SUA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "priceCents": 17900
  }'
Use PATCH para atualizar apenas campos específicos. Campos não enviados permanecerão inalterados.

📦 Atualizando Estoque

Atualizar Estoque Específico

curl -X PATCH "https://https://upay-sistema-api.onrender.com//api/v1/products/{id}/stock" \
  -H "Authorization: Bearer SUA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "stockQuantity": 150
  }'

Exemplo em JavaScript

const response = await fetch(`https://https://upay-sistema-api.onrender.com//api/v1/products/${productId}/stock`, {
  method: 'PATCH',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    stockQuantity: 150
  })
});

🗑️ Deletando um Produto

curl -X DELETE "https://https://upay-sistema-api.onrender.com//api/v1/products/{id}" \
  -H "Authorization: Bearer SUA_API_KEY"
A exclusão é permanente. Produtos associados a links de pagamento ativos não devem ser deletados.
Ao criar ou atualizar um link de pagamento, você pode associar produtos:
const response = await fetch('https://https://upay-sistema-api.onrender.com//api/payment-links', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    title: 'Pacote Completo',
    products: [
      { productId: 'produto-1-id', quantity: 1 },
      { productId: 'produto-2-id', quantity: 2 }
    ],
    settings: {
      pixEnabled: true,
      creditCardEnabled: true
    }
  })
});
Quando produtos são associados, o valor total do link é calculado automaticamente baseado nos preços dos produtos e quantidades.

📊 Status do Produto

  • ACTIVE: Produto ativo e disponível para uso
  • INACTIVE: Produto desativado (não aparece em listagens, mas mantém histórico)

🎯 Casos de Uso

E-commerce

Gerencie um catálogo completo de produtos físicos com controle de estoque.

Cursos Online

Crie produtos para cada curso e associe a links de pagamento.

Assinaturas

Produtos digitais sem controle de estoque para assinaturas recorrentes.

Pacotes

Combine múltiplos produtos em um único link de pagamento.

📚 Próximos Passos