---
title: "Получить реестр кодов маркировки"
method: GET
path: "/api/v1/marking/codes"
tags: ["Marking codes"]
---

# Получить реестр кодов маркировки

`GET /api/v1/marking/codes`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/marking/codes`
- 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, вид, источник, зеркало статуса ГИС МТ и сколько этикеток напечатано. В ответе только код идентификации без криптохвоста (`identity`): полный код хранится шифротекстом и выходит наружу лишь символом DataMatrix на странице печати. Реестр рассчитан на сотни тысяч кодов и читается по индексам: `q` — начало кода (или код целиком, в том числе скан без криптохвоста и без GS — он сверяется с кодами идентификации реестра), GTIN (8–14 цифр), кусок серийного номера от трёх знаков или название / артикул товара; `id` — один код по номеру; `status` — статусы ЧЗ через запятую. Следующая порция — по курсору `after` из `next_after` прошлой (пусто — порция последняя); `skip_total=true` не считает общее число (его знает первая порция). `locations=true` — склад, где код числится по регистру `marking_codes`. `limit` больше 200 заменяется умолчанием 50.

## Query parameters

- `company` string, uuid
- `product` string, uuid
- `group` string
- `import` string, uuid
- `order` string, uuid
- `q` string
- `status` string
- `after` string
- `skip_total` boolean
- `locations` boolean
- `limit` integer
- `offset` integer
- `id` string, uuid

## Headers

- `X-Tenant` string, required

## Response `200`

Порция кодов

- MarkingCodePage
  - `items` MarkingCode[], nullable, required
    - `id` string, uuid, required
    - `company_id` string, uuid, required
    - `company_name` string, required
    - `product_id` string, uuid
    - `product_name` string, required
    - `group` string, required: Ключ товарной группы
    - `kind` string, required: Вид кода (единица или агрегат)
    - `gtin` string, required
    - `serial` string, required
    - `identity` string, required: Код идентификации без криптохвоста
    - `has_crypto_tail` boolean, required: Сохранён ли полный код для печати
    - `source` 'order' | 'import' | 'upd' | 'scan' | 'aggregation' | 'gismt', required
    - `import_id` string, uuid
    - `order_id` string, uuid
    - `produced_at` string, date-time
    - `expires_at` string, date-time
    - `weight_g` integer: Вес в граммах из кода
    - `gismt_status` string, required: Последний известный статус ГИС МТ
    - `gismt_owner_inn` string, required
    - `gismt_checked_at` string, date-time
    - `printed` integer, required: Этикеток напечатано без тестовых
    - `duplicates` integer, required: Из них дубликатов
    - `created_at` string, date-time, required
    - `warehouse_id` string, uuid
  - `total` integer: Всего по отбору; нет при skip_total
  - `next_after` string, required: Курсор следующей порции; пусто — порция последняя

## Other responses

- `400`: Идентификатор отбора не распознан
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права

---

[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)
