# GET /products/{id}/availability — Проверка наличия

Живая проверка: можно ли купить товар прямо сейчас.

Для товаров с автоматической выдачей проверяет наличие у поставщика и допустимость цены. Для товаров с ручной выдачей возвращает наш признак «в продаже».

Вызывайте непосредственно перед покупкой. `POST /purchase/{productId}` выполняет ту же проверку, так что эндпоинт и покупка не противоречат друг другу.

Авторизация: заголовок `X-Entity-Key`.

**Параметры пути**

| Имя | Тип | Обязателен | Описание |
|---|---|---|---|
| `id` | integer | да | ID товара, целое положительное число. Пример: `12`. |

**Ответы**

- `200 OK` — Доступен

```json
{
  "status": "success",
  "productId": 12,
  "price": 1490,
  "currency": "RUB",
  "available": true
}
```

- `200 OK` — Недоступен. `reason`: `out_of_stock` — нет у поставщика; `not_configured` — товар не настроен для автовыдачи; `temporarily_unavailable` — временно нельзя продать по текущей цене.

```json
{
  "status": "success",
  "productId": 12,
  "price": 1490,
  "currency": "RUB",
  "available": false,
  "reason": "out_of_stock"
}
```

- `400 Bad Request` — Некорректный ID

```json
{
  "status": "error",
  "message": "Invalid product id"
}
```

- `404 Not Found` — Товар не найден

```json
{
  "status": "error",
  "message": "Product not found"
}
```

- `503 Service Unavailable` — Проверка временно недоступна

```json
{
  "status": "error",
  "message": "Availability check temporarily unavailable"
}
```

- `401 Unauthorized` — Нет ключа

```json
{
  "status": "error",
  "message": "Missing X-Entity-Key header"
}
```

- `403 Forbidden` — Неверный ключ

```json
{
  "status": "error",
  "message": "Invalid entity key"
}
```

- `429 Too Many Requests` — Превышен лимит

```json
{
  "status": "error",
  "message": "Too many requests, try again later"
}
```

Веб-версия: https://docs.merchant.dbdlobby.com/ru/reference/product-availability
