POST
Record what the shopper did with a decision
Ésta registra lo que hizo el comprador. Para actualizar el catálogo, la operación es Ingerir un evento de catálogo.

Una señal cuelga de una recomendación

Toda señal lleva el decision_id: el id de la recomendación que devolvió getRecommendations. En la API ese objeto es Decision, la lista de productos recomendados para ese momento. El id es único por respuesta: dos impresiones de la misma oferta son dos recomendaciones distintas. La señal no lleva los ids del motor: el servidor los guardó al servir la recomendación. Si viajaran desde el navegador, cualquiera con la clave pública podría apuntar una interacción a otra oferta. decision_id tiene que existir y ser de esta conexión. Si no, la respuesta es rejected con reason: unknown_decision, igual que para un id que nunca existió: así nadie puede sondear recomendaciones ajenas.

El lote se contesta señal por señal

Hasta 50 señales por pedido; más es signal_batch_limit_exceeded y no se guarda ninguna. La respuesta es 202 con un resultado por posición: Una señal rota no arrastra a las otras: el lote es un envío, no una unidad.

Reenviar el mismo lote es seguro

signal_id lo genera el SDK y es estable entre reintentos: la segunda llegada contesta duplicate sin trabajo nuevo.

Qué campos lleva cada tipo

item_id y variant_id son ids canónicos (itm_, var_), los mismos de la recomendación. El servidor los traduce a los ids de la tienda.

Cada señal es un cambio, no el carrito entero

El servidor lleva lo que el comprador tiene de cada recomendación: una línea por ítem y variante. add_to_cart suma, update_quantity fija, remove_from_cart saca. Cada señal manda sólo su cambio y el servidor arma el estado acumulado: una señal perdida no borra lo anterior, y un reenvío no suma dos veces.

El 503 pide reintentar

Si el registro no está disponible, la respuesta es 503 signals_unavailable y no se guardó ninguna señal del lote. El SDK guarda el lote y lo vuelve a mandar. Una recomendación, en cambio, se sirve aunque el registro falle.

Qué guarda el servidor

Para auditar el pedido: IP, User-Agent, Accept-Language, Origin, Referer y el client del SDK. Nada de eso vuelve en la respuesta. El contrato acota la forma de visitor: no puede ser un mail ni un teléfono. Un visitor o un client mal formado se descarta: la señal se guarda sin él, con un warning sin el valor.

Autorizaciones

Authorization
string
header
requerido

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Parámetros de ruta

connection_id
string
requerido

CrossUp connection identifier.

Minimum string length: 1

Cuerpo

application/json
signals
object[]
requerido
Required array length: 1 - 50 elements

Respuesta

The batch was answered signal by signal

results
object[]
requerido