> You are reading the Docusign Developer Documentation. For clean Markdown of any page, append .md to the page URL.
>
> Documentation indexes by section:
> - APIs and SDKs: https://docusign.docs.buildwithfern.com/docs/llms.txt
> - Platform 101: https://docusign.docs.buildwithfern.com/platform/llms.txt
> - Extension Apps: https://docusign.docs.buildwithfern.com/extension-apps/llms.txt
> - Docusign CLI: https://docusign.docs.buildwithfern.com/docusign-cli/llms.txt
>
> Authentication (OAuth, JWT Grant, M2M): https://docusign.docs.buildwithfern.com/platform/auth
> Webhooks and Connect: https://docusign.docs.buildwithfern.com/platform/webhooks
>
> OpenAPI specifications: https://docusign.docs.buildwithfern.com/openapi.json
> MCP server: https://docusign.docs.buildwithfern.com/_mcp/server

# Extension app manifest

> Learn what an extension app manifest is, what it does, and how it is organized.

An extension app’s JSON app manifest file contains its publisher and metadata, its connection settings, and the actions and capabilities that it can execute.

See an [example extension app use case](/extension-apps/build-an-extension-app/example-use-case) with manifest or view the [app manifest reference](/extension-apps/extension-app-reference/app-manifest-reference) for a full list of supported elements.

> **Note**
>
> As an alternative to registering an extension app by constructing a manifest file, you can register it [using a guided, form-based process](/extension-apps/build-an-extension-app/register/use-form).

An extension app will connect to a single external platform. The extension app’s manifest file defines:

* **A** [connection](/extension-apps/extension-apps-101/concepts/connections). This connection holds the parameters required to access the external platform’s APIs, typically authorization data for the account that will make the API calls on that platform. To extend your workflow to multiple external platforms, you can create and apply multiple extension apps, one for each platform.
* **Any number of** [extensions](/extension-apps/extension-apps-101/concepts/extensions-and-extension-points). An extension is a group of related external [actions](/extension-apps/extension-apps-101/concepts/actions) and [capabilities](/extension-apps/extension-apps-101/concepts/capabilities) that are displayed and enabled together in the Developer Console. Extensions represent sets of workflow tasks, such as archiving data or validating sets of input data.

  The value of the extension’s `template` property determines which external platform actions your extension app must implement to support its functionality. For example, a data validation extension contract must implement at least one action to validate a dataset.

  **Note:** The action names in the extension's `actionReferences` object must match the names in the `actions` objects.
* **Any number of** [actions](/extension-apps/extension-apps-101/concepts/actions). Actions specify the external platform endpoints to call from your Docusign workflows. Each action calls into a specific external platform API endpoint (such as to archive a document) when an applicable [extension point](/extension-apps/extension-apps-101/concepts/extensions-and-extension-points#extension-points) trigger is reached (such as to write a file to cloud storage), and the response data will be integrated back into your Docusign workflow, when possible, as a confirmation or prompt for further action.

  The value of the action’s `template` property determines which specific request/response contracts and sets of extension points it will use. See [Actions](/extension-apps/extension-apps-101/concepts/actions) for details about these IDs and a full listing.
* **Any number of** [capabilities](/extension-apps/extension-apps-101/concepts/capabilities). Capabilities are optional actions that an extension app can implement to offer features beyond the base functionality defined by required actions. Like actions, they use specific request/response contracts and may be invoked at designated extension points to enhance the workflow with additional behaviors. See [Capabilities](/extension-apps/extension-apps-101/concepts/capabilities) for implementation details.
* A set of metadata that describes the extension app, publisher, and distribution options. This metadata is referenced when the extension app is published in the App Center.

  See [Publish an extension app](/extension-apps/build-an-extension-app/publish) for details on the requirements and best practices for setting this metadata in order to pass validation and review.

This diagram illustrates how the pieces of an extension app manifest file are organized.

![Image showing an example extension app manifest organization, including an action shared between two extensions](/_fern-files/_img/2ea062345e85756ccf77a99ed7aa16cf309d9897944bda75e0c7e91652768398.webp)

After you have created your extension app manifest, you can begin [testing](/extension-apps/build-an-extension-app/test) and publish your extension app to the [Docusign App Center](/extension-apps/extension-apps-101/app-center).

## Example app manifest

```text
{
  "name": "File Output Cloud Storage",
  "description": {
    "short": "This is a sample short description",
    "long": "This is a sample long description"
  },
  "termsOfServiceUrl": "https://www.fontara.com/tos",
  "privacyUrl": "https://www.fontara.com/privacy-security",
  "supportUrl": "https://www.fontara.com/support",
  "publisher": {
    "name": "Sample Publisher",
    "email": "sampleemail@fontara.com"
  },
  "connections": [
    {
      "name": "authentication",
      "description": "Secure connection to sample extension app",
      "type": "oauth2",
      "params": {
        "provider": "CUSTOM",
        "clientId": "[omitted]",
        "clientSecret": "[omitted]",
        "scopes": [],
        "grantType": "authorization_code",
        "customConfig": {
          "authorizationMethod": "header",
          "authorizationParams": {
            "prompt": "consent",
            "access_type": "offline"
          },
          "authorizationUrl": "https://fontara.com/api/oauth/authorize",
          "requiredScopes": [],
          "scopeSeparator": " ",
          "tokenUrl": "https://fontara.com/api/oauth/token",
          "refreshScopes": []
        }
      }
    }
  ],
  "icon": {
    "data": "[omitted]",
    "mediaType": "image/png"
  },
  "screenshots": [],
  "extensions": [
    {
      "name": "File Output Cloud Storage",
      "description": "Used to store files to cloud storage",
      "template": "FileIO.Version1.FileOutputCloudStorage",
      "actionReferences": [
        "write-file",
        "list-drives",
        "list-directory-contents"
      ],
      "capabilities": [
        "FileIO.Version1.ListDirectoryContents",
        "FileIO.Version1.ListDrives"
      ]
    }
  ],
  "actions": [
    {
      "name": "write-file",
      "description": "This is a description of my write file action",
      "template": "FileIO.Version1.WriteFile",
      "connectionsReference": "authentication",
      "params": {
        "uri": "https://fontara.com/api/writefile"
      }
    },
    {
      "name": "list-drives",
      "description": "This is a description of my list drives action",
      "template": "FileIO.Version1.ListDrives",
      "connectionsReference": "authentication",
      "params": {
        "uri": "https://fontara.com/api/listdrives"
      }
    },
    {
      "name": "list-directory-contents",
      "description": "This is a description of my list directory contents action",
      "template": "FileIO.Version1.ListDirectoryContents",
      "connectionsReference": "authentication",
      "params": {
        "uri": "https://fontara.com/api/listdirectorycontents"
      }
    }
  ],
  "signupUrl": "https://www.fontara.com/signup",
  "changelog": "",
  "publicationRegions": [
    "US"
  ],
  "distribution": "PUBLIC"
}
```

## Next steps

* See an [Example JSON manifest file](/extension-apps/build-an-extension-app/example-use-case).
* Learn more about [connections](/extension-apps/extension-apps-101/concepts/connections).
* Learn more about [actions](/extension-apps/extension-apps-101/concepts/actions).
* Learn more about [capabilities](/extension-apps/extension-apps-101/concepts/capabilities).
* Browse the complete list of [extensions and extension points](/extension-apps/extension-apps-101/concepts/extensions-and-extension-points).