API - Interaktionen Admin

📕 Für Administratoren und Entwickler

Interaktionen dokumentieren Kontaktpunkte mit Kunden — etwa Telefonate, E-Mails oder Meetings. Über die spiritflow Public API können Interaktionen programmatisch erfasst und abgerufen werden. Die Endpunkte sind unter dem jeweiligen Kunden verschachtelt: /api/v1/customers/{customerId}/interactions. Alle Endpunkte erfordern einen gültigen API-Key mit dem entsprechenden Scope.


Referenzwerte: Interaktionstypen

WertBeschreibung
PHONE_CALLTelefonat
EMAIL_INEingehende E-Mail
EMAIL_OUTAusgehende E-Mail
MEETINGBesprechung
VISITVor-Ort-Besuch
NOTENotiz / Vermerk

Interaktionen auflisten

GET /api/v1/customers/{customerId}/interactions

Erforderlicher Scope: interactions:read

Pfad-Parameter:

ParameterTypBeschreibung
customerIdLongID des Kunden

Query-Parameter:

ParameterTypStandardBeschreibung
pagenumber0Seitennummer (0-basiert)
sizenumber20Einträge pro Seite (max. 100)

Antwort-Felder:

FeldTypBeschreibung
idnumberEindeutige ID der Interaktion
customerIdnumberID des zugehoerigen Kunden
interactionTypestringArt der Interaktion (siehe Referenzwerte)
subjectstringBetreff der Interaktion
contentstring?Inhalt / Notizen
interactionDatestringZeitpunkt der Interaktion (ISO 8601, UTC)
durationMinutesnumber?Dauer in Minuten
outcomestring?Ergebnis der Interaktion
contactPersonIdnumber?ID der Kontaktperson beim Kunden
contactPersonNamestring?Name der Kontaktperson
followUpDatestring?Wiedervorlage-Zeitpunkt (ISO 8601, UTC)
createdBystringAnzeigename des Erstellers
createdAtstringErstellungszeitpunkt (ISO 8601, UTC)

Antwort (200 OK):

{
  "data": [
    {
      "id": 1,
      "customerId": 42,
      "interactionType": "PHONE_CALL",
      "subject": "Rueckruf wegen Angebot",
      "content": "Kunde hat Interesse an Enterprise-Paket bestaetigt.",
      "interactionDate": "2025-03-01T14:30:00Z",
      "durationMinutes": 15,
      "outcome": "Angebot wird per E-Mail nachgesendet",
      "contactPersonId": 5,
      "contactPersonName": "Anna Müller",
      "followUpDate": "2025-03-08T09:00:00Z",
      "createdBy": "Florian Cremer",
      "createdAt": "2025-03-01T14:45:00Z"
    }
  ],
  "pagination": {
    "page": 0,
    "size": 20,
    "totalElements": 1,
    "totalPages": 1
  },
  "meta": {
    "requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "timestamp": "2025-03-01T15:00:00Z"
  }
}

cURL-Beispiel:

curl -X GET "https://app.spiritflow.team/api/v1/customers/42/interactions?page=0&size=20" \
  -H "X-API-Key: sf_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Interaktion erstellen

POST /api/v1/customers/{customerId}/interactions

Erforderlicher Scope: interactions:write

Pfad-Parameter:

ParameterTypBeschreibung
customerIdLongID des Kunden

Request-Body:

FeldTypPflichtBeschreibung
interactionTypestringJaArt der Interaktion (siehe Referenzwerte oben)
subjectstringJaBetreff (max. 255 Zeichen)
contentstringNeinInhalt / Notizen (max. 5.000 Zeichen)
interactionDatestringNeinISO 8601 Zeitstempel. Standard: aktuelle Zeit
durationMinutesnumberNeinDauer in Minuten
outcomestringNeinErgebnis der Interaktion (max. 500 Zeichen)
contactPersonIdnumberNeinID der Kontaktperson beim Kunden
followUpDatestringNeinISO 8601 Zeitstempel für Wiedervorlage

Antwort (201 Created): Erstellte Interaktion im data-Feld (gleiche Struktur wie in der Liste).

Fehler-Codes:

HTTP-StatusCodeBeschreibung
400VALIDATION_ERRORPflichtfeld fehlt, Wert ungültig oder Feldlimit überschritten
404NOT_FOUNDKunde oder Kontaktperson nicht gefunden

cURL-Beispiel:

curl -X POST "https://app.spiritflow.team/api/v1/customers/42/interactions" \
  -H "X-API-Key: sf_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "interactionType": "PHONE_CALL",
    "subject": "Rueckruf wegen Angebot",
    "content": "Kunde hat Interesse an Enterprise-Paket bestaetigt.",
    "interactionDate": "2025-03-01T14:30:00Z",
    "durationMinutes": 15,
    "outcome": "Angebot wird per E-Mail nachgesendet",
    "contactPersonId": 5,
    "followUpDate": "2025-03-08T09:00:00Z"
  }'

Nebeneffekte beim Erstellen einer Interaktion

Das Anlegen einer Interaktion aktualisiert automatisch zwei Felder des zugehoerigen Kunden:

  • lastContactDate wird auf den Zeitpunkt der Interaktion (interactionDate) gesetzt.
  • nextContactDate wird aktualisiert, wenn im Request ein followUpDate angegeben wurde.

Dadurch bleibt die Kontakthistorie im Kundenprofil stets aktuell, ohne dass ein separater API-Aufruf noetig ist.