Buscar o produto
Quando o vendedor pesquisa um produto por texto no ERP, o ERP repassa a pesquisa ao Sipru. O Siprinho mostra uma lista de candidatos para o vendedor escolher — o vendedor não digita nada duas vezes.
É uma chamada no endpoint product do canal, o endpoints.product que voltou na
abertura do canal, com o texto pesquisado em query:
curl -X POST $SIPRU_BASE_URL/api/erp/channel/$CHANNEL_ID/product \
-sS --fail-with-body --max-time 5 --retry 1 --retry-connrefused \
-H "Authorization: Bearer $SIPRU_SECRET" \
-H "X-Sipru-Partner-Id: $SIPRU_PARTNER_ID" \
-H "X-ERP-Name: $ERP_NAME" \
-H "X-ERP-Version: $ERP_VERSION" \
-H "X-Local-MAC-Address: $DEVICE_MAC_ADDRESS" \
-H "X-Local-Machine-Name: $LOCAL_MACHINE_NAME" \
-H "X-CNPJ: $CNPJ_LOJA" \
-H "X-Codigo-Externo-Rede: $CODIGO_DA_REDE" \
-H "X-Codigo-Externo-Loja: $CODIGO_DA_LOJA" \
-H "Content-Type: application/json" \
-d '{"query":"alicat"}'
Os headers são os mesmos de toda chamada à Sipru — ver Headers.
Com query em vez de productCode, a tela mostra uma lista de candidatos para o vendedor
escolher, e a cesta continua exatamente como estava.
Quem inclui de fato um produto na cesta é o próximo passo — Incluir produto na cesta.
O corpo
| Campo | Tipo | Descrição |
|---|---|---|
query | string | Texto livre, como o vendedor digitou no ERP. Até 120 caracteres. |
Mande só o query. O mesmo endpoint também aceita productCode e ean, e eles têm
precedência sobre o texto (productCode → ean → query): com um código no corpo, a chamada
deixa de ser uma busca e inclui o produto na cesta.
O Sipru resolve o texto no catálogo da loja do canal, com a política de preço do canal.
A resposta
200 confirma que a busca foi publicada na tela do vendedor. O ERP não precisa fazer nada com a
resposta.
Erros
| HTTP | code | Significado |
|---|---|---|
| 400 | — | Nenhum entre productCode, ean e query, ou termo inválido. |
| 401 | — | Credencial de parceiro ausente ou inválida. |
| 404 | CHANNEL_NOT_FOUND | Canal inexistente — ou pertencente a outro parceiro. |
| 404 | CHANNEL_PENDING_SIGNUP | O vendedor ainda não concluiu o cadastro na Sipru — ver Vendedor sem conta Sipru. |
| 404 | PRODUCT_NOT_FOUND | O texto não achou nada no catálogo da loja. A tela do vendedor é avisada mesmo assim. |
| 409 | CHANNEL_CLOSED | O canal já foi encerrado. |
| 410 | CHANNEL_EXPIRED | Passou do channelExpiresAt. Abra um canal novo. |
| 503 | — | Serviço de canal indisponível. Pode repetir. |
Faça a chamada de forma assíncrona e com timeout curto, como o --max-time 5 do exemplo. Um
PRODUCT_NOT_FOUND ou uma falha de rede não podem impedir o vendedor de seguir com a cotação no
ERP.
O contrato formal está em
pushProductToChannel na referência da API.