# Curl — autenticação `/web_api` (ERP)

```bash
export WEB_API=https://api.nuvartis.com/web_api
```

## 1. Trocar o `code` por tokens (`POST /web_api/auth`)

O lojista autoriza seu app no painel (**Integrações → Apps parceiro**) e repassa o `code` a você. O `code` vale **10 minutos** e só pode ser usado uma vez.

```bash
curl -sS -X POST "$WEB_API/auth" \
  -H 'Content-Type: application/json' \
  -d '{
    "consumer_key": "YOUR_CONSUMER_KEY",
    "consumer_secret": "YOUR_CONSUMER_SECRET",
    "code": "AUTHORIZATION_CODE"
  }'
```

Resposta:

```json
{
  "access_token": "…",
  "refresh_token": "…",
  "date_expiration_access_token": "2026-01-01T15:00:00+00:00",
  "date_expiration_refresh_token": "2026-01-31T12:00:00+00:00",
  "api_address": "https://api.nuvartis.com/web_api"
}
```

Validade: access token **3 h** · refresh token **30 dias**.

## 2. Renovar

```bash
curl -sS -X POST "$WEB_API/auth" \
  -H 'Content-Type: application/json' \
  -d '{
    "consumer_key": "YOUR_CONSUMER_KEY",
    "consumer_secret": "YOUR_CONSUMER_SECRET",
    "refresh_token": "YOUR_REFRESH_TOKEN"
  }'
```

Cada renovação devolve **um par novo**. Salve o novo `refresh_token`: o anterior deixa de valer.

## 3. Ping

```bash
curl -sS "$WEB_API/ping?access_token=ACCESS_TOKEN"
```

## 4. Chamar um recurso

Token em query **ou** em header `Authorization: Bearer`:

```bash
curl -sS "$WEB_API/products?limit=10" \
  -H 'Authorization: Bearer ACCESS_TOKEN'
```

## Escritas

Envie `Idempotency-Key` único em cada `POST` / `PUT` / `DELETE`. Repetir a mesma chave com o mesmo corpo devolve a resposta original; com corpo diferente → **409** code `1008`.

```bash
curl -sS -X PUT "$WEB_API/products/123?access_token=ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1c2a9e-0b7d-4e7a-9a51-2f0c3d8e4b11' \
  -d '{"Product": {"price": "59.90", "stock": "12"}}'
```

## Limites e erros

- Headers `X-RateLimit-Limit` e `X-RateLimit-Remaining`; acima do limite → **429** code `1004`
- Tabela completa de códigos de erro e escopos na OpenAPI: `/docs/openapi-web-api.yaml`

Portal: https://nuvartis.com/developers
