Set user consent and refund settings with API
Adapty Refund Saver helps you handle refund requests from Apple’s App Store automatically and more efficiently.
By default, Refund Saver always asks Apple to decline a user’s refund request. You can change this default behavior for all users in the Adapty Dashboard, or adjust it for a specific user using the Dashboard, the Adapty SDK, or the server-side API, as explained below.
To use Refund Saver, you need to get the user’s consent to share their data with Apple. You can record user’s consent through the Adapty SDK or the server-side API, as shown below.
Method and endpoint
POST https://api.adapty.io/api/v2/server-side-api/purchase/profile/refund-saver/settings/
Example request
Placeholders:
<YOUR_CUSTOMER_USER_ID>: The unique ID of the customer in your system.<YOUR_SECRET_API_KEY>: Your secret API key for authorization.
Parameters
| Parameter | Type | Required | Nullable | Description |
|---|---|---|---|---|
| custom_preference | String | No | Yes | Set the refund preference individually for the user. Possible values are: – grant: approve each refund request – no_preference: do not provide any recommendations |
| consent | Boolean | No | Yes | Record if the user gave their consent to share their data. – True means that if you receive an in-app refund request, you may provide Apple with information about the user |
Successful response: 200: OK
| Parameter | Type | Description |
|---|---|---|
| profile_id | String | Customer profile ID. |
| consent | Boolean | Defines whether the user consented to share their data. |
| custom preference | String | The refund preference. |
Successful response example
{
"profile_id": "e5aab402-b1bd-4039-b632-57a91ebc0779",
"settings": {
"consent": true,
"custom_preference": "no_preference"
}
}
Errors
400: Bad request
profile_does_not_exist
La solicitud falló porque el perfil indicado en el encabezado de la solicitud no se encontró. Comprueba que no haya erratas en el profile_id o customer_user_id que introdujiste en el encabezado de la solicitud, y asegúrate de que corresponde a la app correcta.
Body
| Parámetro | Tipo | Descripción |
|---|---|---|
| errors | Object |
|
| error_code | String | Nombre corto del error. Valor posible: profile_does_not_exist. |
| status_code | Integer | Estado HTTP. Siempre 400. |
Ejemplo de respuesta
El perfil no se encuentra
{
"errors": [
{
"source": "non_field_errors",
"errors": [
"Profile not found"
]
}
],
"error_code": "profile_does_not_exist",
"status_code": 400
}
401: Unauthorized
La solicitud falló por falta de autorización o porque la autorización es incorrecta. Consulta la página de Autorización, prestando especial atención al encabezado Authorization.
La solicitud también falló porque el perfil especificado no se encontró.
Body
| Parámetro | Tipo | Descripción |
|---|---|---|
| errors | Object |
|
| error_code | String | Nombre corto del error. Siempre not_authenticated. |
| status_code | Integer | Estado HTTP. Siempre 401. |
Ejemplo de respuesta
{
"errors": [
{
"source": "non_field_errors",
"errors": [
"Authentication credentials were not provided."
]
}
],
"error_code": "not_authenticated",
"status_code": 401
}
See also: