# 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"
    }
}
```


---

# 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://docs.propstack.de/reference/task.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.
