> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flextell.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Lead notları, görevleri ve kaynakları

> Lead notlarını, görevlerini, aktivitelerini ve lead kaynaklarını anlatır.

Bu sayfa, bir Lead'e bağlı çalışma kayıtlarını anlatır: notlar, görevler ve salt okunur aktivite akışı. Lead'in nereden geldiğini gösteren **Lead Kaynakları** da burada yer alır. Lead'in kendisi (oluşturma, aşama, atama, dönüştürme) için [Lead'ler](/api/kaynaklar/leadler) sayfasına bakın.

Not, görev ve aktivite endpoint'leri `/leads/{id}/...` altındadır. Lead kaynakları ise `/leads/reference-sources` altındadır.

## Endpoint özeti

Tüm endpoint'ler `https://app.flextell.ai/api/v1` altındadır ve `Authorization: Bearer <access_token>` ile `X-Tenant: <tenant_id>` başlıklarını ister (bkz. [Klinikler ve X-Tenant](/api/klinikler-ve-x-tenant)). Birden fazla scope yazılan satırlarda token'ın **hepsine** sahip olması gerekir.

| Metot | Endpoint | Açıklama | Scope |
| - | - | - | - |
| GET | `/leads/{id}/notes` | Lead'in notlarını listeler. | `leads:read` + `notes:read` |
| POST | `/leads/{id}/notes` | Lead'e not ekler. | `leads:write` + `notes:write` |
| GET | `/leads/{id}/notes/{noteId}` | Tek bir notu getirir. | `leads:read` + `notes:read` |
| PUT | `/leads/{id}/notes/{noteId}` | Notu günceller. | `leads:write` + `notes:write` |
| DELETE | `/leads/{id}/notes/{noteId}` | Notu siler. | `leads:write` + `notes:write` |
| GET | `/leads/{id}/tasks` | Lead'in görevlerini listeler. | `leads:read` |
| POST | `/leads/{id}/tasks` | Lead'e görev ekler. | `leads:write` |
| GET | `/leads/{id}/tasks/{taskId}` | Tek bir görevi getirir. | `leads:read` |
| PUT | `/leads/{id}/tasks/{taskId}` | Görevi günceller. | `leads:write` |
| DELETE | `/leads/{id}/tasks/{taskId}` | Görevi siler. | `leads:write` |
| POST | `/leads/{id}/tasks/{taskId}/complete` | Görevi tamamlandı olarak işaretler. | `leads:write` |
| POST | `/leads/{id}/tasks/{taskId}/reopen` | Tamamlanan görevi yeniden açar. | `leads:write` |
| GET | `/leads/{id}/activities` | Lead'in aktivite akışını listeler. | `leads:read` + `activity_logs:read` |
| GET | `/leads/reference-sources` | Lead kaynaklarını listeler. | `leads:read` veya `conversations:read` |
| POST | `/leads/reference-sources` | Lead kaynağı oluşturur. | `leads:write` |
| PUT | `/leads/reference-sources/{id}` | Lead kaynağını günceller. | `leads:write` |
| DELETE | `/leads/reference-sources/{id}` | Lead kaynağını siler. | `leads:write` |

