Modifier les données du client

Comment suivre ce chapitre

Entrées : userId, un token autorisé à modifier ce client et les champs à changer.

Étapes et résultat attendu : Envoyez uniquement les modifications souhaitées. Une réponse réussie confirme la demande de mise à jour. Relisez le client si votre interface a besoin des valeurs actualisées.

Alternatives et actions ultérieures : Les données personnelles et l’adresse se modifient par des procédures distinctes. Utilisez celle qui correspond à la modification demandée.

Code source des DTO : CountryOutputModel

Les variables affectées dans un bloc précédent sont réutilisées dans les suivants. Les saisies du client proviennent de votre interface. Conservez les identifiants et les valeurs de référence dans le contexte du client ; ne recréez pas ce contexte à chaque étape.

Les exemples utilisent des classes utilitaires communes. Consultez Classes utilitaires communes : code source C# et Java complet avant de copier un exemple.
Prérequis : userId et un token CLIENT ou ADMIN autorisé à modifier ce client. Les variables des exemples contiennent les données saisies par le client.
À conserver pour la suite : Les données du client actualisées. Effectuez les vérifications OTP ou d’identité supplémentaires requises pour la modification.
Plusieurs points de terminaison permettent de modifier les données du client. Ce chapitre présente les plus courants.
Pour les autres, consultez le point de terminaison /api/v1/users.

Important

Pour le point de terminaison présenté ici, les champs absents de jsonPayload ou définis à null restent inchangés. Toute autre valeur demande une modification et est validée. Ce point de terminaison ne permet pas d’effacer arbitrairement tous les champs. L’adresse et les autres opérations spécialisées ont leurs propres schémas.

Modifier les données personnelles

Entrées : userId, un token autorisé et les modifications personnelles souhaitées.
Action : Envoyez le payload de mise à jour.
À conserver / résultat attendu : Traitez les erreurs de validation avant de mettre à jour l’interface.
Indiquez uniquement les champs à modifier. L’exemple montre les noms des champs ; les valeurs absentes ou null restent inchangées. Si l’API exige un document d’identité ou un OTP pour changer un contact, obtenez-le par la procédure prévue avant de renouveler la demande :
								
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);

Modifier l’adresse

Entrées : userId, les champs d’adresse et l’identifiant du pays obtenu.
Action : Envoyez la modification d’adresse.
À conserver / résultat attendu : Relisez le client si votre interface a besoin des valeurs mises à jour par le serveur.
L’exemple suivant montre comment modifier l’adresse du client :
								
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);