# Görevler

Uç noktalarında kullanılan verilerin türleri ve formatlarının tanımları sayfanın alt kısmında bulunabilir.

## Uç Noktaları

## Görevleri Getir

<mark style="color:blue;">`GET`</mark> `https://cubicl.io/api/v1/tasks`

Verilen arama kriterlerine uyan görevleri getirir. Yanıtta bazı ayrıntılar döndürülmemektedir. Tüm ayrıntıları almak için [ID'e göre Görev Getir](#ide-goere-goerev-getir) isteğini kullanın.

#### Query Parameters

| Name       | Type   | Description                                                                                                                                                                                                            |
| ---------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| group      | string | Proje ID'si                                                                                                                                                                                                            |
| assignee   | string | Görevli ID'si                                                                                                                                                                                                          |
| assignedBy | string | Görev Sahibi ID'si                                                                                                                                                                                                     |
| customer   | string | Müşteri ID'si                                                                                                                                                                                                          |
| tag        | string | Etiket ismi                                                                                                                                                                                                            |
| startDate  | number | Görev başlangıç tarihi. "endDate" parametresi ile kullanılmalıdır.                                                                                                                                                     |
| endDate    | number | Görev bitiş tarihi                                                                                                                                                                                                     |
| archived   | string | <p><code>true</code> : arşivlenmiş görevleri getirir. </p><p><code>false</code> : arşivlenmemiş görevleri getirir.</p><p><code>all</code> : tüm görevleri getirir.<br></p><p>Varsayılan değer : <code>false</code></p> |
| search     | string | Görev adında aranacak metin                                                                                                                                                                                            |
| recursive  | string | <p><code>true</code> : alt projeleri de getirir.</p><p>Sadece verilen projedeki görevleri almak için boş bırakın.</p><p><br>Varsayılan değer : <code>false</code></p>                                                  |
| skip       | number |                                                                                                                                                                                                                        |
| limit      | number |                                                                                                                                                                                                                        |
| include    | string | Yanıta dahil edilecek alanların virgülle ayrılmış listesi                                                                                                                                                              |
| exclude    | string | Yanıtta hariç tutulacak alanların virgülle ayrılmış listesi. "include" ile birlikte kullanılamaz.                                                                                                                      |

{% tabs %}
{% tab title="200: OK Görev listesi" %}

```typescript
Task[]
```

{% endtab %}

{% tab title="403: Forbidden Görev getirme izniniz yok." %}

```javascript
{ code: 4 }
```

{% endtab %}
{% endtabs %}

## Id'e göre Görev Getir

<mark style="color:blue;">`GET`</mark> `https://cubicl.io/api/v1/tasks/:id`

#### Path Parameters

| Name                                 | Type   | Description |
| ------------------------------------ | ------ | ----------- |
| id<mark style="color:red;">\*</mark> | string | Görev ID'si |

{% tabs %}
{% tab title="200: OK Görev detayları" %}

```javascript
Task
```

{% endtab %}

{% tab title="403: Forbidden Görev getirme izniniz yok." %}

```javascript
{ code: 4 }
```

{% endtab %}
{% endtabs %}

## Görev Ekle

<mark style="color:green;">`POST`</mark> `https://cubicl.io/api/v1/tasks`

#### Request Body

| Name                                    | Type                     | Description                                                                                                                                                                                                                                                                         |
| --------------------------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| group<mark style="color:red;">\*</mark> | string                   | Proje ID'si                                                                                                                                                                                                                                                                         |
| name<mark style="color:red;">\*</mark>  | string                   | Görev adı                                                                                                                                                                                                                                                                           |
| state                                   | string                   | Aşama adı. Verilmezse, proje detaylarında ayarlanan varsayılan aşama kullanılır.                                                                                                                                                                                                    |
| desc                                    | string                   | Görev açıklaması                                                                                                                                                                                                                                                                    |
| start                                   | number                   | Başlangıç ​​tarihi                                                                                                                                                                                                                                                                  |
| deadline                                | number                   |                                                                                                                                                                                                                                                                                     |
| assignees                               | string\[]                | Görevli ID'lerin listesi                                                                                                                                                                                                                                                            |
| priority                                | number                   | <p>1'den 5'e kadar olabilir.</p><p></p><p>En yüksek değer : <code>5</code></p><p>Varsayılan değer : <code>3</code></p>                                                                                                                                                              |
| tags                                    | string\[]                | Etiket ID'leri                                                                                                                                                                                                                                                                      |
| customer                                | string                   | Müşteri ID'si                                                                                                                                                                                                                                                                       |
| files                                   | string\[]                | Dosya ID'lerinin listesi. Dosya içeren bir görev oluşturmak için, görevi oluşturmadan önce dosyaları yüklemeniz ve ID'lerini burada ayarlamanız gerekir.                                                                                                                            |
| stepType                                | string                   | <p><code>none</code> :  görev adımı yok</p><p><code>steps</code> :  kontrol listesi</p><p><code>progress</code> :  ilerleme çubuğu</p><p></p><p>Varsayılan değer : <code>none</code></p>                                                                                            |
| steps                                   | CheckList \| ProgressBar | <p>'stepType' değeri 'steps' ise adımları CheckList biçiminde belirtin. ID alanı zorunlu değildir. Sunucuda ayarlanmaktadır.</p><p></p><p>'stepType' değeri 'progress' ise adımları ProgressBar biçiminde belirtin.</p><p></p><p>'stepType' değeri 'none' ise bunu ayarlamayın.</p> |
| recurrent                               | boolean                  | Varsayılan değer : `false`                                                                                                                                                                                                                                                          |
| recurrence                              | Recurrence               | 'recurrent' değeri 'true' ise bu ayarlanmalıdır. Yineleme ayrıntıları için aşağıyı kontrol edin.                                                                                                                                                                                    |
| private                                 | boolean                  | Varsayılan değer : `false`                                                                                                                                                                                                                                                          |
| parent                                  | string                   | Üst görevin ID'si. Görev başka bir görevin alt görevi olarak oluşturulduğunda ayarlanır.                                                                                                                                                                                            |
| workFlowId                              | string                   | Görev bir iş akışı ile oluşturulduğunda ayarlanır.                                                                                                                                                                                                                                  |
| estimatedTime                           | number                   | Görevin saniye cinsinden tahmini teslim süresi. Yalnızca proje ayarlarında etkinleştirildiğinde kullanıcı arayüzünde gösterilir.                                                                                                                                                    |
| customFields                            | object                   | Özel alanların adlarının ve değerlerin olduğu bir nesne.                                                                                                                                                                                                                            |
| followers                               | string\[]                | Görev takipçilerinin ID'leri. Ayarlanmazsa, görev sahibi ve atananlar takipçi olur.                                                                                                                                                                                                 |

{% tabs %}
{% tab title="200: OK Yeni görev ayrıntıları" %}

```javascript
Task
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok." %}

```javascript
{ code: 4 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Geçersiz işlem" %}

```javascript
// Boş yanıt
// Potansiyel nedenler:
// - Geçersiz proje
// - Geçersiz üst görev
```

{% endtab %}

{% tab title="422: Unprocessable Entity Görev durumu mevcut değil" %}

```javascript
{ code: 503 }
```

{% endtab %}
{% endtabs %}

## Görev Güncelle

<mark style="color:orange;">`PUT`</mark> `https://cubicl.io/api/v1/tasks/:id`

Bir görevi verilen ayrıntılarla günceller. Tüm ayrıntılar isteğe bağlıdır. Sadece verilen alanlar güncellenir. Bir alanın değerini kaldırmanız gerekirse, değerlerini 'null' veya uygun 'falsy' değerine ayarlayın. Örneğin, dizeler için boş bir dize.

#### Path Parameters

| Name                                 | Type   | Description |
| ------------------------------------ | ------ | ----------- |
| id<mark style="color:red;">\*</mark> | string | Görev ID'si |

#### Request Body

| Name           | Type                     | Description                                                                                                                                                                           |
| -------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| updateTemplate | boolean                  | Görev tekrarlanıyorsa, bu alan yalnızca görevin kendisindeki ayrıntıların güncellenip güncellenmeyeceğini veya görevin gelecekteki kopyalarının dahil edilip edilmeyeceğini belirler. |
| assignees      | string\[]                | Atananların ID'si                                                                                                                                                                     |
| customer       | string                   | Müşteri ID'si                                                                                                                                                                         |
| customFields   | object                   | Özel alanların adlarının ve değerlerin olduğu bir nesne.                                                                                                                              |
| deadline       | number                   | Son teslim tarihi                                                                                                                                                                     |
| desc           | string                   | Açıklama                                                                                                                                                                              |
| estimatedTime  | number                   | Görevin saniye cinsinden tahmini teslim süresi.                                                                                                                                       |
| files          | string\[]                | Dosya ID'lerinin listesi                                                                                                                                                              |
| followers      | string\[]                | Görev takipçilerinin ID'leri                                                                                                                                                          |
| group          | string                   | Görevin taşınmak istendiği Proje ID'si                                                                                                                                                |
| name           | string                   | Görev adı                                                                                                                                                                             |
| private        | boolean                  |                                                                                                                                                                                       |
| recurrence     | Recurrence               | Görev tekrarlama ayrıntısı                                                                                                                                                            |
| recurrent      | boolean                  | Tekrarlama                                                                                                                                                                            |
| start          | number                   | Başlangıç tarihi                                                                                                                                                                      |
| state          | string                   | Görev durumu adı. Görev farklı bir projeye taşınırken yeni projede farklı bir duruma geçiş yapılmak istendiğinde gereklidir.                                                          |
| steps          | Checklist \| ProgressBar | 'stepType' değeri 'steps' veya 'progress' olduğunda gereklidir.                                                                                                                       |
| stepType       | string                   | 'none', 'steps' veya 'progress'                                                                                                                                                       |
| subtasks       | string\[]                | Alt görevlerin ID listesi                                                                                                                                                             |
| workflowId     | string                   | İş akış ID'si                                                                                                                                                                         |

{% tabs %}
{% tab title="200: OK Güncellenmiş görev ayrıntıları ve görev güncelleme aktivitesi" %}

```javascript
{
    activity: TaskActivity,
    task: Task
}
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok" %}

```javascript
{
    // 4: No permission to update task details
    // 804: No permission to move the task out of the project
    // 805: No permission to move the task into the project
    code: number
}
```

{% endtab %}

{% tab title="422: Unprocessable Entity Geçersiz işlem" %}

```javascript
// Takip edilen nesne veya boş yanıt için bilinmeyen hata
{
    // 403: Bu güncelleme Gantt çizelgesini değiştiriyor ve buna izniniz yok
    // 406: Gantt çizelgesindeki görevin tarihleri olmalıdır.
    // 503: Görev durumu mevcut değil
    // 604: Arşivlenen görevler güncellenemez
    code: number
}
```

{% endtab %}
{% endtabs %}

## Görev Sil

<mark style="color:red;">`DELETE`</mark> `https://cubicl.io/api/v1/tasks/:id`

#### Path Parameters

| Name                                 | Type   | Description |
| ------------------------------------ | ------ | ----------- |
| id<mark style="color:red;">\*</mark> | string | Görev ID'si |

{% tabs %}
{% tab title="200: OK Boş yanıt" %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok" %}

```javascript
{ 
    code: 4
}
```

{% endtab %}

{% tab title="422: Unprocessable Entity Geçersiz işlem" %}

```javascript
// Takip edilen nesne veya boş yanıt için bilinmeyen hata
{
    // 4: Bu işlem, alt görevlerin silinmesini gerektirir ancak buna izniniz yok
    // 403:  Bu güncelleme Gantt çizelgesini değiştiriyor ve buna izniniz yok
    code: number
}
```

{% endtab %}
{% endtabs %}

## Göreve Alt Görev Ekle

<mark style="color:green;">`POST`</mark> `https://cubicl.io/api/v1/tasks/:id/subtasks`

#### Path Parameters

| Name                                 | Type   | Description |
| ------------------------------------ | ------ | ----------- |
| id<mark style="color:red;">\*</mark> | string | Görev ID'si |

#### Request Body

| Name                                      | Type   | Description                                      |
| ----------------------------------------- | ------ | ------------------------------------------------ |
| subtask<mark style="color:red;">\*</mark> | string | Alt görev olarak eklenmek istenen görevin ID'si. |

{% tabs %}
{% tab title="200: OK Boş yanıt" %}

```javascript
```

{% endtab %}

{% tab title="403: Forbidden You don't have the permission." %}

```javascript
{ code: 4 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Üst seviyedeki görev alt görev olarak eklenemez." %}

```javascript
{ code: 802 }
```

{% endtab %}
{% endtabs %}

## Görev Durumunu Güncelle

<mark style="color:orange;">`PUT`</mark> `https://cubicl.io/api/v1/tasks/:id/state`

Görevin durumunu verilen durum ile değiştirir. Bir projenin varsayılan durumları; Bekliyor, Aktif, Tamamlandı ve Askıya Alındı durumlarıdır. Bu durumlar sistem tarafından sırasıyla `cb_waiting`, `cb_active`, `cb_completed` ve `cb_suspended` olarak kaydedilir. Varsayılan durumlar kullanılmak istendiğinde sistem tarafından kaydedilen karşılığı gönderilmelidir.

#### Path Parameters

| Name                                 | Type   | Description |
| ------------------------------------ | ------ | ----------- |
| id<mark style="color:red;">\*</mark> | string | Görev ID'si |

#### Request Body

| Name                                    | Type   | Description            |
| --------------------------------------- | ------ | ---------------------- |
| value<mark style="color:red;">\*</mark> | string | Yeni görev durumu adı. |

{% tabs %}
{% tab title="200: OK Görev Durumu Aktivitesi" %}

```javascript
TaskStateActivity
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok." %}

```javascript
{ code: 4 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Görev durumu mevcut değil" %}

```javascript
{ code: 503 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Geçersiz işlem" %}

```javascript
// Hata mesajı
// Potansiyel nedenler:
// - Arşivlenen görevlerin durumu güncellenemez.
// - Görev zaten güncellenmek istenen durumdadır.
```

{% endtab %}
{% endtabs %}

## Görev Gönderisi Oluştur

<mark style="color:green;">`POST`</mark> `https://cubicl.io/api/v1/tasks/:id/activities`

Görevde gönderi oluşturur.

#### Path Parameters

| Name                                 | Type   | Description |
| ------------------------------------ | ------ | ----------- |
| id<mark style="color:red;">\*</mark> | string | Görev ID'si |

#### Request Body

| Name      | Type       | Description                                                                                                                                                                                                               |
| --------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| content   | string     | Gönderi içeriği. 'content' veya 'fileIds' değerinin gönderilmesi gereklidir.                                                                                                                                              |
| fileIds   | string\[]  | Dosya ID'lerinin listesi. Dosya içeren bir gönderi oluşturmak için, gönderiyi oluşturmadan önce dosyaları yüklemeniz ve ID'lerini burada ayarlamanız gerekir. 'fileIds' veya 'content' değerinin gönderilmesi gereklidir. |
| mentions  | Mention\[] | Gönderide bahsedilen kullanıcıların listesi.                                                                                                                                                                              |
| replyToId | string     | Cevaplanmak istenen gönderinin ID'si.                                                                                                                                                                                     |

{% tabs %}
{% tab title="200: OK Görev Aktivitesi" %}

```javascript
TaskActivity
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok." %}

```javascript
{ code: 4 }
```

{% endtab %}
{% endtabs %}

## Görev Gönderisinin Görünürlüğünü Değiştir

<mark style="color:orange;">`PUT`</mark> `https://cubicl.io/api/v1/tasks/:taskId/activities/:activityId`

Destek talepleri ve müşteri ile paylaştığınız görevlerde, gönderinizin görünürlüğünü portal müşteriniz için değiştirebilirsiniz. E-posta görevlerinde yer alan gönderiler görünür yapıldığında, gönderi e-posta olarak gönderilir.

#### Path Parameters

| Name                                         | Type   | Description                                        |
| -------------------------------------------- | ------ | -------------------------------------------------- |
| taskId<mark style="color:red;">\*</mark>     | string | Görev ID'si                                        |
| activityId<mark style="color:red;">\*</mark> | string | Görünürlüğü değiştirilmek istenilen aktivite ID'si |

#### Request Body

| Name                                    | Type    | Description                                                                                              |
| --------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------- |
| value<mark style="color:red;">\*</mark> | boolean | Gönderinin görünürlüğünü belirler. `true` değeri görünür yapar, `false` değeri ise görünürlüğü kaldırır. |

{% tabs %}
{% tab title="200: OK Boş yanıt" %}

```javascript
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok." %}

```javascript
{ code: 4 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Geçersiz işlem" %}

```javascript
// Hata mesajı
// Potansiyel nedenler:
// - Yalnızca "post" türündeki aktivitelerin görünürlüğü değiştirilebilir.
// - Destek talepleri, müşteri ile paylaşılan görevler veya e-posta görevlerindeki gönderilerin görünürlüğü değiştirilebilir.
// - Portal veya e-posta kullanıcıları tarafından oluşturulan gönderilerin görünürlüğü değiştirilemez.
// - E-posta görevlerindeki görünür yapılmış gönderilerin görünürlüğü kaldırılamaz.
```

{% endtab %}
{% endtabs %}

## Görev Aktivitelerini Getir

<mark style="color:blue;">`GET`</mark> `https://cubicl.io/api/v1/tasks/:id/activities`

#### Path Parameters

| Name                                 | Type   | Description |
| ------------------------------------ | ------ | ----------- |
| id<mark style="color:red;">\*</mark> | string | Görev ID'si |

{% tabs %}
{% tab title="200: OK Görev Aktiviteleri" %}

```javascript
TaskActivity[]
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok." %}

```javascript
{ code: 4 }
```

{% endtab %}
{% endtabs %}

## Veriler

#### Görev

Bir görevin ayrıntıları.

```typescript
type Task = {
    _id: string;
    name: string;
    desc: string;
    state: string;
    start: number | null; // Başlangıç tarihi
    deadline: number | null;
    assignees: string[]; // Atananların ID'si
    assignedBy: string; // Sahip ID'si
    followers: string[];
    // Müşteri portalında görev paylaşılıyorsa, bu görevi takip eden
    // portal kullanıcılarının ID'leri
    portalFollowers?: string[];
    // 1'den 5'e kadar olabilir. En yüksek değer : 5
    priority: number;
    // Aynı önceliğe sahip görevleri kendi aralarında sıralamak için bir puan.
    // En düşük puan en üstte gösterilir.
    priorityScore: number;
    // Proje ID'si
    group: string;
    completedAt: number;
    archivedAt?: number | null;
    /* none: Görev adımı yok
     * steps: Görevin bir kontrol listesi var
     * progress: Görevin bir ilerleme çubuğu var
     */
    stepType: 'none' | 'steps' | 'progress';
    // Bu türlerin tanımları için aşağıyı kontrol edin
    steps?: CheckList | ProgressBar;
    customer: {
        _id: string,
        name: string,
    } | null,
    createdAt: number;
    files: { _id: string }[];
    tags: string[];
    subtasks: string[];
    parent: string | null;
    // Bu alan, gelen bir posta için görev oluşturulursa mevcuttur.
    // E-posta gönderen için bir ID oluşturulur.
    email?: {
        emailUserId: string,
    };
    // Bu alan, Müşteri Portalı aracılığıyla bir destek talebi
    // görevi oluşturulursa mevcuttur.
    support?: {
        portalUser: string, // Müşteri portalı kullanıcısının ID'si
    };
    private: boolean;
    sharedWithCustomer?: boolean;
    // Görev bir iş akışına aitse mevcuttur.
    workflow?: {
        id: string,
        templateId: string,
        isCompleted: boolean,
        taskflowId: string
    };
    estimatedTime?: number; // Saniye cinsinden süre
    // Görevin özel alanları varsa, her alanın adını ve değerini tutar.
    customFields?: {[fieldName: string]: string};
    // Görev tekrarlanıyorsa, bunun en yeni kopya olup olmadığını gösterir.
    lastCopy?: boolean;
}
```

#### Görev Adımları

Görevler, adımları veya genel ilerlemeyi belirtmek için bir kontrol listesine veya ilerleme çubuğuna sahip olabilir.

```typescript
type ProgressBar = {
    completed: number;
    total: number;
}

type CheckList = TaskStep[];

type TaskStep = {
    id: string;
    name: string;
    desc?: string;
    assignees: string[]; // Adım için atanan kullanıcıların ID'leri
    /* Görev adımları özyinelemelidir. Onların da alt adımları olabilir.
     * Ayarlanmazsa, adımın alt adımları yoktur.
     * 'steps' değeri 'steps' olarak ayarlandıysa alt adımları tutar.
     * 'progress', değeri 'total' adlı bir özelliğe sahiptir
     */
    stepType?: 'steps' | 'progress';
    steps?: CheckList;
    // 'stepType' değeri 'progress' olarak ayarlandığında çubuktaki toplam adım
    // sayısını gösteren bir sayı olmalıdır. Aksi takdirde,
    // görevin tamamlandığını belirtmek için bir boolean değeri içermelidir.
    completed: boolean | number;
    // 'stepType' değeri 'progress' olduğunda ayarlanmalıdır.
    total?: number;
}
    
```

#### Tekrarlama

```typescript
type Recurrence = {
    type: 'daily' | 'weekly' | 'monthly';
    // Örnek: Her 3 günde/haftada/ayda bir kopyalanacak görev için 3 değeri verilmeli.
    period: number;
    // Yeni kopya, görev son tarihinden sonra veya görev tamamlandığında oluşturulur.
    createWhen: 'after-deadline' | 'completed';
    // Doğruysa, tekrarlama devam eder. Aksi takdirde duraklayacaktır.
    active: boolean;
    /* 'none': Süresiz olarak devam eder
     * 'date': 'end' parametresinde belirtilen tarihe kadar devam eder.
     * 'count': 'maxCount' parametresinde ayarlanan kopya sayısı oluşturulana kadar
     * devam eder. Görevin kendisi ilk kopyadır. Dolayısıyla, maxCount 1 ise hiçbir
     * kopya oluşturulmayacaktır.
     */
    stopCondition: 'none' | 'date' | 'count';
    end?: number;
    maxCount?: number;
    // 'type' parametresi 'weekly' ise, bir kopyanın haftanın hangi günlerinde oluşturulması
    //  gerektiğini ayarlayabilirsiniz. Liste, o gün bir kopyanın oluşturulup oluşturulmayacağını
    //  gösteren haftanın günleridir. Pazartesi ile başlar.
    days?: boolean[];
}
```

#### Görev Aktivitesi

Güncelleme, ilerleme eylemleri ve görevlerdeki mesajlar görev aktivitelerini oluşturur.

```typescript
type TaskActivity = {
    _id: string;
    // Aktiviteyi oluşturan kullanıcının ID'si
    user: string;
    // Aktiviteyi oluşturan portal kullanıcının ID'si. Yalnızca Müşteri Portalında
    // bir müşteri tarafından etkinlik oluşturulduğunda mevcuttur.
    portalUser?: string;
    // E-posta gönderenin ID'si. Aktivite, gelen bir posta nedeniyle oluşturulduğunda mevcuttur.
    emailUser?: string;
    type:
        | 'post'         // Görevle ilgili bir gönderi (yorum)
        | 'update'       // Görev güncellendi
        | 'progress'     // Görev adımı tamamlandı/tamamlanmadı, ilerleme değişti
        | 'archive'      // Görev arşivlendi
        | 'restore'      // Görev arşivden geri yüklendi
        | 'state-change' // Görev durumu değiştirildi
        | 'delete';      // Görev silindi
    // Güncelleme ile ilgili bilgileri tutar. Şekil 'type' parametresine bağlıdır.
    data?: object;
    // 'type' parametresi 'post' ise yorum içeriğini tutar
    content?: string;
    // 'type' parametresi 'post' ise dosya ayrıntılarını tutar
    files?: File[] = [];
    createdAt: number;
    // Aktivite, önceki bir gönderiye verilen yanıtsa, başvurulan aktivite ID'si korunur.
    replyToId?: string;
    // Aktivitenin (gönderinin) bir Müşteri Portalı kullanıcısı ile paylaşılıp paylaşılmadığını belirtir.
    customerCanSee: boolean;
    // Gönderide bahsedilen kullanıcıların listesi
    mentions: Mention[];
    customFields?: {
        fieldName: string;
        value: string;
    }[];
    // Gelen bir e-postadan bir görev oluşturulursa
    emailDetails?: EmailDetails;
    // Gelen bir e-posta için görev oluşturulursa, görevdeki gönderiler e-posta olarak
    // gönderilebilir. Bu, postanın durumunu tutar.
    mailStatus?: 'not-sent' | 'sending' | 'sent' | 'mail-box-error' | 'error';
}

type Mention = {
    id: string;   // Kullanıcı ID'si
    name: string; // Gönderide kullanıcıdan bahsetmek için kullanılan metin
}

type EmailDetails = {
    to: EmailPerson[];
    cc: EmailPerson[];
    from: EmailPerson;
}

type EmailPerson = {
    name: string;
    emailAddress: string;
}
```

#### Görev Durumu

```typescript
type TaskState = {
    name: string;
    type: 'waiting' | 'active' | 'completed' | 'suspended' | 'cancelled';
    color: string;
    textColor: string;
    isDefault?: boolean;
}

type TaskStateActivity = {
    _id: string;
    // Aktiviteyi oluşturan kullanıcının ID'si
    user: string;
    task: string;
    type: 'state-change';
    data: {
        oldState: TaskState;
        newState: TaskState;
    };
}    
```

#### Varsayılan Görev Durumları

Görev durumları proje için özelleştirilmemişse, varsayılan durumlar kullanılır. Bu değerler, kullanıcı arayüzünde gösterildiğinde kullanıcının diline çevrilir.

| Durum Değeri  | Kullanıcı Arayüzünde Çevirisi |
| ------------- | ----------------------------- |
| cb\_waiting   | Bekliyor                      |
| cb\_active    | Aktif                         |
| cb\_completed | Tamamlandı                    |
| cb\_suspended | Askıya Alındı                 |

Görev durumlarının özelleştirilip özelleştirilmediğini veya varsayılanların kullanılıp kullanılmadığını görmek için proje nesnesini kontrol edebilirsiniz.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kilavuz.cubicl.io/api-entegrasyonu/gorevler.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
