Pular para o conteúdo principal

Produtos

Um produto é qualquer coisa que você vende — um plano SaaS, um produto físico, um serviço. Produtos vivem no catálogo da conta e podem ser anexados a negócios via Produtos do negócio para calcular o valor do deal.

Estrutura do recurso

AtributoTipoObrigatórioExemploNotas
identifierstringNãoSKU-ABC-001SKU ou código único. Default vazio.
namestringNãoPlano PremiumDefault vazio.
descriptionstringNãoPlano premium anual com todos os recursos.
amount_in_centsintegerNão19900Preço em centavos (19900 = R$ 199,00). Default 0.
quantity_availableintegerNão100Quantidade em estoque. Default 0.
custom_attributesobjectNão{ "category": "Software" }Campos customizados livres.

Todos os endpoints abaixo assumem:

{base_url} = https://app.woofedcrm.com
{account_id} = 1

Obter produto

GET /api/v1/accounts/{account_id}/products/{id}

Recupera um único produto pelo ID.

Exemplo de requisição

curl -X GET "https://app.woofedcrm.com/api/v1/accounts/1/products/1" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN_AQUI"

Exemplo de resposta — 200 OK

A resposta também retorna os deal_products pertencentes ao produto.

{
"id": 1,
"identifier": "SNS895SASXVDW",
"amount_in_cents": 1000035,
"quantity_available": 2,
"description": "Carro legal",
"name": "Carro",
"custom_attributes": { "number_of_doors": "4" },
"additional_attributes": {},
"created_at": "2025-01-12T18:21:03Z",
"updated_at": "2025-01-12T18:21:03Z",
"account_id": 1,
"deal_products": [
{
"id": 3,
"product_id": 1,
"deal_id": 10,
"created_at": "2025-01-12T18:21:05Z",
"updated_at": "2025-01-12T18:21:05Z",
"unit_amount_in_cents": 0,
"product_identifier": "",
"product_name": "",
"total_amount_in_cents": 0,
"quantity": 1,
"account_id": 1
}
]
}

Possíveis erros

StatusQuando
401Token ausente ou inválido.
404Produto não encontrado.

Criar produto

POST /api/v1/accounts/{account_id}/products

Cria um novo produto no catálogo.

Body

{
"identifier": "SNS895SASXVDW",
"amount_in_cents": 1000035,
"quantity_available": 2,
"description": "Carro legal",
"name": "Carro",
"custom_attributes": { "number_of_doors": "4" }
}

Exemplo de requisição

curl -X POST "https://app.woofedcrm.com/api/v1/accounts/1/products" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-d '{
"identifier": "SNS895SASXVDW",
"amount_in_cents": 1000035,
"quantity_available": 2,
"description": "Carro legal",
"name": "Carro",
"custom_attributes": { "number_of_doors": "4" }
}'

Exemplo de resposta — 201 Created

{
"id": 7,
"identifier": "SNS895SASXVDW",
"name": "Carro",
"description": "Carro legal",
"amount_in_cents": 1000035,
"quantity_available": 2,
"custom_attributes": { "number_of_doors": "4" },
"additional_attributes": {},
"account_id": 1,
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T10:30:00Z"
}

Possíveis erros

StatusQuando
401Token ausente ou inválido.
422Erro de validação.

Buscar produtos

POST /api/v1/accounts/{account_id}/products/search

Busca produtos com um objeto query no estilo Ransack. Veja Estrutura da API → Busca para a lista de predicados.

Body

{
"query": {
"identifier_eq": "SKU-12345",
"name_cont": "Carro",
"description_cont": "elétrico",
"amount_in_cents_gteq": 1000,
"quantity_available_gt": 0,
"created_at_gteq": "2025-01-01T00:00:00Z",
"updated_at_lteq": "2025-01-31T23:59:59Z"
}
}

Exemplo de requisição

curl -X POST "https://app.woofedcrm.com/api/v1/accounts/1/products/search" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-d '{
"query": {
"name_cont": "Carro",
"amount_in_cents_gteq": 1000
}
}'

Exemplo de resposta — 200 OK

{
"data": [
{
"id": 7,
"identifier": "SNS895SASXVDW",
"amount_in_cents": 1000035,
"quantity_available": 2,
"description": "Carro legal",
"name": "Carro",
"custom_attributes": { "number_of_doors": "4" },
"additional_attributes": {},
"created_at": "2025-01-12T18:21:03Z",
"updated_at": "2025-01-12T18:21:03Z",
"account_id": 1
}
],
"pagination": {
"page": 1,
"items": 1,
"count": 1,
"pages": 1,
"from": 1,
"last": 1,
"to": 1,
"prev": null,
"next": null
}
}

Possíveis erros

StatusQuando
400JSON mal formatado.
401Token ausente ou inválido.
422Predicado desconhecido ou campo não pesquisável.

Atualizar produto

PUT /api/v1/accounts/{account_id}/products/{id}

Atualiza um produto existente. Você pode mudar qualquer subconjunto de campos; os omitidos ficam intactos.

Body

{
"identifier": "PROD-123",
"amount_in_cents": 150099,
"quantity_available": 2,
"description": "Descrição do carro",
"name": "Carro",
"custom_attributes": { "number_of_doors": "4" }
}

Exemplo de requisição

curl -X PUT "https://app.woofedcrm.com/api/v1/accounts/1/products/1" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-d '{
"amount_in_cents": 150099,
"quantity_available": 2
}'

Exemplo de resposta — 200 OK

{
"id": 1,
"identifier": "PROD-123",
"name": "Carro",
"description": "Descrição do carro",
"amount_in_cents": 150099,
"quantity_available": 2,
"custom_attributes": { "number_of_doors": "4" },
"additional_attributes": {},
"account_id": 1,
"updated_at": "2025-01-20T11:42:18Z"
}

Possíveis erros

StatusQuando
401Token ausente ou inválido.
404Produto não encontrado.
422Erro de validação.