Scope kuralları için [Scope'lar](/api/kimlik-dogrulama/scopelar), izin kuralları için [İzinler ve görünürlük](/api/izinler-ve-gorunurluk) sayfasına bakın.

<Info>
  `/leads/{id}/...` endpoint'lerinde Lead'i görebiliyor olmanız gerekir. Lead başka bir kullanıcıya atanmışsa ve `ViewAllLeads:Lead` izniniz yoksa `403` ve `LEAD_NOT_ASSIGNED` alırsınız. Yanıttaki `data.assigned_user`, Lead'in sahibini `{id, name}` olarak verir. Sahibi yoksa `null` döner. Lead yoksa, başka kliniğe aitse veya silinmişse `404` ve `RESOURCE_NOT_FOUND` alırsınız.
</Info>

## Notlar

Not, Lead'e bağlı serbest metindir. Notları listelemek için `View:Lead` ve `View:Note` izinleri gerekir. Yazma işlemleri `Update:Lead` iznini ve ilgili not iznini ister.

| İşlem | Gereken izinler |
| - | - |
| Listeleme ve tek not | `View:Lead` + `View:Note` |
| Ekleme | `Update:Lead` + `Create:Note` |
| Güncelleme | `Update:Lead` + `Update:Note` |
| Silme | `Update:Lead` + `Delete:Note` |

### Not nesnesi

| Alan | Tür | Açıklama |
| - | - | - |
| `id` | sayı | Not ID'si. |
| `record_state` | nesne | `{is_read_only, reason_code}`. Kayıt salt okunursa `is_read_only` `true` olur. |
| `content` | metin | Not metni. |
| `user_id` | sayı | Notun yazarı. |
| `author` | nesne | `{id, name}` biçiminde yazar. |
| `origin` | metin | Kaydın kaynağı. Lead dönemine ait notları hasta kaydında ayırt etmek için kullanılır. |
| `source_lead_id` | sayı veya `null` | Not bir Lead'den hastaya taşındıysa Lead'in ID'si. |
| `created_at`, `updated_at`, `deleted_at` | tarih | Oluşturma, güncelleme ve silme zamanı. |

### Listeleme

`GET /leads/{id}/notes` isteği şu parametreleri alır:

| Parametre | Açıklama |
| - | - |
| `created_at_from`, `created_at_to` | Oluşturma tarihi aralığı. Sınırlar dahildir ve klinik saat dilimindeki gün başı ve sonu olarak yorumlanır. |
| `sort_by` | `content`, `created_at` (varsayılan) veya `updated_at`. |
| `sort_order` | `asc` veya `desc` (varsayılan). |
| `per_page`, `page` | Sayfalama ([Sayfalama](/api/istekler/sayfalama)). |

### Not ekleme ve güncelleme

<ParamField body="content" type="string" required>
  Not metni. En çok 65535 karakter. Güncellemede de zorunludur.
</ParamField>

<ParamField body="user_id" type="integer">
  Notun yazarı. Kliniğin herhangi bir üyesi olabilir. Göndermezseniz yazar, isteği yapan kullanıcıdır. Yalnızca ekleme isteğinde kullanılır.
</ParamField>

Ekleme `201` ile oluşan notu döner.

```bash theme={null}
curl -X POST "https://app.flextell.ai/api/v1/leads/123/notes" \
  -H "Authorization: Bearer <access_token>" \
  -H "X-Tenant: <tenant_id>" \
  -H "Content-Type: application/json" \
  -d '{"content": "Ayşe Yılmaz yarın 14:00 için arandı, dönüş bekleniyor."}'
```

## Görevler

Görev, Lead için yapılacak işi bir sorumlu ve son tarihle takip eder. Okuma için `View:Lead`, tüm yazma işlemleri için `Update:Lead` izni yeterlidir.

### Görev nesnesi

| Alan | Tür | Açıklama |
| - | - | - |
| `id` | sayı | Görev ID'si. |
| `record_state` | nesne | `{is_read_only, reason_code}`. |
| `lead_id` | sayı veya `null` | Görevin bağlı olduğu Lead. |
| `customer_id` | sayı veya `null` | Görev hastaya devredildiyse hastanın ID'si. |
| `source_lead_id` | sayı veya `null` | Hastaya devredilen görevin geldiği Lead. |
| `origin` | metin | `lead` veya `customer`. Görevin Lead kaynaklı mı, hasta kaynaklı mı olduğunu söyler. |
| `title` | metin | Görev başlığı. |
| `description` | metin | Açıklama. |
| `assigned_user_id`, `assigned_user` | sayı, nesne | Sorumlu kullanıcı. |
| `created_by_user_id`, `created_by` | sayı, nesne | Görevi oluşturan kullanıcı. |
| `due_at` | tarih | Son tarih. |
| `is_active` | mantıksal | Pasif görevler için hatırlatma gönderilmez. |
| `is_completed` | mantıksal | `completed_at` doluysa `true`. |
| `completed_at` | tarih veya `null` | Tamamlanma zamanı. |
| `created_at`, `updated_at` | tarih | Oluşturma ve güncelleme zamanı. |

### Listeleme

`GET /leads/{id}/tasks` isteği şu parametreleri alır:

| Parametre | Açıklama |
| - | - |
| `completed` | `true` ise tamamlananlar, `false` ise tamamlanmayanlar. |
| `is_active` | `true` ise aktif, `false` ise pasif görevler. |
| `created_at_from`, `created_at_to` | Oluşturma tarihi aralığı. |
| `due_at_from`, `due_at_to` | Son tarih aralığı. |
| `completed_at_from`, `completed_at_to` | Tamamlanma tarihi aralığı. |
| `sort_by` | `title`, `due_at`, `completed_at`, `created_at` (varsayılan) veya `updated_at`. |
| `sort_order`, `per_page`, `page` | Sıralama yönü ve sayfalama. |

Tarih aralıklarının genel kuralları için [Filtreleme ve sıralama](/api/istekler/filtreleme-ve-siralama) sayfasına bakın.

<Note>
  `ViewAllLeads:Lead` veya `ViewAllCustomers:Customer` izniniz varsa Lead'in tüm görevlerini görürsünüz. Bu izinler yoksa yalnızca kendinizin oluşturduğu veya size atanmış görevleri görürsünüz. Görünürlüğünüzün dışındaki bir göreve yapılan her istek `404` döner.
</Note>

### Görev ekleme ve güncelleme

<ParamField body="title" type="string" required>
  Görev başlığı. En çok 255 karakter. Güncellemede isteğe bağlıdır.
</ParamField>

<ParamField body="description" type="string">
  Açıklama. En çok 65535 karakter.
</ParamField>

<ParamField body="assigned_user_id" type="integer">
  Sorumlu. Kliniğin aktif bir üyesi olmalıdır. `Assign:Lead` izniniz yoksa değer her zaman sizin kullanıcınıza ayarlanır.
</ParamField>

<ParamField body="due_at" type="string">
  Son tarih. Saat dilimi (offset) yazmazsanız klinik saat dilimi kabul edilir. Örnek: `2026-10-14T14:30:00+03:00`.
</ParamField>

<ParamField body="is_active" type="boolean" default="true">
  Görevin aktif olup olmadığı. Pasif görev için hatırlatma gönderilmez.
</ParamField>

Ekleme `201` ile oluşan görevi döner. Görevi başka bir kullanıcıya atarsanız o kullanıcı **Görev ataması** bildirimi alır. Kendinize atarsanız veya sorumluyu temizlerseniz bildirim gitmez.

### Tamamlama ve yeniden açma

`POST /leads/{id}/tasks/{taskId}/complete` isteği `completed_at` alanını şimdiki zamana ayarlar ve görevi pasif yapar (`is_active: false`). `POST /leads/{id}/tasks/{taskId}/reopen` isteği `completed_at` alanını temizler ve görevi yeniden aktif yapar. Yeniden açılan görev için son tarih geldiğinde hatırlatma tekrar gönderilir. Her iki istek de güncel görevi döner.

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST "https://app.flextell.ai/api/v1/leads/123/tasks" \
    -H "Authorization: Bearer <access_token>" \
    -H "X-Tenant: <tenant_id>" \
    -H "Content-Type: application/json" \
    -d '{
      "title": "Fiyat teklifini ilet",
      "description": "Ayşe Yılmaz ile telefonda konuşulacak.",
      "assigned_user_id": 45,
      "due_at": "2026-10-14T14:30:00+03:00"
    }'
  ```

  ```js JavaScript theme={null}
  const res = await fetch("https://app.flextell.ai/api/v1/leads/123/tasks/789/complete", {
    method: "POST",
    headers: {
      Authorization: "Bearer <access_token>",
      "X-Tenant": "<tenant_id>",
    },
  });
  const { data: task } = await res.json();
  console.log(task.is_completed); // true
  ```
</CodeGroup>

<Note>
  Lead hastaya dönüştürüldüğünde Lead'in görevleri kopyalanmaz. Görevler Lead'in bağlı olduğu hasta kaydı üzerinden hastanın görev listesinde de görünür. Bu liste için [Hasta notları ve görevleri](/api/kaynaklar/hasta-notlari-ve-gorevleri) sayfasına bakın.
</Note>

## Aktiviteler

`GET /leads/{id}/activities` isteği Lead'e ve Lead ile ilişkili kayıtlara ait değişiklik akışını verir. Akış salt okunurdur. En yeni kayıt en başta gelir. İsteği yapmak için `View:Lead` ve `View:ActivityLog` izinleri ve hem `leads:read` hem `activity_logs:read` scope'u gerekir.

Akış şu kayıtlardaki değişiklikleri içerir: Lead'in kendisi, görevleri, notları, dosyaları ve Lead'in bağlı olduğu kişi kaydına ait iletişim kimlikleri, randevular, teklifler ve destek talepleri.

| Parametre | Açıklama |
| - | - |
| `event` | Olay adına göre filtreler. En çok 100 karakter. |
| `created_at_from`, `created_at_to` | Oluşturma tarihi aralığı. |
| `per_page`, `page` | Sayfalama. |

### Aktivite nesnesi

| Alan | Tür | Açıklama |
| - | - | - |
| `id` | sayı | Aktivite ID'si. |
| `event` | metin | Olay adı. |
| `description` | metin | Olayın açıklaması. |
| `subject_type` | metin | Değişen kaydın türü: `lead`, `lead_task`, `note`, `identity`, `appointment`, `offer`, `ticket` veya `file`. |
| `subject_id` | sayı | Değişen kaydın ID'si. |
| `causer_type` | metin | `user` veya `system`. |
| `causer_id`, `causer` | sayı, nesne | Değişikliği yapan kullanıcı (`{id, name}`). Sistem işlemlerinde kullanıcı yoktur. |
| `properties` | nesne | Değişen alanlar: `attributes` (yeni değerler) ve `old` (eski değerler). |
| `created_at` | tarih | Olayın zamanı. |

<Warning>
  `properties` içinde yalnızca her kayıt türü için izin verilen alanlar gelir. Örneğin görevlerde `assigned_user_id`, `due_at`, `is_active` ve `completed_at`; notlarda yalnızca `assigned_user_id` döner. Not metnini bu akıştan okuyamazsınız. Metin için not endpoint'ini kullanın.
</Warning>

## Lead kaynakları

Lead kaynağı, Lead'in nereden geldiğini gösterir. Lead'lerde `lead_reference_source_id` alanıyla seçilir ve yanıtta `reference_source` olarak döner. Panelde bu kayıtlar **Lead Kaynakları** adıyla geçer.

Kaynaklar elle oluşturulabildiği gibi Flextell de kendisi oluşturur:

* Sohbet kanallarından gelen yeni kişiler için kanal başına bir kaynak. Adı kanalın adıdır.
* Reklam kaynaklarından gelen Lead'ler için **Meta Ads**, **TikTok Ads** ve **Google Ads**.
* Entegrasyonların adıyla açılan kaynaklar (örneğin **Zapier**).

### Kaynak nesnesi

| Alan | Tür | Açıklama |
| - | - | - |
| `id` | sayı | Kaynak ID'si. |
| `name` | metin | Kaynak adı. |
| `external_id` | metin veya `null` | İçe aktarmadan gelen dış ID. API ile yazılamaz. |
| `color` | metin | Renk (`#rgb` veya `#rrggbb`). |
| `channel` | nesne veya `null` | Bağlı kanal (`{id, name}`). |
| `leads_count` | sayı | Kaynağı kullanan Lead sayısı. Silinmiş Lead'ler sayılmaz. |
| `created_at`, `updated_at` | tarih | Oluşturma ve güncelleme zamanı. |

