/api/v1/profile/transaction-event/save/ Guardar evento de transacción
Registra un evento de transacción del store para un perfil. Adapty Mail utiliza los eventos de transacción para colocar
perfiles en flows basados en compras — el event_type se asocia a flows como cancelación de renovación,
problema de facturación, expirado y reembolsado — y para la atribución de ingresos.
Envía estos eventos cuando gestiones compras, renovaciones y cancelaciones. Solo el flow never purchased funciona sin ellos.
Request body
El tipo de evento de transacción. Los flujos basados en compras se activan mediante estos valores.
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"
Identificador único de este evento, gestionado por tu sistema. Úsalo para mantener los eventos idempotentes.
Fecha y hora en que se registró el evento, en formato ISO 8601.
El mismo external_profile_id estable que envías al guardar el perfil. Vincula la
transacción al perfil correcto.
Puedes enviar una transacción antes de que exista el perfil. Adapty Mail almacena el evento
sin asociar y lo vincula al perfil en el siguiente guardado que contenga el mismo identificador.
El identificador del usuario en tu propio sistema. Adapty Mail lo usa para encontrar el perfil cuando
external_profile_id no coincide con ninguno. No se almacena en el evento.
La dirección de correo electrónico del comprador. Adapty Mail la usa para encontrar el perfil cuando ninguno de los identificadores coincide con alguno. No se almacena en el evento.
El store del que proviene la transacción, por ejemplo, app_store, play_store o stripe.
Identificador del producto comprado en el store.
Identificador de esta transacción en el store.
Identificador de la primera transacción en la cadena de suscripción. Para la primera compra, es igual a store_transaction_id.
Fecha y hora en que ocurrió esta transacción, en formato ISO 8601.
Fecha y hora en que se realizó la primera compra de la suscripción, en formato ISO 8601.
El importe de la transacción en USD, como cadena decimal (por ejemplo, "9.99").
Fecha y hora en que la suscripción vence o venció, en formato ISO 8601. Omitir para compras que no sean suscripciones.
Detalles de una oferta promocional o introductoria aplicada a la transacción.
One of: "introductory", "promotional", "offer_code", "win_back"
One of: "free_trial", "pay_as_you_go", "pay_up_front"
Identificador de la oferta en el store, si existe.
Responses
Evento de transacción guardado correctamente. El cuerpo de la respuesta es un objeto vacío.
Schema
Example
{} Validación fallida — falta un campo obligatorio o no es válido. field_name indica qué campo.
Schema
Respuesta de error estándar. Cada fallo devuelve un estado 4XX con esta estructura.
Descripción del error en formato legible para humanos.
Identificador de error legible por máquina.
Código de estado HTTP para este error.
El campo de la solicitud que causó el error, o null si el error no está relacionado con un campo específico.
Example
{
"errors": [
{
"message": "Field required",
"error_code": "base_error",
"status_code": 400,
"field_name": "event_type"
}
]
} Clave API secreta ausente o inválida.
Schema
Respuesta de error estándar. Cada fallo devuelve un estado 4XX con esta estructura.
Descripción del error en formato legible para humanos.
Identificador de error legible por máquina.
Código de estado HTTP para este error.
El campo de la solicitud que causó el error, o null si el error no está relacionado con un campo específico.
Example
{
"errors": [
{
"message": "Secret key doesn't exist",
"error_code": "secret_key_does_not_exist_error",
"status_code": 403,
"field_name": null
}
]
}