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

# Update Looker

## 📖 Descrição

Este endpoint atualiza um looker existente. Permite atualizar o nome e/ou a lista de cryptos. O looker deve pertencer ao email fornecido.

***

## 🛠️ Requisição

### Método

`PUT`

### URL

```plaintext theme={null}
/v1/lookers
```

### Parâmetros de Query

| Parâmetro | Tipo   | Obrigatório | Descrição                                        |
| --------- | ------ | ----------- | ------------------------------------------------ |
| `id`      | string | Sim         | ID do looker                                     |
| `email`   | string | Sim         | Email do usuário (para validação de propriedade) |

### Request Body

| Campo     | Tipo            | Obrigatório | Descrição                        |
| --------- | --------------- | ----------- | -------------------------------- |
| `name`    | string          | Não         | Novo nome do looker              |
| `cryptos` | array de string | Não         | Nova lista de cryptos (máximo 6) |

### Validações

* Pelo menos um campo (name ou cryptos) deve ser fornecido
* Se name for fornecido, não pode ser vazio
* Se cryptos for fornecido, não pode ser vazio e deve ter no máximo 6 itens
* O looker deve pertencer ao email fornecido

### Exemplo de Requisição (atualizar apenas nome)

```bash theme={null}
curl -X PUT "http://localhost:8080/v1/lookers?id=507f1f77bcf86cd799439011&email=user@example.com" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Updated Portfolio Name"
  }'
```

### Exemplo de Requisição (atualizar apenas cryptos)

```bash theme={null}
curl -X PUT "http://localhost:8080/v1/lookers?id=507f1f77bcf86cd799439011&email=user@example.com" \
  -H "Content-Type: application/json" \
  -d '{
    "cryptos": ["BTCUSDT", "ETHUSDT", "BNBUSDT", "SOLUSDT"]
  }'
```

### Exemplo de Requisição (atualizar ambos)

```bash theme={null}
curl -X PUT "http://localhost:8080/v1/lookers?id=507f1f77bcf86cd799439011&email=user@example.com" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Updated Portfolio Name",
    "cryptos": ["BTCUSDT", "ETHUSDT", "BNBUSDT", "SOLUSDT"]
  }'
```

### Exemplo de Resposta (200 OK)

```json theme={null}
{
  "id": "507f1f77bcf86cd799439011",
  "email": "user@example.com",
  "name": "Updated Portfolio Name",
  "cryptos": ["BTCUSDT", "ETHUSDT", "BNBUSDT", "SOLUSDT"],
  "timestamp": 1234567890000
}
```

***

## 📝 Códigos de Resposta

<Callout type="info">
  **200 OK**: Looker atualizado com sucesso
</Callout>

<Callout type="warning">
  **400 Bad Request**:

  * `Invalid request body`: Corpo da requisição inválido
  * `id parameter is required`: ID não fornecido
  * `email parameter is required`: Email não fornecido
  * `name cannot be empty`: Nome fornecido está vazio
  * `cryptos cannot be empty`: Lista de cryptos está vazia
  * `maximum 6 cryptos allowed`: Mais de 6 cryptos fornecidas
  * `no fields to update`: Nenhum campo fornecido para atualização
</Callout>

<Callout type="error">
  **403 Forbidden**: `looker does not belong to this email` - O looker não pertence ao email fornecido
</Callout>

<Callout type="error">
  **404 Not Found**: `looker not found` - Looker não encontrado
</Callout>

<Callout type="error">
  **500 Internal Server Error**: Erro interno do servidor
</Callout>

***

## 🔍 Notas

* Pelo menos um campo (name ou cryptos) deve ser fornecido para atualização
* Usuários só podem modificar seus próprios lookers (validação por email)
* A atualização substitui completamente os campos fornecidos
