Kundendaten ändern

So folgen Sie diesem Kapitel

Eingaben: userId, ein für diesen Kunden berechtigter Token und die zu ändernden Felder.

Schritte und erwartetes Ergebnis: Senden Sie nur die gewünschten Änderungen. Eine erfolgreiche Antwort bestätigt die Aktualisierungsanfrage. Lesen Sie den Kunden erneut aus, wenn Ihre Oberfläche die aktuellen Werte benötigt.

Alternativen und spätere Aktionen: Persönliche Daten und Adresse werden über getrennte Abläufe geändert. Verwenden Sie den passenden Ablauf für die gewünschte Änderung.

DTO-Quellcode: CountryOutputModel

In früheren Codeblöcken zugewiesene Variablen werden später wiederverwendet. Kundeneingaben stammen aus Ihrer Oberfläche. Bewahren Sie IDs und Referenzwerte im Kontext des jeweiligen Kunden auf; legen Sie nicht für jeden Schritt einen neuen Kontext an.

Die Beispiele verwenden gemeinsame Hilfsklassen. Lesen Sie Gemeinsame Hilfsklassen: vollständiger C#- und Java-Quellcode bevor Sie ein Beispiel übernehmen.
Voraussetzungen: userId sowie ein CLIENT- oder ADMIN-Token, der diesen Kunden aktualisieren darf. Die Variablen der Beispiele enthalten Kundeneingaben.
Für den nächsten Schritt aufbewahren: Die aktualisierten Kundendaten. Führen Sie gegebenenfalls die für die Änderung erforderliche OTP-Verifizierung oder Identitätsprüfung durch.
Es gibt mehrere API-Endpunkte zum Aktualisieren von Kundendaten. Dieses Kapitel behandelt die am häufigsten verwendeten.
Weitere Endpunkte finden Sie unter /api/v1/users.

Wichtig

Beim hier gezeigten Endpunkt bleiben Felder unverändert, die in jsonPayload fehlen oder null sind. Ein anderer Wert beantragt eine Änderung und wird validiert. Der Endpunkt bietet keinen allgemeinen Mechanismus zum Leeren beliebiger Felder. Für Adressen und andere spezielle Endpunkte gelten eigene Schemas.

Persönliche Daten ändern

Eingaben: userId, ein berechtigter Token und die gewünschten Änderungen an den persönlichen Daten.
Aktion: Senden Sie den Aktualisierungs-Payload.
Aufbewahren / erwartetes Ergebnis: Behandeln Sie Validierungsfehler, bevor Sie die Oberfläche aktualisieren.
Geben Sie nur die zu ändernden Felder an. Das Beispiel zeigt die Feldnamen; fehlende oder auf null gesetzte Werte bleiben unverändert. Falls die API ein Identitätsdokument oder ein OTP zur Kontaktänderung verlangt, beschaffen Sie diese über den vorgesehenen Ablauf, bevor Sie die Aktualisierung erneut senden:
								
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
// Assuming this is our client ID
// userId is the identifier returned by registration.
var clientUpdateInputModel = new
{
    Name = name,
    Surname = surname,
    Email = email,
    PhoneNumberPrefix = phoneNumberPrefix,
    PhoneNumberNumber = phoneNumberNumber,
    BirthDate = birthDate,
    GenderId = genderId,
    LanguageId = languageId,
    Nationality1Id = nationalityId,
    DeliverTaxStatement = deliverTaxStatement,
    PensionSituationId = pensionSituationId
};
var clientUpdateInputModelAsString = JsonConvert.SerializeObject(clientUpdateInputModel);
using var clientUpdateContent = new MultipartFormDataContent();
clientUpdateContent.Add(new StringContent(clientUpdateInputModelAsString, Encoding.UTF8, "application/json"), "jsonPayload");
(await httpClient.PutAsync($"api/v1/users/user-id/{userId}", clientUpdateContent)).EnsureSuccessStatusCode();

									
								
// Assuming this is our client ID
// userId is the identifier returned by registration.