### Listeleme

Listeleme için `View:LeadReferenceSource` izni gerekir. `View:Conversation` izni olan ve token'ında `conversations:read` scope'u bulunan kullanıcılar da listeyi okuyabilir. Sohbet filtreleri bu listeyi kullanır.

| Parametre | Açıklama |
| - | - |
| `search` | Ad ve `external_id` üzerinde ön ek araması. Sonuçlar eşleşmeye göre sıralanır. |
| `color` | Tam eşleşen renk. |
| `external_id` | Tam eşleşen dış ID. |
| `created_at_from`, `created_at_to` | Oluşturma tarihi aralığı. |
| `sort_by` | `name` (varsayılan), `leads_count`, `created_at` veya `updated_at`. |
| `sort_order` | `asc` (varsayılan) veya `desc`. |
| `per_page`, `page` | Sayfalama. |

### Oluşturma, güncelleme, silme

| İşlem | Gereken izin |
| - | - |
| Oluşturma | `Create:LeadReferenceSource` |
| Güncelleme | `Update:LeadReferenceSource` |
| Silme | `Delete:LeadReferenceSource` |

<ParamField body="name" type="string" required>
  Kaynak adı. En çok 255 karakter. Klinikte aktif kaynaklar arasında benzersiz olmalıdır. Güncellemede isteğe bağlıdır.
