
# API pentru rezumate

Două tipuri de rezumate scrise de AI sunt disponibile prin API:

- **Rezumate chat** — o recapitulare scurtă a conversației unui contact, generată la cerere. Este același lucru cu controlul de rezumat dintr-un chat (vezi [Rezumat chat](../chats/chat-interface.md#chat-summary)).
- **Rezumate zilnice** — sinteza zilnică a tuturor conversațiilor tale pe care [Rezumate zilnice](../daily-summaries/daily-summaries.md) o generează în fiecare dimineață: statistici, un bloc markdown per secțiune și orice sarcini pe care AI-ul le-a creat pe baza acestora.

- **URL de bază** — `https://api.dmchamp.com/v1`
- **Autentificare** — cheia ta API (vezi [Autentificare](authentication.md)). O [cheie cu domeniu limitat](api-keys.md#scoped-keys) necesită secțiunea `Summaries`.
- **Erori și paginare** — vezi [Erori și paginare](errors-and-pagination.md)

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.

---

## Generarea unui rezumat de chat

`POST /summaries` — trimite `phoneNumber` al contactului (cu prefixul țării) sau `email`; unul dintre cele două este obligatoriu.

AI-ul citește cea mai recentă conversație **închisă** a contactului sau pe cea care este încă deschisă, dacă nu a fost închisă niciuna, și scrie o recapitulare a acesteia. Recapitularea este stocată în profilul contactului (apare sub **Rezumate** în panoul de contact din aplicație) și este returnată în răspuns, astfel încât să o poți redirecționa direct către un CRM, un canal Slack sau un e-mail.

**Cost:** același ca pentru un răspuns AI la nivelul de calitate AI al Agentului — Pro 1 credit, Max 0.25, Mini 0.15; cu propria cheie Anthropic conectată, Pro costă 0. Cererea este refuzată înainte de a fi generat ceva dacă soldul nu acoperă costul.

**cURL**

```bash
curl -X POST "https://api.dmchamp.com/v1/summaries?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phoneNumber": "+31612345678"}'
```

**JavaScript**

```javascript
const res = await fetch("https://api.dmchamp.com/v1/summaries", {
  method: "POST",
  headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({ email: "jane@example.com" }),
});
const { summary } = await res.json();
```

**Python**

```python
import requests

r = requests.post(
    "https://api.dmchamp.com/v1/summaries",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={"phoneNumber": "+31612345678"},
)
print(r.json()["summary"])
```

**Răspuns**

```json
{
  "success": true,
  "message": "Chat summary generated successfully",
  "summary": "Jane asked about the 10-session package for her two children (ages 6 and 9) and preferred Saturday mornings. She booked a trial lesson for Saturday at 10:00 and wants to know whether siblings get a discount."
}
```

| Status | Semnificație |
|---|---|
| `400` | Nu a fost trimis nici `phoneNumber`, nici `email`. |
| `404` | Nu există niciun contact corespondent, contactul nu are încă nicio conversație sau conversația nu are mesaje. Câmpul `message` din corp explică motivul. |
| `500` | Generarea a eșuat (de exemplu, credite insuficiente). |

> **Rețetă de automatizare: e-mail de programare cu recapitulare.** Într-o [automatizare](../automations/automations.md) cu declanșatorul **Programare efectuată**, adaugă un pas de **Cerere HTTP** care apelează acest endpoint cu `${trigger.contact.phone_number}` (sau adresa de e-mail a contactului), apoi un pas de **E-mail** care inserează `summary` din răspunsul pasului HTTP împreună cu un link către chat (adresa aplicației tale urmată de `/chats/` și ID-ul contactului din declanșator). Echipa ta primește contextul programării în același e-mail, fără a deschide inbox-ul.

> **Citirea rezumatelor.** Nu există un endpoint care să listeze rezumatele de chat stocate. Păstrează textul din răspuns dacă ai nevoie de el mai târziu sau generează-l din nou (fiecare apel este facturat).

### Alternativă: după ID-ul contactului

`POST /summaries/chat-summary` cu `{"contactId": "..."}` efectuează aceeași generare pentru un contact al cărui ID îl deții deja. Acesta confirmă doar succesul (`{"success": true, "data": "Chat summary generated successfully"}`) și **nu** returnează textul, deci folosește `POST /summaries` atunci când dorești recapitularea propriu-zisă. Un membru al echipei a cărui cheie este limitată la contactele alocate primește `404` pentru un contact din afara acelui domeniu.

---

## Obținerea unui rezumat zilnic

`GET /summaries/daily/{date}` — `date` este `YYYY-MM-DD`. Returnează rezumatul pentru acea zi sau `null` sub `summary` atunci când nu a fost generat încă niciunul, plus configurația secțiunilor tale.

**cURL**

```bash
curl "https://api.dmchamp.com/v1/summaries/daily/2026-09-08?apiKey=YOUR_API_KEY"
```

**Răspuns**

```json
{
  "success": true,
  "data": {
    "summary": {
      "date": "2026-09-08",
      "status": "completed",
      "generated_at": "2026-09-09T05:02:11.000Z",
      "stats": {
        "total_conversations": 42,
        "total_messages_sent": 310,
        "total_messages_received": 268,
        "human_alerts": 3,
        "bookings": 5,
        "new_contacts": 11,
        "sales": 2
      },
      "sections": {
        "wins_losses_improvements": "## Wins\n- ...",
        "tasks_action_items": "- Call Jane back about the sibling discount",
        "human_alerts_reviews": "...",
        "sentiment_analysis": "...",
        "booked_meetings_sales": "..."
      },
      "contact_map": { "Jane Doe": "uid_whatsapp_31612345678" },
      "auto_tasks": [],
      "created_task_ids": []
    },
    "section_configs": [
      { "id": "wins_losses_improvements", "name": "Wins, Losses & Improvements", "enabled": true, "position": 0 }
    ]
  }
}
```

- **`status`** — `pending`, `generating`, `completed` sau `failed` (cu `error` setat). Interogați acest endpoint după o regenerare până când starea devine `completed`.
- **`sections`** — un șir markdown per secțiune, identificat prin ID-ul secțiunii. Cele cinci secțiuni standard sunt `wins_losses_improvements`, `tasks_action_items`, `human_alerts_reviews`, `sentiment_analysis` și `booked_meetings_sales`; secțiunile pe care le adăugați în **Configurare** pe pagina Rezumate zilnice primesc un ID `custom_…`. Numele și ordinea sunt reflectate în `section_configs`.
- **`contact_map`** — nume afișat către ID de contact, astfel încât să puteți transforma numele din text în linkuri.
- **`auto_tasks`** / **`created_task_ids`** — elementele de acțiune extrase de AI și sarcinile create din acestea (când **Creează carduri de sarcini din elementele de acțiune** este activat).

| Status | Semnificație |
|---|---|
| `400` | `date` nu este `YYYY-MM-DD` sau este în viitor. |
| `403` | Rezumatele zilnice sunt dezactivate pentru cont. |

> Preferați un push în locul interogării? [Evenimentul webhook](../integrations/webhooks.md) **Rezumat zilnic creat** livrează același payload în momentul în care un rezumat de dimineață este finalizat.

---

## Regenerarea unui rezumat zilnic

`POST /summaries/daily/{date}/regenerate` — pornește o generare nouă pentru ziua respectivă în fundal și returnează imediat `status: "generating"` și un `sections` gol. Interogați `GET /summaries/daily/{date}` până când se finalizează. Se aplică aceleași reguli ca pentru linkul **Încearcă din nou** din aplicație.

Corpul opțional `{"deleteTasks": false}` păstrează sarcinile create de rularea anterioară; în mod implicit, acestea sunt șterse și recreate din noul rezumat. Trimiteți o valoare booleană reală — șirul `"false"` este ignorat și tratat ca valoare implicită.

```bash
curl -X POST "https://api.dmchamp.com/v1/summaries/daily/2026-09-08/regenerate?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"deleteTasks": false}'
```

---

## Referință rapidă

| Sarcină | Endpoint |
|---|---|
| Generați un rezumat al chatului și obțineți textul | `POST /summaries` |
| Generați un rezumat al chatului după ID-ul de contact (nu se returnează text) | `POST /summaries/chat-summary` |
| Citiți rezumatul unei zile | `GET /summaries/daily/{date}` |
| Regenerați rezumatul unei zile | `POST /summaries/daily/{date}/regenerate` |
