--- title: "Appliquer toutes les signatures en un seul appel" slug: "applying-all-signatures-in-one-call" updated: 2025-03-02T10:06:42Z published: 2025-03-02T10:06:42Z canonical: "docs.onespan.com/applying-all-signatures-in-one-call" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.onespan.com/llms.txt > Use this file to discover all available pages before exploring further. # Appliquer toutes les signatures en un seul appel [SDK Java](/v1/docs/fr/applying-all-signatures-in-one-call#sdk-java) [.NET SDK](/v1/docs/fr/applying-all-signatures-in-one-call#net-sdk) [API REST](/v1/docs/fr/applying-all-signatures-in-one-call#api-rest) [APEX SDK](/v1/docs/fr/applying-all-signatures-in-one-call#apex-sdk) ## SDK Java Pour télécharger l'exemple complet de code, consultez notre site [Partage de code](https://community.onespan.com/documentation/onespan-sign/codeshare/sign-documents-example-java-sdk/). Cette rubrique décrit comment signer toutes les signatures d'une transaction à l'aide d'un appel unique, au lieu de parcourir successivement chaque document et de signer chaque signature de manière séquentielle. Dans cet exemple : - Il y a deux destinataires dans la transaction : l'expéditeur et un client. - Il y a deux documents dans la transaction. - Les ancres de texte sont utilisées pour positionner les signatures sur les documents. Pour obtenir plus d'informations, consultez [Ancres de texte](/v1/docs/fr/using-text-anchors). - L'exemple de PDF utilisé dans ce guide peut être téléchargé [ici](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/cleaning_contract.pdf?sv=2026-02-06&spr=https&st=2026-11-13T10%3A47%3A10Z&se=2026-11-13T11%3A47%3A10Z&sr=c&sp=r&sig=2wE1uq5jCH2Z%2F7pGZQMrY%2Bksd4J6NqUnn%2B7wS92C8h0%3D). Le code suivant signera toutes les signatures de la transaction. ```java // Package   PackageBuilder packageToBuild = // PackageBuilder.newPackageNamed("Sign Documents Test");   //Sender // SignerBuilder signer1 = // SignerBuilder.newSignerWithEmail("sender@example.com") // .withFirstName("Haris")   .withLastName("Haidary")   .withCustomId("Sender"); // //Client   SignerBuilder signer2 = // SignerBuilder.newSignerWithEmail("client@example.com") .withFirstName("John") // .withLastName("Smith")   .withCustomId("Signer");   //Sender signature on // first document   SignatureBuilder signature1 = // SignatureBuilder.signatureFor("sender@example.com") // .withPositionAnchor(TextAnchorBuilder.newTextAnchor("Signature of the // Contractor")   .atPosition(TextAnchorPosition.TOPLEFT)   .withSize(150, 40) // .withOffset(0, -50)   .withCharacter(0)   .withOccurence(0));   //Client // signature on first document   SignatureBuilder signature2 = // SignatureBuilder.signatureFor("client@example.com") // .withPositionAnchor(TextAnchorBuilder.newTextAnchor("Signature of the // Client")   .atPosition(TextAnchorPosition.TOPLEFT)   .withSize(150, 40) // .withOffset(0, -50)   .withCharacter(0)   .withOccurence(0));   //First // document   DocumentBuilder document1 = // DocumentBuilder.newDocumentWithName("Cleaning Contract") // .fromFile("DOC_FILE_PATH")   .withSignature(signature1) // .withSignature(signature2);   //Build package   DocumentPackage packageToSend // = // packageToBuild.withSigner(signer1).withSigner(signer2).withDocument(document1).withDocument(document2).build(); // //Create and send package   PackageId packageId = // client.createAndSendPackage(packageToSend);   //sign all documents for sender // client.signDocuments(packageId); ``` La dernière ligne de cet exemple de code signe automatiquement tous les documents pour l'expéditeur. Cette fonction ne fonctionne pas pour les signatures par capture. ### Résultats Une fois que vous aurez exécuté votre code, connectez-vous à OneSpan Sign. Vous verrez un crochet à côté de votre expéditeur. Cela confirme que toutes les signatures de l'expéditeur ont été appliquées. ## .NET SDK Pour télécharger l'exemple complet de code, consultez notre site [Partage de code](https://community.onespan.com/documentation/onespan-sign/codeshare/sign-documents-example-net-sdk/). Cette rubrique décrit comment signer toutes les signatures d'une transaction à l'aide d'un appel unique, au lieu de parcourir successivement chaque document et de signer chaque signature de manière séquentielle. Dans cet exemple : - Il y a deux destinataires dans la transaction : l'expéditeur et un client. - Il y a deux documents dans la transaction. - Les ancres de texte sont utilisées pour positionner les signatures sur les documents. Pour obtenir plus d'informations, consultez [Ancres de texte](/v1/docs/fr/using-text-anchors). - L'exemple de PDF utilisé dans ce guide peut être téléchargé [ici](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/cleaning_contract.pdf?sv=2026-02-06&spr=https&st=2026-11-13T10%3A47%3A10Z&se=2026-11-13T11%3A47%3A10Z&sr=c&sp=r&sig=2wE1uq5jCH2Z%2F7pGZQMrY%2Bksd4J6NqUnn%2B7wS92C8h0%3D). Le code suivant signera toutes les signatures de la transaction. ```csharp //Package   PackageBuilder packageToBuild = PackageBuilder.NewPackageNamed("Sign Documents Test");   //Sender   SignerBuilder signer1 = SignerBuilder.NewSignerWithEmail("sender@example.com")   .WithFirstName("Haris")   .WithLastName("Haidary")   .WithCustomId("Sender");   //Client   SignerBuilder signer2 = SignerBuilder.NewSignerWithEmail("client@example.com")   .WithFirstName("John")   .WithLastName("Smith")   .WithCustomId("Signer");   //Sender signature on first document   SignatureBuilder signature1 = SignatureBuilder.SignatureFor("sender@example.com")   .WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("Signature of the Contractor")   .AtPosition(TextAnchorPosition.TOPLEFT)   .WithSize(150, 40)   .WithOffset(0, -50)   .WithCharacter(0)   .WithOccurrence(0));   //Client signature on first document   SignatureBuilder signature2 = SignatureBuilder.SignatureFor("client@example.com")   .WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("Signature of the Client")   .AtPosition(TextAnchorPosition.TOPLEFT)   .WithSize(150, 40)   .WithOffset(0, -50)   .WithCharacter(0)   .WithOccurrence(0));   //First document   DocumentBuilder document1 = DocumentBuilder.NewDocumentNamed("Cleaning Contract")   .FromFile("DOC_FILE_PATH")   .WithSignature(signature1)   .WithSignature(signature2);   //Build package   DocumentPackage packageToSend = packageToBuild.WithSigner(signer1).WithSigner(signer2).WithDocument(document1).WithDocument(document2).Build();   //Create and send package   PackageId packageId = client.CreateAndSendPackage(packageToSend);   //Sign all documents for sender   client.SignDocuments(packageId); ``` La dernière ligne de cet exemple de code signe automatiquement tous les documents pour l'expéditeur. Cette fonction ne fonctionne pas pour les signatures par capture. ### Résultats Une fois que vous aurez exécuté votre code, connectez-vous à OneSpan Sign. Vous verrez un crochet à côté de votre expéditeur. Cela confirme que toutes les signatures de l'expéditeur ont été appliquées. ## API REST Pour télécharger l'exemple complet de code, consultez notre site [Partage de code](https://community.onespan.com/documentation/onespan-sign/codeshare/sign-all-documents-example-rest-api). Cette rubrique décrit comment signer toutes les signatures d'une transaction à l'aide d'un appel unique, au lieu de parcourir successivement chaque document et de signer chaque signature de manière séquentielle. Dans cet exemple : - Il y a deux destinataires dans la transaction : l'expéditeur et un client. - Il y a deux documents dans la transaction. - Les ancres de texte sont utilisées pour positionner les signatures sur les documents. Pour obtenir plus d'informations, consultez [Ancres de texte](/v1/docs/fr/using-text-anchors). - L'exemple de PDF utilisé dans ce guide peut être téléchargé [ici](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/cleaning_contract.pdf?sv=2026-02-06&spr=https&st=2026-11-13T10%3A47%3A10Z&se=2026-11-13T11%3A47%3A10Z&sr=c&sp=r&sig=2wE1uq5jCH2Z%2F7pGZQMrY%2Bksd4J6NqUnn%2B7wS92C8h0%3D). #### Requête HTTP ```http POST /api/packages ``` #### En-têtes HTTP ```http Accept: application/json   Content-Type: multipart/form-data   Authorization: Basic api_key ``` #### Données utiles de la demande ```json -- -- --WebKitFormBoundary1bNO60n7FqP5WO4t Content - Disposition: form - data; name = "file"; filename = "testDocumentExtraction.pdf" Content - Type: application / pdf % PDF - 1.5 % µµµµ 1 0 obj < >>> endobj....-- -- --WebKitFormBoundary1bNO60n7FqP5WO4t Content - Disposition: form - data; name = "payload" "roles": [{ "id": "Signer", "type": "SIGNER", "signers": [{ "firstName": "John", "lastName": "Smith", "email": "signer@example.com" }], "name": "Signer" }, { "id": "Sender", "type": "SIGNER", "signers": [{ "firstName": "Haris", "lastName": "Haidary", "email": "sender@example.com" }], "name": "Sender" }], "documents": [{ "approvals": [{ "fields": [{ "type": "SIGNATURE", "extract": false, "extractAnchor": { "text": "Signature of the Client", "index": 0, "width": 150, "height": 40, "anchorPoint": "TOPLEFT", "characterIndex": 0, "leftOffset": 0, "topOffset": -50 }, "left": 0, "subtype": "FULLNAME", "top": 0 }, { "value": null, "type": "INPUT", "binding": "{signer.name}", "extract": false, "extractAnchor": { "text": "(hereafter referred to as", "index": 0, "width": 150, "height": 20, "anchorPoint": "TOPRIGHT", "characterIndex": 0, "leftOffset": -175, "topOffset": -5 }, "left": 0, "subtype": "LABEL", "top": 0 }, { "value": null, "type": "INPUT", "binding": "{approval.signed}", "extract": false, "extractAnchor": { "text": "Date", "index": 0, "width": 75, "height": 40, "anchorPoint": "TOPRIGHT", "characterIndex": 4, "leftOffset": 10, "topOffset": -30 }, "left": 0, "subtype": "LABEL", "top": 0 }], "role": "Signer" }, { "fields": [{ "type": "SIGNATURE", "extract": false, "extractAnchor": { "text": "Signature of the Contractor", "index": 0, "width": 150, "height": 40, "anchorPoint": "TOPLEFT", "characterIndex": 0, "leftOffset": 0, "topOffset": -50 }, "subtype": "FULLNAME" }], "role": "Sender" }], "id": "contract", "name": "Sample Contract" }], "name": "Sign Documents Test", "type": "PACKAGE", "language": "en", "autoComplete": true, "status": "SENT" }-- -- --WebKitFormBoundary1bNO60n7FqP5WO4t-- ``` Pour une description complète de chaque champ, voir le tableau des données utiles de la demande ci-dessous. #### Données utiles de la réponse ```json {     "id": "9sKhW-h-qS9m6Ho3zRv3n2a-rkI="    } ``` Une fois que vous avez envoyé votre transaction, vous effectuez une requête POST vers : #### Requête HTTP ```http POST /api/packages/{packageId}/documents/signed_documents ``` #### En-têtes HTTP ```http Accept: application/json   Content-Type: application/json   Authorization: Basic api_key  {   "documents": [   {   "id": "contract",   "name": "Sample Contract"   }   ]   } ``` La dernière ligne de cet exemple de code signe automatiquement tous les documents pour l'expéditeur. Cette fonction ne fonctionne pas pour les signatures par capture. ### Résultats Une fois que vous aurez exécuté votre code, connectez-vous à OneSpan Sign. Vous verrez un crochet à côté de votre expéditeur. Cela confirme que toutes les signatures de l'expéditeur ont été appliquées. ### Tableau des données utiles de la demande | Propriété | Type | Modifiable | Requis | Par défaut | Exemples de valeurs | | --- | --- | --- | --- | --- | --- | | statut | chaîne de caractères | Oui | Non | ÉBAUCHE | ÉBAUCHE / ENVOYÉ / COMPLÉTÉ / ARCHIVÉ / DÉCLINÉ / REFUSÉ / EXPIRÉ | | ComplétionAuto | booléen | Oui | Non | vrai | vrai / faux | | type | chaîne de caractères | Oui | Non | PACKAGE | PAQUET / MODÈLE / MISE EN PAGE | | nom | chaîne de caractères | Oui | Oui | s.o. | Exemple d'extraction d'ancres de texte API REST | | langue | chaîne de caractères | Oui | Oui | en | en / fr / de ... | | documents | | | | | | | nom | chaîne de caractères | Oui | Non | s.o. | Exemple de contrat | | approbations | | | | | | | rôle | chaîne de caractères | Oui | Non | s.o. | client | | champs | | | | | | | type | chaîne de caractères | Oui | Oui | s.o. | SIGNATURE / ENTRÉE | | extrait | booléen | Oui | Non | faux | vrai / faux | | sous-type | chaîne de caractères | Oui | Oui | s.o. | NOM COMPLET / INITIALES / CAPTURE / CAPTURE_MOBILE / ÉTIQUETTE / CHAMP DE TEXTE / ZONE DE TEXTE / CASE / DATE / RADIO / LISTE | | liaison | chaîne de caractères | Oui | Non | nul | nul / {approval.signed} / {signer.title} / {signer.name} / {signer.company} | | gauche | entier | Oui | Non | 0 | 0 / 10 / 20 ... | | haut | entier | Oui | Non | 0 | 0 / 10 / 20 ... | | extractAnchor | | | | | | | texte | chaîne de caractères | Oui | Oui | s.o. | Signature du client | | PointAncrage | chaîne de caractères | Oui | Oui | s.o. | HAUT-GAUCHE / HAUT-DROIT / BAS-GAUCHE / BAS-DROIT | | index | entier | Oui | Non | 0 | 0 / 1 / 2 ... | | largeur | entier | Oui | Non | 200 | 150 | | characterIndex | entier | Oui | Non | 0 | 0 | | hauteur | entier | Oui | Non | 50 | 40 | | décalageGauche | entier | Oui | Non | 0 | 40 | | DécalageDroite | entier | Oui | Non | 0 | -10 | | rôles | | | | | | | id | chaîne de caractères | Oui | Non | s.o. | client | | index | entier | Oui | Non | 0 | 1 / 2 / 3 ... | | nom | chaîne de caractères | Oui | Non | s.o. | client | | type | chaîne de caractères | Oui | Non | SIGNER | SIGNATAIRE / EXPÉDITEUR | | signataires | | | | | | | courriel | chaîne de caractères | Oui | Oui | s.o. | john.smith@exemple.com | | Prénom | chaîne de caractères | Oui | Oui | s.o. | John | | Nom de famille | chaîne de caractères | Oui | Oui | s.o. | Smith | | id | chaîne de caractères | Oui | Non | s.o. | client | ## APEX SDK Pour télécharger l'exemple complet de code, consultez notre site [Partage de code](https://community.onespan.com/documentation/onespan-sign/codeshare/sign-documents-example-apex-sdk/). Cette rubrique décrit comment signer toutes les signatures d'une transaction à l'aide d'un appel unique, au lieu de parcourir successivement chaque document et de signer chaque signature de manière séquentielle. Dans cet exemple : - Il y a deux destinataires dans la transaction : l'expéditeur et un client. - Il y a deux documents dans la transaction. - Les ancres de texte sont utilisées pour positionner les signatures sur les documents. Pour obtenir plus d'informations, consultez [Ancres de texte](/v1/docs/fr/using-text-anchors). - L'exemple de PDF utilisé dans ce guide peut être téléchargé [ici](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/cleaning_contract.pdf?sv=2026-02-06&spr=https&st=2026-11-13T10%3A47%3A10Z&se=2026-11-13T11%3A47%3A10Z&sr=c&sp=r&sig=2wE1uq5jCH2Z%2F7pGZQMrY%2Bksd4J6NqUnn%2B7wS92C8h0%3D). Après avoir envoyé votre paquet à la signature, vous devrez récupérer votre packageID. Ensuite, utilisez le code suivant pour signer toutes les signatures de la transaction : ```plaintext public void signDocuments(String packageId) ``` ### Résultats Une fois que vous aurez exécuté votre code, connectez-vous à OneSpan Sign. Vous verrez un crochet à côté de votre expéditeur. Cela confirme que toutes les signatures de l'expéditeur ont été appliquées.