</ParamField>

<ParamField body="color" type="string">
  Hex renk kodu: `#rgb` veya `#rrggbb`.
</ParamField>

<ParamField body="channel_id" type="integer">
  Kaynağın bağlanacağı kanal. Kliniğinizin bir kanalı olmalıdır. Bir kanala yalnızca bir kaynak bağlanabilir. Kanallar için [Kanallar](/api/kaynaklar/kanallar) sayfasına bakın.
</ParamField>

Oluşturma `201` ile kaynağı döner (`leads_count` değeri `0`). Güncelleme güncel kaynağı döner. Kaynak bulunamazsa `404` döner.

```bash theme={null}
curl -X POST "https://app.flextell.ai/api/v1/leads/reference-sources" \
  -H "Authorization: Bearer <access_token>" \
  -H "X-Tenant: <tenant_id>" \
  -H "Content-Type: application/json" \
  -d '{"name": "Fuar standı", "color": "#1d9bf0"}'
```

<Note>
  Kaynağı silmek Lead'leri silmez. Lead'ler kaynağın ID'sini taşımaya devam eder, ancak yanıttaki `reference_source` alanı `null` döner. Sohbet kanalı kaynağını silerseniz, o kanaldan gelen bir sonraki yeni kişi kaynağı otomatik olarak yeniden oluşturur veya geri getirir.
