ConstructPro REST API
Integrează ConstructPro cu sistemele tale (ERP, CRM, e-commerce) prin REST API. Disponibil pe planul Business (349 RON/lună).
Quickstart
- 1. Crează cont Business pe /signup + upgrade din /facturare
- 2. Generează API key din Settings → API (UI placeholder; momentan key-urile se cer pe email)
- 3. Apelează API cu header
Authorization: Bearer cp_live_... - 4. Toate request-urile sunt JSON; răspunsuri JSON cu camelCase
Autentificare
API key-urile se trec în header HTTP. Niciodată în URL sau body. Permisiuni scope-based per key.
# cURL
curl -X GET https://floriniosif.ro/api/v1/clients \
-H "Authorization: Bearer cp_live_xxxxxxxxx" \
-H "Content-Type: application/json"
# TypeScript (fetch)
const res = await fetch('https://floriniosif.ro/api/v1/clients', {
headers: {
Authorization: `Bearer ${process.env.CP_API_KEY}`,
'Content-Type': 'application/json',
},
});
const data = await res.json();Rate limits
| Plan | Requests/minut | Requests/zi | Burst |
|---|---|---|---|
| Pro | 60 | 10.000 | 100 |
| Business | 300 | 100.000 | 500 |
Header response include X-RateLimit-Remaining și X-RateLimit-Reset. La depășire returnăm HTTP 429.
Endpoints
Auth
/api/v1/auth/api-keysGenerează un API key pentru integrare programatică (din Settings → API).
{ "name": "Integrare ERP", "scopes": ["read:offers", "write:clients"] }Clients (CRM)
/api/v1/clientsReturnează clienții firmei autenticate, cu paginare cursor-based.
?limit=50&cursor=...&search=text/api/v1/clientsCrează client nou. Auto-prefill ANAF din CUI.
{ "cui": "RO36971470", "phone": "+40700...", "email": "..." }/api/v1/clients/{id}Returnează un client cu istoric oferte și plăți.
Offers
/api/v1/offersListă oferte cu filtrare după status, client, dată.
?status=accepted&clientId=...&from=2026-01-01/api/v1/offersCrează ofertă nouă cu items + pricing.
{ "clientId": "uuid", "items": [...], "vatEnabled": true }/api/v1/offers/{id}/pdfReturnează PDF binary cu Content-Type: application/pdf.
/api/v1/offers/{id}/shareCrează link public temporar pentru ofertă (cu expirare).
{ "expiresIn": 604800 }Calculators
/api/v1/calculators/acoperis17 învelitori, 7 forme. Returnează BOM + total.
{ "lungime": 12, "latime": 10, "panta": 35, "tip": "tigla-ceramica" }/api/v1/calculators/scariDimensionare scară conform regula Blondel + balustradă SR EN 13374.
{ "inaltimeEtaj": 290, "latime": 100, "tip": "dreapta" }/api/v1/calculators/incalzireDimensionare centrală cu INST_COEF zone climatice.
{ "suprafata": 120, "zonaClimatica": "campie", "izolatie": "buna" }Webhooks
/api/v1/webhooksSubscribe la evenimente: offer.created, offer.accepted, payment.succeeded.
{ "url": "https://...", "events": ["offer.accepted"], "secret": "..." }Erori
Toate erorile returnează JSON cu structură consistentă:
{
"error": {
"code": "INVALID_CUI",
"message": "CUI-ul furnizat nu există în baza ANAF",
"details": { "cui": "RO99999999" }
},
"requestId": "req_..."
}| HTTP | Cauză |
|---|---|
| 400 | Validare body / params eșuat |
| 401 | API key lipsă sau invalid |
| 403 | Permisiuni insuficiente per scope |
| 404 | Resursă inexistentă în firma ta |
| 429 | Rate limit depășit |
| 500 | Eroare server (raportat în Sentry) |
Webhooks (notificări push)
ConstructPro notifică sistemul tău la evenimente cheie. Body request semnat cu HMAC SHA-256 (header X-CP-Signature).
- •
offer.created— ofertă nouă creată - •
offer.accepted— ofertă acceptată - •
offer.expired— ofertă expirată - •
payment.succeeded— plată Stripe reușită - •
payment.failed— plată Stripe eșuată - •
client.created— client nou adăugat - •
invoice.uploaded_anaf— factură SPV ANAF OK
API access pe planul Business
349 RON/lună. Include API REST, ANAF e-Factura, multi-firmă, suport prioritar.
Vezi planul Business →Status implementare API: Specificația de mai sus este definitivă. Endpoint-urile sunt în development activ și se vor lansa per-categorie. Pentru early-access, contactează hello@floriniosif.ro.