---
title: "Разрешить пакет ссылок на значения справочников"
method: POST
path: "/api/v1/reference/resolve"
tags: ["Core reference"]
---

# Разрешить пакет ссылок на значения справочников

`POST /api/v1/reference/resolve`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/reference/resolve`
- 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`)
  - HTTP bearer

Ссылка — пара «ключ справочника плюс код или идентификатор», а не голый идентификатор: голый ничего не доказывает, он может принадлежать другому справочнику или другому кабинету. Проверка одна и на сервере. Пакетом, потому что по одному запросу на значение такой проверки никто не делает. Потолок пакета — 200 ссылок. Неразрешённая ссылка не делает ответ ошибкой: приговор по каждой приходит отдельно, и причина названа словом. Значения спрашиваются точечно, поэтому длина справочника ответу не мешает: запись под номером тысяча разрешается так же, как первая. Код сверяется без учёта регистра, а в приговоре возвращается код справочника, а не написание запроса. Если в одной ссылке названы и код, и идентификатор, сильнее идентификатор: код записи кабинет вправе переписать.

## Headers

- `X-Tenant` string, required

## Request body

- CoreReferenceResolveRequest
  - `refs` CoreReferenceRef[], required
    - `directory_key` string, required: Ключ справочника из каталога (units) либо его полное имя (core.units, app.acme.crm.regions). Полное имя отличает справочник приложения от штатного с тем же последним сегментом
    - `code` string: Код значения. Указывается код или идентификатор; без обоих ссылка не разрешается
    - `id` string, uuid

## Response `200`

Приговор по каждой ссылке

- CoreReferenceResolveResult
  - `count` integer, required
  - `results` CoreReferenceVerdict[], required
    - `directory_key` string, required
    - `code` string
    - `id` string, uuid
    - `resolved` boolean, required
    - `label` string
    - `is_active` boolean
    - `reason` string: Причина отказа словом. «Справочник не найден или недоступен» и «Значение не найдено в этом справочнике» — разные ошибки

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права
- `500`: Внутренняя ошибка без раскрытия server-only деталей

---

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