> This page is for Developer Documentation.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.benchling.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.benchling.com/_mcp/server.

# App Manifest Reference

There are a number of important fields that can be included in an app manifest:

* A manifest's *info* field contains metadata about an app like name, version, and description
* A manifest's *settings* field contains technical details related to app installation and webhooks
* A manifest's *configuration* field contains configuration options to be configured by a tenant admin
* A manifest's *features* field contains interactive components through which Benchling users can interact with the app
* A manifest's *security* field contains keys used to encrypt app config values

In this reference, we'll cover all of the supported fields and values an app manifest can have for these components, as well as some other minor components of the manifest. For more detailed information on these component's functionality, check out the corresponding guides for [Managing and Sharing Benchling Apps](/docs/managing-and-sharing-benchling-apps) and [App Canvas](/docs/introduction-to-app-canvas).

## App info

The `info` field of an app manifest contains basic information about the app. Right now, `info` contains the `name`, `description`, and `version` fields:

| Field         | Description                                                      |
| ------------- | ---------------------------------------------------------------- |
| `name`        | The name of the app                                              |
| `description` | A brief description of the app and its functionality             |
| `version`     | The version number of the manifest; supports semantic versioning |

## App configuration

The `configuration` field of an app manifest contains the set of configuration options used by the app. The full list of all supported config types can be found in the [Benchling reference documentation](/docs/api/v2/benchling-api/apps/list-app-configuration-items); click the "Schema" view to see details on the config field types:

![The Benchling API reference showing the app configuration item schema, with the config item subtypes expanded](/_fern-files/_img/8aa7062aeb8f610ef0a24e300cf56c9d5ce15965fdb3789ae25cf547b13ac5c1.webp)

App configuration items are more complex than the key-value pairs of previous fields; app configuration items are grouped into the types below, with some (like `EntitySchemaAppConfigItem`) having multiple subtypes.

| Config Item Type                    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Example Value                                            |
| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| `DateAppConfigItem`                 | A date value; `YYYY-MM-DD` format                                                                                                                                                                                                                                                                                                                                                                                                                                                            | `2022-01-01`                                             |
| `DatetimeAppConfigItem`             | A datetime value; `YYYY-MM-DDTHH:SS` format                                                                                                                                                                                                                                                                                                                                                                                                                                                  | `2022-01-01T12:30`                                       |
| `JsonAppConfigItem`                 | A JSON object                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | `{"abc": "123"}`                                         |
| `EntitySchemaAppConfigItem`         | An entity schema in Benchling; can have subtype any of `aa_sequence`, `dna_sequence`, `custom_entity`, `mixture`, `molecule`, `dna_oligo`, `rna_oligo`, `rna_sequence`                                                                                                                                                                                                                                                                                                                       | `ts_e59sjL23`                                            |
| `FieldAppConfigItem`                | An entity schema field; sub-field of an entity schema config item                                                                                                                                                                                                                                                                                                                                                                                                                            | `tsf_e59a3b23`                                           |
| `BooleanAppConfigItem`              | A boolean value                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | `true`                                                   |
| `IntegerAppConfigItem`              | An integer value                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | `1`                                                      |
| `FloatAppConfigItem`                | A float value                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | `1.0`                                                    |
| `TextAppConfigItem`                 | A text value                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | user configured text                                     |
| `GenericApiIdentifiedAppConfigItem` | An entity instance in Benchling; can have subtype any of `container_schema`, `plate_schema`, `location_schema`, `box_schema`, `run_schema`, `result_schema`, `request_schema`, `entry_schema`, `workflow_task_schema`, `dropdown`, `dropdown_option`, `registry`, `folder`, `entry`, `worklist`, `project`, `workflow_task_status`, `dna_sequence`, `dna_oligo`, `aa_sequence`, `custom_entity`, `mixture`, `molecule`, `rna_oligo`, `rna_sequence`, `box`, `container`, `location`, `plate` | `bfi_HtrsAIid`                                           |
| `SecureTextAppConfigItem`           | An encrypted secure value; must include `publicKey` (see below)                                                                                                                                                                                                                                                                                                                                                                                                                              | `eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIn0...` |

## App features

The `features` field of an app manifest contains information related to the app's interactive components, currently limited to App Canvases that can appear in notebook entries, Connect runs, and on the app homepage.

| Field  | Description                                             | Example Value             |
| ------ | ------------------------------------------------------- | ------------------------- |
| `name` | The feature name                                        | Codon optimization        |
| `id`   | An externally defined unique identifier for the feature | `codon_optimization_1234` |
| `type` | What type of feature the app is exposing and where      | `CANVAS`                  |

Learn more about [App Canvas](/docs/introduction-to-app-canvas), including the [blocks a canvas can contain](/docs/app-canvas-block-reference).

## Subscriptions

The `subscriptions` field of an app manifest holds the app's subscriptions to webhooks. Most events need to be explicitly subscribed to via the app manifest, including app lifecycle events and canvas interaction events. Currently, the only exception is the `v2.app.installed` event, which all apps with a valid webhook url receive regardless of whether a subscription to it is specified in the app manifest.

| Field            | Description                                      | Example Value           |
| ---------------- | ------------------------------------------------ | ----------------------- |
| `deliveryMethod` | Currently, always `WEBHOOK`                      | `WEBHOOK`               |
| `messages`       | The list of messages that the app should receive |                         |
| `type`           | The type of messages that the app should receive | `v2.canvas.initialized` |

## App security

The `security` field of an app manifest contains information related to app security and encryption. Right now, this includes the `publicKey` field:

| Field       | Description                                                                                                 | Example Value                                                                                  |
| ----------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| `publicKey` | A public key corresponding to a public-private key pair; used to encrypt `secure_text` configuration values | `-----BEGIN PUBLIC KEY-----` ... `MIIBIjANBgkqhkiG9w0BAQEFAAOC` ... `-----END PUBLIC KEY-----` |