
# Otomasyonlar API'si

Otomasyon, adımlardan oluşan bir iş akışıdır: onu başlatan bir veya daha fazla tetikleyici, ardından eylemler, koşullar, gecikmeler, yapay zeka adımları ve bir grafiğe bağlanmış diğer öğeler. Bu, [Otomasyonlar](../automations/automations.md) sayfasında gördüğünüz ve düzenlediğiniz otomasyonun aynısıdır. Bu kılavuz, bunları API üzerinden okumayı ve oluşturmayı kapsar.

- **Temel URL**: `https://api.dmchamp.com/v1`
- **Kimlik Doğrulama**: API anahtarınız (bkz. [Kimlik Doğrulama](authentication.md))
- **Alanlar ve gövdeler**: her parametre ve yanıt alanı [API Başvurusu](reference.md#tag/automations) içindedir
- **Hatalar**: aşağıda [Hatalar ve Sayfalandırma](errors-and-pagination.md) ve [Hatalar](#errors) bölümlerine bakın

> **Ajanslar:** Bu sayfadaki her uç nokta, bir sorgu parametresi olarak `sub_account_id` kabul eder, böylece ajans anahtarınızla bir müşterinin otomasyonlarını okuyabilir ve oluşturabilirsiniz. Müşteri hesaplarınızdan biri olmayan bir `sub_account_id`, `404` döndürür. Bkz. [Ajanslar için API](../agency/api-for-agencies.md).

---

## Nasıl çalışır: önce taslak

API, hiçbir şeyin yanlışlıkla çalışmaya başlamaması için tasarlanmıştır.

1. **Kataloğu okuyun.** `GET /automations/steps`, kullanabileceğiniz her tetikleyiciyi, eylemi ve adım türünü, ayrıca bir grafik yazmak için gereken dil bilgisini (`graph_rules`) listeler.
2. **Bir taslak oluşturun.** `POST /automations`, otomasyonu **kapalı** olarak saklar. Henüz hiçbir şey çalışmaz.
3. **Kontrol edin.** Geri okuyun, oluşturucuda açın (yanıt size `open_path` değerini verir) ve hesabın sahibinin ne yaptığını ve kime yaptığını gördüğünden emin olun.
4. **Açın.** `POST /automations/{automationId}/enable` kendi başına bir çağrıdır. Bu, gerçek şeylerin gerçekleşmesini sağlayan adımdır: mesajlar gönderilir, kayıtlar değiştirilir, bir yapay zeka temsilcisine araçlar verilir.

Düzenleme, bir otomasyonun açık veya kapalı olma durumunu asla değiştirmez. Bu aynı zamanda **açık** olan bir otomasyonda yapılan bir düzenlemenin, canlı otomasyonda hemen geçerli olduğu anlamına gelir. Çalışan bir otomasyonu güvenli bir şekilde değiştirmek için devre dışı bırakın, düzenleyin, kontrol edin ve tekrar etkinleştirin.

Gönderdiğiniz her grafik, oluşturucu tuvalinin uyguladığı aynı kontrollerden geçer. Açamadığı veya çalıştıramadığı bir grafik, tam olarak neyin düzeltilmesi gerektiğini listeleyen bir `400` ile reddedilir.

### Erişim

- Hesabın Otomasyonlara ihtiyacı vardır. Bu olmadan, bu sayfadaki her çağrı `403` döndürür.
- Bir ekip üyesinin erişimi, [Ekip Yönetimi](../settings/team-management.md) içindeki **Otomasyonlar** alanını takip eder: okuma (liste, al, adımlar, çalıştırmalar, klasörler) **Görüntüleme** yetkisi gerektirir, bir şeyi değiştiren her şey **Düzenleme** yetkisi gerektirir.
- Planı otomasyon oluşturmayı ve düzenlemeyi dışarıda bırakan bir müşteri hesabında, yazma çağrıları, uygulamadaki oluşturucunun yaptığı gibi `403` döndürür.

---

## Uç Noktalar

| Görev | Yöntem + yol | Gezgin |
|---|---|---|
| Otomasyonları listele | `GET /automations` | [API Başvurusunda aç](reference.md#tag/automations/GET/automations) |
| Bir otomasyonu grafiğiyle al | `GET /automations/{automationId}` | [API Başvurusunda aç](reference.md#tag/automations/GET/automations/{automationId}) |
| Adım kataloğunu oku | `GET /automations/steps` | [API Başvurusunda aç](reference.md#tag/automations/GET/automations/steps) |
| Bir otomasyon oluştur (taslak) | `POST /automations` | [API Başvurusunda aç](reference.md#tag/automations/POST/automations) |
| Bir otomasyonu güncelle | `PUT /automations/{automationId}` | [API Başvurusunda aç](reference.md#tag/automations/PUT/automations/{automationId}) |
| Aç | `POST /automations/{automationId}/enable` | [API Başvurusunda aç](reference.md#tag/automations/POST/automations/{automationId}/enable) |
| Kapat | `POST /automations/{automationId}/disable` | [API Başvurusunda aç](reference.md#tag/automations/POST/automations/{automationId}/disable) |
| Çalıştırma geçmişini oku | `GET /automations/{automationId}/runs` | [API Başvurusunda aç](reference.md#tag/automations/GET/automations/{automationId}/runs) |
| Klasörleri listele | `GET /automations/folders` | [API Başvurusunda aç](reference.md#tag/automations/GET/automations/folders) |
| Bir klasör oluştur | `POST /automations/folders` | [API Başvurusunda aç](reference.md#tag/automations/POST/automations/folders) |
| Bir klasörü yeniden adlandır | `PUT /automations/folders/{folderId}` | [API Başvurusunda aç](reference.md#tag/automations/PUT/automations/folders/{folderId}) |
| Bir klasörü sil | `DELETE /automations/folders/{folderId}` | [API Başvurusunda aç](reference.md#tag/automations/DELETE/automations/folders/{folderId}) |
| Bir otomasyonu klasöre taşı | `PUT /automations/{automationId}/folder` | [API Başvurusunda aç](reference.md#tag/automations/PUT/automations/{automationId}/folder) |

---

## Otomasyonları okuma

`GET /automations` özetleri döndürür (adımlar hariç), en son değiştirilenler önce gelir; `folder_id=none` hiçbir klasörde olmayanları listeler. `GET /automations/{automationId}` tam `graph` ekler: her adım (`nodes[]`) kendi `kind`, `label`, `alias`, `action`, `params` ve `config` değerleriyle; bağlantılar (`edges[]`) ise `from`, `to` ve bir koşul veya benzerinden sonra `branch` ile birlikte gelir.

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

**Bilmekte fayda var**

- **`alias`, sonraki adımların bir adımın çıktısını `${nodes.<alias>.<field>}` olarak okuma yöntemidir.** Bir çıktısı olmayan adım, kimliği (id) ile referans alınır.
- `params` eski okuyucular için tutulmaktadır; `config` aynı değerleri ve daha fazlasını (bir koşulun kuralları, bir yapay zeka adımının istemi, bir gecikmenin süresi, bir eylemin slug'ı ve parametreleri) taşır.
- **Gizli bilgiler gizlenir.** Kimlik bilgisi gibi görünen değerler (webhook gizli anahtarları, belirteçler, API anahtarları, parolalar, başlık değerleri) `"[redacted]"` olarak geri döner. `"[redacted]"` değerini değiştirmeden geri gönderirseniz, kayıtlı değer korunur.
- **Uzun metinler kısaltılır.** Yaklaşık 4.000 karakterden uzun tek bir metin kısaltılır ve sonuna üç nokta eklenir. O adımı geri gönderirseniz, önce tam metni geri koyun.
- Otomasyon servisine ulaşılamazsa `503` alırsınız, asla boş bir liste almazsınız. Boş bir liste her zaman otomasyon olmadığı anlamına gelir.

### Adım kataloğu

`GET /automations/steps`, bir otomasyonun oluşturulabileceği her şeyi döndürür: 8 `node_kinds`, ayarları `fields` ve `output_keys` olan her tetikleyici, parametreleriyle yerleşik `actions`, `api_actions` (bir eylem adımının çağırabileceği bu API'nin işlemleri), `graph_rules` dil bilgisi ve `counts`. Bu, hesabın oluşturdukları değil, oluşturucunun **sunduklarıdır**: bir tetikleyicinin veya eylemin var olmadığını düşünmeden önce bunu kontrol edin.

- `q` olmadan, birkaç yüz API eylemi `api_actions_by_tag` içinde alana göre gruplandırılmış etiketler olarak geri döner ve düz liste boştur.
- `q` (büyük/küçük harfe duyarsız bir kelime) ile, `api_actions` eşleşmelerin düz listesidir, 60 ile sınırlandırılmıştır (`api_actions_truncated` ne zaman olduğunu belirtir). Bağlı üçüncü taraf uygulamalar için eylemler de aranır ve `app_actions` içinde geri döner: örneğin `q=hubspot` gibi uygulama adına göre arama yapın. Her biri hesabın o uygulamaya `connected` sahip olup olmadığını belirtir ve `connected_apps` bağlı olanları listeler. `app_actions_unavailable`, uygulama eylemleri bu sefer aranamadığında `true` olur; diğer listeler hala tamdır.

---

## Oluşturma ve düzenleme

### Taslak oluşturma

```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` ve `enabled: false` normaldir, bir hata değildir: yeni bir otomasyon, siz etkinleştirene kadar her zaman bir taslaktır. `warnings`, oluşturucunun bitiremediği şeyleri kısa etiketler olarak listeler (örneğin `agent_function:not_linked`).

**Grafiği yazma.** Katalogdan `graph_rules` tam dil bilgisidir. Kısaca:

- Her düğümün bir `id` (grafikte benzersiz), bir `type` (8 [adım türünden](#step-kinds) biri), isteğe bağlı bir `label` ve türünün adını taşıyan bir anahtar altında `data` içinde ayarları (`data.trigger`, `data.action`, `data.condition`, `data.delay`, `data.ai`, `data.loop`, `data.transform`, `data.respond`) bulunur.
- Bir otomasyonun en az bir tetikleyiciye ihtiyacı vardır. Canlı dil bilgisi 10 taneye kadar izin verir ve otomasyon bunlardan herhangi biri tetiklendiğinde başlar.
- Diğer her adım bir tetikleyiciden ulaşılabilir olmalıdır ve hiçbir bağlantı daha önceki bir adıma geri dönemez.
- Bir koşuldan çıkan kenarlar `sourceHandle` `true` veya `false` taşır; bir döngü `body` veya `done`; bir Yanıt bekle gecikmesi `replied` veya `timed_out`. Diğer kenarların hiçbiri yoktur.
- Eylem slug'ları ve parametreleri katalogdan gelir. **Asla bir kimliği (id) tahmin etmeyin** (bir aracı, bir etiket, bir liste, bir aşama): önce API ile arayın veya alanı oluşturucuda kişinin seçmesi için `""` olarak bırakın.
- Konumlar isteğe bağlıdır; konumu olmayan adımlar otomatik olarak yerleştirilir.
- Önceki adımlardan gelen değerler `${trigger.<field>}` ve `${nodes.<step>.<field>}` olarak yazılır. Bkz. [Önceki bir adımın döndürdüğü veriyi kullanma](../automations/automations.md#using-what-an-earlier-step-returned) ve [İfadeler](../automations/automations.md#expressions).
- Grafik iki yazım biçiminde kabul edilir: oluşturucunun kendi yazımı (yukarıda) ve bir okuma yanıtının döndürdüğü yazım (`kind`, `config`, `from`, `to`, `branch`). Böylece bir otomasyonu okuyabilir, bir adımı değiştirebilir ve geri gönderebilirsiniz.
- **Bir oluşturma işlemini körü körüne tekrarlamak güvenli değildir.** Bir istek zaman aşımına uğrarsa, tekrar göndermeden önce otomasyonlarınızı listeleyin, aksi takdirde iki taslakla sonuçlanabilirsiniz.

### Güncelleme

`PUT /automations/{automationId}`, `name`, `description` ve/veya `graph` öğelerini değiştirir (en az biri veya `400`). Bir `graph` **tüm** grafiği değiştirir, bu nedenle her zaman depolanan şey üzerinde çalışın: okuyun, ihtiyacınız olanı değiştirin ve grafiğin tamamını geri gönderin.

```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)" }'
```

- **Her adımın `alias` değerini tam olarak aldığınız gibi koruyun.** Değiştirir veya silerseniz, o adıma yapılan her başvuru boş kalır. Bkz. [Adımlarınızı adlandırma](../automations/automations.md#naming-your-steps).
- **`"[redacted]"` değerlerini oldukları gibi bırakın** ve **kısaltılmış metinleri geri yükleyin** (üç nokta ile biten bir metin, okuma sırasında kısaltılmıştır).
- Otomasyonun açık olup olmadığı burada asla değiştirilmez. Açıksa, düzenlemeniz kaydedildiği anda canlıya alınır. Açık olduğu sürece, kendi kendini tetiklemesine neden olacak bir değişiklik reddedilir: önce devre dışı bırakın.

### Etkinleştirme ve devre dışı bırakma

`POST /automations/{automationId}/enable`, bir otomasyonu açar, böylece bundan sonra tetikleyicisi üzerinde çalışır. Bunu yalnızca hesap sahibi otomasyonun ne yaptığını ve kime yaptığını görüp onayladıktan sonra çağırın. Oluşturucu, çalıştıramayacağı bir grafiği (tetikleyici yok, döngü, kendi kendini tetikleyen bir adım) nedenini belirten bir `400` ile açmayı reddeder.

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

`POST /automations/{automationId}/disable` onu duraklatır: halihazırda devam eden çalışmalar tamamlanır, yeni çalışma başlamaz. Devre dışı bırakmaya her zaman izin verilir. Her iki çağrı da gövde almaz.

---

## Çalıştırma geçmişi

`GET /automations/{automationId}/runs`, bir otomasyonun çalışmalarını en yeniden başlayarak döndürür (`limit` 1 ila 50, varsayılan 10): her birinin ne zaman başladığı ve bittiği, neyin tetiklediği, başarılı olup olmadığı ve başarısız olduğunda hata. Otomasyonu okumak size ne **yapacağını** söyler; çalışma geçmişi ise ne **yaptığını** söyler ve bu, hiç çalışmamış bir otomasyonu her seferinde çalışıp başarısız olan bir otomasyondan ayırt etmenin tek yoludur.

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

- `mode`, gerçek bir çalışma için `live` veya düzenleyiciden **Güvenli çalışma** için `safe` değeridir. Güvenli çalışma hiçbir şey göndermez, bu nedenle otomasyonun gerçek kullanımda çalıştığının kanıtı değildir.
- Boş bir `runs` listesi bir boşluk değil, bir yanıttır. Yanıt bu durumda bir `note` taşır: ya tetikleyici hiç ateşlenmemiştir ya da otomasyon kapalıdır.

---

## Klasörler

Klasörler, otomasyonları yalnızca listede gruplandırır. Bir otomasyonun ne yaptığını veya açık olup olmadığını asla değiştirmezler. Bkz. [Otomasyonları klasörlerde düzenleme](../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" }'
```

- Klasörleri listelemek ayrıca `unfiled_count` değerini, yani hiçbir klasörde olmayan kaç otomasyon olduğunu da döndürür.
- Bir klasör adı gereklidir, 100 karaktere kadar olabilir ve hesapta benzersiz olmalıdır (`409`, `code: "folder_name_taken"`). Ayrıca bir otomasyonu oluştururken `folder_id` ileterek de dosyalayabilirsiniz.
- Yeniden adlandırma, otomasyonları oldukları yerde bırakır.
- **Bir klasörü silmek yalnızca klasörü siler.** İçindeki otomasyonlar hiçbir klasöre ait olmaz ve çalışmaya eskisi gibi devam eder; yanıt kaç tanesinin taşındığını belirtir (`moved_to_no_folder`).
- Taşıma işleminde `folder_id` gereklidir; otomasyonu klasöründen çıkarmak için `null` gönderin.

---

## Katalog

### Adım türleri

| Tür | Ne yapar |
|---|---|
| `trigger` | Bir şey olduğunda otomasyonu başlatır. |
| `action` | Tek bir adım çalıştırır: yerleşik bir eylem, API eylemi, bağlı uygulama eylemi, HTTP isteği veya e-posta. |
| `condition` | Akışı bir kurala göre `true` ve `false` dalına ayırır. |
| `transform` | Adımlar arasındaki verileri yeniden şekillendirmek için kısa bir kod parçası çalıştırır. |
| `ai` | Yazdığınız bir istemle yapay zekaya soru sorar. Metin döndürebilir, alanları ayırabilir veya birkaç daldan birini seçebilir. |
| `delay` | Belirli bir süre bekler veya (zaman aşımı ile) kişinin yanıt vermesini bekler. |
| `loop` | İçindeki adımları bir listedeki her öğe için tekrarlar. |
| `respond` | Webhook çağrısına veya çalıştırmayı başlatan yapay zeka temsilcisi işlev çağrısına bir yanıt döndürür. |

### Tetikleyiciler

Bunlar, kataloğun bugün listelediği ve oluşturucunun gruplandırdığı 40 tetikleyicidir. **Ayarlar** sütunu, tetikleyicinin ne zaman çalışacağını daraltan kendi ayar anahtarlarını (`fields`) içerir. Her tetikleyici ayrıca `respect_quiet_hours`, `run_hours`, `reentry` ve `stop_on_response` değerlerini alır; bkz. [Otomasyon ayarları](../automations/automations.md#automation-settings).

**Mesajlaşma**

| Tetikleyici (`kind`) | Ne zaman çalışır | Ayarlar |
|---|---|---|
| Gelen mesaj (`incoming_message`) | Bir kişi herhangi bir kanaldan mesaj gönderdiğinde. | `campaign` (tek bir yapay zeka temsilcisiyle sınırlar), `channel`, `message_filter_contains` (anahtar kelime), `message_filter_regex` (desen) |
| Cevapsız arama (`missed_call`) | Birisi WhatsApp Web numaralarınızdan birini veya kendi SMS numaranızı aradığında ve kimse açmadığında. | `to_number` |
| Mesaj iletildi (`message_delivered`) | Gönderdiğiniz bir mesajın kanal tarafından iletildiği onaylandığında. | `channel`, `agent` |
| Mesaj başarısız (`message_failed`) | Gönderdiğiniz bir mesaj hata nedeniyle iletilemediğinde. | `channel`, `agent` |
| Mesaj gönderildi (`message_sent`) | Hesabınızdan herhangi bir mesaj çıktığında: yapay zekanınki, sizinki, yayın veya takip mesajı. Filtreleyin, aksi takdirde hepsinde çalışır. | `channel`, `sent_by` |
| Takip mesajı gönderildi (`follow_up_sent`) | Otomatik bir takip mesajı gönderildiğinde. | yok |
| Takip mesajı atlandı (`follow_up_skipped`) | Gönderme koşulu başarısız olduğu için bir takip mesajı bekletildiğinde. | yok |
| Takip mesajları bitti (`follow_up_exhausted`) | Bir kişi dizideki son takip mesajını aldığında ve sırada başka bir şey kalmadığında. | yok |
| Sohbet kapatıldı (`conversation_closed`) | Bir sohbet, nasıl bittiği ve bir özeti ile birlikte kapatıldığında. | `channel`, `agent` |
| Yayın bitti (`broadcast_completed`) | Bir yayın gönderimi bittiğinde, kaç tane gönderildiği ve kaç tanesinin başarısız olduğu ile birlikte. | yok |
| Soğuk e-posta yanıtı sıralandı (`outreach_reply_labelled`) | Bir soğuk e-posta adayının yanıtı, örneğin İlgileniyor olarak sıralandığında. | `label` |
| Skool yorumu alındı (`skool_comment_received`) | Bir üye, yorum kurallarınızdan birinin izlediği bir Skool gönderisinin altına yorum yaptığında. | yok |

**Kişiler**

| Tetikleyici (`kind`) | Ne zaman çalışır | Ayarlar |
|---|---|---|
| Yeni kişi (`contact_created`) | Yeni bir kişi size herhangi bir kanaldan ilk kez ulaştığında, ayrıca içe aktarmalar, API ve elle oluşturduğunuz kişiler için. | yok |
| Kişi güncellendi (`contact_updated`) | Bir kişi alanı değiştiğinde. | `field` |
| Buraya eklediğiniz kişiler (`contact_added`) | Sadece Kişiler sayfasından bu otomasyona bizzat eklediğiniz kişiler için. Kişi başına bir çalıştırma. | yok |
| Etiket uygulandı (`tag_applied`) | Yapay zeka temsilciniz, bir kişi, otomasyon veya içe aktarma yoluyla bir kişiye etiket eklendiğinde. | `tag_name`, `channel`, `applied_by` |
| Etiket kaldırıldı (`tag_removed`) | Bir kişiden etiket çıkarıldığında. | `tag_name`, `channel` |
| Skool üyesi katıldı (`skool_member_joined`) | Birisi sahip olduğunuz veya yönettiğiniz bir Skool topluluğuna katıldığında, profili, yanıtları ve uygunluk puanı ile birlikte. | `group_id`, `create_contact` |
| Skool üyesi onaylandı (`skool_member_qualified`) | Yeni bir Skool üyesinin yanıtları eşiğinize ulaştığında veya geçtiğinde. | `min_score` |

**Fırsatlar**

| Tetikleyici (`kind`) | Ne zaman çalışır | Ayarlar |
|---|---|---|
| Anlaşma oluşturuldu (`deal_created`) | İş akışlarınızdan birine yeni bir anlaşma eklendiğinde. | `pipeline_id`, `stage_id` |
| Anlaşma aşaması değişti (`deal_stage_changed`) | Bir anlaşma farklı bir aşamaya geçtiğinde, ayrıldığı ve girdiği aşamayı belirterek. | `pipeline_id`, `to_stage_id`, `from_stage_id` |
| Anlaşma güncellendi (`deal_updated`) | Bir anlaşma alanı değiştiğinde. | `field` |

**Randevular**

| Tetikleyici (`kind`) | Ne zaman çalışır | Ayarlar |
|---|---|---|
| Randevu alındı (`appointment_booked`) | Yeni bir randevu alındığında. | yok |
| Randevu iptal edildi (`appointment_cancelled`) | Alınan bir randevu iptal edildiğinde. | yok |
| Randevu yeniden planlandı (`appointment_rescheduled`) | Alınan bir randevu başka bir zamana taşındığında, eski zamanı yenisiyle birlikte belirterek. | `event_id` |
| Randevu öncesi (`appointment_upcoming`) | Hatırlatıcılar için her onaylanmış randevudan belirli bir süre önce. Otomasyon başına beş hatırlatıcıya kadar. | `offsets_minutes` |

**Görevler**

| Tetikleyici (`kind`) | Ne zaman çalışır | Ayarlar |
|---|---|---|
| Görev oluşturuldu (`task_created`) | Bir görev oluşturulduğunda. | `task_type` |
| Görev tamamlandı (`task_completed`) | Bir görev tamamlanmış aşamaya taşındığında. | yok |

**Hesap**

| Tetikleyici (`kind`) | Ne zaman çalışır | Ayarlar |
|---|---|---|
| Düşük kredi bakiyesi (`low_credit_balance`) | Kredi bakiyeniz uyarı eşiğinizin altına düştüğünde. | yok |
| Kanal bağlandı (`channel_connected`) | Kanallarınızdan birinin bağlantısı tamamlandığında. | `channel` |
| Kanal bağlantısı kesildi (`channel_disconnected`) | Kanallarınızdan biri düştüğünde: oturum kapatıldığında, bağlantı kesildiğinde veya erişim engellendiğinde. Kendiliğinden yeniden bağlanan bir WhatsApp Web numarası, ancak 30 dakika sonra hala kapalıysa sayılır. | `channel` |

**Ajans**

| Tetikleyici (`kind`) | Ne zaman çalışır | Ayarlar |
|---|---|---|
| Alt hesap oluşturuldu (`sub_account_created`) | Panonuzdan, API'den veya kayıt sayfanızdan yeni bir müşteri hesabı oluşturulduğunda. | yok |
| Alt hesap etkinliği (`sub_account_event`) | Müşteri hesaplarınızdan birinde bir şey olduğunda: kredilerin azalması, bir kanalın bağlanması, plan değişikliği gibi. | `event`, `threshold` |

**Genel ve uygulamalar**

| Tetikleyici (`kind`) | Ne zaman tetiklenir | Ayarlar |
|---|---|---|
| Zamanlamaya göre (`schedule`) | Bir cron zamanlamasında. | `cron`, `timezone` |
| Webhook (`webhook`) | Dış bir sistem otomasyonun webhook adresini çağırdığında. | `webhook_secret` |
| Yapay Zeka Ajanı İşlevi (`agent_function`) | Yapay zeka ajanınız bir konuşma sırasında bu otomasyonu bir işlev olarak çağırdığında. | `function_name`, `function_description`, `parameters`, `agent_ids`, `campaign_ids` |
| Yeni akış öğesi (`rss`) | Bir RSS veya Atom akışında yeni bir öğe göründüğünde. | `feed_url` |
| E-posta alındı (`email_received`) | Bağlı posta kutunuza bir e-posta geldiğinde. | `from_contains`, `subject_contains` |
| Uygulama etkinliği (`app_event`) | Bağlı bir uygulamada bir şey olduğunda: bir fırsat aşaması değiştiğinde, ödeme geldiğinde, form gönderildiğinde. | `toolkit`, `trigger_slug`, `connected_account_id`, `config` |
| Manuel çalıştırma (`manual`) | Sadece elle başlatıldığında. | none |

Bir otomasyon, `webhook`, `app_event`, `agent_function`, `rss`, `schedule`, `email_received`, `appointment_upcoming` ve `contact_added` tetikleyicilerinin her birinden en fazla bir tanesini içerebilir. Bir kayıt oluşturulduğunda tetiklenen bir tetikleyici, aynı kaydı oluşturan eylemle eşleştirilemez, çünkü otomasyon kendi kendini tetikleyecektir.

Her tetikleyicinin sonraki adımlara (`output_keys`) ne sağladığı ve parametreleriyle birlikte eylemlerin tam listesi için `GET /automations/steps` bölümünü okuyun. [Otomasyonlar kılavuzu](../automations/automations.md#triggers), oluşturucunun dilinde her bir tetikleyiciyi açıklar.

---

## Hatalar

Her hatanın genel şekli `{ "success": false, "error_code": <status>, "error": "..." }` şeklindedir. Reddedilen bir grafik `code` ve `errors` ekler: `errors` her sorunu, her biri düzeltilebilir bir cümle olacak şekilde listeler ve `error` ilk sorundur. Listelenenleri tam olarak düzeltin ve grafiğin tamamını tekrar gönderin. `code`, `invalid_graph`, `automation_graph_has_a_cycle`, `self_triggering_automation`, `no_trigger` değerlerinden biri veya oluşturucudan gelen başka bir koddur.

| Durum | Ne zaman |
|---|---|
| `400` | Grafik reddedildi, gerekli bir alan eksik (oluşturmada `name` veya `graph`, taşımada `folder_id`), güncelleme değiştirmek için hiçbir şey göndermedi, bir kimlik geçerli değil veya klasör adı eksik, boş ya da çok uzun (`code: "invalid_name"`). |
| `403` | Hesapta Otomasyonlar yok; bir müşteri hesabının planı otomasyon oluşturmayı ve düzenlemeyi içermiyor (yalnızca yazma); veya ekip üyesinin **Otomasyonlar** erişimi çok düşük. |
| `404` | Bu hesapta o kimliğe sahip otomasyon yok, o kimliğe sahip klasör yok (`code: "folder_not_found"`) veya müşteri hesaplarınızdan biri olmayan bir `sub_account_id` var. |
| `409` | Bu ada sahip bir klasör zaten mevcut (`code: "folder_name_taken"`). |
| `413` | Otomasyon, oluşturucunun kabul ettiği 1 MB'tan daha büyük. Büyük kodları veya verileri adımlarından dışarı taşıyın. |
| `422` | Oluşturucu isteği başka bir nedenle reddetti. Grafiği `GET /automations/steps` ile karşılaştırın; aynı isteği tekrar göndermek yardımcı olmayacaktır. |
| `503` | Otomasyon hizmetine ulaşılamadı. Bir an sonra tekrar deneyin. Oluşturma işlemi için, ikinci bir taslak oluşturmamak adına önce otomasyonlarınızı listeleyin. |

::: master-only
## Bu uç noktaları MCP üzerinden kullanma

Bu sayfadaki her uç nokta, [MCP üzerinden bağlandığınız](../integrations/connect-ai-clients.md) bir yapay zeka asistanı için de bir araçtır ve aynı kurallara tabidir: yeni bir otomasyon etkinleştirilene kadar taslaktır ve çalışan bir otomasyonda yapılan düzenleme anında canlıya alınır.

| Araç | Uç Nokta |
|---|---|
| `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` |
:::

---

## Sonraki adımlar

- [Otomasyonlar](../automations/automations.md): oluşturucuda tetikleyicilerin, adımların, değişkenlerin ve çalıştırma geçmişinin nasıl çalıştığı.
- [Ajanslar için API](../agency/api-for-agencies.md): `sub_account_id` ile bir müşteri hesabında otomasyonlar oluşturun.
- [API Referansı](reference.md): tam etkileşimli uç nokta gezgini.
