CPQ.core API
API REST para configuração, pricing e quotas de produtos configuráveis. Integre facilmente na sua plataforma e-commerce.
Autenticação
Todas as chamadas à API (exceto /health) requerem autenticação através de uma API Key no header do pedido.
Obter API Key
As API Keys são geridas no backoffice em Stores > API Keys. Cada key está associada a um tenant e tem permissões específicas.
X-API-Key: your-api-key-here
Authorization: Bearer your-api-key
Rate Limits
Os limites de pedidos dependem do plano contratado:
| Plano | Pedidos/minuto | Pedidos/dia |
|---|---|---|
| Free | 60 | 1,000 |
| Pro | 300 | 10,000 |
| Enterprise | Ilimitado | Ilimitado |
Headers de Rate Limit
Cada resposta inclui informação sobre o rate limit:
| Header | Descrição |
|---|---|
X-RateLimit-Limit |
Limite máximo de pedidos |
X-RateLimit-Remaining |
Pedidos restantes no período |
X-RateLimit-Reset |
Timestamp Unix quando o limite reseta |
Tratamento de Erros
A API usa códigos HTTP standard para indicar sucesso ou falha dos pedidos.
| Código | Significado | Ação Recomendada |
|---|---|---|
200 |
Sucesso | Processar resposta normalmente |
400 |
Pedido Inválido | Verificar estrutura do JSON |
401 |
Não Autorizado | Verificar API Key |
403 |
Proibido | API Key não tem acesso ao tenant |
404 |
Não Encontrado | Verificar product_id |
422 |
Validação Falhou | Mostrar erros ao utilizador |
429 |
Rate Limit | Aguardar e tentar novamente |
500 |
Erro Interno | Contactar suporte |
Formato de Erro
{
"error": "Missing or invalid API key",
"code": "UNAUTHORIZED"
}
Endpoints
Retorna o estado de saúde do serviço. Não requer autenticação.
Exemplo
curl -X GET https://cpq.peopleware.pt/api/health
{
"status": "healthy",
"version": "1.9"
}
Retorna a estrutura do formulário para um configurador de produto, incluindo campos, validações e condições de visibilidade.
Parametros
| Parametro | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
product_id |
path | Sim | ID do produto (external_id) |
tenant_id |
query | Sim | ID do tenant |
lang |
query | Nao | Codigo de idioma (default: en) |
Exemplo
curl -X GET "https://cpq.peopleware.pt/api/v1/products/janela-aluminio/form?tenant_id=demo&lang=pt-PT" \
-H "X-API-Key: YOUR_API_KEY"
{
"product_id": "janela-aluminio",
"layout": "sections",
"groups": [
{
"id": "dimensoes",
"label": "Dimensoes",
"fields": [
{
"id": "largura",
"type": "number",
"label": "Largura",
"validation": { "min": 400, "max": 2400 },
"unit": "mm"
}
]
}
],
"quantity": {
"min": 1,
"max": 100,
"step": 1
}
}
Codigos de Resposta
Calcula o preço e outputs (incluindo BOM para produção) com base na configuração fornecida.
output_groups: ["*"] para obter todos os grupos de output,
incluindo dados de producao (BOM).
Body
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
tenant_id |
string | Sim | ID do tenant |
product_id |
string | Sim | ID do produto |
configuration |
object | Sim | Valores dos campos do formulario |
quantity |
integer | Nao | Quantidade (default: 1) |
lang |
string | Nao | Codigo de idioma (default: en) |
output_groups |
array | Nao | Grupos de output a incluir (["*"] para todos) |
Exemplo
curl -X POST https://cpq.peopleware.pt/api/v1/calculate \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tenant_id": "demo",
"product_id": "janela-aluminio",
"configuration": {
"largura": 1200,
"altura": 1000,
"vidro": "temperado",
"cor": "branco"
},
"quantity": 1,
"lang": "pt-PT",
"output_groups": ["*"]
}'
{
"product_id": "janela-aluminio",
"configuration": {
"largura": 1200,
"altura": 1000,
"vidro": "temperado",
"cor": "branco"
},
"result": {
"totals": {
"price": 287.00
},
"groups": {
"production": {
"vidro_m2": 1.20,
"perfil_m": 4.40,
"kit_ferragens": 1,
"parafusos": 20
}
}
},
"quantity": { "min": 1, "max": 100 },
"warnings": [],
"errors": []
}
Codigos de Resposta
Valida um schema DSL sem o guardar. Útil para verificar sintaxe antes de guardar ou testar schemas em desenvolvimento.
Body
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
schema |
string | Sim | Schema DSL a validar |
Exemplo
curl -X POST https://cpq.peopleware.pt/api/v1/validate \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"schema": "let base = 100\nadd price: base * 1.23"
}'
{
"valid": true,
"errors": [],
"warnings": []
}
{
"valid": false,
"errors": [
{
"line": 3,
"column": 5,
"message": "undefined variable 'y'"
}
],
"warnings": []
}