1. Аспро.Cloud
  2. Центр поддержки Аспро.Cloud
  3. Разработка приложений Аспро.Cloud
  4. JSON-манифест приложения

JSON-манифест приложения


Манифест описывает, как приложение встраивается в Аспро.Cloud: в какие места интерфейса оно добавляет свой контент, к каким данным запрашивает доступ, какие настройки требует и на какие события подписывается.

Манифест — это JSON-объект строго с шестью верхнеуровневыми ключами:

Ключ

Назначение

schemaVersion

Внутренняя версия формата манифеста. Управляется системой (сейчас — "alpha").

scopes

Доступы — области API, к которым приложению нужен доступ.

placements

Места встройки — точки интеграции в интерфейсе, куда приложение добавляет контент.

settings

Настройки приложения (общие для аккаунта): API-ключи, адреса эндпоинтов и т.п.

user_settings

Пользовательские настройки — персональные параметры каждого пользователя.

webhooks

Вебхуки — исходящие уведомления, которые платформа шлёт приложению при событиях в данных.

Разбор полей манифеста

scopes — доступы

Список областей API, к которым приложению нужен доступ. Каждый элемент — объект с двумя полями:

  • code — код области доступа;
  • permission — уровень: read (только чтение) или full (чтение и запись). По умолчанию read.

Права запрашиваются у администратора при установке приложения; API-запросы приложения проверяются на соответствие выданным доступам.

Допустимые code: agile, calendar, contactcenter, telephony, crm, crm.accounts, crm.deals, customlists, fin, fin.invoices, finacts, knowledgebase, orgchart, products, st, task, timetracker, users, user.me, workspace.


placements — места встройки

Каждый элемент описывает одну точку интеграции. Общая форма:

{
"code": "<тип места встройки>",
"props": { "target": { "module": "...", "model": "..." } },
"content": { "...": "что показать (заголовок, иконка, iframe)" },
"action": { "code": "<что делать по клику>", "content": { } }
}
  • code — тип точки интеграции (обязателен);
  • content — что отображается:id, title(строка), icon.src, iframe.src и др;
  • props.target — для мест, привязанных к сущности (вкладка/виджет в карточке): модуль и модель сущности;
  • action— что произойдет по клику.


Допустимыеcode (типы мест встройки):

Группа

Значения

Домашняя страница приложения

app.homepage

Верхняя панель

header.fast-action, header.widget

Главное меню

navigation.mainmenu.item, navigation.mainmenu.inject-item--top, navigation.mainmenu.inject-item--bottom

Список сущностей

entity.list.tab, entity.list.header.button, entity.list.header.icon-button, entity.list.header.split-button, entity.list.header.dropdown-item, entity.list.header.more-menu-item

Карточка сущности

entity.detail.tab, entity.detail.header.button, entity.detail.header.icon-button, entity.detail.header.split-button, entity.detail.header.dropdown-item, entity.detail.header.more-menu-item, entity.detail.widget

Рабочий стол

dashboard.widget, dashboard.widget.category, dashboard.widget.subcategory

Отчеты

report

Контакт-центр / телефония

contactcenter.service.wizard, telephony.service.telephony

Допустимые action.code: do.nothing, follow.link (открыть ссылку), show.modal--page / show.modal--iframe (модальное окно), show.sidepanel--page / show.sidepanel--iframe (боковая панель), show.tab--page / show.tab--iframe (вкладка). Набор доступных действий зависит от типа места встройки.


settings и user_settings — настройки

Массив групп настроек. Каждая группа:title(название) и options (список полей). Каждое поле-option:

  • id — идентификатор параметра (до 32 символов);
  • code — тип поля;
  • title — подпись;
  • attrs — атрибуты поля (required, placeholder, checked, value и др., зависят от типа).


settings — общие настройки приложения (например, API-ключ на весь аккаунт). user_settings — персональные настройки каждого пользователя.

Допустимые code полей: input.text, input.password, input.number, input.checkbox, input.radio, select, textarea, input.time, input.date, input.datetime, input.file, entity.select, custom.


webhooks — исходящие вебхуки

Приложение может подписаться на события в данных аккаунта. Каждый вебхук:

{
"event": {
"target": { "module": "<модуль>", "model": "<сущность>" },
"action": "create"
},
"url": "https://app.example.com/webhooks/...",
"user_id": ""
}
  • event.target — модуль и модель сущности, изменения которой отслеживаются;
  • event.action — тип события: create, update, delete, any (любое). Для счетов (fin.invoices) дополнительно доступен paid;
  • url — адрес обработчика на стороне приложения, куда платформа отправит данные;
  • user_id — необязательный пользователь, от имени которого авторизуется вебхук (можно оставить пустым).

Предыдущая статья Как создаются приложения
Следующая статья Пример манифеста приложения