# Склады

Склады портала и товарные остатки на них. Склад — это точка хранения или выдачи товаров каталога: физический склад, магазин или пункт выдачи. Склады можно создавать, изменять и удалять. Остатки товаров доступны только для чтения — по отдельному складу или сводно по всем складам.

Битрикс24 API: `catalog.store.*`, `catalog.storeproduct.*`
Скоуп: `catalog`

## Операции

- [Создать склад](./warehouses/create.md) — `POST /v1/warehouses`
- [Список складов](./warehouses/list.md) — `GET /v1/warehouses`
- [Получить склад](./warehouses/get.md) — `GET /v1/warehouses/:id`
- [Обновить склад](./warehouses/update.md) — `PATCH /v1/warehouses/:id`
- [Удалить склад](./warehouses/delete.md) — `DELETE /v1/warehouses/:id`
- [Остатки склада](./warehouses/stock.md) — `GET /v1/warehouses/:id/stock`
- [Сводные остатки по товарам](./warehouses/stock-totals.md) — `GET /v1/warehouses/stock/totals`

## Поля

### Изменяемые поля

Принимаются при [создании](./warehouses/create.md) и [обновлении](./warehouses/update.md). Передаются в корне JSON.

| Поле | Тип | Описание |
|------|-----|---------|
| `title` | string | Название склада. Обязательно при создании |
| `address` | string | Адрес склада. Обязательно при создании |
| `active` | string | Активность: `"Y"` или `"N"`. По умолчанию `"Y"` |
| `issuingCenter` | string | Признак пункта выдачи заказов: `"Y"` или `"N"`. По умолчанию `"N"` |
| `description` | string | Описание склада |
| `phone` | string | Контактный телефон |
| `email` | string | Контактная почта |
| `schedule` | string | Режим работы — произвольный текст |
| `sort` | number | Порядок сортировки. По умолчанию `100` |
| `code` | string | Символьный код |
| `xmlId` | string | Внешний идентификатор для синхронизации с внешними системами |
| `gpsN` | number | Географическая широта |
| `gpsS` | number | Географическая долгота |
| `userId` | number | Ответственный сотрудник — идентификатор из [`GET /v1/users`](/docs/entities/users) |

### Только для чтения

Приходят в ответе, но не принимаются при создании и обновлении.

| Поле | Тип | Описание |
|------|-----|---------|
| `id` | number | Идентификатор склада |
| `imageId` | object \| null | Изображение склада в формате `{ "id": number, "url": string }` либо `null` |
| `modifiedBy` | number \| null | ID пользователя, изменившего склад последним. `null` у системных складов, заполняется при создании через API |
| `dateCreate` | datetime \| null | Дата создания. `null` у части системных складов (например, маркетплейсов) |
| `dateModify` | datetime | Дата последнего изменения |

## Что нужно знать перед работой

1. **Тело запроса плоское.** При создании и обновлении передавайте поля прямо в корне JSON: `{"title": "...", "address": "..."}`. Обёртка `fields` не нужна.
2. **Для создания обязательны два поля.** Без `title` или `address` ответ — `400 MISSING_PARAMS`. Остальные поля необязательны: при отсутствии заполняются значениями по умолчанию (`active: "Y"`, `sort: 100`, `issuingCenter: "N"`).
3. **Несуществующий склад — ошибка `422`.** Получение, обновление или удаление склада по неизвестному `id` возвращает `422` с кодом `BITRIX_ERROR`, а не `404`. Проверить наличие склада можно через [список складов](./warehouses/list.md).
4. **Остатки доступны только для чтения.** Количество товаров на складе нельзя изменить через этот раздел: [остатки склада](./warehouses/stock.md) и [сводные остатки](./warehouses/stock-totals.md) — операции получения. Остатки меняются документами складского учёта на стороне портала.
5. **Сводные остатки агрегируются по товару.** [`GET /v1/warehouses/stock/totals`](./warehouses/stock-totals.md) складывает количество одного товара по всем складам и возвращает список складов (`storeIds`), где этот товар представлен.

## Типичный сценарий

1. Получить список складов: [`GET /v1/warehouses`](./warehouses/list.md) — взять `id` нужного склада.
2. Посмотреть остатки на складе: [`GET /v1/warehouses/:id/stock`](./warehouses/stock.md).
3. Свести остатки одного товара по всем складам: [`GET /v1/warehouses/stock/totals?productId=200`](./warehouses/stock-totals.md).

## Связанные сущности

| Сущность | Эндпоинт | Назначение |
|----------|----------|-----------|
| Товары каталога | [`GET /v1/catalog-products`](/docs/entities/catalog-products) | Товары, остатки которых учитываются на складах. Поле `productId` в [остатках](./warehouses/stock.md) и [сводных остатках](./warehouses/stock-totals.md) ссылается на товар каталога. |

## Лимиты

| Лимит | Значение |
|-------|----------|
| Максимум записей на запрос | 5000 (`limit ≤ 5000`) |
| Авто-пагинация | включается при `limit > 50` |
| `offset` на больших выборках | рекомендуется `limit ≤ 500` при `offset ≥ 2500` |
| Batch-запросы | до 50 операций в [`POST /v1/batch`](/docs/batch) |
| Rate limit | общий для API Вайбкод — см. [Лимиты и оптимизация](/docs/optimization) |

## Смотрите также

- [Товары каталога](/docs/entities/catalog-products)
- [Каталоги](/docs/entities/catalogs)
- [Синтаксис фильтрации](/docs/filtering)
- [Справочник сущностей](/docs/entities-index)
