
# API pentru Automatizări

O automatizare este un flux de lucru compus din pași: unul sau mai multe declanșatoare care îl pornesc, urmate de acțiuni, condiții, întârzieri, pași AI și restul, conectate într-un graf. Este aceeași automatizare pe care o vezi și o editezi pe pagina [Automatizări](../automations/automations.md). Acest ghid acoperă citirea și crearea acestora prin API.

- **URL de bază**: `https://api.dmchamp.com/v1`
- **Autentificare**: cheia ta API (vezi [Autentificare](authentication.md))
- **Câmpuri și corpuri**: fiecare parametru și câmp de răspuns se află în [Referința API](reference.md#tag/automations)
- **Erori**: vezi [Erori și paginare](errors-and-pagination.md) și [Erori](#errors) mai jos

> **Agenții:** fiecare endpoint de pe această pagină acceptă `sub_account_id` ca parametru de interogare, astfel încât să poți citi și construi automatizările unui client cu cheia ta de agenție. Un `sub_account_id` care nu este unul dintre conturile clienților tăi va returna `404`. Vezi [API pentru Agenții](../agency/api-for-agencies.md).

---

## Cum funcționează: mai întâi ciorna

API-ul este construit astfel încât nimic să nu înceapă să ruleze din greșeală.

1. **Citește catalogul.** `GET /automations/steps` listează fiecare declanșator, acțiune și tip de pas pe care îl poți folosi, plus gramatica pentru scrierea unui graf (`graph_rules`).
2. **Creează o ciornă.** `POST /automations` stochează automatizarea **oprită**. Încă nu rulează nimic.
3. **Verifică.** Citește-o, deschide-o în constructor (răspunsul îți oferă `open_path`-ul său) și asigură-te că persoana care deține contul a văzut ce face și pentru cine.
4. **Pornește-o.** `POST /automations/{automationId}/enable` este propriul său apel. Acesta este pasul care face ca lucrurile reale să se întâmple: mesaje trimise, înregistrări modificate, instrumente oferite unui agent AI.

Editarea nu schimbă niciodată starea unei automatizări (pornită sau oprită). Acest lucru înseamnă, de asemenea, că o modificare adusă unei automatizări care este **pornită** intră în vigoare imediat, pe automatizarea activă. Pentru a modifica în siguranță o automatizare care rulează, dezactivează-o, editează-o, verifică-o și activează-o din nou.

Fiecare graf pe care îl trimiți trece prin aceleași verificări pe care le aplică pânza constructorului. Un graf pe care nu îl poate deschide sau rula este refuzat cu un `400` care listează exact ce trebuie remediat.

### Acces

- Contul are nevoie de Automatizări. Fără aceasta, fiecare apel de pe această pagină returnează `403`.
- Accesul unui membru al echipei urmează zona lor de **Automatizări** din [Gestionarea Echipei](../settings/team-management.md): citirea (listă, obținere, pași, rulări, foldere) necesită **Vizualizare**, tot ce modifică ceva necesită **Editare**.
- Pe un cont de client al cărui plan exclude crearea și editarea automatizărilor, apelurile de scriere returnează `403`, exact așa cum face constructorul în aplicație.

---

## Endpoint-uri

| Sarcină | Metodă + cale | Explorer |
|---|---|---|
| Listare automatizări | `GET /automations` | [Deschide în Referința API](reference.md#tag/automations/GET/automations) |
| Obținere automatizare cu graful său | `GET /automations/{automationId}` | [Deschide în Referința API](reference.md#tag/automations/GET/automations/{automationId}) |
| Citire catalog pași | `GET /automations/steps` | [Deschide în Referința API](reference.md#tag/automations/GET/automations/steps) |
| Creare automatizare (ciornă) | `POST /automations` | [Deschide în Referința API](reference.md#tag/automations/POST/automations) |
| Actualizare automatizare | `PUT /automations/{automationId}` | [Deschide în Referința API](reference.md#tag/automations/PUT/automations/{automationId}) |
| Activare | `POST /automations/{automationId}/enable` | [Deschide în Referința API](reference.md#tag/automations/POST/automations/{automationId}/enable) |
| Dezactivare | `POST /automations/{automationId}/disable` | [Deschide în Referința API](reference.md#tag/automations/POST/automations/{automationId}/disable) |
| Citire istoric rulări | `GET /automations/{automationId}/runs` | [Deschide în Referința API](reference.md#tag/automations/GET/automations/{automationId}/runs) |
| Listare foldere | `GET /automations/folders` | [Deschide în Referința API](reference.md#tag/automations/GET/automations/folders) |
| Creare folder | `POST /automations/folders` | [Deschide în Referința API](reference.md#tag/automations/POST/automations/folders) |
| Redenumire folder | `PUT /automations/folders/{folderId}` | [Deschide în Referința API](reference.md#tag/automations/PUT/automations/folders/{folderId}) |
| Ștergere folder | `DELETE /automations/folders/{folderId}` | [Deschide în Referința API](reference.md#tag/automations/DELETE/automations/folders/{folderId}) |
| Mutare automatizare într-un folder | `PUT /automations/{automationId}/folder` | [Deschide în Referința API](reference.md#tag/automations/PUT/automations/{automationId}/folder) |

---

## Citirea automatizărilor

`GET /automations` returnează rezumate (fără pași), cele mai recent modificate fiind primele; `folder_id=none` le listează pe cele care nu sunt în niciun folder. `GET /automations/{automationId}` adaugă `graph` complet: fiecare pas (`nodes[]`) cu `kind`, `label`, `alias`, `action`, `params` și `config` ale sale, precum și conexiunile (`edges[]`) cu `from`, `to` și, după o condiție sau similar, `branch`.

```bash
curl "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f?apiKey=YOUR_API_KEY"
```

**Bine de știut**

- **`alias` este modul în care pașii ulteriori citesc rezultatul unui pas**, sub formă de `${nodes.<alias>.<field>}`. Un pas fără acesta este referențiat prin id-ul său.
- `params` este păstrat pentru cititorii mai vechi; `config` conține aceleași valori și mai multe (regulile unei condiții, promptul unui pas AI, durata unei întârzieri, slug-ul și parametrii unei acțiuni).
- **Secretele sunt ascunse.** Valorile care arată ca niște credențiale (secrete webhook, token-uri, chei API, parole, valori header) sunt returnate ca `"[redacted]"`. Trimite `"[redacted]"` înapoi neschimbat și valoarea stocată va fi păstrată.
- **Textele lungi sunt scurtate.** Un text unic mai lung de aproximativ 4.000 de caractere este trunchiat și se termină cu elipsă. Dacă trimiți acel pas înapoi, introdu mai întâi textul complet.
- Dacă serviciul de automatizare nu poate fi accesat, primești `503`, niciodată o listă goală în locul acestuia. O listă goală înseamnă întotdeauna că nu există automatizări.

### Catalogul de pași

`GET /automations/steps` returnează tot ceea ce poate sta la baza unei automatizări: cele 8 `node_kinds`, fiecare declanșator cu setările sale `fields` și `output_keys`, `actions` încorporate cu parametrii lor, `api_actions` (operațiuni ale acestui API pe care un pas de acțiune le poate apela), gramatica `graph_rules` și `counts`. Acesta este ceea ce **oferă** constructorul, nu ceea ce a construit contul: verifică acest lucru înainte de a concluziona că un declanșator sau o acțiune nu există.

- Fără `q`, cele câteva sute de acțiuni API sunt returnate ca etichete grupate pe zone în `api_actions_by_tag`, iar lista plată este goală.
- Cu `q` (un cuvânt insensibil la majuscule), `api_actions` este lista plată a potrivirilor, limitată la 60 (`api_actions_truncated` indică momentul).
- Acțiunile pentru aplicații terțe conectate sunt, de asemenea, căutate și returnate în `app_actions`: caută după numele aplicației, de exemplu `q=hubspot`. Fiecare indică dacă contul are acea aplicație `connected`, iar `connected_apps` listează aplicațiile conectate. `app_actions_unavailable` este `true` atunci când acțiunile aplicației nu au putut fi căutate de această dată; celelalte liste sunt în continuare complete.

---

## Creare și editare

### Crearea unei ciorne

```bash
curl -X POST "https://api.dmchamp.com/v1/automations?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Price question auto-reply",
    "description": "Replies with the price list when someone asks about prices.",
    "graph": {
      "nodes": [
        { "id": "trigger_1", "type": "trigger", "label": "Incoming message",
          "data": { "trigger": { "kind": "incoming_message", "message_filter_contains": "price" } } },
        { "id": "send_prices", "type": "action", "label": "Send message",
          "data": { "action": { "provider": "native", "slug": "SEND_MESSAGE",
            "params": { "contact_id": "${trigger.contact.id}", "body": "Hi ${trigger.contact.first_name}, here is our price list: https://example.com/prices" } } } }
      ],
      "edges": [{ "source": "trigger_1", "target": "send_prices" }]
    }
  }'
```

```json
{ "success": true, "automation": { "id": "8d2c7f1e-…", "enabled": false, "…": "…" }, "draft": true, "open_path": "/automations/8d2c7f1e-…", "warnings": [] }
```

`draft: true` și `enabled: false` sunt normale, nu reprezintă o eroare: o automatizare nouă este întotdeauna o ciornă până când o activezi. `warnings` listează ceea ce constructorul nu a putut finaliza, sub formă de etichete scurte (de exemplu `agent_function:not_linked`).

**Scrierea grafului.** `graph_rules` din catalog reprezintă gramatica completă. Pe scurt:

- Fiecare nod are un `id` (unic în graf), un `type` (unul dintre cele 8 [tipuri de pași](#step-kinds)), un `label` opțional și setările sale în `data` sub o cheie numită după tipul său (`data.trigger`, `data.action`, `data.condition`, `data.delay`, `data.ai`, `data.loop`, `data.transform`, `data.respond`).
- O automatizare are nevoie de cel puțin un declanșator. Gramatica live permite până la 10, iar automatizarea pornește când oricare dintre acestea este declanșat.
- Orice alt pas trebuie să fie accesibil dintr-un declanșator și nicio conexiune nu poate duce înapoi la un pas anterior.
- Muchiile care pleacă dintr-o condiție poartă `sourceHandle` `true` sau `false`; o buclă `body` sau `done`; o întârziere de tip Așteptare pentru răspuns `replied` sau `timed_out`. Celelalte muchii nu au niciuna.
- Slug-urile și parametrii acțiunilor provin din catalog. **Nu ghici niciodată un id** (un agent, o etichetă, o listă, o etapă): caută-l mai întâi cu API-ul sau lasă câmpul ca `""` pentru ca utilizatorul să îl aleagă în constructor.
- Pozițiile sunt opționale; pașii fără poziție sunt aranjați automat.
- Valorile din pașii anteriori sunt scrise ca `${trigger.<field>}` și `${nodes.<step>.<field>}`. Vezi [Utilizarea rezultatelor unui pas anterior](../automations/automations.md#using-what-an-earlier-step-returned) și [Expresii](../automations/automations.md#expressions).
- Graful este acceptat în două scrieri: cea proprie constructorului (de mai sus) și cea cu care răspunde o citire (`kind`, `config`, `from`, `to`, `branch`). Astfel, poți citi o automatizare, schimba un pas și o poți trimite înapoi.
- **O creare nu este sigură de repetat orbește.** Dacă o cerere expiră, listează-ți automatizările înainte de a o trimite din nou, altfel s-ar putea să te trezești cu două ciorne.

### Actualizare

`PUT /automations/{automationId}` modifică `name`, `description` și/sau `graph` (cel puțin unul, sau `400`). Un `graph` înlocuiește **întregul** graf, așa că lucrați întotdeauna pornind de la ceea ce este stocat: citiți-l, modificați ce aveți nevoie, trimiteți întregul graf înapoi.

```bash
curl -X PUT "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Price question auto-reply (EN)" }'
```

- **Păstrați `alias` fiecărui pas exact așa cum l-ați primit.** Dacă îl modificați sau îl ștergeți, orice referință la acel pas va deveni goală. Consultați [Denumirea pașilor](../automations/automations.md#naming-your-steps).
- **Lăsați valorile `"[redacted]"` așa cum sunt** și **restabiliți textele scurtate** (un text care se termină cu puncte de suspensie a fost tăiat în timpul citirii).
- Starea de activare a automatizării nu se modifică niciodată aici. Dacă este activată, editarea dvs. devine activă imediat ce este salvată. Cât timp este activată, o modificare care ar putea declanșa automatizarea de la sine este refuzată: dezactivați-o mai întâi.

### Activare și dezactivare

`POST /automations/{automationId}/enable` pornește o automatizare, astfel încât aceasta să ruleze la declanșare de acum înainte. Apelați-l doar după ce persoana care deține contul a văzut ce face automatizarea și pentru cine, și și-a dat acordul. Constructorul refuză să activeze un graf pe care nu îl poate rula (fără declanșator, o buclă, un pas care se declanșează singur) cu un `400` care explică motivul.

```bash
curl -X POST "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f/enable?apiKey=YOUR_API_KEY"
```

`POST /automations/{automationId}/disable` o întrerupe: execuțiile deja în curs se finalizează, nu încep altele noi. Dezactivarea este întotdeauna permisă. Niciunul dintre apeluri nu necesită un corp.

---

## Istoricul execuțiilor

`GET /automations/{automationId}/runs` returnează execuțiile unei automatizări, cele mai noi primele (`limit` de la 1 la 50, implicit 10): când a început și s-a terminat fiecare, ce a declanșat-o, dacă a reușit și eroarea în caz de eșec. Citirea automatizării vă spune ce **ar face** aceasta; istoricul execuțiilor vă spune ce **a făcut** și este singura modalitate de a distinge o automatizare care nu a rulat niciodată de una care rulează și eșuează de fiecare dată.

```bash
curl "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f/runs?apiKey=YOUR_API_KEY&limit=20"
```

- `mode` este `live` pentru o execuție reală sau `safe` pentru o **Execuție sigură** din editor. O execuție sigură nu trimite nimic, deci nu este o dovadă că automatizarea funcționează în utilizarea reală.
- O listă `runs` goală este un răspuns, nu o omisiune. Răspunsul conține atunci un `note`: fie declanșatorul nu a fost activat niciodată, fie automatizarea este oprită.

---

## Foldere

Folderele doar grupează automatizările în listă. Acestea nu schimbă niciodată ceea ce face o automatizare sau dacă aceasta este activată. Vezi [Organizarea automatizărilor în foldere](../automations/automations.md#organizing-automations-in-folders).

```bash
curl -X PUT "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f/folder?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "folder_id": "f1a2b3c4-5d6e-7f80-91a2-b3c4d5e6f708" }'
```

- Listarea folderelor returnează, de asemenea, `unfiled_count`, adică numărul de automatizări care nu se află în niciun folder.
- Este necesar un nume de folder, de până la 100 de caractere, unic în cont (`409`, `code: "folder_name_taken"`). De asemenea, puteți arhiva o automatizare transmițând `folder_id` atunci când o creați.
- Redenumirea lasă automatizările acolo unde sunt.
- **Ștergerea unui folder șterge doar folderul.** Automatizările sale sunt mutate în afara oricărui folder și continuă să ruleze exact ca înainte; răspunsul indică câte au fost mutate (`moved_to_no_folder`).
- La mutare, `folder_id` este obligatoriu; trimiteți `null` pentru a scoate automatizarea din folderul său.

---

## Catalog

### Tipuri de pași

| Tip | Ce face |
|---|---|
| `trigger` | Pornește automatizarea atunci când se întâmplă ceva. |
| `action` | Rulează un pas: o acțiune integrată, o acțiune API, acțiunea unei aplicații conectate, o cerere HTTP sau un e-mail. |
| `condition` | Împarte fluxul pe baza unei reguli, într-o ramură `true` și una `false`. |
| `transform` | Rulează o mică bucată de cod pentru a restructura datele între pași. |
| `ai` | Interoghează AI-ul cu un prompt scris de tine. Poate returna text, câmpuri separate sau poate alege una dintre mai multe ramuri. |
| `delay` | Așteaptă o perioadă de timp setată sau așteaptă ca persoana de contact să răspundă (cu un timeout). |
| `loop` | Repetă pașii din interiorul său pentru fiecare element dintr-o listă. |
| `respond` | Returnează un răspuns către apelul webhook sau apelul funcției agentului AI care a pornit execuția. |

### Declanșatoare

Acestea sunt cele 40 de declanșatoare (triggers) pe care catalogul le listează astăzi, grupate așa cum le grupează constructorul. Coloana **Setări** conține cheile de setări proprii ale declanșatorului (`fields`), care restrâng condițiile în care acesta se activează. Fiecare declanșator acceptă, de asemenea, `respect_quiet_hours`, `run_hours`, `reentry` și `stop_on_response`; consultați [Setări automatizare](../automations/automations.md#automation-settings).

**Mesagerie**

| Declanșator (`kind`) | Se activează când | Setări |
|---|---|---|
| Mesaj primit (`incoming_message`) | O persoană de contact trimite un mesaj pe orice canal. | `campaign` (îl limitează la un singur agent AI), `channel`, `message_filter_contains` (cuvânt cheie), `message_filter_regex` (model) |
| Apel ratat (`missed_call`) | Cineva apelează unul dintre numerele tale WhatsApp Web sau propriul tău număr SMS și nimeni nu răspunde. | `to_number` |
| Mesaj livrat (`message_delivered`) | Un mesaj trimis de tine este confirmat ca livrat de către canal. | `channel`, `agent` |
| Mesaj eșuat (`message_failed`) | Un mesaj trimis de tine nu a putut fi livrat, împreună cu eroarea. | `channel`, `agent` |
| Mesaj trimis (`message_sent`) | Orice mesaj părăsește contul tău: al AI-ului, al tău, o difuzare, o continuare. Filtrează-l, altfel va rula pentru toate. | `channel`, `sent_by` |
| Continuare trimisă (`follow_up_sent`) | O continuare automată este trimisă. | niciuna |
| Continuare omisă (`follow_up_skipped`) | O continuare a fost reținută deoarece condiția de trimitere a eșuat. | niciuna |
| Continuări finalizate (`follow_up_exhausted`) | O persoană de contact a primit ultima continuare din secvență și nu mai există nimic în coadă. | niciuna |
| Conversație închisă (`conversation_closed`) | Un chat este închis, cu detalii despre cum s-a încheiat și un rezumat. | `channel`, `agent` |
| Difuzare finalizată (`broadcast_completed`) | O difuzare a terminat trimiterea, cu numărul de mesaje trimise și numărul de eșecuri. | niciuna |
| Răspuns lead sortat (`outreach_reply_labelled`) | Răspunsul unui lead de e-mail la rece este sortat, de exemplu ca Interesat. | `label` |
| Comentariu Skool primit (`skool_comment_received`) | Un membru comentează la o postare Skool pe care o urmărește una dintre regulile tale de comentarii. | niciuna |

**Contacte**

| Declanșator (`kind`) | Se activează când | Setări |
|---|---|---|
| Contact nou (`contact_created`) | O persoană nouă te contactează pentru prima dată pe orice canal, și de asemenea pentru importuri, API și contacte create manual. | niciuna |
| Contact actualizat (`contact_updated`) | Un câmp de contact se modifică. | `field` |
| Contacte adăugate aici (`contact_added`) | Doar pentru contactele pe care le introduci tu în această automatizare din pagina Contacte. O singură rulare per contact. | niciuna |
| Etichetă aplicată (`tag_applied`) | O etichetă este adăugată unui contact, de către agentul tău AI, o persoană, o automatizare sau un import. | `tag_name`, `channel`, `applied_by` |
| Etichetă eliminată (`tag_removed`) | O etichetă este eliminată de pe un contact. | `tag_name`, `channel` |
| Membru Skool s-a alăturat (`skool_member_joined`) | Cineva se alătură unei comunități Skool pe care o deții sau o administrezi, cu profilul, răspunsurile și scorul de potrivire. | `group_id`, `create_contact` |
| Membru Skool calificat (`skool_member_qualified`) | Răspunsurile unui nou membru Skool ating sau depășesc pragul tău. | `min_score` |

**Tranzacții**

| Declanșator (`kind`) | Se activează când | Setări |
|---|---|---|
| Oportunitate creată (`deal_created`) | O nouă oportunitate (deal) este adăugată într-unul dintre fluxurile tale de lucru. | `pipeline_id`, `stage_id` |
| Etapa oportunității schimbată (`deal_stage_changed`) | O oportunitate se mută într-o etapă diferită, specificând etapa din care a ieșit și cea în care a intrat. | `pipeline_id`, `to_stage_id`, `from_stage_id` |
| Oportunitate actualizată (`deal_updated`) | Un câmp al oportunității se modifică. | `field` |

**Programări**

| Declanșator (`kind`) | Se activează când | Setări |
|---|---|---|
| Programare efectuată (`appointment_booked`) | O nouă programare este efectuată. | niciuna |
| Programare anulată (`appointment_cancelled`) | O programare efectuată este anulată. | niciuna |
| Programare reprogramată (`appointment_rescheduled`) | O programare efectuată se mută la o altă oră, cu ora veche afișată alături de cea nouă. | `event_id` |
| Înainte de o programare (`appointment_upcoming`) | Cu un timp stabilit înainte de fiecare programare confirmată, pentru mementouri. Până la cinci mementouri per automatizare. | `offsets_minutes` |

**Sarcini**

| Declanșator (`kind`) | Se activează când | Setări |
|---|---|---|
| Sarcină creată (`task_created`) | O sarcină este creată. | `task_type` |
| Sarcină finalizată (`task_completed`) | O sarcină este mutată într-o etapă finalizată. | niciuna |

**Cont**

| Declanșator (`kind`) | Se activează când | Setări |
|---|---|---|
| Sold credite scăzut (`low_credit_balance`) | Soldul tău de credite scade sub pragul de alertă. | niciuna |
| Canal conectat (`channel_connected`) | Unul dintre canalele tale termină conectarea. | `channel` |
| Canal deconectat (`channel_disconnected`) | Unul dintre canalele tale se deconectează: delogat, nelegat sau întrerupt. Un număr WhatsApp Web care se reconectează singur contează doar dacă este încă indisponibil după 30 de minute. | `channel` |

**Agenție**

| Declanșator (`kind`) | Se activează când | Setări |
|---|---|---|
| Sub-cont creat (`sub_account_created`) | Un nou cont de client este creat, din tabloul tău de bord, prin API sau prin pagina ta de înregistrare. | niciuna |
| Activitate sub-cont (`sub_account_event`) | Se întâmplă ceva pe unul dintre conturile tale de client: credite pe sfârșite, un canal care se conectează, o schimbare de plan. | `event`, `threshold` |

**General și aplicații**

| Declanșator (`kind`) | Se activează când | Setări |
|---|---|---|
| Conform programării (`schedule`) | La o programare cron. | `cron`, `timezone` |
| Webhook (`webhook`) | Un sistem extern apelează adresa webhook a automatizării. | `webhook_secret` |
| Funcție Agent AI (`agent_function`) | Agentul tău AI apelează această automatizare ca o funcție în timpul unei conversații. | `function_name`, `function_description`, `parameters`, `agent_ids`, `campaign_ids` |
| Element nou în flux (`rss`) | Un element nou apare într-un flux RSS sau Atom. | `feed_url` |
| E-mail primit (`email_received`) | Un e-mail sosește în propria ta căsuță poștală conectată. | `from_contains`, `subject_contains` |
| Eveniment aplicație (`app_event`) | Se întâmplă ceva într-o aplicație conectată: o etapă a unei oportunități se schimbă, se primește o plată, un formular este trimis. | `toolkit`, `trigger_slug`, `connected_account_id`, `config` |
| Rulare manuală (`manual`) | Doar când este pornită manual. | niciuna |

O automatizare poate conține cel mult un declanșator pentru fiecare dintre `webhook`, `app_event`, `agent_function`, `rss`, `schedule`, `email_received`, `appointment_upcoming` și `contact_added`. Un declanșator care se activează la crearea unei înregistrări nu poate fi asociat cu acțiunea care creează aceeași înregistrare, deoarece automatizarea s-ar declanșa singură.

Pentru ceea ce transmite fiecare declanșator către pașii următori (`output_keys`) și lista completă de acțiuni cu parametrii lor, citește `GET /automations/steps`. [Ghidul de automatizări](../automations/automations.md#triggers) explică fiecare declanșator în termenii constructorului.

---

## Erori

Fiecare eroare are forma obișnuită `{ "success": false, "error_code": <status>, "error": "..." }`. Un graf refuzat adaugă `code` și `errors`: `errors` listează fiecare problemă, câte o propoziție remediabilă pentru fiecare, iar `error` este prima dintre ele. Remediați exact ceea ce este listat și trimiteți din nou întregul graf. `code` este unul dintre `invalid_graph`, `automation_graph_has_a_cycle`, `self_triggering_automation`, `no_trigger` sau un alt cod din constructor.

| Status | Când |
|---|---|
| `400` | Graful a fost refuzat, lipsește un câmp obligatoriu (`name` sau `graph` la creare, `folder_id` la mutare), o actualizare nu a trimis nimic de modificat, un id nu este valid sau un nume de folder lipsește, este gol sau prea lung (`code: "invalid_name"`). |
| `403` | Contul nu are automatizări; planul unui cont de client nu include crearea și editarea automatizărilor (doar scriere); sau accesul membrului echipei la **Automatizări** este prea limitat. |
| `404` | Nu există nicio automatizare cu acel id în acest cont, niciun folder cu acel id (`code: "folder_not_found"`) sau un `sub_account_id` care nu este unul dintre conturile dvs. de client. |
| `409` | Un folder cu acel nume există deja (`code: "folder_name_taken"`). |
| `413` | Automatizarea este mai mare de 1 MB, limita acceptată de constructor. Mutați codul sau datele mari în afara pașilor săi. |
| `422` | Constructorul a respins cererea din alt motiv. Verificați graful în raport cu `GET /automations/steps`; retrimiterea aceleiași cereri nu va ajuta. |
| `503` | Serviciul de automatizare nu a putut fi contactat. Încercați din nou într-un moment. Pentru creare, listați mai întâi automatizările pentru a nu crea o a doua ciornă. |

::: master-only
## Utilizarea acestor endpoint-uri prin MCP

Fiecare endpoint de pe această pagină este, de asemenea, un instrument pentru un asistent AI pe care îl [conectezi prin MCP](../integrations/connect-ai-clients.md), cu aceleași reguli: o nouă automatizare este o ciornă până când este activată, iar o editare a unei automatizări care rulează este imediată.

| Instrument | Endpoint |
|---|---|
| `list_automations` | `GET /automations` |
| `get_automation` | `GET /automations/{automationId}` |
| `list_automation_steps` | `GET /automations/steps` |
| `create_automation` | `POST /automations` |
| `update_automation` | `PUT /automations/{automationId}` |
| `enable_automation` | `POST /automations/{automationId}/enable` |
| `disable_automation` | `POST /automations/{automationId}/disable` |
| `list_automation_runs` | `GET /automations/{automationId}/runs` |
| `list_automation_folders` | `GET /automations/folders` |
| `create_automation_folder` | `POST /automations/folders` |
| `rename_automation_folder` | `PUT /automations/folders/{folderId}` |
| `delete_automation_folder` | `DELETE /automations/folders/{folderId}` |
| `move_automation_to_folder` | `PUT /automations/{automationId}/folder` |
:::

---

## Pașii următori

- [Automatizări](../automations/automations.md): cum funcționează declanșatoarele, pașii, variabilele și istoricul rulărilor în constructor.
- [API pentru Agenții](../agency/api-for-agencies.md): construiește automatizări pe un cont de client cu `sub_account_id`.
- [Referință API](reference.md): exploratorul interactiv complet de endpoint-uri.
