# Variablen des Kontakts

Mit diesen Methoden lesen, schreiben und löschen Sie [Variablen des Kontakts](https://support.watbot.org/de/chatbots/contacts/tags-variables#variablen-des-kontakts) — dieselben, die der Bot im Szenario befüllt und in der Kontaktkarte anzeigt. Zum Beispiel kann Ihre Website eine Bestellnummer in eine Variable schreiben, und der Bot setzt sie als `{{ $bestellnummer }}` in eine Nachricht ein (mehr dazu im Abschnitt [Platzhalter](https://support.watbot.org/de/chatbots/templates)).

Die Kontakt-ID (`contact_id`) steht im Kopf der [Kontaktkarte](https://support.watbot.org/de/chatbots/contacts/card) und in der ersten Spalte der Kontaktliste.

## getContactVariables

Gibt alle Variablen eines Kontakts zurück.

```endpoint
GET POST https://watbot.org/de/api/v1/getContactVariables
```

| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| `contact_id` | Ganzzahl | ja | ID des Kontakts |

```bash title="Anfrage"
curl -X POST "https://watbot.org/de/api/v1/getContactVariables" \
  -H "Authorization: Bearer IHR_API_SCHLÜSSEL" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"contact_id": 678}'
```
```json title="Antwort 200"
{
  "data": [
    {
      "id": 17594321098765,
      "name": "stadt",
      "value": "Leipzig",
      "deletable": false,
      "variable": {
        "id": 17594321098765,
        "name": "Leipzig"
      }
    },
    {
      "id": 17594321112233,
      "name": "bestellnummer",
      "value": "A-1024",
      "deletable": false,
      "variable": {
        "id": 17594321112233,
        "name": "A-1024"
      }
    }
  ]
}
```

| Feld | Beschreibung |
|---|---|
| `id` | ID der Variable bei diesem Kontakt |
| `name` | Name der Variable |
| `value` | Wert |
| `deletable` | `true` — die Variable wird gelöscht, nachdem der Block [„Anfrage“](https://support.watbot.org/de/chatbots/blocks/notifications/notification) gesendet wurde |
| `variable` | Veraltetes Feld für alte Integrationen: `id` ist die ID der Variable, `name` ihr **Wert**. Verwenden Sie es in neuem Code nicht |

Die Variablen kommen in der Reihenfolge ihrer Erstellung. Gibt es keine, ist `data` ein leeres Array.

## setContactVariable

Schreibt einen Wert in eine Variable des Kontakts. Gibt es noch keine Variable mit diesem Namen, wird sie angelegt; gibt es sie schon, wird der Wert ersetzt.

```endpoint
POST https://watbot.org/de/api/v1/setContactVariable
```

| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| `contact_id` | Ganzzahl | ja | ID des Kontakts |
| `name` | Zeichenkette | ja | Name der Variable, bis 255 Zeichen: Buchstaben, Ziffern, `_` und Leerzeichen |
| `value` | Zeichenkette | ja | Wert, bis 4096 Zeichen. Zahlen als Zeichenkette übergeben: `"150"`, nicht `150` |
| `deletable` | `0` oder `1` | nein | `1` — die Variable nach dem Senden des Blocks „Anfrage“ löschen. Standard: `0` |

```bash title="Anfrage"
curl -X POST "https://watbot.org/de/api/v1/setContactVariable" \
  -H "Authorization: Bearer IHR_API_SCHLÜSSEL" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"contact_id": 678, "name": "bestellnummer", "value": "A-1024"}'
```
```json title="Antwort 200"
{
  "data": {
    "id": 17594321112233,
    "name": "bestellnummer",
    "value": "A-1024",
    "deletable": false,
    "variable": {
      "id": 17594321112233,
      "name": "A-1024"
    }
  }
}
```
```json title="Antwort 422"
{
  "message": "Der Kontakt hat bereits 5000 Variablen — eine neue kann nicht hinzugefügt werden.",
  "error": "Der Kontakt hat bereits 5000 Variablen — eine neue kann nicht hinzugefügt werden.",
  "code": "variables_limit",
  "errors": {
    "name": ["Der Kontakt hat bereits 5000 Variablen — eine neue kann nicht hinzugefügt werden."]
  }
}
```

Besonderheiten:

- Ein leerer Wert lässt sich nicht schreiben: `value` ist Pflicht. Um eine Variable zu leeren, löschen Sie sie mit `deleteContactVariable`.
- Beim Schreiben in eine bestehende Variable wird auch `deletable` überschrieben: Fehlt der Parameter, wird er `false`.
- Der Name einer neuen Variable kommt in das Verzeichnis „Vorschläge für Benutzervariablen“ des Bots — so erscheint er in den Vorschlägen der Oberfläche und im [Export der Kontakte](https://support.watbot.org/de/chatbots/contacts/import-export). Enthält das Verzeichnis bereits 5000 Namen, wird der neue Name nicht aufgenommen, die Variable des Kontakts aber trotzdem geschrieben.
- Ein Kontakt kann höchstens 5000 Variablen haben. Darüber hinaus legt die Methode keine neue an und antwortet mit `422` und `code: "variables_limit"`. Das Schreiben in eine bestehende Variable funktioniert immer.
- Kontakt nicht gefunden, gelöscht oder sein Bot gelöscht — `404`; Kontakt aus einem fremden Bot — `403`.

## deleteContactVariable

Löscht eine Variable des Kontakts nach ID oder nach Name.

```endpoint
POST https://watbot.org/de/api/v1/deleteContactVariable
```

| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| `contact_id` | Ganzzahl | ja | ID des Kontakts |
| `id` | Ganzzahl | wenn `name` fehlt | ID der Variable aus `getContactVariables` |
| `name` | Zeichenkette | wenn `id` fehlt | Name der Variable, bis 255 Zeichen |

Werden beide übergeben, gilt `name`; gibt es keine Variable mit diesem Namen, gilt `id`.

```bash title="Anfrage"
curl -X POST "https://watbot.org/de/api/v1/deleteContactVariable" \
  -H "Authorization: Bearer IHR_API_SCHLÜSSEL" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"contact_id": 678, "name": "bestellnummer"}'
```

Die Antwort ist der Status `204` ohne Inhalt.

Besonderheiten:

- Hat der Kontakt keine solche Variable, antwortet die Methode trotzdem mit `204`.
- Der Name bleibt im Vorschlagsverzeichnis des Bots.
- Kontakt nicht gefunden, gelöscht oder sein Bot gelöscht — `404`; Kontakt aus einem fremden Bot — `403`.

Allgemeine Fehler der API finden Sie unter [Fehler](https://support.watbot.org/de/api#fehler).
