---
title: "Отсканировать марку в инвентаризацию"
method: POST
path: "/api/v1/marking/inventories/{id}/codes/scan"
tags: ["Marking stock documents"]
---

# Отсканировать марку в инвентаризацию

`POST /api/v1/marking/inventories/{id}/codes/scan`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/marking/inventories/{id}/codes/scan`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`
  - OAuth 2 (authorization code, authorization URL `https://erp.akeda.ru/oauth2/authorize`, token URL `https://erp.akeda.ru/oauth2/token`, scopes: `akeda:delegate`)

Разбирает скан, находит товар по GTIN кода и кладёт код в пересчёт: найденным, если он числится на складе, иначе лишним с причиной. Код, которого нет в реестре, заводится в реестре юрлица инвентаризации; код другого юрлица только упоминается — его строка в реестре не меняется. Повтор того же кода — 409. После формирования актов марки не меняются (`marking.inventory.closed`). Ответ — код и позиция товара после скана. Агенту достаточно кода без криптохвоста (01 + GTIN + 21 + серийный номер).

## Path parameters

- `id` string, uuid, required

## Headers

- `X-Tenant` string, required

## Request body

- MarkingInventoryScanInput
  - `raw` string, required: Скан или код без криптохвоста

## Response `200`

Код и позиция товара

- MarkingInventoryScanResult
  - `code` MarkingInventoryCode, required
    - `id` string, uuid, required
    - `identity` string, required: Код без криптохвоста
    - `gtin` string, required
    - `gismt_status` string, required: Последний известный статус в ГИС МТ
    - `state` 'found' | 'missing' | 'extra', required: Найден, не найден (недостача) или лишний
    - `reason` 'other_warehouse' | 'other_company' | 'not_on_stock': Почему код лишний
    - `warehouse_id` string, uuid
    - `scanned_at` string, date-time: Когда отсканирован; у недостающего нет
  - `created` boolean, required: Код заведён в реестре юрлица этим сканом
  - `line` MarkingInventoryCodeLine, required
    - `line` string, uuid, required
    - `product_id` string, uuid, required
    - `product_name` string, required
    - `product_sku` string, required
    - `group` string, required: Товарная группа профиля маркировки
    - `mode` '' | 'unit' | 'gtin', required: unit — коды поштучно; gtin — юрлицо передаёт товар по GTIN; пусто — товар не маркируется на дату
    - `book_qty` string, required: Количество по учёту из снимка инвентаризации
    - `actual_qty` string, nullable, required: Факт пересчёта; пусто — ещё не введён
    - `expected` integer, required: Кодов числится на складе
    - `scanned` integer, required: Отсканировано всего (найдено и лишних)
    - `found` integer, required
    - `missing` integer, required: Числится, но не найдено
    - `extra` integer, required: Найдено, но здесь не числится
    - `status` 'ok' | 'missing' | 'extra' | 'not_required', required: Лишние важнее нехватки
    - `codes` MarkingInventoryCode[], required
      - `id` string, uuid, required
      - `identity` string, required: Код без криптохвоста
      - `gtin` string, required
      - `gismt_status` string, required: Последний известный статус в ГИС МТ
      - `state` 'found' | 'missing' | 'extra', required: Найден, не найден (недостача) или лишний
      - `reason` 'other_warehouse' | 'other_company' | 'not_on_stock': Почему код лишний
      - `warehouse_id` string, uuid
      - `scanned_at` string, date-time: Когда отсканирован; у недостающего нет

## Other responses

- `400`: Скан не разобран или у инвентаризации нет юрлица
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права
- `404`: Инвентаризация не найдена или недоступна
- `409`: Акты уже сформированы или код уже отсканирован
- `422`: Не марка, товара нет в инвентаризации, GTIN без товара, код другого товара или товар не маркируется поштучно
- `503`: Сверка с регистром недоступна

---

[API](https://skmtc.dev/akeda/apis/akeda-erp-client-api.md) · [All operations](https://skmtc.dev/akeda/apis/akeda-erp-client-api/llms.txt) · [OpenAPI document](https://skmtc.dev/akeda/apis/akeda-erp-client-api/revisions/3c60ded179f2?raw)
