Reten Docs
Estados de Ciclo de Vida de Comercios

Lookup por Lote

Resuelve hasta 100 identificadores de comercio a sus estados de ciclo de vida en una sola llamada, con resultados parciales.

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

Resuelve un conjunto cerrado de identificadores (hasta 100) a sus estados de ciclo de vida en una sola operación. A diferencia del list, no es paginado: tú provees el conjunto exacto a consultar.

Auth: Requerida — permiso commerce-lifecycle-snapshot:view

Resultados parciales. La request nunca falla en bloque por identificadores que no existen o que aún no tienen estado calculado: los resueltos llegan en data y el resto se reporta explícitamente en unresolved.

Cuerpo de la Petición

CampoTipoRequeridoDescripción
commerce_idsUUID[]Uno de los dosLista de UUIDs de comercios (máx. 100).
external_idsstring[]Uno de los dosLista de códigos externos (máx. 100).
activity_generation_config_idUUIDNoSi se provee, solo devuelve estados de esa AGC. Si se omite, devuelve estados de todas las AGC de los comercios pedidos.

Debes enviar exactamente uno de commerce_ids o external_ids — no ambos, no ninguno. Enviar los dos (o ninguno) responde 400. No se pueden mezclar tipos de identificador en una misma request.

Ejemplo

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()

Respuesta 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": "En riesgo (mensual)",
      "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": "Saludable",
      "stage": "ENGAGEMENT",
      "last_computed_at": "2026-06-10T06:00:00.000Z",
      "state_changed_at": "2026-06-03T06:00:00.000Z"
    }
  ],
  "unresolved": ["SV-099"]
}
CampoTipoDescripción
datasnapshot[]Estados resueltos, en la forma del recurso snapshot (recurso crudo, sin relaciones anidadas).
unresolvedstring[]Identificadores del request que no se pudieron resolver. Incluye tanto comercios inexistentes como comercios sin estado calculado — la API no los distingue.

Errores

StatusDescripción
400Se enviaron ambos identificadores o ninguno; más de 100 elementos; o un UUID inválido en commerce_ids.
401Clave de API faltante o inválida.
403La credencial no tiene el permiso commerce-lifecycle-snapshot:view.