Возвращает остатки продуктов по всем складам одним списком: строку на каждую пару «продукт, склад», где продукт числится.

```
v1/products/get_stocks.php
```

## Параметры

| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| ids | array | Нет | ID продуктов. Без них возвращаются все продукты |
| storage_id | int | Нет | Только этот склад |
| limit | int | Нет | Размер страницы, от 1 до 1000 |
| offset | int | Нет | Сколько записей пропустить |

Строки отсортированы по ID продукта и склада. Удаленные продукты и склады в список не входят. Поле total содержит общее число строк, подходящих под фильтры.

## Пример запроса

```
{
    "ids": [3120, 312]
}
```

## Пример ответа

```
{
    "success": true,
    "stocks": [
        {
            "product_id": "312",
            "storage_id": "3999",
            "stock": "86.000",
            "minimum": "40.000",
            "planned": "-40.000"
        },
        {
            "product_id": "3120",
            "storage_id": "3999",
            "stock": "12.000",
            "minimum": "3.000",
            "planned": null
        },
        {
            "product_id": "3120",
            "storage_id": "4005",
            "stock": "0.000",
            "minimum": "0.000",
            "planned": "10.000"
        }
    ],
    "total": 3
}
```

## Ошибки

| Ошибка | Причина |
|---|---|
| Ids is not an array | ids передан не массивом |
| Storage ID not found | Склад не найден или удален |
| Invalid limit value. Must be between 1 and 1000 | Неверный limit |
