> For the complete documentation index, see [llms.txt](https://docs.propstack.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.propstack.de/reference/task.md).

# Task

Ein Task kann mehreres sein: Eine Notiz, eine Aufgabe, ein Termin, ein Brief, eine SMS, eine Absage, eine Anfrage.

## Das Task (Stamm-)Objekt

| Attribut          | Typ        | Beschreibung                                                                                                                  |
| ----------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------- |
| title             | string     | Titel                                                                                                                         |
| note\_type\_id    | integer    | Aktivitätstyp (alle bis auf E-Mail-Typen)                                                                                     |
| body              | string     | Notizfeld für weitere Bemerkungen als HTML                                                                                    |
| client\_ids       | integer\[] | Ein Array von Kontakt-IDs mit welcher die Aktivität verknüpft werden soll. In der Regel will man nur eine Kontakt-ID mitgeben |
| property\_ids     | integer\[] | Ein Array von Objekt-IDs, womit die Aktivität verknüpft werden soll.                                                          |
| project\_ids      | integer\[] | Ein Array von Projekt-IDs, womit die Aktivität verknüpft werden soll.                                                         |
| broker\_id        | integer    | Nutzer, dem der Task zugewiesen werden soll                                                                                   |
| task\_creator\_id | integer    | Ersteller des Tasks                                                                                                           |
| task\_updater\_id | integer    | der Nutzer, der den Task zuletzt bearbeitet hat                                                                               |

#### Falls Task eine Aufgabe ist:

| Attribut     | Typ     | Beschreibung                                                                                |
| ------------ | ------- | ------------------------------------------------------------------------------------------- |
| is\_reminder | boolean | muss `true` sein                                                                            |
| due\_date    | date    | Datum + Uhrzeit der Fälligkeit der Aufgabe                                                  |
| remind\_at   | date    | Datum (vor dem due\_date), wann der Zugewiesene erinnert werden soll (in Form einer E-Mail) |
| done         | boolean | Ist die Aufgabe erledigt?                                                                   |

#### Falls Task ein Termin ist:

| Attribut   | Typ     | Beschreibung                                                                                                                                                                |
| ---------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| is\_event  | boolean | muss `true` sein                                                                                                                                                            |
| starts\_at | date    | Beginn des Termins                                                                                                                                                          |
| ends\_at   | date    | Ende des Termins                                                                                                                                                            |
| private    | boolean | Soll der Termin nur für die Teilnehmer sichtbar sein?                                                                                                                       |
| all\_day   | boolean | Ganztägiger Termin?                                                                                                                                                         |
| location   | string  | Ort des Termins                                                                                                                                                             |
| recurring  | boolean | Wiederkehrender Termin?                                                                                                                                                     |
| rrule      | string  | bei wiederkehrenden Terminen der String, welcher die Regeln festlegt, in welchem Interval der Termin stattfindet. Mehr Infos [hier](https://jakubroztocil.github.io/rrule/) |

### Assoziationen

1. clients
2. units (Property)
3. projects
4. broker
5. task\_creator
6. note\_type
7. attachments

### Anhänge

| Attribut | Typ     | Beschreibung                                   |
| -------- | ------- | ---------------------------------------------- |
| id       | integer | Unique ID des Anhanges                         |
| name     | string  | Name des Anhanges                              |
| url      | string  | URL zum Anhang (nur für wenige Minuten gültig) |

## Task erstellen

<mark style="color:green;">`POST`</mark> `http://api.propstack.de/v1/tasks`

#### Path Parameters

| Name | Type   | Description                            |
| ---- | ------ | -------------------------------------- |
| task | object | siehe oben welche Felder es haben kann |

{% tabs %}
{% tab title="201 ID des erstellten Tasks wird zurückgegeben" %}

```javascript
{
  "id": 50095
}
```

{% endtab %}
{% endtabs %}

Beispiel-Request zum Anlegen eines **Termins**:

```javascript
{
  "task": {
    "is_event": true,
    "title": "Besichtigungstermin",
    "note_type_id": 123,
    "client_ids": [10002],
    "property_ids": [1004],
    "location": "Musterstraße 123, 12345 Berlin",
    "starts_at": "2020-02-20T14:00:00+01:00",
    "ends_at": "2020-02-20T14:30:00+01:00"
  }
}
```

Beispiel-Request zum Anlegen einer **Aufgabe**:

```javascript
{
  "task": {
    "is_reminder": true,
    "title": "Propstacks Dokumenation verstehen",
    "note_type_id": 503,
    "client_ids": [50002],
    "property_ids": [5004],
    "due_date": "2020-02-20T09:00:00+01:00"
  }
}
```

Beispiel-Request zum Anlegen einer **Notiz**:

```javascript
{
  "task": {
    "title": "Anfrage über die Webseite",
    "note_type_id": 720,
    "client_ids": [2006],
    "property_ids": [7006],
    "body": "Folgender Interessent hat angefragt:<br>Name: Hans Peter<br>Email..."
  }
}
```

## Task bearbeiten

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

Einen vorhandenen Task bearbeiten

**Request body**

| Name | Type   | Description                               |
| ---- | ------ | ----------------------------------------- |
| task | object | siehe alle möglichen Werte für einen Task |

**Hinweis**

Die Payloads, die für die Erstellaktion verwendet werden, können auch für die Aktualisierungsaktion verwendet werden.

{% tabs %}
{% tab title="200" %}

```javascript
```

{% endtab %}
{% endtabs %}

Beispiel-Request zum Bearbeiten eines Tasks:

```javascript
{
    "task": {
        "body": "Neue Anfrage von: Anna Müller"
    }
}
```
