
When the customer is authenticated with a JWT token in your application, You can retrieve or update customer details by using the SDK methods. These methods can be used only by recognized profiles, except [updating a customer account's basic information](#update-a-customer-accounts-basic-information), which can be used for anonymous profile too.


<div class="admonition admonition-important"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

You must synchronize your data with Synerise backend after deleting an account on your side.

</div></div></div>


## Profile management methods

### Get a customer account details
You can use this method to retrieve all information about a customer from Synerise. You can then present that information in the app.

| OS           | Method                                                                                                                         |
|--------------|--------------------------------------------------------------------------------------------------------------------------------|
| Android      | [Client.getAccount()](/developers/mobile-sdk/method-reference/android/client-account#get-customer-account-information)               |
| iOS          | [Client.getAccount(success:failure:)](/developers/mobile-sdk/method-reference/ios/client-account#get-customer-account-information)   |
| React Native | [Synerise.Client.getAccount(onSuccess, onError)](/developers/mobile-sdk/method-reference/react-native/client-account#get-customer-account-information) |
| Flutter | [Synerise.client.getAccount()](/developers/mobile-sdk/method-reference/flutter/client-account#get-customer-account-information)       |

### Update a customer account's basic information
You can use this method to let customers update their own basic information, except for updating identifiers: `uuid`, `customId`, `email`.

| OS           | Method                                                                                                                                     |
|--------------|--------------------------------------------------------------------------------------------------------------------------------------------|
| Android      | [Client.updateAccountBasicInformation(accountInformation)](/developers/mobile-sdk/method-reference/android/client-account#update-customer-account-basic-information)                     |
| iOS          | [Client.updateAccountBasicInformation(context:success:failure:)](/developers/mobile-sdk/method-reference/ios/client-account#update-customer-account-basic-information) |
| React Native | [Synerise.Client.updateAccountBasicInformation(context, onSuccess, onError)](/developers/mobile-sdk/method-reference/react-native/client-account#update-customer-account-basic-information)       |
| Flutter | [Synerise.client.updateAccountBasicInformation(context)](/developers/mobile-sdk/method-reference/flutter/client-account#update-customer-account-basic-information)       |


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

This method can be used by recognized and anonymous profiles.

</div></div></div>


### Update a customer account's details
You can use this method to let customers update their own information, including updating identifiers: `uuid`, `customId`, `email`.

| OS           | Method                                                                                                                                     |
|--------------|--------------------------------------------------------------------------------------------------------------------------------------------|
| Android      | [Client.updateAccount(accountInformation)](/developers/mobile-sdk/method-reference/android/client-account#update-customer-account-information)                     |
| iOS          | [Client.updateAccount(context:success:failure:)](/developers/mobile-sdk/method-reference/ios/client-account#update-customer-account-information) |
| React Native | [Synerise.Client.updateAccount(context, onSuccess, onError)](/developers/mobile-sdk/method-reference/react-native/client-account#update-customer-account-information)       |
| Flutter | [Synerise.client.updateAccount(context)](/developers/mobile-sdk/method-reference/flutter/client-account#update-customer-account-information)       |


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

This method can be used only by recognized profiles.

</div></div></div>


### Change a customer's password

Separately from customer information updates, a customer may want to change their password. The default password policy is:
- Minimum 6 characters
- At least one uppercase letter
- At least one lowercase letter
- At least one digit
- At least one non-alphanumeric character

Passwords are PBKDF2-encrypted.


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

You can define the password policy in the Synerise platform (`app.synerise.com`). You can find more information about it [here](/docs/settings/tool/iam-for-apps/synerise#password-policy).

</div></div></div>


This method allows a customer to change their password, but they must provide their current password first.

| OS           | Method                                                                                                                                             |
|--------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
| Android      | [Client.changePassword(oldPassword, password)](/developers/mobile-sdk/method-reference/android/client-account#change-customers-account-password)                        |
| iOS          | [Client.changePassword(password:oldPassword:success:failure:)](/developers/mobile-sdk/method-reference/ios/client-account#change-customers-account-password) |
| React Native | [Synerise.Client.changePassword()](/developers/mobile-sdk/method-reference/react-native/client-account#change-customers-account-password) |
| Flutter | [Synerise.client.changePassword(oldPassword, password)](/developers/mobile-sdk/method-reference/flutter/client-account#change-customers-account-password)       |

### Request and confirm email change

These methods allow customers request and confirm the change of their email address.

| OS           | Method                                                                                                                                                                                                                                                                                                                                                                       |
|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Android      | - [Client.requestEmailChange(email, password, externalToken, authId)](/developers/mobile-sdk/method-reference/android/client-account#request-email-change-for-customer-account) <br> - [Client.confirmEmailChange(token, newsletterAgreement)](/developers/mobile-sdk/method-reference/android/client-account#confirm-email-change-for-customer-account)                                                       |
| iOS          | - [Client.requestEmailChange(email:password:externalToken:authID:success:failure:)](/developers/mobile-sdk/method-reference/ios/client-account#request-email-change-for-customer-account) <br> - [Client.confirmEmailChange(token:success:failure:)](/developers/mobile-sdk/method-reference/ios/client-account#confirm-email-change-for-customer-account)                                                        |
| React Native | - [Synerise.Client.requestEmailChange(email, password, onSuccess, onError)](/developers/mobile-sdk/method-reference/react-native/client-account#request-email-change-for-customer-account) <br> - [Synerise.Client.confirmEmailChange(token, newsletterAgreement, onSuccess, onError)](/developers/mobile-sdk/method-reference/react-native/client-account#confirm-email-change-for-customer-account) |
| Flutter | n/a |

### Request and confirm phone number change

These methods allow customers to request and confirm the change of their phone number.

| OS           | Method                                                                                                                                                                                                                                                                                                                                                           |
|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Android      | - [requestPhoneUpdate(phone:success:failure:)](/developers/mobile-sdk/method-reference/android/client-account#request-phone-update-on-customer-account) <br> - [Client.confirmPhoneUpdate(phone, confirmationCode, smsAgreement)](/developers/mobile-sdk/method-reference/android/client-account#confirm-phone-update-on-customer-account)                                             |
| iOS          | - [Client.requestPhoneUpdate(phone:success:failure:)](/developers/mobile-sdk/method-reference/ios/client-account#request-phone-update-on-customer-account) <br> - [Client.confirmPhoneUpdate(phone:confirmationCode:success:failure:)](/developers/mobile-sdk/method-reference/ios/client-account#confirm-phone-update-on-customer-account)                                                             |
| React Native | - [Synerise.Client.requestPhoneUpdate(phone, onSuccess, onError)](/developers/mobile-sdk/method-reference/react-native/client-account#request-phone-update-on-customer-account) <br> - [Synerise.Client.confirmPhoneUpdate(phone, confirmationCode, smsAgreement, onSuccess, onError)](/developers/mobile-sdk/method-reference/react-native/client-account#confirm-phone-update-on-customer-account) |
| Flutter | n/a |

### Remove a customer

To allow a customer to remove their account, implement the following method:

| OS           | Method                                                                                                                                                                                                                              |
|--------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Android      | [Client.deleteAccount(clientAuthFactor, clientIdentityProvider, authId)](/developers/mobile-sdk/method-reference/android/client-account#delete-customer-account-by-identity-provider)                                                                |
| iOS          | [Client.deleteAccount(clientAuthFactor:clientIdentityProvider:authID:success:failure:)](/developers/mobile-sdk/method-reference/ios/client-account#delete-customer-account-by-identity-provider)                                          |
| React Native | [Synerise.Client.deleteAccountByIdentityProvider(clientAuthFactor, clientIdentityProvider, authID, onSuccess, onError)](/developers/mobile-sdk/method-reference/react-native/client-account#delete-customer-account-by-identity-provider) |
| Flutter | [Synerise.client.deleteAccount(clientAuthFactor, identityProvider, authId)](/developers/mobile-sdk/method-reference/flutter/client-account#delete-customer-account)       |
