# Application de workflow ADOBESIGNSEND

## Aperçu

L'application de workflow **ADOBESIGNSEND** vous permet d'envoyer un ou plusieurs documents à Adobe Sign pour signature électronique.

## Mode de fonctionnement

* L'application ADOBESIGNSEND crée une enveloppe unique et l'envoie à un ou plusieurs signataires.<br>
* Vous pouvez spécifier un ou plusieurs fichiers par action ADOBESIGNSEND. Pour ce faire, utilisez le paramètre `FILEx`, où `x` correspond au numéro de fichier (p.ex. : `FILE1`). Au moins un fichier est requis.<br>
* Vous pouvez spécifier un ou plusieurs signataires. Pour ce faire, utilisez la combinaison de `SIGNER_NAME_LIST` et `SIGNER_EMAIL_LIST`. Vous pouvez également utiliser `SIGNER_NAMEx` et `SIGNER_EMAILx`, où `x` correspond au numéro du signataire.<br>
* Vous pouvez spécifier un rôle par destinataire. Pour ce faire, selon la méthode que vous utilisez pour spécifier les signataires (avec ou sans `_LIST`), vous pouvez utiliser `SIGNER_ROLE_LIST` ou `SIGNER_ROLEx`, où `x` correspond au numéro du signataire.\
  Valeurs possibles : `SIGNER` (par défaut), `APPROVER`, `ACCEPTOR`, `CERTIFIED_RECIPIENT`, `FORM_FILLER` ou `DELEGATE_TO_SIGNER`, `DELEGATE_TO_APPROVER`, `DELEGATE_TO_ACCEPTOR`, `DELEGATE_TO_CERTIFIED_RECIPIENT`, `DELEGATE_TO_FORM_FILLER` ou`SHARE`.<br>
* Des logs d'application sont disponibles. Ceux-ci peuvent être spécifiés en définissant la valeur du paramètre `AdobeSignSendLogLevel` dans le fichier `web.config` sur `0` pour désactiver la journalisation, `1` pour les logs d'erreur, `2` pour des logs d'informations ou `3` pour les logs de débogage; la valeur par défaut est `0`.

## Configuration de l'API Adobe Sign

### Création d'une application API Adobe Sign

1. Dans l'interface d'administration Adobe Sign, ajoutez une nouvelle `API Application` puis cliquez sur **Configure OAuth for application**.<br>
2. Activez les portées ci-dessous et sélectionnez `account` sous **Modifier** pour les deux :
   * `agreement_write`
   * `agreement_read` <br>
3. Vous pouvez récupérer les `Client ID` et `Client Secret` directement depuis l'onglet de configuration.<br>
4. Insérez une adresse valide dans le champ **Redirect URI;** elle sera utile pour l'étape suivante.

<figure><img src="https://content.gitbook.com/content/pSR0FJub3VUec6MbQZNw/blobs/0g3VhviLsMHgnYa7UV3d/OAuth%20configuration.png" alt=""><figcaption></figcaption></figure>

### Obtenir le jeton de rafraîchissement

Adobe Sign ne supportant pas l'authentification `client_credentials`, il est nécessaire d'utiliser un jeton de rafraîchissement afin de récupérer un `access_token` valide. Le jeton de rafraîchissement à une durée de validité de 60 jours. Ces 60 jours sont renouvelés à chaque appel d'API, ce qui signifie que lorsque vous exécutez ADOBESIGNSEND ou ADOBESIGNCHECK, la validité est prolongé de 60 jours.

#### Consentement et obtention du code à usage unique

Afin de pouvoir utiliser votre nouvelle application Adobe Sign, vous devez l'autoriser à accéder aux `scopes` définis. Vous devez executer l'URL ci-dessous dans votre navigateur :

```
<HOST_SERVER>/public/oauth?redirect_uri=<REDIRECT_URI>&client_id=<CLIENT_ID>&response_type=code&scope=agreement_read:account+agreement_write:account
```

Remplacez les informations ci-dessous par vos propres valeurs :

* `<HOST_SERVER>` : Serveur hôte de votre compte Adobe Sign. En général l'URL est composée ainsi : `https://api.naX.adobesign.com`, où `X` est l'identifiant du serveur.<br>
* `<REDIRECT_URI>` : URL que vous avez définie dans votre application Adobe Sign.<br>
* `<CLIENT_ID>` : Identifiant client de votre application Adobe Sign

