Hallo,
ich arbeite gerade an einem Script, das die Daten aus meinem Anmeldeformular in eine Datenstruktur, wie sie als contatcs in der API dargestellt sind, übersetzt. Der Abruf der Daten per API-call läuft und die Datenstruktur sollte auch passen. Ich würde jetzt gerne das Neumitglied per API-call anlegen. Allerdings erhalte ich als Antwort nur ein "internal server error". Gibt es eine Möglichkeit, zu erfahren, an welcher stelle, was schiefläuft?
Danke und Grüße
Andreas
Hi Andreas,
passt der gesendete Header ?
ist "Content-Type: application/json" enthalten ? Stimmt die Organisations ID ?
Du kannst versuchen den die JSON Daten Blockweise zu erweitern.
Erstmal wie unten nur den Block 'personal' und 'communication', wenn das funktioniert einen weiteren Block hinzufügen.
-- Wichtig Zeitangaben im Richtigen Format, Strassen müssen richtig Formatiert sein, Handynummer im richtigen Format, IBAN muss valid sein...
Folgendes sollte funktionieren:
Organisations ID XXXXXXXXXXXXXX mit deiner ersetzten.
Diese muss richtig sein, sonst Internalserver error
https://api.campai.com/contacts?organisation=XXXXXXXXXXXXXX
{
"createdAt": "2025-01-02T16:16:48.316Z",
"organisation": "XXXXXXXXXXXXXX",
"type": "contact",
"personal": {
"type": "malePerson",
"isPerson": true,
"isOrganisation": false,
"personFirstName": "TESTVOR",
"personLastName": "TESTLAST"
},
"communication": {
"email": null,
"mobilePhone": null,
"regularPhone": null,
"defaultSendMethod": "",
"noMailing": null
}
}
Irgendwie läuft es immer noch nicht. URL und header sollten richtig gesetzt sein, jedenfalls kann ich damit Daten über die API abrufen.
header = { '
Authorization' = '<<api-key>>'
'Content-Type' ='application/json'
}
Der API-KEY hat vollzugriff auf die Daten.
Folgende Daten sende ich per api:
{
"type": "contact",
"personal": {
"isPerson": true,
"personBirthday": "1993-01-25",
"personFirstName": "Vorname",
"personLastName": "Nachame",
"salutation": "Lieber #firstName",
"type": "malePerson"
},
"communication": {
"defaultSendMethod": "email",
"email": "test@meinedomaene.de",
"mobilePhone": "0123 45687"
}
}
Als Antwort bekomme ich folgende Fehlermeldung:
Response: {"error":true,"type":{"type":"required"},"personal.personLastName":{"type":"required"}}
Ich habe auch probiert, aus der verschachtelten Datenstruktur eine "flache" Struktur mit Feldnamen: "personal.personLastName": "Nachname" zu schicken, allerdings mit dem selben Ergebnis.
Die Fehlermeldung bekomme ich, wenn der Header mit dem Content-Type nicht 'application/json' ist. Ist der Header wirklich so gesetzt ? ggf. wird ein vorhandener Header mit 'Content-Type' ='text/plain' nicht von deinem neuen Header überschrieben.
Wenn ich mit 'Content-Type' ='application/json' das absende, erhalten ich folgende Fehlermeldung: { "error": true, "communication.mobilePhone": { "type": "invalidMobilePhone" } } Das mobilePhone Feld nimmt nur wirklich "echte/richtige" Handynummern an. Diese müssen vorher auf Format geprüft werden.
Dem "regularPhone" Feld ist das egal.. das nimmt alles an. änder ich "mobilePhone" -→ "regularPhone" geht die Anfrage durch und erzeugt einen neuen Kontakt. ---- Falls du lokal entwickelst, könntest du die Anfragen über einen Proxy leiten um zu sehen, was wirklich den Server geschickt wird. (z.B.Windows: Fiddler Classic von Telerik ist für Personal kostenfrei.) Oder z.B. kannst Du deine json Anfrage auch per "Postman" zum Testen an die API- URL senden. Oder über die Doku von Campai. Da kannst du auch zum Testen, deinen JSON Body an deine OrgID mit deinem API Key senden. (unter https://docs.campai.com/authentication api Key setzten und dann im https://docs.campai.com/contacts-create deine Orgid und body übermitteln)