Customers-API
Kunden auflisten, abrufen, erstellen, aktualisieren und löschen
Geschrieben von Erdinc Akay
Zuletzt aktualisiert Vor 26 Tagen
Die Customers-API ermöglicht das Abfragen und Verwalten von Kunden-Datensätzen und ihren Standorten.
Die vollständige, stets aktuelle Liste der Endpoints, Parameter und Antwortfelder für die Version, die du betreibst, findest du in der interaktiven OpenAPI-Oberfläche (Swagger) unter https://<deine-octoja-instanz>/openapi/index.html.
Endpoints
Alle Anfragen müssen als angemeldeter Benutzer authentifiziert sein. Die erforderliche Berechtigung ist unten je Endpunkt angegeben; diese benutzerdefinierten Berechtigungsrichtlinien sind im Swagger-Schema nicht abgebildet.
Einen Kunden aktualisieren
Aktualisierungen verwenden den UpdateValue<T>-Envelope. Jedes skalare Feld, das du ändern möchtest, muss als { "hasValue": true, "value": ... } verpackt werden. Lass das Feld weg (oder sende { "hasValue": false }), um es unverändert zu lassen. Bei nullbaren Feldern setzt du "value": null innerhalb des Envelopes, um den aktuellen Wert zu löschen.
Das Feld sites verwendet einen UpdateList<T>-Envelope — eine Liste von Hinzufügen-/Aktualisieren-/Entfernen-Operationen statt eines Ersatz-Arrays.
Beispiel-Body, der den Kunden umbenennt, die externe Referenz löscht und die Tag-Liste ersetzt:
{ "newName": { "hasValue": true, "value": "Acme GmbH" }, "newExternalReference": { "hasValue": true, "value": null }, "tags": { "hasValue": true, "value": ["vip", "managed"] }}Wichtige Felder (die vollständige Liste und die Typen stehen in Swagger):
newExternalReference,addressundcontactsind nullbar — sende"value": nullinnerhalb des Envelopes, um sie zu löschen.tagsersetzt beim Senden die gesamte Liste; lass das Feld weg, um die Tags unverändert zu lassen. Siehe Tag-Validierung unten.sitesist eine Operationsliste, kein Ersatz-Array. Siehe Standorte verwalten unten.
Tag-Validierung
Wenn tags gesendet wird, entfernt octoja zunächst leere bzw. nur aus Leerzeichen bestehende Einträge und dedupliziert das Array. Anschließend validiert octoja das Ergebnis vor dem Speichern. Der Endpunkt gibt 400 Bad Request zurück, wenn mehr als 50 Tags verbleiben oder wenn ein einzelnes Tag 100 Zeichen überschreitet.
Standorte verwalten
Das Feld sites akzeptiert eine Liste von Operationen. Jeder Eintrag hat die Form { "op": "Add" | "Update" | "Remove", "id": <siteId oder null>, "values": { "name": { "hasValue": true, "value": "..." } } }. Die Eigenschaft name innerhalb von values ist selbst ein UpdateValue<string>-Envelope.
- Add — erfordert
values.name;idwird weggelassen oder istnull. - Update — erfordert
id(die vorhandenesiteId) undvalues.name; benennt den Standort um. - Remove — erfordert
id;valueskann weggelassen werden.
Beispiel-Body, der einen Standort hinzufügt, einen weiteren umbenennt und einen dritten entfernt:
{ "sites": { "hasValue": true, "value": [ { "op": "Add", "values": { "name": { "hasValue": true, "value": "Standort Berlin" } } }, { "op": "Update", "id": "1c2e...", "values": { "name": { "hasValue": true, "value": "Zentrale München" } } }, { "op": "Remove", "id": "9af3..." } ] }}Einen Kunden löschen
Gibt 400 Bad Request zurück, wenn dem Kunden noch Agenten zugewiesen sind — unabhängig davon, ob der Agent online, offline oder anderweitig inaktiv ist. Weise diese Geräte zuerst neu zu oder entferne sie.
Das Löschen eines Kunden ist ein Soft-Delete. Der Kunde wird als gelöscht markiert und erscheint nicht mehr in normalen API-Ergebnissen. Zugehörige Datensätze bleiben erhalten.
Customer-Objekt
Wichtige Felder (die vollständige Liste und die Typen stehen in Swagger):
externalReference— deine Referenz in ein externes PSA- oder Abrechnungssystem;null, wenn nicht gesetzt.tags— frei wählbare Tags, die dem Kunden zugewiesen sind.address/contact— verschachtelte Objekte, jeweils nullbar. Adressfelder:street,postalCode,city,country. Kontaktfelder:firstname,lastname,mailAddress,phoneNumber,position.isNfr— gibt an, ob der Kunde als Not-for-Resale (NFR) markiert ist.lywandScore— aktueller Lywand-Sicherheitsscore;null, sofern die Lywand-Integration für diesen Kunden nicht zugeordnet ist.sites— Liste der Kundenstandorte; jeder Standort enthält seinesiteIdundname.