Après avoir accordé le consentement à votre application, vous serez redirigé vers votre `REDIRECT_URI` avec un paramètre `CODE` dans l'URL.&#x20;

```
<HOST_SERVER>/public/oauth?redirect_uri=<REDIRECT_URI>&client_id=<CLIENT_ID>&response_type=code&scope=agreement_read:account+agreement_send:account 
```

Le code ainsi retourné par Adobe Sign est à usage unique et sera utilisé pour obtenir le jeton de rafraîchissement.

#### Récupération du jeton de rafraîchissement

Afin d'obtenir le jeton de rafraîchissement, exécutez la requête ci-dessous en indiquant vos valeurs :

```
curl --location --request POST '<HOST_SERVER>/oauth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'code=<CONSENT_CODE>' \
--data-urlencode 'client_id=<CLIENT_ID>' \
--data-urlencode 'client_secret=<CLIENT_SECRET>' \
--data-urlencode 'redirect_uri=<REDIRECT_URI>' \
--data-urlencode 'grant_type=authorization_code'
```

* `HOST_SERVER` : Serveur hôte de votre compte Adobe Sign. En général l'URL est composée ainsi : `https://api.naX.adobesign.com` , où `X` est l'identifiant du serveur.<br>
* `<CONSENT_CODE>` : Code à usage unique obtenu sur l'étape précédente ([Consentement et obtention du code à usage unique](#consentement-et-obtention-du-code-a-usage-unique)).<br>
* `<CLIENT_ID>` : Identifiant client de votre application Adobe Sign.<br>
* `<CLIENT_SECRET>` : Clé secrète client de votre application Adobe Sign.<br>
* `<REDIRECT_URI>` : URL que vous avez définie dans votre application Adobe Sign.

Après exécution de la requête, vous obtiendrez une valeur pour le jeton de rafraîchissement contenu dans la donnée `refresh_token`.&#x20;

{% hint style="info" %}
Si votre jeton de rafraîchissement est expiré, vous devrez effectuer les manipulations précédentes de nouveau.
{% endhint %}

## Paramètres requis

Vous pouvez utiliser l'une des configurations suivantes : avec une liste de signataires ou avec des numéros de signataires.

### Avec une liste de signataires

| **Paramètre**       | **Type** | **Direction** | **Description**                                                                                            |
| ------------------- | -------- | ------------- | ---------------------------------------------------------------------------------------------------------- |
| `SIGNER_NAME_LIST`  | TEXT     | IN            | Noms des signataires, séparés par la valeur définie dans le paramètre `DATA_SEPARATOR`                     |
| `SIGNER_EMAIL_LIST` | TEXT     | IN            | Adresses email des signataires, séparées par la valeur définie dans le paramètre `DATA_SEPARATOR`          |
| `FILEx`             | FILE     | IN            | Fichier(s) à envoyer, où `x` correspond au numéro de fichier; vous pouvez ajouter un ou plusieurs fichiers |

### Avec des numéros de signataires

| **Paramètre**   | **Type** | **Direction** | **Description**                                                                                                                    |
| --------------- | -------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `SIGNER_NAMEx`  | TEXT     | IN            | Nom(s) du ou des signataires, où `x` correspond au numéro du signataire; vous pouvez ajouter un ou plusieurs signataires           |
| `SIGNER_EMAILx` | TEXT     | IN            | Adresse(s) email du ou des signataires, où `x` correspond au numéro du signataire; vous pouvez ajouter un ou plusieurs signataires |
| `FILEx`         | FILE     | IN            | Fichier(s) à envoyer, où `x` correspond au numéro de fichier; vous pouvez ajouter un ou plusieurs fichiers                         |

## Paramètres facultatifs

### Configuration Adobe Sign

