> ## 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.

# Cache do usuário

> Consulte e atualize o cache de um usuário

## Descrição

Gerencie o armazenamento de dados associados a um usuário dentro do seu bot.\
O **cache do usuário** armazena informações únicas sobre cada pessoa que interage com sua experiência conversacional e pode ser usado dentro das seus workflows para:

* Associar dados operacionais, como um número de pedido, a um `user`.
* Permitir que o bot conheça as propriedades do usuário antes do início da conversa.
* Armazenar informações necessárias para consultar serviços internos ou externos de workflows específicos.

Além disso, o cache habilita atalhos para ações padrão do bot, como:

* Definir reações ou executar um fluxo antes que o usuário inicie a conversa *(em breve)*.

## Obter Cache do Usuário

### Endpoint

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

### Parâmetros de Path

<ParamField path="userId" type="string" required>
  Número de telefone do usuário (sem o sinal `+`).
</ParamField>

### Parâmetros de Query

<ParamField query="botId" type="string" required>
  Identificador do bot associado ao usuário.
</ParamField>

### Exemplo de Requisição

```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'
```

### Exemplo de Resposta

A resposta pode incluir quaisquer dados previamente armazenados no cache do usuário.

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

## Definir cache do usuário

### Endpoint

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

### Parâmetros de Path

<ParamField path="userId" type="string" required>
  Número de telefone do usuário (sem o sinal `+`).
</ParamField>

### Corpo da Requisição

<ParamField body="params" type="object">
  Objeto com os dados que serão mesclados com o cache atual do usuário.
</ParamField>

<ParamField body="botId" type="string" required>
  Identificador do bot associado ao usuário.
</ParamField>

### Exemplo de Requisição

```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"
  }'
```

### Exemplo de Resposta

```json theme={null}
{
  "message": [
    "User cache set successfully."
  ],
  "status": "success"
}
```

## Erros Comuns

* `400` - Não foi possível obter ou atualizar o status do usuário.
* `401` - Credenciais inválidas ou ausentes.
* `404` - Usuário ou bot não encontrado.
* `200` - Erro lógico ao obter o cache (quando o status é "failed").

<Warning>
  O cache é mesclado com os dados existentes. Se você reutilizar chaves já definidas, seu valor será sobrescrito. Certifique-se de manter uma estrutura consistente para evitar comportamentos inesperados nos seus workflows.
</Warning>
