> For the complete documentation index, see [llms.txt](https://deskpro.gitbook.io/apps-developer-guide-old/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://deskpro.gitbook.io/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md).

# Manifest Reference

The application manifest can be specified as a file named `manifest.json` in the root of your project or as an object property named `deskpro` in your `package.json`.

We recommend to use the `package.json` variant since you'll have to manage one less file and it is less verbose. When you use this variant, at build time a file `manifest.json` is generated from the contents of `package.json` and is placed in the root of your bundle. You can inspect this file in the `dist` folder.

When using `package.json` variant some properties defined by npm in the package.json standard are used to build the final `manifest.json` file.

The `package.json` properties:

* [name](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#namepackagejson)
* [version](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#versionpackagejson)
* [description](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#descriptionpackagejson)
* [author](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#authorpackagejson)
* [deskpro.version](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskproversion)
* [deskpro.title](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprotitle)
* [deskpro.storage](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprostorage)
* [deskpro.settings](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprosetttings)
* [deskpro.isSingle](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskproissingle)
* [deskpro.customFields](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprocustomfields)
* [deskpro.targets](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprotargets)
* [deskpro.deskproApiTags](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprodeskproapitags)
* [deskpro.domainWhitelist](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprodomainwhitelist)

## Name (package.json)

* Type: `string`

This is the same property defined by npm. When you use the `package.json` variant, it will be used as your application's package name.

## version (package.json)

* Type: `string`
* Format: `semver string`

This is the same property defined by npm. When you use the `package.json` variant, it will be used as your application's version.

## description (package.json)

* Type: `string`

This is the same property defined by npm. When you use the `package.json` variant, this property supplies a human friendly description that will be displayed everywhere with your app, therefore it is important to make clear and concise.

## author (package.json)

* Type: `object`

This is the same property defined by npm. When you use the `package.json` variant, this property supplies the contact information for your application.

The following properties are required for the `author` object:

* name
* email
* url

Example:

```javascript
{
  "author": {
    "name": "Deskpro Ltd.",
    "email": "apps@deskpro.com",
    "url": "https://www.deskpro.com"
  }
}
```

## deskpro.version

* Type: `string`
* Format: `semver string`

This is the Deskpro Apps SDK API version you are targeting. The current version is `2.4.0`

## deskpro.title

* Type: `string`

This is a human readable string supplying the name of your application which will be displayed everywhere with your app.

## deskpro.storage

* Type: `array`

This is a list of storage key objects. To see the shape of a storage key object, go to the [Storage key Reference Page](https://github.com/deskpro/apps-developer-guide/tree/60e4438595f571d451828dbcadd397b1022a1aae/sdk/sdk/storing-data.md#storage-key-reference)

Generally a storage key items looks like this:

```javascript
{
  "name": "mykey",
  "isBackendOnly": true,
  "permRead": "EVERYBODY",
  "permWrite": "OWNER"
}
```

## deskpro.settings

* Type: `array`

This is a list of setting objects. To see the shape of a setting object, go to the [Storage key Reference Page](https://github.com/deskpro/apps-developer-guide/tree/60e4438595f571d451828dbcadd397b1022a1aae/sdk/sdk/storing-ticket-data.md#how-does-it-work)

## deskpro.isSingle

* Type: `boolean`
* Default value: `false`

A flag which determines how many instances can be created by your app. When true, your application will have a single instance, otherwise there is no limit.

## deskpro.customFields

* Type: `array`

This is a list of customField objects. To see the shape of a storage key object, go to the chapter [Declaring settings](https://github.com/deskpro/apps-developer-guide/tree/60e4438595f571d451828dbcadd397b1022a1aae/sdk/sdk/installer.md#declaring-settings) from [The Application Installer article](https://github.com/deskpro/apps-developer-guide/tree/60e4438595f571d451828dbcadd397b1022a1aae/sdk/sdk/installer.md)

## deskpro.targets

* Type: `array`

This is a list of Application Targets, which determine where your application will be displayed and its runtime context.

At the moment the only supported target is `ticket-sidebar`, so your property should like this:

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

Note the `url` property which is a relative path to an html page from your application bundle. In this example, the page is in the folder `html` which is located in the root of the bundle. This location corresponds to the `src/main/html` folder in your application project.

## deskpro.deskproApiTags

* Type: `array`

Currently unused

This property is a list of strings representing a whitelist for the Deskpro REST API endpoints accessible by your application. Each item in the whitelist is an API tag that allows access to their respective endpoint.

## deskpro.domainWhitelist

* Type: `array`

This property is a list of regex patterns strings representing a whitelist of remote service URLs accessed by your application through the Deskpro Apps SDK Proxy.

To read more about the format of the patterns, read the [Whitelisting remote service](https://github.com/deskpro/apps-developer-guide/tree/60e4438595f571d451828dbcadd397b1022a1aae/sdk/sdk/accessing-remote-services.md#whitelisting-remote-service)

The `manifest.json` properties:

* [appVersion](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#appVersion)
* [version](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#version)
* [name](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#name)
* [title](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#title)
* [description](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#description)
* [isSingle](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#isSingle)
* [storage](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#storage)
* [targets](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#targets)
* [settings](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#settings)
* [customFields](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#customFields)
* [externalApis](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#externalApis)

## appVersion

* Type: `string`
* Format: `semver string`

This property only appears in the `manifest.json` variant and represents the current version of your application.

See [version](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#version)

## version

* Type: `string`
* Format: `semver string`

See [deskpro.version](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskproversion)

## name

* Type: `string`

See [name](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#name)

## title

* Type: `string`

See [deskpro.title](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprotitle)

## description

* Type: `string`

See [description](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#description)

## isSingle

* Type: `boolean`

See [deskpro.isSingle](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskproissingle)

## storage

* Type: `array`

See [deskpro.storage](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprostorage)

## targets

See [deskpro.targets](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprotargets)

* Type: `array`

## settings

* Type: `array`

See [deskpro.settings](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprosettings)

## customFields

* Type: `array`

See [deskpro.customFields](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprocustomfields)

## deskproApiTags

* Type: `array`

See [deskpro.deskproApiTags](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprodeskproapitags)

## domainWhitelist

* Type: `array`

See [deskpro.domainWhitelis](/apps-developer-guide-old/sdk/the-application-manifest/manifest-reference.md#deskprodomainwhitelist)