JsonObject clientChangeDataPayload = new JsonObject();
clientChangeDataPayload.addProperty("Name", name);
clientChangeDataPayload.addProperty("Surname", surname);
clientChangeDataPayload.addProperty("Email", email);
clientChangeDataPayload.addProperty("PhoneNumberPrefix", phoneNumberPrefix);
clientChangeDataPayload.addProperty("PhoneNumberNumber", phoneNumberNumber);
clientChangeDataPayload.addProperty("BirthDate", birthDate);
clientChangeDataPayload.addProperty("GenderId", genderId);
clientChangeDataPayload.addProperty("LanguageId", languageId);
clientChangeDataPayload.addProperty("Nationality1Id", nationalityId);
clientChangeDataPayload.addProperty("DeliverTaxStatement", deliverTaxStatement);
clientChangeDataPayload.addProperty("PensionSituationId", pensionSituationId);

MultiPartBodyPublisher multipartClientChangeOrderBody = new MultiPartBodyPublisher()
    .addPart("jsonPayload", clientChangeDataPayload.toString());
// Add the required identification file as userIdentities when the API requires it.

HttpRequest clientDataChangeRequest = HttpRequest.newBuilder()
    .timeout(Duration.ofMinutes(1))
    .uri(Settings.wmsUri("users/user-id/" + userId))
    .header("Accept-Language", "de-DE")
    .header("Authorization", "Bearer " + accessToken)
    .header("Content-Type", "multipart/form-data; boundary=" + multipartClientChangeOrderBody.getBoundary())
    .PUT(multipartClientChangeOrderBody.build())
    .build();

var response = httpClient.send(clientDataChangeRequest, BodyHandlers.ofString());
Api.requireSuccess(response);

Adresse ändern

Eingaben: userId, Adressfelder und die ermittelte Länder-ID.
Aktion: Senden Sie die Adressänderung.
Aufbewahren / erwartetes Ergebnis: Lesen Sie den Kunden erneut aus, wenn Ihre Oberfläche die aktualisierten Serverwerte benötigt.
Das folgende Beispiel zeigt eine Adressänderung:
								
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var userAddressInputModel = new
{
    Street = street,
    StreetNr = streetNr,
    City = city,
    CountryId = countryId,
    Zip = zip
};
// userId is the identifier returned by registration.
var userAddressInputModelAsString = JsonConvert.SerializeObject(userAddressInputModel);
(await httpClient.PutAsync($"api/v1/users/update-address/user-id/{userId}", new StringContent(userAddressInputModelAsString, Encoding.UTF8, "application/json"))).EnsureSuccessStatusCode();

									
								
HttpRequest countryRequest = HttpRequest.newBuilder()
    .timeout(Duration.ofMinutes(1))
    .uri(Settings.wmsUri("countries/code/FR"))
    .header("Accept-Language", "de-DE")
    .header("Authorization", "Bearer " + Settings.GUEST_TOKEN) // or CLIENT/ADMIN ACCESS TOKEN
    .header("Content-Type", "application/json")
    .build();

var response = httpClient.send(countryRequest, BodyHandlers.ofString());
Api.requireSuccess(response);
CountryOutputModel countryObj = new Gson().fromJson(response.body(), CountryOutputModel.class);
var countryId = countryObj.Id;

// Assuming this is our client ID
// userId is the identifier returned by registration.

JsonObject newAddressPayload = new JsonObject();
newAddressPayload.addProperty("Street", street);
newAddressPayload.addProperty("StreetNr", streetNr);
newAddressPayload.addProperty("City", city);
newAddressPayload.addProperty("CountryId", countryId);
newAddressPayload.addProperty("Zip", zip);

HttpRequest theRequest = HttpRequest.newBuilder()
    .timeout(Duration.ofMinutes(1))
    .uri(Settings.wmsUri("users/update-address/user-id/" + userId))
    .header("Accept-Language", "de-DE")
    .header("Authorization", "Bearer " + accessToken) // or CLIENT ACCESS TOKEN
    .header("Content-Type", "application/json")
    .PUT(HttpRequest.BodyPublishers.ofString(newAddressPayload.toString()))
    .build();

response = httpClient.send(theRequest, BodyHandlers.ofString());
Api.requireSuccess(response);