POST
Record what the shopper did with a decision
Esta registra o que o comprador fez. Para atualizar o catálogo, a operação é Ingerir um evento de catálogo.

Um sinal pertence a uma recomendação

Todo sinal leva o decision_id: o id da recomendação que getRecommendations devolveu. Na API esse objeto é Decision, a lista de produtos recomendados para aquele momento. O id é único por resposta: duas impressões da mesma oferta são duas recomendações diferentes. O sinal não leva os ids do motor: o servidor os guardou ao servir a recomendação. Se viajassem do navegador, qualquer um com a chave pública poderia apontar uma interação para outra oferta. decision_id tem que existir e ser desta conexão. Se não, a resposta é rejected com reason: unknown_decision, igual a um id que nunca existiu: assim ninguém consegue sondar recomendações alheias.

O lote é respondido sinal por sinal

Até 50 sinais por requisição; mais é signal_batch_limit_exceeded e nenhum é salvo. A resposta é 202 com um resultado por posição: Um sinal quebrado não arrasta os outros: o lote é um envio, não uma unidade.

Reenviar o mesmo lote é seguro

signal_id é gerado pelo SDK e é estável entre tentativas: a segunda chegada responde duplicate sem trabalho novo.

Que campos cada tipo leva

cart_id vai opcional em todos: o id do carrinho na sua loja. É o que liga a recomendação ao pedido quando ele entra pela sua plataforma. Não existe um sinal de compra: Sinais e atribuição. item_id e variant_id são ids canônicos (itm_, var_), os mesmos da recomendação. O servidor os traduz para os ids da loja.

Cada sinal é uma mudança, não o carrinho inteiro

O servidor mantém o que o comprador tem de cada recomendação: uma linha por item e variante. add_to_cart soma, update_quantity fixa, remove_from_cart remove. Cada sinal manda só a sua mudança e o servidor monta o estado acumulado: um sinal perdido não apaga o anterior, e um reenvio não soma duas vezes.

O 503 pede nova tentativa

Se o registro não está disponível, a resposta é 503 signals_unavailable e nenhum sinal do lote foi salvo. O SDK guarda o lote e o manda de novo. Uma recomendação, por outro lado, é servida mesmo se o registro falhar.

O que o servidor guarda

Para auditar a requisição: IP, User-Agent, Accept-Language, Origin, Referer e o client do SDK. Nada disso volta na resposta. O contrato limita a forma de visitor: não pode ser um e-mail nem um telefone. Um visitor ou um client malformado é descartado: o sinal é salvo sem ele, com um warning sem o valor.

Autorizações

Authorization
string
header
obrigatório

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

Parâmetros de caminho

connection_id
string
obrigatório

CrossUp connection identifier.

Minimum string length: 1

Corpo

application/json
signals
object[]
obrigatório
Required array length: 1 - 50 elements

Resposta

The batch was answered signal by signal

results
object[]
obrigatório