The Application Manifest

The application manifest is a JSON file used for configuring an application. There are two ways to declare the manifest:

  • if you develop your application as an npm package (which we strongly encourage everybody to do) then you can add a deskpro key inside your package.json file and declare it there. This method has the advantage that you can skip some fields as they will be picked up from the package.json file and also you will have all the configuration in one place.

For example:

{
  "name": "@deskpro/my-first-app",
  "version": "0.1.0",
  "description": "My first app",
  "author": {
    "name": "Deskpro Apps",
    "email": "apps@deskpro.com",
    "url": "https://www.deskpro.com"
  },  
  "deskpro": {
    "version": "2.4.0",
    "title": "My first app",
    "isSingle": true,
    "targets": [
      {
        "target": "ticket-sidebar",
        "url": "html/index.html"
      }
    ]
  },
}
  • place a manifest.json file in the root folder of your project.

For example:

{
  "appVersion": "0.1.0",
  "author": {
    "name": "Deskpro Apps",
    "email": "apps@deskpro.com",
    "url": "https://www.deskpro.com"
  },
  "description": "My first app",
  "name": "My first app",
  "version": "2.4.0",
  "isSingle": true,
  "targets": [
    {
      "target": "ticket-sidebar",
      "url": "html/index.html"
    }
  ]
}

Manifest reference

Here we will present the most commonly used set of properties. For an in-depth coverage of all the properties, visit the Manifest Reference Page

Required properties:

Optional properties:

appVersion

This is a required property

Specifies the version number of the app. We suggest using a semver number here. If you use the package.json to define the manifest you don't need to add this property, the value of the root version key will be used instead.

name

This is a required property

This is the identifier of your application which must be unique. This is semantically equivalent to the name key from package.json and its value has the same syntactic constraints. You only need to specify this field when you use the manifest.json file, otherwise it will be the same as the package.json name key.

description

This is a required property

A one or two line brief about what your application does. This will be displayed in the administration interface and when the application is installed. You don't need to specify this if your are using the package.json definition, the value of the root description key will be used instead

author

This is a required property

This property if a JSON object with the following structure:

  {
    "name": "your name or company name",
    "email": "a contact email address",
    "url": "your homepage url"
  }

The name is an individual or company name. The email property is used for support requests from your application users and the url can point to a page about the author or the app.

scope

This is a required property

  "scope": "agent",

This property determines the audience of and the services required by your application, as applications can be written for Agents, Admins and Portal Users

The only scope we are fully supporting at the moment is agent and this means your application will only be available for agents

targets

This is a required property

This property is a list of targets and a target is a pair of a page and a location inside Deskpro where the application's iframe will be loaded.

Example:

  "targets": [
    {
      "target": "ticket-sidebar",
      "url": "html/index.html"
    }
  ],

You can have more than one target, but we are only fully supporting ticket-sidebar at the moment. With ticket-sidebar your application will be shown each time you open a ticket, on the right side in a vertical container

isSingle

This is an optional property

This property controls how many instances an application can have and by default is set to false, which means as many instances as needed. An application instance is created when you install the application and then you can give that instance a different configuration.

However, most of the time you will want your app to have a single instance so set this property to `true:

  "isSingle": true,

title

This is an optional property

When specified, this property is used to provide the display name of your application, which is shown everywhere with your application. We recommend to always specify this property, otherwise the application identifier will be used

Last updated