---
title: "Прочитать модули функций своей версии"
method: GET
path: "/api/v1/developer/apps/{key}/versions/{version}/function-artifacts"
tags: ["Developer account"]
---

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

`GET /api/v1/developer/apps/{key}/versions/{version}/function-artifacts`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/developer/apps/{key}/versions/{version}/function-artifacts`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Что объявил манифест, что лежит в хранилище и сходится ли одно с другим. У каждой объявленной функции — лежат ли её байты, сколько их и когда положили; отдельным списком — отпечатки, которые лежат, но манифестом не названы.

ЛИШНИЕ БАЙТЫ НАЗЫВАЮТСЯ ОТДЕЛЬНО, и это главное здесь. Модуль, пересобранный без правки отпечатка в манифесте, выглядит загруженным и не исполнится никогда: диспетчер ходит от манифеста, а не от хранилища. Без отдельного списка издатель узнал бы об этом от ворот публикации через день.

Сверку считает ТА ЖЕ функция, что стоит за воротом `functions`. Второй расчёт «для экрана» разошёлся бы с ним на первой правке правил, и портал показывал бы «всё загружено» там, где публикация отказывает.

ЧЕГО ЗДЕСЬ НЕТ: самих байтов и того, кто их положил. Байты издатель прислал сам, а «кто положил» — идентификатор сотрудника платформы, то есть наш внутренний.

## Path parameters

- `key` string, required
- `version` string, required

## Response `200`

Состав модулей версии

- DeveloperFunctionArtifactsResult
  - `functions` DeveloperFunctionArtifacts, required
    - `version` string, required
    - `status` string, required: Состояние версии. Им объясняется, почему выпущенная версия байтов больше не принимает
    - `editable` boolean, required: Версия ещё принимает байты. Отдельным полем: выводить это из состояния — ошибиться в пользу разрешения
    - `functions` DeveloperFunctionArtifactRow[], required
      - `key` string: Имя функции внутри приложения. У лишнего модуля его нет: манифест этих байтов не называет
      - `point` string: Ключ точки расширения, на которой стоит функция
      - `digest` string, required: Отпечаток модуля: он и есть имя, под которым байты опознают
      - `document_types` string[], required: Виды документа, на которых функция зовётся. ПУСТОЙ СПИСОК ОЗНАЧАЕТ «на всех», и это то же умолчание, что на экране согласия кабинета.
      - `uploaded` boolean, required: Байты с этим отпечатком лежат у этой версии
      - `size` integer: Размер модуля в байтах. Есть только у загруженного
      - `uploaded_at` string, date-time: Когда байты положили. Есть только у загруженного
    - `undeclared` DeveloperFunctionArtifactRow[], required: Отпечатки, которые лежат у версии, но манифестом не названы. Байты приняты и вреда не делают, но исполнены не будут никогда: диспетчер ходит от манифеста, а не от хранилища. Чаще всего это пересобранный модуль, под который забыли поправить отпечаток в манифесте.
      - `key` string: Имя функции внутри приложения. У лишнего модуля его нет: манифест этих байтов не называет
      - `point` string: Ключ точки расширения, на которой стоит функция
      - `digest` string, required: Отпечаток модуля: он и есть имя, под которым байты опознают
      - `document_types` string[], required: Виды документа, на которых функция зовётся. ПУСТОЙ СПИСОК ОЗНАЧАЕТ «на всех», и это то же умолчание, что на экране согласия кабинета.
      - `uploaded` boolean, required: Байты с этим отпечатком лежат у этой версии
      - `size` integer: Размер модуля в байтах. Есть только у загруженного
      - `uploaded_at` string, date-time: Когда байты положили. Есть только у загруженного

## Other responses

- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права
- `404`: Приложения или версии нет; тот же ответ получает чужой ключ
- `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)
