/extension-app-file-archive-reference-implementation

This reference implementation models the use case of taking an agreement PDF sent by the Docusign platform using a file archive extension app and storing it locally.

Primary LanguageTypeScriptMIT LicenseMIT

File Archive Extension App Reference Implementation

Introduction

This reference implementation models the use case of taking an agreement PDF sent by the Docusign platform using a file archive extension app and storing it locally.

Setup instructions

1. Clone the repository

Run the following command to clone the repository:

git clone https://github.com/docusign/extension-app-file-archive-reference-implementation.git

2. Generate secret values

  • If you already have values for JWT_SECRET_KEY, OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET, and AUTHORIZATION_CODE, you may skip this step.

The easiest way to generate a secret value is to run the following command:

node -e "console.log(require('crypto').randomBytes(128).toString('hex'));"

You will need values for JWT_SECRET_KEY, OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET, and AUTHORIZATION_CODE.

2. Set the environment variables for the cloned repository

  • If you're running this in a development environment, create a copy of example.development.env and save it as development.env.
  • If you're running this in a production environment, create a copy of example.production.env and save it as production.env.
  • Replace JWT_SECRET_KEY, OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET, and AUTHORIZATION_CODE in development.env or production.env with your generated values. These values will be used to configure the sample proxy's mock authentication server.
  • Set the clientId value in the manifest.json file to the same value as OAUTH_CLIENT_ID.
  • Set the clientSecret value in the manifest.json file to the same value as OAUTH_CLIENT_SECRET.

4. Install dependencies

Run the following command to install the necessary dependencies:

npm install

5. Running the proxy server

Development mode:

Start the proxy server in development mode by running the command:

npm run dev

This will create a local server on the port in the development.env file (port 3000 by default) that listens for local changes that trigger a rebuild.

Production mode:

Start the proxy server in production mode by running the commands:

npm run build
npm run start

This will start a production build on the port in the production.env file (port 3000 by default).

Setting up ngrok

2. Start ngrok

Run the following command to create a public accessible tunnel to your localhost:

ngrok http <PORT>

Replace <PORT> with the port number in the development.env or production.env file.

3. Save the forwarding address

Copy the Forwarding address from the response. You’ll need this address in your manifest.json file.

ngrok

Send your ngrok traffic logs to Datadog: https://ngrok.com/blog-post/datadog-log

Session Status                online
Account                       email@domain.com (Plan: Free)
Update                        update available (version 3.3.1, Ctrl-U to update)
Version                       3.3.0
Region                        United States (us)
Latency                       60ms
Web Interface                 http://127.0.0.1:4040
Forwarding                    https://bbd7-12-202-171-35.ngrok-free.app -> http:

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

In this example, the Forwarding address to copy is https://bbd7-12-202-171-35.ngrok-free.app.

Create an extension app

1. Prepare your app manifest

Replace <PROXY_BASE_URL> in your manifest.json file with the ngrok forwarding address in the following sections:

  • connections.params.customConfig.tokenUrl
  • connections.params.customConfig.authorizationUrl
  • actions.params.uri

2. Navigate to the Developer Console

Log in with your Docusign developer credentials and create a new app.

3. Upload your manifest and create the file archive app

To create your extension app, open the Developer Console and select +New App. In the app manifest editor that opens, upload your manifest file or paste into the editor itself; then select Validate. Once the editor validates your manifest, select Create App.

4. Test the extension app

This reference implementation uses mock data to simulate how a file can be automatically archived after the signing process is completed. Test your extension. Extension app tests include integration tests (connection tests and extension tests), functional tests, and App Center preview.