API pentru oportunități (Deals)
O oportunitate (deal) reprezintă o șansă de vânzare pe panoul Sales Pipeline — un titlu, o valoare, etapa în care se află și, opțional, contactul căruia îi aparține și membrul echipei căruia îi este atribuită. Acest ghid acoperă citirea și gestionarea oportunităților prin intermediul API-ului.
- URL de bază —
https://api.youraiconnector.com/v1 - Autentificare — cheia ta API (vezi Autentificare)
- Erori și paginare — vezi Erori și paginare
Toate exemplele de mai jos arată forma de interogare ?apiKey= în cURL și antetul X-API-Key în JavaScript și Python — oricare dintre ele funcționează pe fiecare endpoint.
Obiectul deal
{
"id": "deal_abc123",
"title": "Annual plan – Jane's Clinic",
"description": "Asked for pricing on the annual plan.",
"company": "Jane's Clinic",
"notes": "Prefers a call after 5pm.",
"stage": "stage-2",
"pipeline_id": "default",
"value": 4800,
"probability": 60,
"priority": "high",
"status": "open",
"source": "whatsapp",
"position": 0,
"contact_id": "ctc_9f8e7d",
"assigned_to": "usr_4a2b",
"tags": ["clinic"],
"close_date": "2026-10-01T00:00:00.000Z",
"created_at": "2026-09-05T09:12:00.000Z",
"updated_at": "2026-09-05T09:40:00.000Z",
"stage_entered_at": "2026-09-05T09:40:00.000Z"
}
stage este id-ul uneia dintre etapele fluxului tău de lucru — citește-le cu GET /pipelines (vezi Fluxuri de lucru mai jos). Id-urile etapelor sunt unice pentru toate fluxurile tale de lucru, deci pipeline_id este derivat din etapă și este doar pentru citire: default este fluxul tău de lucru principal și este null atunci când etapa nu mai există. Marcajele temporale sunt în format ISO 8601.
O tranzacție stochează doar câmpurile afișate mai sus. Când creați sau actualizați una, orice alt câmp este refuzat cu o 400 care îl numește, astfel încât nimic din ceea ce trimiteți nu se pierde în mod silențios. Păstrați datele suplimentare în câmpurile personalizate ale contactului asociat.
Listarea oportunităților
GET /deals — returnează oportunitățile din contul tău, începând cu cele mai recente.
Parametri de interogare (toți opționali): stage (un id de etapă), pipeline_id (doar tranzacțiile din acel flux de lucru), contact_id, limit (implicit 50, maxim 200), cursor (din next_cursor al paginii anterioare).
cURL
curl "https://api.youraiconnector.com/v1/deals?apiKey=YOUR_API_KEY&stage=stage-2&limit=50"
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/deals?stage=stage-2&limit=50", {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const { deals, next_cursor } = await res.json();
Python
res = requests.get(
"https://api.youraiconnector.com/v1/deals",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"stage": "stage-2", "limit": 50},
)
deals = res.json()["deals"]
Răspuns (200)
{ "success": true, "deals": [{ "id": "deal_abc123", "title": "Annual plan – Jane's Clinic", "...": "..." }], "next_cursor": null }
Obținerea unei oportunități
GET /deals/{dealId}
curl "https://api.youraiconnector.com/v1/deals/deal_abc123?apiKey=YOUR_API_KEY"
Răspuns (200)
{ "success": true, "deal": { "id": "deal_abc123", "title": "Annual plan – Jane's Clinic", "...": "..." } }
O oportunitate care nu există sau care aparține altui cont va returna 404.
Crearea unei oportunități
POST /deals — title și stage sunt obligatorii; stage trebuie să fie unul dintre id-urile etapelor fluxului tău de vânzări.
curl -X POST "https://api.youraiconnector.com/v1/deals?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "title": "Annual plan – Jane'"'"'s Clinic", "stage": "stage-1", "value": 4800, "contact_id": "ctc_9f8e7d" }'
Răspuns (201)
{ "success": true, "deal_id": "deal_abc123" }
Actualizarea unei oportunități
PUT /deals/{dealId} — trimiteți doar câmpurile pe care doriți să le modificați (title, description, notes, value, stage, status, priority, contact_id, …). value trebuie să fie un număr.
curl -X PUT "https://api.youraiconnector.com/v1/deals/deal_abc123?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "value": 5200, "priority": "high" }'
Răspuns (200): { "success": true, "deal_id": "deal_abc123" }
Mută o afacere într-o altă etapă
POST /deals/{dealId}/move — corp { "new_stage_id": "stage-3", "new_position": 0 }. Poziția 0 plasează cardul în partea de sus a coloanei.
curl -X POST "https://api.youraiconnector.com/v1/deals/deal_abc123/move?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "new_stage_id": "stage-3", "new_position": 0 }'
Răspuns (200): { "success": true, "deal_id": "deal_abc123", "stage": "stage-3", "position": 0 }
Șterge o afacere
DELETE /deals/{dealId} — elimină afacerea. Această acțiune nu poate fi anulată.
curl -X DELETE "https://api.youraiconnector.com/v1/deals/deal_abc123?apiKey=YOUR_API_KEY"
Răspuns (200): { "success": true }
Fluxuri de lucru
Fiecare cont are un flux de lucru principal (id: "default"); poți adăuga până la nouă suplimentare, fiecare cu propriile etape. Id-urile etapelor și etichetele de declanșare trebuie să fie unice în toate fluxurile de lucru din cont, iar fiecare flux de lucru poate marca o etapă ca fiind won și una ca fiind lost.
Listarea fluxurilor de lucru
GET /pipelines — fiecare flux de lucru, cel principal primul, fiecare cu etapele sale sortate după poziție.
curl "https://api.youraiconnector.com/v1/pipelines?apiKey=YOUR_API_KEY"
Răspuns (200):
{
"success": true,
"data": {
"pipelines": [
{
"id": "default",
"name": "Sales",
"position": 0,
"is_default": true,
"settings": { "sync_stage_tags": false },
"stages": [
{ "id": "stage-1", "name": "New lead", "color": "#3B82F6", "position": 0, "trigger_tag": null },
{ "id": "won", "name": "Won", "color": "#10B981", "position": 1, "outcome": "won" }
]
}
]
}
}
Crearea unui flux de lucru
POST /pipelines — corp { "id"?, "name", "stages"?, "settings"? }. Lasă id necompletat pentru a fi generat unul. Fiecare etapă preia aceleași câmpuri ca în dialogul Etape: id, name, color, position, opțional trigger_tag (o cale de etichetă, users/{uid}/tags/{tagId}), default_value, auto_move_after_days + auto_move_to_stage (o etapă din același flux de lucru) și outcome ("won" sau "lost").
curl -X POST "https://api.youraiconnector.com/v1/pipelines?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"id": "reviews",
"name": "Review requests",
"stages": [
{ "id": "rv_asked", "name": "Asked", "color": "#3B82F6", "position": 0 },
{ "id": "rv_done", "name": "Review posted", "color": "#10B981", "position": 1, "outcome": "won" }
]
}'
Răspuns (201): { "success": true, "data": { "pipeline": { ... } } }. Un id de etapă sau o etichetă de declanșare deja utilizată de un alt flux de lucru reprezintă o 400 care numește acel flux de lucru; un id care există deja este o 409.
Actualizarea unui flux de lucru
PUT /pipelines/{pipelineId} — corp { "name"?, "stages"?, "settings"? }. stages înlocuiește întreaga listă, la fel ca în dialogul Etape. Folosește default pentru fluxul de lucru principal. Id-ul fluxului de lucru în sine nu poate fi modificat.
Ștergerea unui flux de lucru
DELETE /pipelines/{pipelineId} — elimină un flux de lucru suplimentar (cel principal nu poate fi șters). Dacă există tranzacții în etapele sale, apelul răspunde cu 409 și deal_count; adaugă ?delete_deals=true pentru a șterge acele tranzacții împreună cu fluxul de lucru. Această acțiune nu poate fi anulată.
Răspuns (204).
Pașii următori
- Sales Pipeline — cum funcționează etapele, etichetele de etapă, mai multe fluxuri de vânzări și panoul.
- API Sarcini — sarcinile pot fi legate de o tranzacție cu
deal_id. - Automatizări — pașii Găsește tranzacții și Găsește tranzacție citesc aceleași date în cadrul unui flux de lucru.