# Aktivitäten

Aktivitäten können nicht direkt angelegt werden, sondern werden intern durch PS angelegt. Um eine Aktivität anzulegen, muss man entweder eine Message oder einen Task direkt anlegen.

### Arten von Aktivitäten (`activatable_type`)

| Typ     | Beschreibung                                                                                                                                      |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Message | Ein- und ausgehende E-Mails                                                                                                                       |
| Task    | Mit Task sind diverse Aktivitätstypen gemeint, wie Notizen, Aufgaben, Termine, Briefe, Absagen                                                    |
| Policy  | Policies sind Nachweise über die Widerrufsbelehrung oder Kontakterlaubnis. Mehr Infos gibt es [hier](https://docs.propstack.de/reference/policy). |

## Aktivitäten lesen

<mark style="color:blue;">`GET`</mark> `https://api.propstack.de/v1/activities`

#### Query Parameters

| Name                        | Type       | Description                                                                                                               |
| --------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------- |
| expand                      | Boolean    | um das ausführliche JSON (einschließlich custom Felder) zu erhalten                                                       |
| order                       | String     | Aufsteigend oder absteigend sortieren. Entweder `asc` oder `desc`                                                         |
| category\_id                | Integer    | ID des Aktivitätstypen                                                                                                    |
| category\_ids               | Integer\[] | IDs der Aktivitätstypen                                                                                                   |
| client\_id                  | integer    | ID des Kontaktes                                                                                                          |
| client\_ids                 | Integer\[] | IDs der Kontakte                                                                                                          |
| property\_id                | Integer    | ID des Objektes                                                                                                           |
| property\_ids               | Integer\[] | IDs der Objekte                                                                                                           |
| project\_id                 | Integer    | ID des Projektes                                                                                                          |
| project\_ids                | Integer\[] | IDs der Projekte                                                                                                          |
| item\_type                  | String     | Typ der Aktivität. Eines von `message`, `note`, `reminder`, `event`, `policy`, `cancelation`, `decision`, `sms`, `letter` |
| broker\_id                  | Integer    | ID des Besitzers der Aktivität (Bei Notizen, Terminen, Aufgaben der, dem die Aktivität "zugewiesen" wurde)                |
| creator\_id                 | Integer    | ID des Erstellers der Aktivität                                                                                           |
| starts\_at\_from            | String     | Format: 2022-12-07T10:00:00+01:00                                                                                         |
| starts\_at\_to              | String     | Format: 2022-12-07T23:59:59+01:00                                                                                         |
| original\_created\_at\_from | String     | Format: 2022-12-07T10:00:00+01:00                                                                                         |
| original\_created\_at\_to   | String     | Format: 2022-12-07T23:59:59+01:00                                                                                         |
| only\_inquiries             | Boolean    | auf `true` oder `1` setzen, um nur Aktivitäten vom Typ "Anfrage" zu erhalten                                              |
| not\_completed              | Boolean    | um nur unvollständige Aktivitäten zu erhalten                                                                             |
| reason\_id                  | Integer    | ID des Absagegrundes der Aktivität                                                                                        |
| reason\_ids                 | Integer\[] | IDs der Absagegründe der Aktivität                                                                                        |
| group\_ids                  | Integer\[] | IDs der Merkmale                                                                                                          |
| team\_ids                   | Integer\[] | IDs der Abteilungen                                                                                                       |
| source\_id                  | Integer    | ID der Anfrage-Quelle                                                                                                     |
| blocked                     | Boolean    | Ob der angehängte Kunde gesperrt ist oder nicht                                                                           |

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

```javascript
{
    "data": [
        {
            "id": 123,
            "broker_id": 12,
            "client_ids": [
                123401
            ],
            "property_ids": [
                4321
            ],
            "project_ids": [],
            "client_names": [
                "Stefanie Mante"
            ],
            "property_names": [
                "CLA-1050"
            ],
            "project_names": [],
            "conversation_type": "note",
            "sender_type": null,
            "source_id": null,
            "creator_id": 123,
            "category_id": null,
            "reason_id": null,
            "created_at": "2019-01-15T01:22:37.619+01:00",
            "starts_at": null,
            "price": null,
            "group_ids": [],
            "state": "neutral",
            "title": "Eingehender Anruf um 18:00",
            "access_broker_ids": null,
            "access_department_ids": null,
            "blocked": false,
            "comments_count": 0,
            "attachments_count": 0,
            "done": false,
            "outgoing": false,
            "tracking_size": 0,
            "unread_tracking_size": 0,
            "attachments": 0,
            "comment_size": 0
        },
    ],
    "meta": {
        "total_count": 10205
    }
}
```

{% endtab %}
{% endtabs %}

Aktivitäten lassen sich paginieren über die Parameter `page` und `per`. Standardmäßig werden die ersten 20 Aktivitäten angezeigt.

## Einzelne Aktivität lesen

<mark style="color:blue;">`GET`</mark> `https://api.propstack.de/v1/activities/:id`

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

```javascript
{
    "id": 41711,
    "activatable_type": "Task",
    "activatable": {
        // je nachdem was activatable_type ist, 
        // .. kommt hier das Objekt zur E-Mail oder zum Task
    }
}
```

{% endtab %}
{% endtabs %}

## Aktivität anlegen

In der Regel möchte man eine einfache Notiz anlegen, welches in Propstacks API ein "Task" wäre. Die Beschreibung für einen Task sieht wie folgt aus:

### Task

| 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                                                                                |
| ---------- | ------- | ------------------------------------------------------------------------------------------- |
| 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                                                                                                                                                                |
| ---------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 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/) |

#### Falls Task eine Anfrage ist:

| Attribut           | Typ     | Beschreibung          |
| ------------------ | ------- | --------------------- |
| client\_source\_id | integer | ID der Anfrage-Quelle |

#### Falls Task eine Absage ist:

| Attribut                | Typ     | Beschreibung         |
| ----------------------- | ------- | -------------------- |
| reservation\_reason\_id | integer | ID des Absagegrundes |

## Aktivitätstypen lesen

<mark style="color:blue;">`GET`</mark> `https://api.propstack.de/v1/activity_types`

Aktivitätstypen sind wie Kategorien zu verstehen. Eine Aktivität kann zu einer oder gar keiner Kategorie gehören.

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

```javascript
{
    "data": [
        {
            "id": 35,
            "name": "Anfrage",
            "category": "message"
        },
        {
            "id": 38,
            "name": "Angebot",
            "category": "message"
        },
        {
            "id": 102,
            "name": "Notartermin",
            "category": "event"
        },
        {
            "id": 386,
            "name": "Marketing: Mailing",
            "category": "note"
        },
        {
            "id": 73,
            "name": "Anruf",
            "category": "reminder"
        }
    ]
}
```

{% endtab %}
{% endtabs %}

## Absagegründe lesen

<mark style="color:blue;">`GET`</mark> `https://api.propstack.de/v1/reservation_reasons`

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

```json
[
  {
    "id": 1,
    "name": "Finanzierung"
  },
  {
    "id": 2,
    "name": "Ausstattung"
  },
  {
    "id": 3,
    "name": "Preis"
  },
  {
    "id": 4,
    "name": "Lage"
  },
  {
    "id": 5,
    "name": "Größe"
  }
]
```

{% endtab %}
{% endtabs %}


---

# 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/aktivitaeten-1.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.
