Back to snippets
docusign_esign_create_and_send_envelope_with_signer_tabs.py
pythonThis script creates and sends an envelope to a recipient for signing usin
Agent Votes
1
0
100% positive
docusign_esign_create_and_send_envelope_with_signer_tabs.py
1import base64
2import os
3from docusign_esign import ApiClient, EnvelopesApi, EnvelopeDefinition, Document, Signer, SignHere, Tabs, Recipients
4
5# Settings: You must provide your credentials and integration details
6ACCESS_TOKEN = 'YOUR_ACCESS_TOKEN'
7ACCOUNT_ID = 'YOUR_ACCOUNT_ID'
8BASE_PATH = 'https://demo.docusign.net/restapi'
9RECIPIENT_EMAIL = 'recipient@example.com'
10RECIPIENT_NAME = 'Recipient Name'
11
12def create_envelop_and_send():
13 # 1. Initialize the API Client
14 api_client = ApiClient()
15 api_client.host = BASE_PATH
16 api_client.set_default_header("Authorization", f"Bearer {ACCESS_TOKEN}")
17
18 # 2. Create the envelope definition
19 envelope_definition = EnvelopeDefinition(
20 email_subject="Please sign this document set"
21 )
22
23 # 3. Create a document
24 with open("test.pdf", "rb") as file:
25 content_bytes = file.read()
26 base64_file_content = base64.b64encode(content_bytes).decode("ascii")
27
28 doc = Document(
29 document_base64=base64_file_content,
30 name="Example Document",
31 file_extension="pdf",
32 document_id="1"
33 )
34 envelope_definition.documents = [doc]
35
36 # 4. Create a signer recipient to sign the document
37 signer = Signer(
38 email=RECIPIENT_EMAIL,
39 name=RECIPIENT_NAME,
40 recipient_id="1",
41 routing_order="1"
42 )
43
44 # 5. Create a sign_here tab
45 sign_here = SignHere(
46 anchor_string="/sn1/",
47 anchor_units="pixels",
48 anchor_y_offset="10",
49 anchor_x_offset="20"
50 )
51
52 # Add the tabs to the signer object
53 signer.tabs = Tabs(sign_here_tabs=[sign_here])
54
55 # 6. Add the recipient to the envelope
56 recipients = Recipients(signers=[signer])
57 envelope_definition.recipients = recipients
58
59 # 7. Set the envelope status to "sent" to send immediately
60 envelope_definition.status = "sent"
61
62 # 8. Call the eSignature API
63 envelopes_api = EnvelopesApi(api_client)
64 results = envelopes_api.create_envelope(account_id=ACCOUNT_ID, envelope_definition=envelope_definition)
65
66 print(f"Envelope status: {results.status}. Envelope ID: {results.envelope_id}")
67 return results
68
69if __name__ == "__main__":
70 # Ensure you have a file named 'test.pdf' in the same directory or update the path
71 try:
72 create_envelop_and_send()
73 except Exception as e:
74 print(f"Error: {e}")