| **Paramètres**            | **Type** | **Direction** | **Description**                                                                                                                                                                                                                                                                                                                       |
| ------------------------- | -------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ADOBESIGN_CLIENT_ID`     | TEXT     | IN            | <p>ID client Adobe Sign<br><br>Par défaut, cette valeur provient du paramètre <code>AdobeSignClientId</code> dans le fichier <code>web.config</code>.</p>                                                                                                                                                                             |
| `ADOBESIGN_CLIENT_SECRET` | TEXT     | IN            | <p>Clé secrète client Adobe Sign<br><br>Par défaut, cette valeur provient du paramètre <code>AdobeSignClientSecret</code> dans le fichier <code>web.config</code>.</p>                                                                                                                                                                |
| `ADOBESIGN_REFRESH_TOKEN` | TEXT     | IN            | <p>Jeton de rafraîchissement de l'authentification</p><p></p><p>Par défaut, cette valeur provient du paramètre <code>AdobeSignAuthServer</code> dans le fichier <code>web.config</code>.</p><p></p><p>Pour l'obtenir référez-vous à la section <a href="#configuration-de-lapi-adobe-sign">Configuration de l'API Adobe Sign.</a></p> |
| `ADOBESIGN_HOST_SERVER`   | TEXT     | IN            | <p>Serveur hôte Adobe Sign (p.ex. :  <code><https://api.naX.adobesign.com></code>, où <code>X</code> est l'identifiant du serveur)<br></p><p>Par défaut, cette valeur provient du paramètre <code>AdobeSignHostServer</code> dans le fichier <code>web.config</code>.</p>                                                             |

### Général

| **Paramètres**     | **Type** | **Direction** | **Description**                                                                                                                                                                                                         |
| ------------------ | -------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `DATA_SEPARATOR`   | TEXT     | IN            | <p>Séparateur utilisé pour séparer les contenus de <code>SIGNERS\_NAME\_LIST</code>, <code>SIGNERS\_EMAIL\_LIST</code> et <code>SIGNER\_ROLE\_LIST</code><br><strong>Par défaut :</strong> <code>,</code> (virgule)</p> |
| `SIGNER_ROLE_LIST` | TEXT     | IN            | Rôles des signataires, séparés par la valeur définie dans le paramètre `DATA_SEPARATOR`                                                                                                                                 |
| `SIGNER_ROLEX`     | TEXT     | IN            | Rôle(s) du ou des signataires, où `x` correspond au numéro du signataire; vous pouvez ajouter un ou plusieurs signataires                                                                                               |
| `AGREEMENT_NAME`   | TEXT     | IN            | <p>Nom de l'agrément, il sera affiché dans l'email envoyé à l'utilisateur<br><strong>Par défaut :</strong><code>WorkflowGen</code></p>                                                                                  |

### Paramètre de retour

| **Paramètre**            | **Type** | **Direction** | **Description**                                                                                                                                                                                       |
| ------------------------ | -------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ADOBESIGN_AGREEMENT_ID` | TEXT     | OUT           | Contient l'ID de l'agrément Adobe Sign; vous pouvez utiliser cet ID dans l'application de workflow [ADOBESIGNCHECK](https://docs.workflowgen.com/admin-fr/8.4/application-de-workflow-adobesigncheck) |

## Exemples

### Avec liste de signataires

| **Paramètre**            | **Type** | **Direction** | **Valeur**                                     |
| ------------------------ | -------- | ------------- | ---------------------------------------------- |
| `SIGNER_NAME_LIST`       | TEXT     | IN            | `Jean Dupont,Bernard Martin`                   |
| `SIGNER_EMAIL_LIST`      | TEXT     | IN            | `jean.dupont@email.fr,bernard.martin@email.fr` |
| `SIGNER_ROLE_LIST`       | TEXT     | IN            | `APPROVER,SIGNER`                              |
| `FILE1`                  | FILE     | IN            | `contrat.pdf`                                  |
| `ADOBESIGN_AGREEMENT_ID` | TEXT     | OUT           | `xxxxx-xxxxx-xxxxx-xxxxx`                      |

### Avec numéros de signataire

| **Paramètre**            | **Type** | **Direction** | **Valeur**                |
| ------------------------ | -------- | ------------- | ------------------------- |
| `SIGNER_NAME1`           | TEXT     | IN            | `Jean Dupont`             |
| `SIGNER_NAME2`           | TEXT     | IN            | `Bernard Martin`          |
| `SIGNER_EMAIL1`          | TEXT     | IN            | `jean.dupont@email.fr`    |
| `SIGNER_EMAIL2`          | TEXT     | IN            | `bernard.martin@email.fr` |
| `SIGNER_ROLE1`           | TEXT     | IN            | `APPROVER`                |
| `SIGNER_ROLE2`           | TEXT     | IN            | `SIGNER`                  |
| `FILE1`                  | FILE     | IN            | `contrat.pdf`             |
| `ADOBESIGN_AGREEMENT_ID` | TEXT     | OUT           | `xxxxx-xxxxx-xxxxx-xxxxx` |
