Reten Docs
Estados de Ciclo de Vida de Comércios

Lookup por Lote

Resolva até 100 identificadores de comércio para seus estados de ciclo de vida em uma única chamada, com resultados parciais.

POST /api/commerce-lifecycle-snapshots/batch-lookup

Resolve um conjunto fechado de identificadores (até 100) para seus estados de ciclo de vida em uma única operação. Diferente do list, não é paginado: você fornece o conjunto exato a consultar.

Auth: Obrigatório — permissão commerce-lifecycle-snapshot:view

Resultados parciais. A request nunca falha por completo por causa de identificadores que não existem ou que ainda não têm estado calculado: os resolvidos chegam em data e o restante é reportado explicitamente em unresolved.

Corpo da Requisição

CampoTipoObrigatórioDescrição
commerce_idsUUID[]Um dos doisLista de UUIDs de comércios (máx. 100).
external_idsstring[]Um dos doisLista de códigos externos (máx. 100).
activity_generation_config_idUUIDNãoSe fornecido, retorna apenas estados dessa AGC. Se omitido, retorna estados de todas as AGCs dos comércios solicitados.

Você deve enviar exatamente um de commerce_ids ou external_ids — não ambos, não nenhum. Enviar os dois (ou nenhum) responde 400. Os tipos de identificador não podem ser misturados em uma mesma request.

Exemplo

curl -X POST "https://api.reten.ai/api/commerce-lifecycle-snapshots/batch-lookup" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "external_ids": ["SV-001", "SV-002", "SV-099"],
    "activity_generation_config_id": "a1b2c3d4-0000-4000-8000-000000000001"
  }'
const response = await fetch(
  "https://api.reten.ai/api/commerce-lifecycle-snapshots/batch-lookup",
  {
    method: "POST",
    headers: {
      "x-api-key": "YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      external_ids: ["SV-001", "SV-002", "SV-099"],
      activity_generation_config_id: "a1b2c3d4-0000-4000-8000-000000000001",
    }),
  },
);
const result = await response.json();
import requests

response = requests.post(
    "https://api.reten.ai/api/commerce-lifecycle-snapshots/batch-lookup",
    headers={"x-api-key": "YOUR_API_KEY"},
    json={
        "external_ids": ["SV-001", "SV-002", "SV-099"],
        "activity_generation_config_id": "a1b2c3d4-0000-4000-8000-000000000001",
    },
)
result = response.json()

Resposta 200 OK

{
  "data": [
    {
      "id": "5d000000-0000-4000-8000-000000000001",
      "commerce_id": "c0000000-0000-4000-8000-000000000001",
      "external_id": "SV-001",
      "activity_generation_config_id": "a1b2c3d4-0000-4000-8000-000000000001",
      "code": "AT_RISK_MONTHLY",
      "label": "At risk (monthly)",
      "stage": "ENGAGEMENT",
      "last_computed_at": "2026-06-10T06:00:00.000Z",
      "state_changed_at": "2026-06-08T06:00:00.000Z"
    },
    {
      "id": "5d000000-0000-4000-8000-000000000002",
      "commerce_id": "c0000000-0000-4000-8000-000000000002",
      "external_id": "SV-002",
      "activity_generation_config_id": "a1b2c3d4-0000-4000-8000-000000000001",
      "code": "HEALTHY",
      "label": "Healthy",
      "stage": "ENGAGEMENT",
      "last_computed_at": "2026-06-10T06:00:00.000Z",
      "state_changed_at": "2026-06-03T06:00:00.000Z"
    }
  ],
  "unresolved": ["SV-099"]
}
CampoTipoDescrição
datasnapshot[]Estados resolvidos, no formato do recurso snapshot (recurso bruto, sem relações aninhadas).
unresolvedstring[]Identificadores da request que não puderam ser resolvidos. Inclui tanto comércios inexistentes quanto comércios sem estado calculado — a API não os distingue.

Erros

StatusDescrição
400Foram enviados ambos os identificadores ou nenhum; mais de 100 elementos; ou um UUID inválido em commerce_ids.
401Chave de API ausente ou inválida.
403A credencial não tem a permissão commerce-lifecycle-snapshot:view.