</Note>

## Hata kodları

Genel hata biçimi için [Hatalar](/api/istekler/hatalar) ve [Hata kodları](/api/istekler/hata-kodlari) sayfalarına bakın. Bu kaynaklara özgü durumlar:

| Kod | HTTP | Ne zaman |
| - | - | - |
| `FORBIDDEN` | 403 | Token'da gereken scope veya kullanıcıda gereken izin yok. |
| `LEAD_NOT_ASSIGNED` | 403 | Lead başka bir kullanıcıya atanmış ve `ViewAllLeads:Lead` izniniz yok. |
| `RESOURCE_NOT_FOUND` | 404 | Lead, not, görev veya kaynak bulunamadı. Görünürlüğünüz dışındaki görevler de bu yanıtı verir. |
| `CUSTOMER_ERASED` | 409 | Lead'in hastasının verileri imha edilmiş. Not ve görev yazma istekleri reddedilir, kayıt salt okunurdur. |
| `VALIDATION_FAILED` | 422 | Alan doğrulaması geçmedi. Örneğin `title` veya `content` eksik, `assigned_user_id` kliniğe ait değil, `color` geçersiz. |

<Tip>
  Lead'in bütün akışını, yani oluşturmadan dönüştürmeye kadar adımları, [Lead akışı](/api/rehberler/lead-akisi) rehberinde bulabilirsiniz. Lead silindiğinde notları ve görevlerinin de silindiğini unutmayın. Ayrıntı için [Silme yaşam döngüsü](/api/istekler/silme-yasam-dongusu) sayfasına bakın.
</Tip>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.