Products API

Catálogo de produtos e serviços - opcional, podes sempre enviar itens ad-hoc directamente na factura.

Criar Produto

POST/v1/organisations/:orgId/products

Request Body

JSON
{
  "name": "MacBook Pro M3",
  "code": "PROD-001",
  "description": "14 polegadas, 512GB",
  "unitPrice": 250000000,
  "taxRate": 14,
  "type": "product",
  "unitOfMeasure": "UN",
  "trackStock": true
}
namestringObrigatório
codestring?Código interno - deve ser único na organização
descriptionstring?
unitPriceintegerEm kwanzas × 100
taxRate0 | 5 | 14Default 14
taxExemptionCodestring (3)?Obrigatório quando taxRate = 0
type'product' | 'service'?Default 'product'. Um serviço nunca tem stock (trackStock é ignorado)
unitOfMeasurestring?Default 'UN'
trackStockboolean?Activa controlo de stock - bloqueia venda sem quantidade disponível

Resposta (201 Created)

JSON
{
  "id": "d4e5f6a7-...",
  "orgId": "779b90ce-...",
  "code": "PROD-001",
  "name": "MacBook Pro M3",
  "description": "14 polegadas, 512GB",
  "unitOfMeasure": "UN",
  "unitPrice": 250000000,
  "taxRate": 14,
  "taxExemptionCode": null,
  "type": "product",
  "active": true,
  "trackStock": true,
  "stockQuantity": 0,
  "createdAt": "2026-05-12T10:00:00.000Z",
  "updatedAt": "2026-05-12T10:00:00.000Z"
}

Listar Catálogo

GET/v1/organisations/:orgId/products

Devolve um array simples, sem paginação:

JSON
[
  { "id": "d4e5f6a7-...", "code": "PROD-001", "name": "MacBook Pro M3", "unitPrice": 250000000, "taxRate": 14 },
  { "id": "e5f6a7b8-...", "code": "PROD-002", "name": "iPhone 16", "unitPrice": 180000000, "taxRate": 14 }
]

Actualizar / Remover

PATCH/v1/organisations/:orgId/products/:idActualiza campos (mesma forma do corpo de criação)
DELETE/v1/organisations/:orgId/products/:idRemove o produto

Erros comuns

409product_code_existsJá existe um produto com este code nesta organização