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

# Категории товаров

> Сущность категорий товаров

## Как получить список категорий

Получить список категорий можно с помощью `GET` запроса к API `/categories`.

<Card title="Get categories list" icon="link" href="/api-reference/categories/get-categories">
  Перейти к роуту и изучить основные поля
</Card>

<Note>
  Данный роут **требует** JWT авторизацию для получения данных.
</Note>

## Как получить одну категорию

Получить одину категорию можно с помощью `GET` запроса к API `/categories/{id}` по `ID` категории.

<Card title="Get single category" icon="link" href="/api-reference/categories/get-single-category">
  Перейти к роуту и изучить основные поля
</Card>

<Note>
  Данный роут **требует** JWT авторизацию для получения данных.
</Note>

### Структура ответа

Метод возвращает объект или массив объектов, в зависимости роута:

```json theme={null}
{
  "id": "int",
  "name": "string"
}
```

## Как получить список товаров категории

Получить список товаров конкретной категории можно с помощью `GET` запроса к API `/categories/{id}/products` по `ID` категории.

<Card title="Get category products" icon="link" href="/api-reference/categories/get-category-products">
  Перейти к роуту и изучить основные поля
</Card>

<Note>
  Данный роут **требует** JWT авторизацию для получения данных.
</Note>

В ответ на запрос, вернется список объектов продукта:

```json theme={null}
[
  {
    "id": "string",
    "name": "string",
    "price": "numeric",
    "main_picture_url": "string",
    "is_active": "bool",
    "quantity": "int",
    "store_id": "int",
    "detail_desc": "string",
    "question_id": "int"
  }
]
```

где:

`price` - цена товара в **копейках**

`quantity` - кол-во единиц товара (пока что будет всегда **1**)

`question_id` - необезательное поле, вернет `ID` вопроса, привязанного к товару, если есть

`store_id` - `ID` магазина, к которому привязан продукт

## Как получить список категорий с товарами

<Note>
  Данный метод используется для отображания на главном экране и на экране категорий.
</Note>

Получить список категорий с товарами можно с помощью `GET` запроса к API `/categories/previews`.

<Card title="Get categories previews" icon="link" href="/api-reference/categories/get-categories-previews">
  Перейти к роуту и изучить основные поля
</Card>

<Note>
  Данный роут **требует** JWT авторизацию для получения данных.
</Note>

### Основные фильтры

<Note>
  Фильтры указываются в `GET` параметрах. Все фильтры являются **не обязательными**.
</Note>

| Параметр          | Описание                                                                  | Значение по умолчанию |
| ----------------- | ------------------------------------------------------------------------- | --------------------- |
| `category_limit`  | Лимит по кол-ву категорий. Не может быть больше **10**                    | **4**                 |
| `category_offset` | Смещение для категорий                                                    | **0**                 |
| `product_limit`   | Лимит по кол-ву продуктов в каждой категории. Не может быть больше **10** | **4**                 |
| `product_offset`  | Смещение для продуктов                                                    | **0**                 |

Пример использования:

```
GET /categories/previews?category_limit=5&category_offset=0&product_limit=3&product_offset=1
```

### Структура ответа

Метод возвращает массив объектов категорий с продуктами:

```json theme={null}
[
  {
    "id": 0, // ID категории
    "name": "string", // Название категории
    "products": [ // Массив продуктов
      {
        "id": "string",
        "name": "string",
        "price": 0,
        "main_picture_url": "string",
        "is_active": true,
        "quantity": 0,
        "store_id": 0,
        "detail_desc": "string",
        "question_id": 0,
        "format_price": "string"
      }
    ]
  }
]
```
