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

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



Манифест (файл manifest.json) описывает свойства приложения и точки его интеграции с Аспро.Cloud . Ниже приведён упрощённый пример структуры манифеста со словами-ключами и пояснениями:

{
  "appId": "com.example.weather",             // Уникальный идентификатор приложения
  "name": "Прогноз Погоды",                  // Название приложения
  "version": "1.0.0",                        // Версия приложения (Major.Minor.Patch)
  "description": "Показывает погоду в выбранном городе.",
  "author": {
    "name": "Example Inc.", 
    "contact": "support@example.com"
  },
  "iconUrl": "https://example.com/icon.png",  // URL иконки приложения
  "categories": ["Утилиты"],                 // Категории/разделы маркетплейса
  "tags": ["weather", "погода"],
  "permissions": [                           // Запрашиваемые права доступа
    "crm.contacts.read", 
    "tasks.create"
  ],
  "integrationPoints": {                     // Точки встраивания приложения:
    "menu": {                                // -> пункт в главном меню
      "section": "CRM", 
      "title": "Прогноз погоды",
      "icon": "https://example.com/menu_icon.png"
    },
    "dashboard": {                           // -> виджет на рабочем столе (дашборде)
      "widgetTitle": "Погода сегодня",
      "size": "small"
    },
    "cards": [                               // -> виджет в карточках объектов (напр., клиент)
      {
        "entity": "client", 
        "widgetTitle": "Погода в регионе клиента"
      }
    ]
  },
  "entrypointURL": "https://app.example.com/",   // URL основного веб-интерфейса приложения
  "webhookURL": "https://app.example.com/webhook", // (опционально) URL для обратных вызовов
  "apiEndpoints": {                             // (опц.) дополнительные методы API приложения
    "getForecast": {
      "url": "https://app.example.com/api/forecast",
      "method": "GET"
    }
  },
  "configuration": {                            // (опц.) схема настроек приложения
    "configSchema": {
      "type": "object",
      "properties": {
        "apiKey": { "type": "string", "title": "API ключ погодного сервиса" }
      },
      "required": ["apiKey"]
    },
    "defaultConfig": {
      "apiKey": ""
    }
  },
  "platformVersion": "1.0"                     // Совместимая версия платформы Аспро.Cloud
}

Ключевые поля манифеста:

  • Идентификация приложения: поля appId (уникальный идентификатор или namespace), name (название) и version (версия в формате SemVer). Идентификатор используется для ссылок и внутренних ключей, версия позволяет отслеживать обновления .
  • Описание и метаданные: description – краткое описание назначения приложения; categories и tags – категории и теги для классификации в каталоге маркетплейса; author – информация об авторе/разработчике (например, компания и контактные данные) .
  • Иконка и графика: поле iconUrl содержит ссылку на иконку приложения (PNG/SVG), которая будет отображаться в списке приложений и, например, в меню при интеграции . Дополнительно могут быть указаны ссылки на скриншоты или превью интерфейса приложения для каталога.
  • Права доступа (permissions): список разрешений, необходимых приложению . Здесь указывается, к каким модулям или данным Аспро.Cloud требуется доступ (например, чтение контактов CRM, создание задач или сделок и т.д.). Эти права будут запрошены у администратора при установке приложения; установка возможна только если админ подтвердит все запрошенные permissions . В процессе работы приложения система строго соблюдает указанные права: API-запросы от приложения проверяются, и любые действия вне разрешённых будут отклонены .
  • Интеграционные точки (integrationPoints): описывает, где именно приложение встраивается в интерфейс портала . В манифесте это объект с вложенными секциями для каждой точки интеграции. Например:

    • header – интеграция в шапку (верхнюю панель) портала, позволяет добавить иконку/кнопку приложения на верхнюю панель .
    • menu – интеграция в главное меню; приложение может добавить новый пункт навигации (раздел или подменю) .
    • tabs – интеграция в виде вкладки на страницах существующих объектов (например, вкладка на странице сделки CRM) .
    • cards – интеграция виджетом в карточки объектов (например, дополнительный блок информации в профиле клиента) .
    • Кроме того, поддерживаются точки reports (новый тип отчёта), dashboard (виджет на главном рабочем столе пользователя), mobile (элементы в мобильном приложении) и contactCenter(интеграция в модуль контакт-центра). Полный список точек и их описание приведены в следующем разделе.

  • URLs внешнего сервиса: для приложений, имеющих внешний веб-сервис, манифест может содержать:

    • entrypointURL – основная ссылка на интерфейс приложения (загружается во встроенном iframe или отдельной вкладке) .
    • webhookURL – опциональный URL, на который платформа будет отправлять события для приложения (например, уведомление об установке/удалении, события CRM и т.д.).
    • apiEndpoints – опциональное описание дополнительных API-методов, которые предоставляет само приложение для взаимодействия. Платформа может вызывать их при необходимости (например, для получения данных от приложения) .

  • Настройки конфигурации: секция configuration появляется, если для работы приложения требуются пользовательские настройки при установке. Она может включать:

    • configSchema – JSON Schema, описывающая ожидаемые параметры конфигурации . На основе этой схемы при установке будет автоматически сгенерирована форма ввода настроек (например, чтобы администратор ввёл API-ключ внешнего сервиса).
    • defaultConfig – значения по умолчанию для этих параметров .

      Эти поля позволяют запросить у администратора необходимые данные при установке приложения и безопасно их сохранить.

Манифест должен быть относительно небольшим по размеру и легко парситься платформой . При загрузке приложения Аспро.Cloud проверяет манифест на соответствие схеме и отклоняет установку, если что-то не заполнено или ошибочно. Поэтому разработчикам важно внимательно заполнить все обязательные поля и соблюдать формат.


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