> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jelou.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Caché de usuario

> Consulta y actualiza la caché de un usuario

## Descripción

Gestiona el almacenamiento de datos asociados a un usuario dentro de tu bot.\
La **caché de usuario** guarda información única de cada persona que interactúa con tu experiencia conversacional y puede usarse dentro de tus workflows para:

* Asociar datos operativos, como un número de pedido, a un `usuario`.
* Permitir que el bot conozca propiedades del usuario antes de que comience la conversación.
* Almacenar información necesaria para consultar servicios internos o externos desde workflows específicos.

Además, la caché habilita atajos para acciones predeterminadas del bot, como:

* Definir reacciones o ejecutar un flujo antes de que el usuario inicie la conversación *(próximamente)*.

## Obtener la Caché de un Usuario

### Endpoint

```
GET https://api.jelou.ai/v1/users/{userId}/cache
```

### Parámetros de Ruta

<ParamField path="userId" type="string" required>
  Número de teléfono del usuario (sin el signo `+`).
</ParamField>

### Parámetros de Query

<ParamField query="botId" type="string" required>
  Identificador del bot asociado al usuario.
</ParamField>

### Ejemplo de Solicitud

```bash theme={null}
curl --request GET \
  --url 'https://api.jelou.ai/v1/users/{userId}/cache?botId=BOT_ID' \
  --header 'Authorization: Basic <Base64Encoded clientId:clientSecret>' \
  --header 'Content-Type: application/json'
```

### Ejemplo de Respuesta

La respuesta puede incluir cualquier dato previamente almacenado en la caché del usuario.

```json theme={null}
{
  "groupId": "grp-67890",
  "orderNumber": "ORD-12345"
}
```

## Establece la caché de un usuario

### Endpoint

```bash theme={null}
POST https://api.jelou.ai/v1/users/{userId}/cache
```

### Parámetros de Ruta

<ParamField path="userId" type="string" required>
  Número de teléfono del usuario (sin el signo `+`).
</ParamField>

### Cuerpo de la Solicitud

<ParamField body="params" type="object">
  Objeto con los datos que se fusionarán con la caché actual del usuario.
</ParamField>

<ParamField body="botId" type="string" required>
  Identificador del bot asociado al usuario.
</ParamField>

### Ejemplo de Solicitud

```bash theme={null}
curl --request POST \
  --url https://api.jelou.ai/v1/users/{userId}/cache \
  --header 'Authorization: Basic <Base64Encoded clientId:clientSecret>' \
  --header 'Content-Type: application/json' \
  --data '{
    "params": {
      "groupId": "grp-67890",
      "orderNumber": "ORD-12345"
    },
    "botId": "bot-12345"
  }'
```

### Ejemplo de Respuesta

```json theme={null}
{
  "message": [
    "Caché del usuario establecida correctamente."
  ],
  "status": "success"
}
```

## Errores Comunes

* `400` - No se pudo obtener o actualizar el estado del usuario.
* `401` - Credenciales inválidas o faltantes.
* `404` - Usuario o bot no encontrados.
* `200` - Error lógico al obtener la caché (cuando el status es "failed").

<Warning>
  La caché se fusiona con los datos existentes. Si reutilizas claves ya definidas, su valor será sobrescrito. Asegúrate de mantener una estructura consistente para evitar comportamientos inesperados en tus workflows.
</Warning>
