/api/v1/profile/transaction-event/save/ Сохранить событие транзакции
Записывает событие транзакции стора для профиля. Adapty Mail использует события транзакций для помещения
профилей в флоу на основе покупок — event_type соответствует таким флоу, как отмена продления,
проблема с оплатой, истечение срока действия и возврат средств — а также для атрибуции дохода.
Отправляйте эти события по мере обработки покупок, продлений и отмен. Только флоу never purchased работает без них.
Request body
Тип события транзакции. Флоу на основе покупок запускаются этими значениями.
One of: "subscription_started", "subscription_renewed", "subscription_renewal_cancelled", "subscription_renewal_reactivated", "billing_issue_detected", "entered_grace_period", "subscription_refunded", "subscription_expired", "non_subscription_purchase", "non_subscription_purchase_refunded"
Уникальный идентификатор события в вашей системе. Используйте его для обеспечения идемпотентности событий.
Время записи события в формате ISO 8601.
Тот же стабильный external_profile_id, который вы передаёте при сохранении профиля. Связывает
транзакцию с нужным профилем.
Вы можете отправить транзакцию до того, как профиль создан. Adapty Mail сохранит событие
без привязки и свяжет его с профилем при следующем сохранении с тем же идентификатором.
Идентификатор пользователя в вашей системе. Adapty Mail использует его для поиска профиля, если
external_profile_id не совпадает ни с одним из существующих. Не сохраняется в событии.
Адрес электронной почты покупателя. Adapty Mail использует его для поиска профиля, если ни один из идентификаторов не совпадает ни с одним из существующих. Не сохраняется в событии.
Стор, из которого поступила транзакция, например app_store, play_store или stripe.
Идентификатор приобретённого продукта в сторе.
Идентификатор данной транзакции в сторе.
Идентификатор первой транзакции в цепочке подписки. Для первой покупки совпадает с store_transaction_id.
Время совершения данной транзакции в формате ISO 8601.
Время первой покупки подписки в формате ISO 8601.
Сумма транзакции в USD в виде десятичной строки (например, "9.99").
Время истечения или истёкшего срока действия подписки в формате ISO 8601. Не указывается для разовых покупок.
Сведения о promotional offer или introductory offer, применённом к транзакции.
One of: "introductory", "promotional", "offer_code", "win_back"
One of: "free_trial", "pay_as_you_go", "pay_up_front"
Идентификатор предложения в сторе, если применимо.
Responses
Событие транзакции успешно сохранено. Тело ответа представляет собой пустой объект.
Schema
Example
{} Ошибка валидации — обязательное поле отсутствует или содержит недопустимое значение. field_name указывает, какое именно поле.
Schema
Стандартный ответ об ошибке. Каждый сбой возвращает статус 4XX с такой структурой.
Описание ошибки в человекочитаемом формате.
Машиночитаемый идентификатор ошибки.
HTTP-код статуса для данной ошибки.
Поле запроса, вызвавшее ошибку, или null, если ошибка не связана с конкретным полем.
Example
{
"errors": [
{
"message": "Field required",
"error_code": "base_error",
"status_code": 400,
"field_name": "event_type"
}
]
} Секретный API-ключ отсутствует или недействителен.
Schema
Стандартный ответ об ошибке. Каждый сбой возвращает статус 4XX с такой структурой.
Описание ошибки в человекочитаемом формате.
Машиночитаемый идентификатор ошибки.
HTTP-код статуса для данной ошибки.
Поле запроса, вызвавшее ошибку, или null, если ошибка не связана с конкретным полем.
Example
{
"errors": [
{
"message": "Secret key doesn't exist",
"error_code": "secret_key_does_not_exist_error",
"status_code": 403,
"field_name": null
}
]
}