Returns the products stocked at a storage location (including those with zero stock), sorted by name. Archived products are included too.

```
v1/products/get_list.php
```

## Parameters

| Field | Type | Required | Description |
|---|---|---|---|
| storage_id | int | Yes | Storage location ID |
| limit | int | No | Page size, from 1 to 1000 |
| offset | int | No | How many records to skip |

Without limit the whole list is returned. See [Common Rules](https://developers.controlata.com/hc/api-docs/articles/api-rules) for pagination.

## Response

An array products with the product's fields and its stock at storage location storage_id, without alternative SKUs and components:

| Field | Type | Description |
|---|---|---|
| id | int | Product ID |
| name | string | Name |
| sku | string | SKU |
| unit | string | Unit of measure, a code from [Units of Measure](https://developers.controlata.com/hc/api-docs/articles/api-units-get-list) |
| price | float | Sale price per unit |
| cost | float | Cost per unit |
| batch_size | float | Batch size: the product quantity the components are given for |
| notes | string | Notes |
| status | int | Always 1: deleted products are not returned |
| archived | int | 1 if the product is archived |
| stock | float | Stock at storage location storage_id |
| minimum | float | Minimum stock at storage location storage_id |
| planned | float | Stock change from operations in the Planned status. null if there are none |
| categories | array | The product's categories: objects with id and name |
| suppliers | array | The product's suppliers: objects with id and name |

The total field holds the total number of products at the storage location.

## Example request

```
{
    "storage_id": 3999,
    "limit": 100,
    "offset": 0
}
```

## Example response

```
{
    "success": true,
    "products": [
        {
            "id": 3120,
            "name": "Dining table",
            "sku": "P100",
            "price": 45000,
            "cost": 13604.25,
            "batch_size": 10,
            "notes": "",
            "status": 1,
            "archived": 0,
            "stock": 12,
            "minimum": 3,
            "planned": null,
            "unit": "pcs",
            "categories": [
                {
                    "id": 21,
                    "name": "Furniture"
                }
            ],
            "suppliers": [
                {
                    "id": 52,
                    "name": "Furniture Factory"
                }
            ]
        }
    ],
    "total": 1
}
```

## Errors

| Error | Reason |
|---|---|
| No storage_id in input | storage_id is missing |
| Storage ID not found | Storage location not found or deleted |
| Invalid limit value. Must be between 1 and 1000 | Invalid limit |
| Offset requires limit | offset passed without limit |
