<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Vijay Amalan</title>
    <description>The latest articles on Forem by Vijay Amalan (@vijay_amalan_98).</description>
    <link>https://forem.com/vijay_amalan_98</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3541021%2F899d940f-cb5a-48dc-8da6-a41325de674d.png</url>
      <title>Forem: Vijay Amalan</title>
      <link>https://forem.com/vijay_amalan_98</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/vijay_amalan_98"/>
    <language>en</language>
    <item>
      <title>Reduce eSignature Drop‑Off: Practical Ways to Improve Completion Rates</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Thu, 07 May 2026 04:06:19 +0000</pubDate>
      <link>https://forem.com/boldsign/reduce-esignature-drop-off-practical-ways-to-improve-completion-rates-2dc2</link>
      <guid>https://forem.com/boldsign/reduce-esignature-drop-off-practical-ways-to-improve-completion-rates-2dc2</guid>
      <description>&lt;p&gt;If your eSignature completion rate isn’t where you want it, it is rarely because people “don’t want to sign.” More often, they intend to complete the document. Something in the experience creates friction. The email does not land, the flow feels unclear on mobile, authentication slows them down, or the signer has to jump between apps and tabs.&lt;/p&gt;

&lt;p&gt;The good news: you don’t need to redesign everything to fix this. You can diagnose drop-off like a funnel, identify where people are getting stuck, and apply a handful of targeted improvements that typically lift completion rates quickly.&lt;/p&gt;

&lt;p&gt;In this guide, we’ll walk through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The eSignature funnel to pinpoint where drop-off happens&lt;/li&gt;
&lt;li&gt;  The most common causes (and what to change) at each stage&lt;/li&gt;
&lt;li&gt;  How BoldSign supports these fixes with embedded signing, templates, reminders, sender branding, custom email domain, and configurable security controls&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How can you diagnose eSignature drop-off using a funnel?
&lt;/h2&gt;

&lt;p&gt;Treat your signing experience like a conversion funnel so you can stop guessing and start fixing the right step.&lt;/p&gt;

&lt;p&gt;Sent → Delivered → Opened → Started → Completed&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Sent: Your system triggered the request successfully.&lt;/li&gt;
&lt;li&gt;  Delivered: The email reached the inbox (not spam/bounce).&lt;/li&gt;
&lt;li&gt;  Opened: The recipient opened the message.&lt;/li&gt;
&lt;li&gt;  Started: The recipient clicked and began signing.&lt;/li&gt;
&lt;li&gt;  Completed: The recipient finished and submitted.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you know where the biggest drop is, the fix usually becomes obvious.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you reduce eSignature drop-off step by step?
&lt;/h2&gt;

&lt;p&gt;Reducing drop-off means removing small but compounding friction points. Each stage below targets a specific failure pattern.&lt;/p&gt;

&lt;h3&gt;
  
  
  1) How do you improve “Sent → Delivered” rates?
&lt;/h3&gt;

&lt;p&gt;If your “Delivered” rate is low, your issue is not signing. It is email deliverability or sender trust.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common causes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Sender domain looks unfamiliar or untrusted&lt;/li&gt;
&lt;li&gt;  Poor list hygiene (old/invalid emails)&lt;/li&gt;
&lt;li&gt;  Emails routed to spam or promotions tabs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical fixes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Use a recognizable sender name and consistent “From” identity&lt;/li&gt;
&lt;li&gt;  Tighten list hygiene and reduce bounces&lt;/li&gt;
&lt;li&gt;  Keep subject lines and copy clear and predictable (avoid spam signals)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How BoldSign helps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/electronic-signature-features/branding?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Branded email&lt;/a&gt; so recipients recognize the request and trust it&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/send-signature-requests-custom-email-domain?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Custom email domain&lt;/a&gt; so signature requests come from a domain aligned with your brand (helping recognition and reducing “who is this?” hesitation)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2) How do you increase “Delivered → Opened” rates?
&lt;/h3&gt;

&lt;p&gt;If delivered emails aren’t being opened, the request may not feel urgent, safe, or relevant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common causes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The sender name or domain is unfamiliar, triggering hesitation or distrust&lt;/li&gt;
&lt;li&gt;  The subject line is vague, generic, or looks automated&lt;/li&gt;
&lt;li&gt;  The email does not clearly explain why the recipient is receiving it&lt;/li&gt;
&lt;li&gt;  The action required is not obvious at a glance&lt;/li&gt;
&lt;li&gt;  The message blends into promotions or notification clutter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical fixes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Use a straightforward subject line (e.g., “Signature requested: [Document Name]”)&lt;/li&gt;
&lt;li&gt;  State the “why” in the first sentence (what it is + what they need to do)&lt;/li&gt;
&lt;li&gt;  Put the primary action clearly above the fold&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How BoldSign helps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Brand-consistent including &lt;a href="https://support.boldsign.com/kb/article/20030/email-content-customization-in-boldsign" rel="noopener noreferrer"&gt;custom email content&lt;/a&gt; increases recognition and reduces hesitation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3) How do you reduce friction from “Opened → Started”?
&lt;/h3&gt;

&lt;p&gt;This is where many flows quietly fail. People open the email, then postpone because starting feels like work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common causes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The user has to log in or switch apps&lt;/li&gt;
&lt;li&gt;  The signing link expires too quickly (or the rules are unclear)&lt;/li&gt;
&lt;li&gt;  The CTA is weak or the next step feels uncertain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical fixes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Reduce app switching wherever possible&lt;/li&gt;
&lt;li&gt;  Make the “Start signing” step immediate and predictable&lt;/li&gt;
&lt;li&gt;  Use reasonable expirations and make them clear&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How BoldSign helps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/embedded-signing/get-embedded-signing-link" rel="noopener noreferrer"&gt;Embedded signing&lt;/a&gt; keeps the signer inside your product or portal&lt;/li&gt;
&lt;li&gt;  Configurable &lt;a href="https://support.boldsign.com/kb/article/14271/configuring-embedded-link-expiration-api" rel="noopener noreferrer"&gt;expiration for embedded links&lt;/a&gt; so links don’t die before the signer returns&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4) Started → Completed: How do you cut friction inside the document?
&lt;/h3&gt;

&lt;p&gt;Once a signer starts, completion should be fast. If they start but don’t finish, the document UX is likely the problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common causes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Too many fields, or too many required fields&lt;/li&gt;
&lt;li&gt;  Signatures placed late in the document (users don’t see quick progress)&lt;/li&gt;
&lt;li&gt;  Confusing labels, unclear instructions, or bad mobile layout&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical fixes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Remove unnecessary fields; minimize required inputs&lt;/li&gt;
&lt;li&gt;  Pre-fill anything you already know (name, company, address, dates)&lt;/li&gt;
&lt;li&gt;  Place signature/initial fields earlier where appropriate&lt;/li&gt;
&lt;li&gt;  Add clear labels and hints (“Sign here,” “Initial here,” “Date auto-fills”)&lt;/li&gt;
&lt;li&gt;  Ensure a mobile-friendly layout (spacing, tap targets, field alignment)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How BoldSign helps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/electronic-signature-features/templates?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Templates&lt;/a&gt; to standardize layouts and reduce mistakes across recurring documents&lt;/li&gt;
&lt;li&gt;  Pre-fill fields in templates to minimize manual entry and speed up completion&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://support.boldsign.com/kb/article/21659/faqs-audit-trails-in-boldsign" rel="noopener noreferrer"&gt;Audit trails&lt;/a&gt; to support compliance and reduce disputes after signing&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5) How much authentication is too much for eSignatures?
&lt;/h3&gt;

&lt;p&gt;Extra authentication can protect sensitive workflows, but too much friction can dramatically reduce completion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common causes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Authentication applied to low risk documents where it isn’t expected&lt;/li&gt;
&lt;li&gt;  One time passwords (OTP) or access codes added without explaining the reason&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical fixes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Apply stronger authentication only when the document warrants it&lt;/li&gt;
&lt;li&gt;  If you require OTP or access codes, make sure the signer knows why in one sentence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How BoldSign helps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://support.boldsign.com/kb/article/20362/authentication-frequency-settings" rel="noopener noreferrer"&gt;Authentication frequency settings&lt;/a&gt; so you can tune friction vs. assurance based on workflow needs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why do eSignature reminders consistently increase completion rates?
&lt;/h2&gt;

&lt;p&gt;Most non-completions are not rejections; they are caused by forgetfulness and busy schedules&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common causes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  No follow up after the initial request&lt;/li&gt;
&lt;li&gt;  Manual reminders delayed or forgotten by senders&lt;/li&gt;
&lt;li&gt;  Signers intend to complete later but miss the deadline&lt;/li&gt;
&lt;li&gt;  Expiration dates arrive without warning&lt;/li&gt;
&lt;li&gt;  No visibility into which stage the signer is stuck in&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical fixes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  First reminder: 24–48 hours&lt;/li&gt;
&lt;li&gt;  Follow-ups: every 2–3 days (limit total reminders to avoid annoyance)&lt;/li&gt;
&lt;li&gt;  Add a final “expires soon” nudge if you use expirations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How BoldSign helps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://support.boldsign.com/kb/article/19177/set-automatic-reminders-for-electronic-signature-requests-through-api" rel="noopener noreferrer"&gt;Automatic reminders&lt;/a&gt; at create&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/documents/send-reminder" rel="noopener noreferrer"&gt;Reminders via API&lt;/a&gt; so your product can trigger reminders based on recipient behavior and funnel stage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What common mistakes quietly lower eSignature completion?
&lt;/h2&gt;

&lt;p&gt;Many eSignature requests fail not because people refuse to sign, but because small usability issues make the process confusing or slower than expected, causing signers to stop before finishing.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mistake&lt;/th&gt;
&lt;th&gt;What signers experience&lt;/th&gt;
&lt;th&gt;How to prevent it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Too many fields&lt;/td&gt;
&lt;td&gt;Task feels longer than expected&lt;/td&gt;
&lt;td&gt;Request only essential data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unclear invitation&lt;/td&gt;
&lt;td&gt;Hesitation or distrust&lt;/td&gt;
&lt;td&gt;Explain sender and purpose clearly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No reminders&lt;/td&gt;
&lt;td&gt;People forget&lt;/td&gt;
&lt;td&gt;Schedule polite follow‑ups&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unclear field labels&lt;/td&gt;
&lt;td&gt;Confusion and pauses&lt;/td&gt;
&lt;td&gt;Use simple, descriptive labels&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unnecessary signing order&lt;/td&gt;
&lt;td&gt;One delay blocks everyone&lt;/td&gt;
&lt;td&gt;Enforce order only when needed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What should you verify before sending an eSignature request?
&lt;/h2&gt;

&lt;p&gt;Before sending an eSignature request, confirm a small set of fundamentals that prevent avoidable delays and signer drop-off.&lt;br&gt;&lt;br&gt;
This checklist focuses only on configuration and setup decisions that influence whether a signer can start and finish without friction.&lt;/p&gt;

&lt;p&gt;Use this pre send checklist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Deliverability: Recognizable sender name, custom email domain, clean recipient list&lt;/li&gt;
&lt;li&gt;  Email clarity: Clear subject line and a visible call to action near the top of the email&lt;/li&gt;
&lt;li&gt;  Start friction: Embedded signing enabled, minimal redirects, clear and reasonable expiration timelines&lt;/li&gt;
&lt;li&gt;  Document usability: Only required fields included, known data prefilled, layout optimized for mobile&lt;/li&gt;
&lt;li&gt;  Follow up: Automatic reminders scheduled, with the first reminder sent within 24 to 48 hours&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What actually improves eSignature completion in the real world
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Checkout time signing: Embedded signing during a transaction completes faster than email based flows&lt;/li&gt;
&lt;li&gt;  Offer letters: Placing signature fields earlier reduces candidate hesitation and delays&lt;/li&gt;
&lt;li&gt;  Vendor onboarding: Removing duplicate or nonessential fields shortens time to completion&lt;/li&gt;
&lt;li&gt;  Low risk agreements: Using lighter authentication avoids unnecessary signer frustration&lt;/li&gt;
&lt;li&gt;  Automated reminders: Replacing manual follow ups reduces idle time between steps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These improvements focus on how people actually behave after receiving a signing request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final key takeaways: How reducing friction improves eSignature completion rates
&lt;/h2&gt;

&lt;p&gt;Reducing eSignature drop-off is not about pushing signers harder. It is about removing avoidable friction at every stage of the signing journey. When emails are trusted, starting is effortless, documents are fast to complete, security feels appropriate, and reminders arrive at the right time, completion rates improve naturally. You do not need to redesign your workflow to see results. Treat eSignature like a funnel, identify where signers pause, and apply targeted fixes. This approach consistently increases completion without adding operational overhead.&lt;/p&gt;

&lt;p&gt;BoldSign supports this end to end with embedded signing, reusable templates, pre filled fields, branded email delivery, flexible authentication, automated reminders, and audit ready compliance, so teams can focus on speed, trust, and completion rather than follow ups and guesswork.&lt;/p&gt;

&lt;p&gt;If you’d like to explore more about BoldSign capabilities, sign up for a free &lt;a href="https://account.boldsign.com/signup?planId=1076&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign API account&lt;/a&gt; leave a comment, book a &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt;, or connect with our support team through the BoldSign &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;support portal&lt;/a&gt;. &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>rates</category>
      <category>completionrates</category>
      <category>documents</category>
    </item>
    <item>
      <title>Webinar Show Notes: Salesforce Contract Management with BoldSign</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Wed, 06 May 2026 03:39:06 +0000</pubDate>
      <link>https://forem.com/boldsign/webinar-show-notes-salesforce-contract-management-with-boldsign-4de0</link>
      <guid>https://forem.com/boldsign/webinar-show-notes-salesforce-contract-management-with-boldsign-4de0</guid>
      <description>&lt;p&gt;In this session, Gayathri Annamalai, Software Developer at BoldSign, walks through how organizations can eliminate manual document steps by managing the entire eSignature lifecycle inside Salesforce. Instead of exporting data, switching tools, or tracking status manually, teams can send agreements, monitor progress, and store signed documents directly from Salesforce records.&lt;/p&gt;

&lt;p&gt;If you missed the live session or would like to watch it again, the recording is embedded on this page and is also available on our YouTube channel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Webinar recap
&lt;/h2&gt;

&lt;p&gt;The webinar opened with a common challenge many Salesforce teams face today. Contract workflows often involve copying data from Salesforce into documents, sending them through separate eSignature tools, and manually updating status afterward. This back and forth introduces delays, duplicate work, and a lack of visibility.&lt;/p&gt;

&lt;p&gt;Gayathri then introduced the BoldSign Salesforce integration and explained how it brings eSignature workflows directly into Salesforce. She demonstrated how admins enable the integration once at the account level and how users work entirely within Salesforce afterward.&lt;/p&gt;

&lt;p&gt;The live demo showed how templates and field mapping automatically prefill Salesforce data into documents, ensuring consistency and reducing errors. The session also highlighted how BoldSign Lightning Components can be added to Accounts, Contacts, Leads, and Opportunities, allowing users to send and track documents without navigating away from the record they are working on.&lt;/p&gt;

&lt;p&gt;Finally, the webinar covered real-time document tracking and the automatic storage of completed agreements back into Salesforce, keeping Salesforce as the single source of truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Highlights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Enable and configure the BoldSign Salesforce integration with a one time admin setup&lt;/li&gt;
&lt;li&gt;  Use templates and field mapping to automatically prefill Salesforce data&lt;/li&gt;
&lt;li&gt;  Add BoldSign Lightning Components to Salesforce record pages&lt;/li&gt;
&lt;li&gt;  Send documents directly from Salesforce without exporting files&lt;/li&gt;
&lt;li&gt;  Track document status in real-time inside Salesforce&lt;/li&gt;
&lt;li&gt;  Automatically save signed documents back to Salesforce records&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Configure the BoldSign Salesforce integration once as an admin&lt;/li&gt;
&lt;li&gt;  Eliminate manual data entry with templates and field mapping&lt;/li&gt;
&lt;li&gt;  Send and manage eSignatures directly from Salesforce records&lt;/li&gt;
&lt;li&gt;  Maintain full visibility into document status without switching tools&lt;/li&gt;
&lt;li&gt;  Keep signed documents automatically stored in Salesforce&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Helpful resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Learn more about &lt;a href="https://boldsign.com/integrations/salesforce-esignature?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign for Salesforce&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Explore &lt;a href="https://boldsign.com/integrations/salesforce-esignature?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign Integrations&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  View &lt;a href="https://support.boldsign.com/kb/article/22489/boldsign-and-salesforce-integration" rel="noopener noreferrer"&gt;Salesforce Integration Documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Contact &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;BoldSign Support&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Start a &lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;free trial&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/embed-esignature-workflows-dotnet-app/" rel="noopener noreferrer"&gt;Webinar Show Notes: Embed eSignature Workflows in .NET App&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/boldsign-new-features-webinar-recap/" rel="noopener noreferrer"&gt;Webinar Show Notes: What’s New in BoldSign&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/ai-search-contracts-webinar-recap/" rel="noopener noreferrer"&gt;Webinar Show Notes: Find Contracts in Seconds with BoldSign AI Search&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>webinar</category>
      <category>boldsign</category>
      <category>documents</category>
    </item>
    <item>
      <title>Introducing BoldSign’s Free Phone Number QR Code Generator</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Tue, 05 May 2026 03:47:12 +0000</pubDate>
      <link>https://forem.com/boldsign/introducing-boldsigns-free-phone-number-qr-code-generator-2mai</link>
      <guid>https://forem.com/boldsign/introducing-boldsigns-free-phone-number-qr-code-generator-2mai</guid>
      <description>&lt;p&gt;Phone Number QR codes make communication effortless. With a single scan, users can open their phone dialer with your number already filled in and ready to call. This simple upgrade eliminates typing errors, speeds up response time, and increases the chances of customers connecting with you instantly.&lt;/p&gt;

&lt;p&gt;With BoldSign’s &lt;a href="https://boldsign.com/phone-number-qr-code-generator?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;free Phone Number QR code generator&lt;/a&gt;, you can convert any phone number into a scannable QR code in seconds. No sign up, no watermark, no tracking, and no limits. This guide covers everything you need to know, including what a Phone Number QR code is, how it works, and all the best ways to use it effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Phone Number QR code?
&lt;/h2&gt;

&lt;p&gt;A Phone Number QR code is a scannable code that opens the phone dialer with your number prefilled when someone scans it with their smartphone camera. One tap places the call.&lt;/p&gt;

&lt;p&gt;You can link to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A personal number&lt;/li&gt;
&lt;li&gt;  A business contact number&lt;/li&gt;
&lt;li&gt;  A support or helpdesk number• A service hotline&lt;/li&gt;
&lt;li&gt;  A campaign-specific call number&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why it matters: It removes the friction of typing digits manually and reduces errors dramatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why use a Phone Number QR code?
&lt;/h2&gt;

&lt;p&gt;A Phone Number QR code makes starting a call quick, simple, and frustration-free. It is effective across both online and offline channels where you want instant customer contact.&lt;/p&gt;

&lt;p&gt;Key benefits&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Instant calling – One scan opens your number in the dialer. Faster communication and fewer missed opportunities.&lt;/li&gt;
&lt;li&gt;  Higher conversions – Ideal for reservation counters, brochures, and event booths where customers decide quickly.&lt;/li&gt;
&lt;li&gt;  Better customer experience – No typing, no searching, no mistakes.&lt;/li&gt;
&lt;li&gt;  Modern presentation – Add QR codes to business cards, brochures, receipts, and printed materials to upgrade your brand presence.&lt;/li&gt;
&lt;li&gt;  Mobile first convenience – All modern smartphones support QR code scanning with the native camera.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to create Phone Number QR code for free?
&lt;/h2&gt;

&lt;p&gt;Creating your Phone Number QR code takes only a few seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you’ll need&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Your phone number&lt;/li&gt;
&lt;li&gt;  A browser on any device&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step by step&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Enter your phone number
Type the number you want users to call instantly.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Customize your QR code&lt;br&gt;&lt;br&gt;
Adjust:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Pattern color&lt;/li&gt;
&lt;li&gt;  Background color&lt;/li&gt;
&lt;li&gt;  QR code size
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Download and share&lt;br&gt;&lt;br&gt;
Export your QR code as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  PNG&lt;/li&gt;
&lt;li&gt;  JPEG&lt;/li&gt;
&lt;li&gt;  SVG
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3jm6ik3nk15yt69apokw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3jm6ik3nk15yt69apokw.png" alt="Phone Number QR code generator" width="800" height="462"&gt;&lt;/a&gt;Phone Number QR code generator&lt;/p&gt;

&lt;h2&gt;
  
  
  Why choose BoldSign’s Phone Number QR code generator
&lt;/h2&gt;

&lt;p&gt;BoldSign’s tool is built for speed, security, and ease of use.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  100% free forever: No subscriptions, no hidden fees, and no watermarks.&lt;/li&gt;
&lt;li&gt;  Privacy first: Your number is processed directly in your browser. Nothing is stored or sent anywhere.&lt;/li&gt;
&lt;li&gt;  Instant results: Generate high quality QR codes in seconds.&lt;/li&gt;
&lt;li&gt;  Works on all devices: Windows, macOS, Linux, iOS, and Android. No apps are needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Best ways to use Phone Number QR code
&lt;/h2&gt;

&lt;p&gt;Phone Number QR codes can improve customer communication everywhere you place them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Business cards: Make contacting you easier with a quick scan.&lt;/li&gt;
&lt;li&gt;  Storefronts and counters: Let walk-in customers call for assistance or reservations.&lt;/li&gt;
&lt;li&gt;  Printed marketing: Add QR codes to flyers, banners, posters, and brochures.&lt;/li&gt;
&lt;li&gt;  Events and exhibitions: Great for booths, badges, and digital screens where quick contact matters.&lt;/li&gt;
&lt;li&gt;  Online communication: Add your QR code to email signatures, social media graphics, and presentations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;A Phone Number QR code makes calling you faster, simpler, and error-free. It removes extra steps, increases customer accessibility, and lets people reach you instantly from any medium, whether it is printed or digital.&lt;/p&gt;

&lt;p&gt;Create your &lt;a href="https://boldsign.com/phone-number-qr-code-generator?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Phone Number QR code&lt;/a&gt; with BoldSign today and make it easier for people to connect with you in seconds.&lt;/p&gt;

&lt;p&gt;Ready to simplify your document workflows? &lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Sign up for a free 30-day trial&lt;/a&gt; or connect with our &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;support team&lt;/a&gt; for a personalized &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/generate-snapchat-qr-code-online/" rel="noopener noreferrer"&gt;Introducing BoldSign’s Snapchat QR Code Generator&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/generate-facebook-qr-code-online/" rel="noopener noreferrer"&gt;Free Facebook QR Code Generator for Profiles, Pages &amp;amp; Posts&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/generate-email-qr-code-online/" rel="noopener noreferrer"&gt;Free Email QR Code Generator for Ready‑to‑Use Email Drafts&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt; &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>qrcode</category>
      <category>phonenumber</category>
      <category>documents</category>
    </item>
    <item>
      <title>Construction Contract Basics: What Every Project Agreement Should Include</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Mon, 04 May 2026 04:11:53 +0000</pubDate>
      <link>https://forem.com/boldsign/construction-contract-basics-what-every-project-agreement-should-include-2536</link>
      <guid>https://forem.com/boldsign/construction-contract-basics-what-every-project-agreement-should-include-2536</guid>
      <description>&lt;p&gt;A construction contract is the document that defines the project scope, responsibilities, timeline, payment terms, and change rules so everyone knows exactly what to do and how disputes will be handled. The strongest construction agreements prevent misunderstandings early by clearly documenting who is involved, what work will be done, when it will happen, how payments work, and what to do when something changes. &lt;/p&gt;

&lt;p&gt;In this guide, you’ll learn the must-have components of a construction contract, the most common agreement challenges, and a simple approval workflow. You’ll also see how BoldSign helps teams execute contracts faster with &lt;a href="https://boldsign.com/electronic-signature-features/templates?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;templates&lt;/a&gt;, &lt;a href="https://support.boldsign.com/kb/article/572/how-to-set-the-signing-order-of-the-signers" rel="noopener noreferrer"&gt;signing order&lt;/a&gt;, &lt;a href="https://support.boldsign.com/kb/article/144/manage-auto-reminder-after-sending-document" rel="noopener noreferrer"&gt;reminders&lt;/a&gt;, &lt;a href="https://support.boldsign.com/kb/article/14014/track-changes-on-a-document" rel="noopener noreferrer"&gt;tracking&lt;/a&gt;, and &lt;a href="https://support.boldsign.com/kb/article/106/download-audit-trail-document" rel="noopener noreferrer"&gt;audit trails&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why a solid construction contract matters 
&lt;/h2&gt;

&lt;p&gt;A construction contract is more than a formality. It protects the project by creating a clear, enforceable framework for: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Communication between owners, contractors, architects, subcontractors, and suppliers &lt;/li&gt;
&lt;li&gt;  Legal protection against misunderstandings, claims, and disputes &lt;/li&gt;
&lt;li&gt;  Scope clarity for deliverables, materials, and quality standards &lt;/li&gt;
&lt;li&gt;  Timeline control with milestones and delay handling &lt;/li&gt;
&lt;li&gt;  Payment clarity including retainage, progress billing, and approvals &lt;/li&gt;
&lt;li&gt;  Change management when the scope or schedule shifts &lt;/li&gt;
&lt;li&gt;  Safety and compliance alignment with local regulations and requirements &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A strong contract reduces risk, improves coordination, and helps keep the project on schedule and on budget. &lt;/p&gt;

&lt;h2&gt;
  
  
  Common challenges in construction agreements 
&lt;/h2&gt;

&lt;p&gt;Construction projects involve many stakeholders and moving parts. The most frequent issues usually come from unclear terms, delays, and inconsistent approvals. &lt;/p&gt;

&lt;h3&gt;
  
  
  Delays and scheduling conflicts 
&lt;/h3&gt;

&lt;p&gt;Weather, labor shortages, or supply disruptions can trigger timeline disputes and added costs. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to reduce risk&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Define delay allowances and notice requirements &lt;/li&gt;
&lt;li&gt;  Track approvals and hold signers accountable with reminders and visibility &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Payment disputes 
&lt;/h3&gt;

&lt;p&gt;Disagreements over amounts due, timing, or work quality can impact cash flow and lead to liens. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to reduce risk&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Specify payment milestones, retainage, and approval conditions &lt;/li&gt;
&lt;li&gt;  Maintain clear records of approvals and signed terms &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Contract interpretation issues 
&lt;/h3&gt;

&lt;p&gt;Ambiguous wording around scope, responsibilities, or change control can cause conflicts. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to reduce risk&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Standardize contract language using templates &lt;/li&gt;
&lt;li&gt;  Reference drawings, specifications, and addenda clearly &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Changed conditions or scope creep 
&lt;/h3&gt;

&lt;p&gt;Design changes and site surprises often cause cost and timeline disputes. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to reduce risk&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Define a formal change order process &lt;/li&gt;
&lt;li&gt;  Require documented approvals before work proceeds &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Subcontractor and quality disputes 
&lt;/h3&gt;

&lt;p&gt;Workmanship issues and coordination gaps can escalate quickly. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to reduce risk&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Assign responsibility clearly &lt;/li&gt;
&lt;li&gt;  Keep sign-offs and confirmations traceable with audit-ready records &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most disputes come from unclear scope, unclear payment terms, unmanaged changes, and missing approval evidence. &lt;/p&gt;

&lt;h2&gt;
  
  
  Essential components of a construction contract 
&lt;/h2&gt;

&lt;p&gt;Below are the core elements every construction contract should include. These are the sections that make agreements clear, enforceable, and easier to manage. &lt;/p&gt;

&lt;h3&gt;
  
  
  Identification of parties 
&lt;/h3&gt;

&lt;p&gt;Include full legal names, addresses, and roles for: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Owner &lt;/li&gt;
&lt;li&gt;  General contractor &lt;/li&gt;
&lt;li&gt;  Subcontractors (as applicable) &lt;/li&gt;
&lt;li&gt;  Architects, engineers, or designers (as applicable) &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Scope of work 
&lt;/h3&gt;

&lt;p&gt;Define what work will be performed and how it will be measured. &lt;/p&gt;

&lt;p&gt;Include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Project tasks and deliverables &lt;/li&gt;
&lt;li&gt;  Materials and workmanship standards &lt;/li&gt;
&lt;li&gt;  Drawings, specifications, and addenda references &lt;/li&gt;
&lt;li&gt;  Exclusions and assumptions to prevent scope creep &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Project timeline and schedule 
&lt;/h3&gt;

&lt;p&gt;Outline the schedule and how delays are handled. &lt;/p&gt;

&lt;p&gt;Include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Start date and substantial completion date &lt;/li&gt;
&lt;li&gt;  Milestones and deliverable deadlines &lt;/li&gt;
&lt;li&gt;  Delay notice requirements &lt;/li&gt;
&lt;li&gt;  Consequences for delays if applicable &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Payment terms and schedule 
&lt;/h3&gt;

&lt;p&gt;Clarify how and when payment happens. &lt;/p&gt;

&lt;p&gt;Include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Total contract value or pricing structure &lt;/li&gt;
&lt;li&gt;  Progress payment schedule &lt;/li&gt;
&lt;li&gt;  Retainage percentage and release conditions &lt;/li&gt;
&lt;li&gt;  Invoicing requirements and approval process &lt;/li&gt;
&lt;li&gt;  Late payment terms if applicable &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Change order process 
&lt;/h3&gt;

&lt;p&gt;Define how scope, cost, and timeline changes are approved. &lt;/p&gt;

&lt;p&gt;Include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  What qualifies as a change order &lt;/li&gt;
&lt;li&gt;  Required documentation &lt;/li&gt;
&lt;li&gt;  Approval roles and signing order &lt;/li&gt;
&lt;li&gt;  How costs and schedule changes are calculated &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Responsibilities and warranties 
&lt;/h3&gt;

&lt;p&gt;Assign responsibilities clearly and protect the project quality. &lt;/p&gt;

&lt;p&gt;Include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Responsibilities for owner, contractor, and subcontractors &lt;/li&gt;
&lt;li&gt;  Workmanship and materials warranties &lt;/li&gt;
&lt;li&gt;  Insurance requirements and coverage levels &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Dispute resolution 
&lt;/h3&gt;

&lt;p&gt;Set a clear path to handle conflicts. &lt;/p&gt;

&lt;p&gt;Include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Mediation, arbitration, or litigation process &lt;/li&gt;
&lt;li&gt;  Governing law and jurisdiction &lt;/li&gt;
&lt;li&gt;  Notice and escalation steps &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Termination clauses 
&lt;/h3&gt;

&lt;p&gt;Define when and how the agreement can end. &lt;/p&gt;

&lt;p&gt;Include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Termination for cause and termination for convenience &lt;/li&gt;
&lt;li&gt;  Cure periods and notice requirements &lt;/li&gt;
&lt;li&gt;  Final payment and materials handling &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Force majeure and insurance 
&lt;/h3&gt;

&lt;p&gt;Cover uncontrollable events and risk protection. &lt;/p&gt;

&lt;p&gt;Include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Force majeure definition and impacts on schedule &lt;/li&gt;
&lt;li&gt;  Required insurance for all parties &lt;/li&gt;
&lt;li&gt;  Safety and incident reporting expectations &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Contract documents list 
&lt;/h3&gt;

&lt;p&gt;List every document that forms the agreement. &lt;/p&gt;

&lt;p&gt;Include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  General conditions and special conditions &lt;/li&gt;
&lt;li&gt;  Drawings and specifications &lt;/li&gt;
&lt;li&gt;  Change orders and addenda &lt;/li&gt;
&lt;li&gt;  Schedules and exhibits &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; These components reduce ambiguity and create a clear rulebook for handling delays, payments, and changes. &lt;/p&gt;

&lt;h2&gt;
  
  
  Key steps in the contract approval workflow 
&lt;/h2&gt;

&lt;p&gt;A typical construction contract approval workflow looks like this. &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Draft the contract 
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Build from a standardized template &lt;/li&gt;
&lt;li&gt;  Include project-specific scope, schedule, and payment terms &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Review 
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Share with legal, project stakeholders, and required approvers &lt;/li&gt;
&lt;li&gt;  Confirm compliance requirements and risk terms &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Negotiate and revise 
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Address feedback &lt;/li&gt;
&lt;li&gt;  Finalize scope and change control language &lt;/li&gt;
&lt;li&gt;  Confirm pricing, milestones, and retainage &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Approve and sign 
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Route to signers in the correct order &lt;/li&gt;
&lt;li&gt;  Ensure every party signs the final version &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 5: Execute and store 
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Distribute the signed copy &lt;/li&gt;
&lt;li&gt;  Store securely with audit-ready records &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The approval process fails most often when versions split and signing order is unclear. &lt;/p&gt;

&lt;h2&gt;
  
  
  How BoldSign improves construction contract approvals 
&lt;/h2&gt;

&lt;p&gt;BoldSign streamlines contract execution for construction teams with features designed for multi-party workflows. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Templates&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Use reusable &lt;a href="https://boldsign.com/electronic-signature-features/templates?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;contract templates&lt;/a&gt; to standardize common construction agreements and speed up drafting.&lt;/p&gt;

&lt;p&gt;With document template, teams can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Draft contracts faster&lt;/li&gt;
&lt;li&gt;  Reduce missing fields and costly errors&lt;/li&gt;
&lt;li&gt;  Standardize contract language across projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Templates ensure consistency across bids, change orders, and subcontractor agreements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vdrub05iy4mf80t0bxi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vdrub05iy4mf80t0bxi.png" alt="create new template" width="800" height="380"&gt;&lt;/a&gt;create new template&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;E-signatures&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Enable secure, legally compliant &lt;a href="https://boldsign.com?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;eSignatures&lt;/a&gt; for on‑site teams and remote stakeholders.&lt;/p&gt;

&lt;p&gt;With eSignature, construction teams benefit from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Faster contract turnaround&lt;/li&gt;
&lt;li&gt;  Reduced reliance on paper and printing&lt;/li&gt;
&lt;li&gt;  Mobile‑friendly signing from any device&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Signing order and role routing&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Automatically route documents to the right stakeholders in sequence or parallel using &lt;a href="https://support.boldsign.com/kb/article/13927/allow-signers-sign-in-particular-order" rel="noopener noreferrer"&gt;signing order&lt;/a&gt; and role‑based workflows.&lt;/p&gt;

&lt;p&gt;Common flows include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Owner approval followed by contractor and subcontractor&lt;/li&gt;
&lt;li&gt;  Legal review before final client sign‑off&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This ensures approvals happen in the correct order without manual coordination.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automated reminders&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Reduce delays by automatically following up with pending signers. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-time tracking&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Monitor contract progress from send to completion using a centralized dashboard with real-time visibility through &lt;a href="https://support.boldsign.com/kb/article/14014/track-changes-on-a-document" rel="noopener noreferrer"&gt;document tracking&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Identify approval bottlenecks early&lt;/li&gt;
&lt;li&gt;  Monitor deadlines more effectively&lt;/li&gt;
&lt;li&gt;  Reduce status check emails and calls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Audit trails&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Maintain tamper‑evident records for compliance and accountability with the availability of detailed &lt;a href="https://support.boldsign.com/kb/article/14647/information-the-audit-trail-document-contains" rel="noopener noreferrer"&gt;audit trails&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Who signed the contract&lt;/li&gt;
&lt;li&gt;  When each signature was completed&lt;/li&gt;
&lt;li&gt;  All actions taken during the approval process&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is especially valuable for dispute resolution and regulatory audits.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ip1uvhtpqsmvabil5fa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ip1uvhtpqsmvabil5fa.png" alt="Audit Trail" width="800" height="512"&gt;&lt;/a&gt;Audit Trail&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion 
&lt;/h2&gt;

&lt;p&gt;A solid construction contract is a roadmap for project success. When your contract clearly defines scope, timelines, payments, responsibilities, and change control, you reduce disputes and keep work moving. &lt;/p&gt;

&lt;p&gt;With digital approvals and &lt;a href="https://boldsign.com/electronic-signature-features?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;eSignatures&lt;/a&gt;, teams can execute contracts faster, reduce manual coordination, and maintain audit-ready records. If you manage complex construction workflows, BoldSign can help standardize and speed up contract approvals. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Sign up for a free 30-day trial&lt;/a&gt; on the &lt;a href="https://boldsign.com?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign website&lt;/a&gt; or &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;request a demo&lt;/a&gt; to see it in action.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/boldsign-teams-api-guide" rel="noopener noreferrer"&gt;Make Contract Collaboration Effortless Across Teams with BoldSign API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/ai-document-search-in-boldsign/" rel="noopener noreferrer"&gt;Find Contracts Instantly with AI Document Search in BoldSign&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/ai-search-contracts-webinar-recap/" rel="noopener noreferrer"&gt;Webinar Show Notes: Find Contracts in Seconds with BoldSign AI Search&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>agreement</category>
      <category>contractsigning</category>
      <category>documents</category>
    </item>
    <item>
      <title>BoldSign Formula Fields: Automate Calculations in eSignature Documents</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Thu, 30 Apr 2026 04:04:47 +0000</pubDate>
      <link>https://forem.com/boldsign/boldsign-formula-fields-automate-calculations-in-esignature-documents-176m</link>
      <guid>https://forem.com/boldsign/boldsign-formula-fields-automate-calculations-in-esignature-documents-176m</guid>
      <description>&lt;p&gt;Manually calculating values in documents can be time-consuming and leave you prone to error, especially when dealing with contracts, invoices, or agreements that require dynamic values like totals, taxes, or discounts. You might struggle to ensure accuracy and consistency across multiple signers and documents. Repetitive manual entry of calculated fields like subtotals, taxes, and totals increases the risk of human error, which can lead to compliance issues or financial discrepancies. It can also cause delays in document turnaround because calculations need verification before sending.&lt;/p&gt;

&lt;p&gt;What if you could automate these calculations directly within your e-signature workflow? That’s where BoldSign formula fields come in.&lt;/p&gt;

&lt;h2&gt;
  
  
  What problems do formula fields solve in eSignature documents?
&lt;/h2&gt;

&lt;p&gt;With formula fields, you can define dynamic calculations directly in your e-signature documents using the BoldSign API.&lt;/p&gt;

&lt;p&gt;Key benefits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Automated calculations:&lt;/strong&gt; You can perform real-time calculations like totals, taxes, discounts, or custom formulas based on other field values.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Error reduction:&lt;/strong&gt; Reduce manual entry errors by computing values automatically, ensuring consistency and accuracy.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Improved user experience:&lt;/strong&gt; Signers don’t need to do math themselves. The document updates instantly as they fill in fields.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Dynamic content:&lt;/strong&gt; You can create smart documents that adapt based on user input, making them more interactive and professional.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Time savings:&lt;/strong&gt; Save time for both senders and signers by eliminating the need for manual calculations or post-signing edits.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Supports complex logic:&lt;/strong&gt; Use functions like IF for advanced scenarios.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How do BoldSign formula fields work?
&lt;/h2&gt;

&lt;p&gt;These formulas are built using supported operators, functions, and fields without storing static data. As signers enter values into the form, the formula fields in the document recalculate instantly. This ensures accurate results and reduces manual effort.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which fields, operators, and functions are supported?
&lt;/h2&gt;

&lt;p&gt;BoldSign &lt;a href="https://support.boldsign.com/kb/article/18910/configure-and-use-formula-fields" rel="noopener noreferrer"&gt;formula fields&lt;/a&gt; support various form fields, operators, and functions to help you streamline arithmetic calculations in your e-signature documents.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you add formula fields to a document API request?
&lt;/h2&gt;

&lt;p&gt;When creating or sending a document or template via the BoldSign API, you can add formula fields programmatically by including them in the &lt;code&gt;formFields&lt;/code&gt; array of your request payload.&lt;/p&gt;

&lt;p&gt;Here’s what to include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;fieldType&lt;/code&gt;: Set to “Formula” to indicate it’s a formula field.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;formulaFieldSettings&lt;/code&gt;: This object contains:

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;formulaExpression&lt;/code&gt;: The actual calculation logic (e.g., “[textbox1] – [textbox2]”). Use only the field ID in your formula expression.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;decimalPrecision&lt;/code&gt;: The number of decimal places to show in the result.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  What does a vehicle sales agreement example look like with formula fields?
&lt;/h2&gt;

&lt;p&gt;Let’s look at a practical example. Suppose you’re sending a vehicle sales agreement and want the signer to enter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Total vehicle value → [Textbox1].&lt;/li&gt;
&lt;li&gt;  Deposit amount → [Textbox2].&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From these inputs, you want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Calculate the remaining balance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Formula: Balance = [Textbox1]- [Textbox2]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Set the Payment Date to be seven days from the signing date.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Formula: PaymentDate = AddDays([SigningDate], 7)&lt;br&gt;&lt;br&gt;
(Payment should be made 7 days from the signing date.)&lt;/p&gt;

&lt;p&gt;When the document is sent via the BoldSign API, the balance and payment date are automatically calculated in real time as the signer fills in the values. This eliminates manual math, reduces errors, and improves the signing experience.&lt;/p&gt;

&lt;p&gt;Here are example code snippets for sending a signature request with formula fields via API.&lt;/p&gt;

&lt;p&gt;cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    curl &lt;span class="nt"&gt;-X&lt;/span&gt; &lt;span class="s1"&gt;'POST'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="s1"&gt;'https://api.boldsign.com/v1/document/send'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'accept: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'X-API-KEY: {your API key}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
        "Signers": [
          {
            "Name": "Hanky",
            "EmailAddress": " david@cubeflakes.com",
            "SignerType": "Signer",
            "DeliveryMode": "Email",
            "FormFields": [
              {
                "Id": "signature1",   
                "FieldType": "Signature",
                "PageNumber": 1,
                "Bounds": { "X": 50, "Y": 50, "Width": 100, "Height": 50 },
                "IsRequired": true
              },
              {
                "Id": "textbox1",              // TextBox 1
                "FieldType": "TextBox",
                "PageNumber": 1,
                "Bounds": { "X": 50, "Y": 100, "Width": 100, "Height": 30 },
                "IsRequired": true,
                "ValidationType": "NumbersOnly"
              },
              {
                "Id": "textbox2",          // TextBox 2
                "FieldType": "TextBox",
                "PageNumber": 1,
                "Bounds": { "X": 200, "Y": 100, "Width": 100, "Height": 30 },
                "IsRequired": true,
                "ValidationType": "NumbersOnly"
              },
              {
                "Id": "SigningDate",        // Signing Date
                "FieldType": "DateSigned",
                "PageNumber": 1,
                "Bounds": { "X": 200, "Y": 200, "Width": 125, "Height": 25 },
                "IsRequired": true
              },
              {
                "Id": "PaymentDate",     # Payment Date (7 days after Signing Date)
                "FieldType": "Formula",
                "PageNumber": 1,
                "Bounds": { "X": 50, "Y": 200, "Width": 200, "Height": 30 },
                "FormulaFieldSettings": {
                  "FormulaExpression": "AddDays([SigningDate],7)",
                }
              },
              {
                "Id": "Balance",   // Balance (Formula)
                "FieldType": "Formula",
                "PageNumber": 1,
                "Bounds": { "X": 50, "Y": 250, "Width": 200, "Height": 30 },
                "FormulaFieldSettings": {
                  "FormulaExpression": "[textbox1] - [textbox2]",
                  "DecimalPrecision": 1
                }
              }
            ],
            "Locale": "EN"
          }
        ],
        "ExpiryDays": 30,
        "Files": [
          "data:application/pdf;base64,JVBERi0xLjcKJcfs..." 
        ],
        "Title": "Vehicle Sales Agreement",
        "ExpiryDateType": "Days",
        "ExpiryValue": 60,
        }
      }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;c#&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ApiClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://api.boldsign.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Your API Key"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;DocumentClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

                    &lt;span class="c1"&gt;// Define all form fields&lt;/span&gt;
                    &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;formField&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="p"&gt;{&lt;/span&gt;
                        &lt;span class="c1"&gt;// Signature field&lt;/span&gt;
                        &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                            &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Signature"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;FieldType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Signature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;pageNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;

                        &lt;span class="c1"&gt;// TextBox 1&lt;/span&gt;
                        &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;TextBoxField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                            &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"textbox1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;validationType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BoldSign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ValidationType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NumbersOnly&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;pageNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                            &lt;span class="n"&gt;isRequired&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;

                        &lt;span class="c1"&gt;// TextBox 2&lt;/span&gt;
                        &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;TextBoxField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                            &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"textbox2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;validationType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BoldSign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ValidationType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NumbersOnly&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;pageNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                            &lt;span class="n"&gt;isRequired&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;

                        &lt;span class="c1"&gt;// Signing date&lt;/span&gt;
                        &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                            &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"SigningDate"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;FieldType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DateSigned&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;pageNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;125&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;25&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                            &lt;span class="n"&gt;isRequired&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;

                        &lt;span class="c1"&gt;// Payment date&lt;/span&gt;
                        &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                            &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"PaymentDate"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;FieldType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Formula&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;pageNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                            &lt;span class="n"&gt;isRequired&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;
                            &lt;span class="p"&gt;),&lt;/span&gt;

                        &lt;span class="c1"&gt;// Balance (formula)&lt;/span&gt;
                        &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                            &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Balance"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;FieldType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Formula&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;pageNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;250&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                            &lt;span class="n"&gt;isRequired&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;
                            &lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="p"&gt;};&lt;/span&gt;

                    &lt;span class="n"&gt;formField&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;FormulaFieldSettings&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;FormulaFieldSettings&lt;/span&gt;
                    &lt;span class="p"&gt;{&lt;/span&gt;
                        &lt;span class="n"&gt;FormulaExpression&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"AddDays([SigningDate],7)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="p"&gt;};&lt;/span&gt;
                    &lt;span class="n"&gt;formField&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;FormulaFieldSettings&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;FormulaFieldSettings&lt;/span&gt;
                    &lt;span class="p"&gt;{&lt;/span&gt;
                        &lt;span class="n"&gt;FormulaExpression&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"[textbox1] - [textbox2]"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="n"&gt;DecimalPrecision&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
                    &lt;span class="p"&gt;};&lt;/span&gt;

                    &lt;span class="c1"&gt;// Document details&lt;/span&gt;
                    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentDetails&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;SendForSign&lt;/span&gt;
                    &lt;span class="p"&gt;{&lt;/span&gt;
                        &lt;span class="n"&gt;Title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Agreement"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="n"&gt;Signers&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;DocumentSigner&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="p"&gt;{&lt;/span&gt;
                            &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;DocumentSigner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                                &lt;span class="n"&gt;signerName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"David"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                &lt;span class="n"&gt;signerType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;SignerType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Signer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                &lt;span class="n"&gt;signerEmail&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"david@cubeflakes.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                &lt;span class="n"&gt;formFields&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;formField&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                        &lt;span class="p"&gt;},&lt;/span&gt;
                        &lt;span class="n"&gt;Files&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IDocumentFile&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="p"&gt;{&lt;/span&gt;
                            &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;DocumentFilePath&lt;/span&gt;
                            &lt;span class="p"&gt;{&lt;/span&gt;
                                &lt;span class="n"&gt;ContentType&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"application/pdf"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                &lt;span class="n"&gt;FilePath&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Your File Path.pdf"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="p"&gt;}&lt;/span&gt;
                        &lt;span class="p"&gt;},&lt;/span&gt;
                    &lt;span class="p"&gt;};&lt;/span&gt;

                    &lt;span class="c1"&gt;// Send document&lt;/span&gt;
                    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentCreated&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;documentClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SendDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documentDetails&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                    &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"Document sent successfully. Document ID: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;documentCreated&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="n"&gt;DocumentId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;    &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;
    &lt;span class="n"&gt;configuration&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Your API Key &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ApiClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;api_client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;document_api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_client&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="c1"&gt;# Signature field
&lt;/span&gt;        &lt;span class="n"&gt;signature_field&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;fieldType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Signature&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;pageNumber&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="c1"&gt;# Total vehicle value
&lt;/span&gt;        &lt;span class="n"&gt;textbox1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;textbox1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;fieldType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TextBox&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;pageNumber&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="n"&gt;validationType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NumbersOnly&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;isRequired&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="c1"&gt;# Deposit amount
&lt;/span&gt;        &lt;span class="n"&gt;textbox2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;textbox2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;fieldType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TextBox&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;pageNumber&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="n"&gt;validationType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NumbersOnly&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;isRequired&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;# Balance formula
&lt;/span&gt;    &lt;span class="n"&gt;formula_balance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FormulaBalance&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;fieldType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Formula&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;pageNumber&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;formulaFieldSettings&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;FormulaFieldSettings&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;formulaExpression&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;[textbox1] - [textbox2]&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
            &lt;span class="n"&gt;decimalPrecision&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;#  Signing date
&lt;/span&gt;    &lt;span class="n"&gt;signing_date_field&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SigningDate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;fieldType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DateSigned&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="n"&gt;isRequired&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;pageNumber&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;

    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;# Payment date (seven days after signing date)
&lt;/span&gt;    &lt;span class="n"&gt;payment_date_field&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PaymentDate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;fieldType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Formula&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;pageNumber&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;250&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;formulaFieldSettings&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;FormulaFieldSettings&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;formulaExpression&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AddDays([SigningDate], 7)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;# Signer with all fields
&lt;/span&gt;    &lt;span class="n"&gt;document_signer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;DocumentSigner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;David&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;emailAddress&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;david@cubeflakes.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;signerType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Signer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;formFields&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="n"&gt;signature_field&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;textbox1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;textbox2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;formula_balance&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;signing_date_field&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;payment_date_field&lt;/span&gt;
        &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;send_for_sign&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SendForSign&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Vehicle Sales Agreement&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Your file path.pdf&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;signers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;document_signer&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;document_created&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;document_api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_document&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;send_for_sign&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PHP&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;    &lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="k"&gt;require_once&lt;/span&gt; &lt;span class="s2"&gt;"vendor/autoload.php"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Configuration&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Api\DocumentApi&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;BoldSign\Model\&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nc"&gt;DocumentSigner&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nc"&gt;SendForSign&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nc"&gt;FileInfo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nc"&gt;FormulaFieldSettings&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nc"&gt;EditableDateFieldSettings&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="nv"&gt;$config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$config&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Your API Key'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$document_api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$config&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// Signature field&lt;/span&gt;
    &lt;span class="nv"&gt;$signatureField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$signatureField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFieldType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Signature'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signatureField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setPageNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signatureField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setBounds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;
    &lt;span class="c1"&gt;// Total vehicle value&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'textbox1'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFieldType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'TextBox'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setPageNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setBounds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setValidationType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'NumbersOnly'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setIsRequired&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// Deposit amount&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'textbox2'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFieldType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'TextBox'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setPageNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setBounds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setValidationType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'NumbersOnly'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$textbox2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setIsRequired&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// Signing date&lt;/span&gt;
    &lt;span class="nv"&gt;$signingDateField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$signingDateField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'SigningDate'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signingDateField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFieldType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'DateSigned'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signingDateField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setPageNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signingDateField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setBounds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;
    &lt;span class="nv"&gt;$signingDateField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setIsRequired&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// Payment date (seven days after signing date)&lt;/span&gt;
    &lt;span class="nv"&gt;$paymentDate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$paymentDate&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'PaymentDate'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$paymentDate&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFieldType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Formula'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$paymentDate&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setPageNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$paymentDate&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setBounds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;
    &lt;span class="nv"&gt;$paymentSettings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormulaFieldSettings&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$paymentSettings&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFormulaExpression&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'AddDays([SigningDate],7)'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$paymentDate&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFormulaFieldSettings&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$paymentSettings&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// Balance formula&lt;/span&gt;
    &lt;span class="nv"&gt;$balanceField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$balanceField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Balance'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$balanceField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFieldType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Formula'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$balanceField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setPageNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$balanceField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setBounds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;250&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;
    &lt;span class="nv"&gt;$balanceSettings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormulaFieldSettings&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$balanceSettings&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFormulaExpression&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'[textbox1] - [textbox2]'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$balanceSettings&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setDecimalPrecision&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$balanceField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFormulaFieldSettings&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$balanceSettings&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// Signer&lt;/span&gt;
    &lt;span class="nv"&gt;$document_signer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentSigner&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$document_signer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"David"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$document_signer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setEmailAddress&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"david@cubeflakes.com"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$document_signer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setSignerType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Signer"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$document_signer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFormFields&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="nv"&gt;$signatureField&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$textbox1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$textbox2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$signingDateField&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$paymentDate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$balanceField&lt;/span&gt;
    &lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="nv"&gt;$send_for_sign&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;SendForSign&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$send_for_sign&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFiles&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'Non Disclosure Agreement.pdf'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="nv"&gt;$send_for_sign&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setSigners&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nv"&gt;$document_signer&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="nv"&gt;$send_for_sign&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setTitle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Vehicle Sales Agreement'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// Send document&lt;/span&gt;
    &lt;span class="nv"&gt;$document_created&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$document_api&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;sendDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$send_for_sign&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Java&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nc"&gt;ApiClient&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getDefaultApiClient&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setApiKey&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Your API Key"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;DocumentApi&lt;/span&gt; &lt;span class="n"&gt;documentApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="c1"&gt;// Signature field&lt;/span&gt;
            &lt;span class="nc"&gt;FormField&lt;/span&gt; &lt;span class="n"&gt;signatureField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;signatureField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFieldType&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;SIGNATURE&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;signatureField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setPageNumber&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;signatureField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setBounds&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="c1"&gt;// Total vehicle value&lt;/span&gt;
            &lt;span class="nc"&gt;FormField&lt;/span&gt; &lt;span class="n"&gt;vehicleValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;vehicleValue&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setId&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"textbox1"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;vehicleValue&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFieldType&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;TEXT_BOX&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;vehicleValue&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setPageNumber&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;vehicleValue&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setBounds&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="n"&gt;vehicleValue&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setValidationType&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ValidationTypeEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;NUMBERS_ONLY&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="c1"&gt;// Deposit amount&lt;/span&gt;
            &lt;span class="nc"&gt;FormField&lt;/span&gt; &lt;span class="n"&gt;depositAmount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;depositAmount&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setId&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"textbox2"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;depositAmount&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFieldType&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;TEXT_BOX&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;depositAmount&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setPageNumber&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;depositAmount&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setBounds&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="n"&gt;depositAmount&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setValidationType&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ValidationTypeEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;NUMBERS_ONLY&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="c1"&gt;// Signing date &lt;/span&gt;
            &lt;span class="nc"&gt;FormField&lt;/span&gt; &lt;span class="n"&gt;signingDate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;signingDate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setId&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"SigningDate"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;signingDate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFieldType&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="no"&gt;DATE_SIGNED&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
            &lt;span class="n"&gt;signingDate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setPageNumber&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;signingDate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setBounds&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;180&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="n"&gt;signingDate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDateFormat&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"MM/dd/yyyy"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
            &lt;span class="c1"&gt;// Payment date&lt;/span&gt;
            &lt;span class="nc"&gt;FormField&lt;/span&gt; &lt;span class="n"&gt;paymentDate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
             &lt;span class="n"&gt;paymentDate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setId&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"PaymentDate"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
             &lt;span class="n"&gt;paymentDate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFieldType&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;FORMULA&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
             &lt;span class="n"&gt;paymentDate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setPageNumber&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
             &lt;span class="n"&gt;paymentDate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setBounds&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;140&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;180&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="nc"&gt;FormulaFieldSettings&lt;/span&gt; &lt;span class="n"&gt;paymentSettings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormulaFieldSettings&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
             &lt;span class="n"&gt;paymentSettings&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFormulaExpression&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"AddDays([SigningDate],7)"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
             &lt;span class="n"&gt;paymentDate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFormulaFieldSettings&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="n"&gt;paymentSettings&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="c1"&gt;// Balance &lt;/span&gt;
            &lt;span class="nc"&gt;FormField&lt;/span&gt; &lt;span class="n"&gt;balanceField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;balanceField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setId&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Balance"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;balanceField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFieldType&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;FORMULA&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;balanceField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setPageNumber&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;balanceField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setBounds&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="nc"&gt;FormulaFieldSettings&lt;/span&gt; &lt;span class="n"&gt;balanceSettings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormulaFieldSettings&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;balanceSettings&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFormulaExpression&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"[textbox1] - [textbox2]"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;  
            &lt;span class="n"&gt;balanceSettings&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDecimalPrecision&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;balanceField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFormulaFieldSettings&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;balanceSettings&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="c1"&gt;// Signer&lt;/span&gt;
            &lt;span class="nc"&gt;DocumentSigner&lt;/span&gt; &lt;span class="n"&gt;signer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentSigner&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;signer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setName&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"David"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;signer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setEmailAddress&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"david@cubeflakes.com"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;signer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setSignerType&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;DocumentSigner&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;SignerTypeEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;SIGNER&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;signer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFormFields&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
                    &lt;span class="n"&gt;signatureField&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;vehicleValue&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;depositAmount&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;signingDate&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;paymentDate&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;balanceField&lt;/span&gt;
            &lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="c1"&gt;// Send document&lt;/span&gt;
            &lt;span class="nc"&gt;SendForSign&lt;/span&gt; &lt;span class="n"&gt;sendForSign&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;SendForSign&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="nc"&gt;File&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;File&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Your file path.pdf"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
            &lt;span class="n"&gt;sendForSign&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFiles&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="n"&gt;sendForSign&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setSigners&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;signer&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="n"&gt;sendForSign&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setTitle&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Vehicle Sales Agreement"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;DocumentCreated&lt;/span&gt; &lt;span class="n"&gt;documentCreated&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;documentApi&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sendDocument&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sendForSign&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Document created: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;documentCreated&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getDocumentId&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Node js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;DocumentSigner&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;SendForSign&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;boldsign&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;documentApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Your API KEY&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Signature field&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;signatureField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;signatureField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fieldType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Signature&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signatureField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pageNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signatureField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;signatureField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signatureField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signatureField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signatureField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Total vehicle value&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;textbox1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;textbox1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;textbox1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fieldType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TextBox&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pageNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;textbox1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;validationType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;NumbersOnly&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isRequired&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Deposit amount&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;textbox2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;textbox2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;textbox2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fieldType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TextBox&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pageNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;textbox2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;validationType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;NumbersOnly&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;textbox2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isRequired&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Balance formula&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;formulaBalance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;formulaBalance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;FormulaBalance&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formulaBalance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fieldType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Formula&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formulaBalance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pageNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formulaBalance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;formulaBalance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formulaBalance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formulaBalance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formulaBalance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formulaBalance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;formulaFieldSettings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;formulaExpression&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;[textbox1] - [textbox2]&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;decimalPrecision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="c1"&gt;// Signing date&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;signingDateField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;signingDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SigningDate&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signingDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fieldType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DateSigned&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signingDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isRequired&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signingDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pageNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signingDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;signingDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signingDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signingDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signingDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Payment date (seven days after signing date)&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;paymentDateField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;paymentDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;PaymentDate&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;paymentDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fieldType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Formula&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;paymentDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pageNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;paymentDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;paymentDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;paymentDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;250&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;paymentDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;paymentDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;paymentDateField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;formulaFieldSettings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;formulaExpression&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;AddDays([SigningDate], 7)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="c1"&gt;// Signer with all fields&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentSigner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentSigner&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;documentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;David&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;documentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;emailAddress&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;david@cubeflakes.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;documentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;signerType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;DocumentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SignerTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Signer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;documentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;formFields&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="nx"&gt;signatureField&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;textbox1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;textbox2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;formulaBalance&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;signingDateField&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;paymentDateField&lt;/span&gt;
    &lt;span class="p"&gt;];&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;files&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createReadStream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Your File Path.pdf&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sendForSign&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;SendForSign&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;sendForSign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Vehicle Sales Agreement&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;sendForSign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;signers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;documentSigner&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="nx"&gt;sendForSign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;files&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;files&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentCreated&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;documentApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sendDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sendForSign&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the code examples above, replace the placeholders &lt;strong&gt;Your API Key&lt;/strong&gt; and file path with your actual API key and the correct file path. In the formula expression section, use only the field ID. Once executed, the document will be sent to the specified signers, and any formula fields will automatically calculate values based on their input in real time, as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw438ew77jpfnlmdxe3jy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw438ew77jpfnlmdxe3jy.png" alt="Formula Fields"&gt;&lt;/a&gt;Formula Fields&lt;/p&gt;

&lt;h2&gt;
  
  
  What best practices help formula fields work reliably?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Keep formulas simple:&lt;/strong&gt; Avoid overly complex expressions for clarity.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Validate inputs:&lt;/strong&gt; Use NumbersOnly or other validation types.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Use decimal precision wisely:&lt;/strong&gt; Match financial standards in your industry.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Test templates:&lt;/strong&gt; Send sandbox documents to confirm formulas work as expected.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Think about the user experience:&lt;/strong&gt; Place formula fields logically so signers see results immediately.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Using formula fields via API brings a new level of automation to your e-signature workflows. Whether you’re in sales, finance, HR, or legal, this feature can help you deliver smarter, faster, and more reliable documents.&lt;/p&gt;

&lt;p&gt;Ready to automate your document calculations? Try out formula fields with BoldSign today!&lt;/p&gt;

&lt;p&gt;Sign up for a &lt;a href="https://account.boldsign.com/signup?planId=1076&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;free sandbox account&lt;/a&gt; and explore our &lt;a href="https://developers.boldsign.com/api-overview/getting-started" rel="noopener noreferrer"&gt;developer documentation&lt;/a&gt; to learn more about our APIs. For any assistance, visit our &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;support portal&lt;/a&gt; to connect with our team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/creating-conditional-fields-to-the-documents/" rel="noopener noreferrer"&gt;Creating Conditional Fields in eSignature Documents with the BoldSign API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/organize-esignature-documents-using-boldsign-tags/" rel="noopener noreferrer"&gt;Organize Your eSignature Documents Using BoldSign Tags&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/automate-calculations-esignatures-formula-fields/" rel="noopener noreferrer"&gt;Automate Calculations in eSignature Documents with Formula Fields&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>calculator</category>
      <category>boldsign</category>
      <category>documents</category>
    </item>
    <item>
      <title>ASP.NET Core Minimal APIs: When to Use Them and When Not To Use Them</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Wed, 29 Apr 2026 03:44:33 +0000</pubDate>
      <link>https://forem.com/boldsign/aspnet-core-minimal-apis-when-to-use-them-and-when-not-to-use-them-55hg</link>
      <guid>https://forem.com/boldsign/aspnet-core-minimal-apis-when-to-use-them-and-when-not-to-use-them-55hg</guid>
      <description>&lt;p&gt;Minimal APIs are an endpoint-first way to build HTTP APIs in ASP.NET Core by mapping routes directly to handlers (no controllers required). They’re best for teams building small-to-medium, bounded services (microservices, BFFs, webhooks, internal APIs) that want fast iteration with less ceremony, &lt;em&gt;as long as you add structure early&lt;/em&gt;. They solve the “too much framework for a small API” problem, and they matter because choosing the wrong model (or letting Program.cs become a dumping ground) creates long-term maintenance pain.&lt;/p&gt;

&lt;h2&gt;
  
  
  What decision should you make: Minimal APIs or Controllers?
&lt;/h2&gt;

&lt;p&gt;Use this checklist and pick the first match.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose Minimal APIs when your API is bounded and you can enforce conventions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  You’re building a focused service boundary (webhooks, microservice, BFF, internal tool API).&lt;/li&gt;
&lt;li&gt;  You can enforce a module convention (route groups + one file per feature).&lt;/li&gt;
&lt;li&gt;  Your team likes explicit routing and fluent metadata (OpenAPI tags, response types).&lt;/li&gt;
&lt;li&gt;  You want cross-cutting behavior via middleware + endpoint filters rather than MVC filters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Choose Controllers when the API surface is large or the team is large&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  You expect many endpoints across multiple domains/features.&lt;/li&gt;
&lt;li&gt;  You rely heavily on attribute-driven conventions (routing/filters/versioning patterns).&lt;/li&gt;
&lt;li&gt;  Many developers contribute and you need high discoverability via familiar conventions.&lt;/li&gt;
&lt;li&gt;  Your org already has controller-first templates, libraries, or standards.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; If you can’t commit to a module convention on day 1, controllers are usually the safer default.&lt;/p&gt;

&lt;h2&gt;
  
  
  What will you build in this guide?
&lt;/h2&gt;

&lt;p&gt;You’ll build a production-shaped Minimal API starter with one clear outcome:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;End result:&lt;/strong&gt; A Minimal API that’s structured with route groups + feature modules, uses endpoint-filter validation, returns consistent Problem Details errors, exposes OpenAPI docs, and is verifiable with curl + an integration test.&lt;/p&gt;

&lt;h2&gt;
  
  
  What prerequisites do you need before starting?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  .NET SDK installed&lt;/li&gt;
&lt;li&gt;  Basic C# knowledge&lt;/li&gt;
&lt;li&gt;  Terminal access (PowerShell/Bash)&lt;/li&gt;
&lt;li&gt;  Optional: Postman/Insomnia&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; dotnet –version prints a version successfully.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does a Minimal API request flow work in production?
&lt;/h2&gt;

&lt;p&gt;A[HTTP Request] –&amp;gt; B[Middleware pipeline]&lt;/p&gt;

&lt;p&gt;B –&amp;gt; C[Routing selects endpoint]&lt;/p&gt;

&lt;p&gt;C –&amp;gt; D[Endpoint filters (optional)]&lt;/p&gt;

&lt;p&gt;D –&amp;gt; E[Handler runs]&lt;/p&gt;

&lt;p&gt;E –&amp;gt; F[Result writes response (JSON, status code)]&lt;/p&gt;

&lt;p&gt;F –&amp;gt; G[HTTP Response]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; You can point to exactly where you’ll put (1) global behavior (middleware), (2) per-feature behavior (endpoint filters), and (3) business orchestration (handlers).&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you avoid a giant Program.cs with Minimal APIs?
&lt;/h2&gt;

&lt;p&gt;Use a feature-module convention:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Program.cs only wires dependencies, middleware, and “maps modules”&lt;/li&gt;
&lt;li&gt;  Endpoints/Endpoints.cs defines routes for a feature via a route group&lt;/li&gt;
&lt;li&gt;  Infrastructure/ holds cross-cutting filters (validation, correlation, etc.)&lt;/li&gt;
&lt;li&gt;  Services/ holds business logic (handlers stay thin)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; You can add a new feature by creating one new Endpoints/*Endpoints.cs file, without touching existing endpoint files.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you build the production starter step by step?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1) How do you create a Minimal API project?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.NET&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    dotnet new web &lt;span class="nt"&gt;-n&lt;/span&gt; MinimalApiStarter 
    &lt;span class="nb"&gt;cd &lt;/span&gt;MinimalApiStarter 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; dotnet run starts the server without errors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) How do you enable OpenAPI document generation?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.NET&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    Add the official OpenAPI package: 
    dotnet add package Microsoft.AspNetCore.OpenApi 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; Package install succeeds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) How do you create a service layer so handlers don’t become “mini controllers”?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.NET&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="n"&gt;Create&lt;/span&gt; &lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ProductService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;MinimalApiStarter.Services&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;record&lt;/span&gt; &lt;span class="nc"&gt;ProductDto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;Id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;decimal&lt;/span&gt; &lt;span class="n"&gt;Price&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;record&lt;/span&gt; &lt;span class="nc"&gt;CreateProductRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;decimal&lt;/span&gt; &lt;span class="n"&gt;Price&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;IProductService&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;GetAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;CancellationToken&lt;/span&gt; &lt;span class="n"&gt;ct&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;CreateAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CreateProductRequest&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;CancellationToken&lt;/span&gt; &lt;span class="n"&gt;ct&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;sealed&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ProductService&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;IProductService&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;GetAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;CancellationToken&lt;/span&gt; &lt;span class="n"&gt;ct&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;FromResult&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="m"&gt;404&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ProductDto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Demo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;10m&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;CreateAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CreateProductRequest&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;CancellationToken&lt;/span&gt; &lt;span class="n"&gt;ct&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;FromResult&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ProductDto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;123&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Price&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; No ASP.NET-specific types appear in the service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4) How do you centralize validation using an endpoint filter?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.NET&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="n"&gt;Create&lt;/span&gt; &lt;span class="n"&gt;Infrastructure&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ValidateCreateProductFilter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.AspNetCore.Http.HttpResults&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;MinimalApiStarter.Services&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;MinimalApiStarter.Infrastructure&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;sealed&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ValidateCreateProductFilter&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;IEndpointFilter&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;ValueTask&lt;/span&gt; &lt;span class="nf"&gt;InvokeAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="n"&gt;EndpointFilterInvocationContext&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="n"&gt;EndpointFilterDelegate&lt;/span&gt; &lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
       &lt;span class="p"&gt;{&lt;/span&gt;
           &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Arguments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;OfType&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;FirstOrDefault&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

           &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt; &lt;span class="k"&gt;is&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
               &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;TypedResults&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;BadRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Request body is required."&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

           &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;errors&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Dictionary&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

           &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;IsNullOrWhiteSpace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
              &lt;span class="n"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s"&gt;"Name is required."&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;

           &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Price&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
              &lt;span class="n"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"price"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s"&gt;"Price must be &amp;gt;= 0."&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;

           &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Count&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
               &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;TypedResults&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ValidationProblem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

           &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;next&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
       &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; Validation rules are written once and reused, handlers stay clean.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5) How do you define endpoints as a feature module with a route group?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.NET&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="n"&gt;Create&lt;/span&gt; &lt;span class="n"&gt;Endpoints&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ProductsEndpoints&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.AspNetCore.Http.HttpResults&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;MinimalApiStarter.Infrastructure&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;MinimalApiStarter.Services&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;MinimalApiStarter.Endpoints&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ProductsEndpoints&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="n"&gt;RouteGroupBuilder&lt;/span&gt; &lt;span class="nf"&gt;MapProductsEndpoints&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt; &lt;span class="n"&gt;IEndpointRouteBuilder&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="k"&gt;group&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MapGroup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/api/products"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithTags&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Products"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RequireAuthorization&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"api"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;group&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MapGet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/{id:int}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Results&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Ok&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ProductDto&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;,&lt;/span&gt; &lt;span class="n"&gt;NotFound&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;IProductService&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;CancellationToken&lt;/span&gt; &lt;span class="n"&gt;ct&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;product&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ct&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;product&lt;/span&gt; &lt;span class="k"&gt;is&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;TypedResults&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;NotFound&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;TypedResults&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Ok&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;})&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Produces&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ProductDto&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="n"&gt;StatusCodes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Status200OK&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Produces&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;StatusCodes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Status404NotFound&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithOpenApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="k"&gt;group&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MapPost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Created&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ProductDto&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="n"&gt;CreateProductRequest&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;IProductService&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;CancellationToken&lt;/span&gt; &lt;span class="n"&gt;ct&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;created&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;CreateAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ct&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;TypedResults&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Created&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"/api/products/&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;created&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;created&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;})&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddEndpointFilter&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ValidateCreateProductFilter&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;()&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Produces&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ProductDto&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="n"&gt;StatusCodes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Status201Created&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ProducesValidationProblem&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithOpenApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;group&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; No endpoints are mapped inside Program.cs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6) How do you wire auth, ProblemDetails, OpenAPI, and modules in Program.cs?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.NET&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="n"&gt;Replace&lt;/span&gt; &lt;span class="n"&gt;Program&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cs&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;MinimalApiStarter.Endpoints&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;MinimalApiStarter.Services&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;WebApplication&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;CreateBuilder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// OpenAPI document generation&lt;/span&gt;
    &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddOpenApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="c1"&gt;// Problem Details support (standardized error shape)&lt;/span&gt;
    &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddProblemDetails&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="c1"&gt;// Demo authorization policy (replace with real auth in production)&lt;/span&gt;
    &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddAuthorization&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddPolicy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"api"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;policy&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;policy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RequireAssertion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddScoped&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Build&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="c1"&gt;// Centralized exception handler (works well with ProblemDetails)&lt;/span&gt;
    &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;UseExceptionHandler&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;UseAuthorization&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="c1"&gt;// Expose OpenAPI JSON endpoint&lt;/span&gt;
    &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MapOpenApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="c1"&gt;// Map feature modules&lt;/span&gt;
    &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MapProductsEndpoints&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="c1"&gt;// For integration tests (WebApplicationFactory)&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;partial&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Program&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; dotnet run compiles and starts successfully.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you test and verify the API?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;How do you run the API locally?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.NET&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    dotnet run 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;How do you verify GET returns a product?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    curl &lt;span class="nt"&gt;-i&lt;/span&gt; http://localhost:5000/api/products/1 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;200 OK &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;JSON like: {“id”:1,”name”:”Demo”,”price”:10} &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; You get a 200 with JSON for /1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do you verify GET returns 404 for missing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    curl &lt;span class="nt"&gt;-i&lt;/span&gt; http://localhost:5000/api/products/404 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  404 Not Found&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; /404 returns 404.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do you verify validation runs via the endpoint filter?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    curl &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://localhost:5000/api/products &lt;span class="se"&gt;\ &lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\ &lt;/span&gt;
      &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="se"&gt;\"\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;price&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:-1}"&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  400 Bad Request &lt;/li&gt;
&lt;li&gt;  A validation payload (from ValidationProblem) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; Validation fails before the handler runs.&lt;/p&gt;

&lt;p&gt;How do you verify OpenAPI is being generated?&lt;/p&gt;

&lt;p&gt;Fetch the OpenAPI JSON exposed by MapOpenApi() (path depends on your ASP.NET Core version/config). Confirm you see a JSON document containing /api/products/{id} and /api/products.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; OpenAPI JSON includes your endpoints and response metadata.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you add an integration test to prove endpoint wiring works?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1) How do you add a test project?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.NET&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    dotnet new xunit &lt;span class="nt"&gt;-n&lt;/span&gt; MinimalApiStarter.Tests 
    dotnet add MinimalApiStarter.Tests reference MinimalApiStarter 
    dotnet add MinimalApiStarter.Tests package Microsoft.AspNetCore.Mvc.Testing 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2) How do you write a minimal integration test?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.NET&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="n"&gt;Create&lt;/span&gt; &lt;span class="n"&gt;MinimalApiStarter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Tests&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ProductsApiTests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Net&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.AspNetCore.Mvc.Testing&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Xunit&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ProductsApiTests&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;IClassFixture&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; 
    &lt;span class="p"&gt;{&lt;/span&gt; 
        &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="n"&gt;HttpClient&lt;/span&gt; &lt;span class="n"&gt;_client&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 

        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;ProductsApiTests&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;WebApplicationFactory&lt;/span&gt; &lt;span class="n"&gt;factory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
        &lt;span class="p"&gt;{&lt;/span&gt; 
            &lt;span class="n"&gt;_client&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;factory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;CreateClient&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
        &lt;span class="p"&gt;}&lt;/span&gt; 

        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Fact&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; 
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;Get_Product_ReturnsOk&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; 
        &lt;span class="p"&gt;{&lt;/span&gt; 
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/api/products/1"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
            &lt;span class="n"&gt;Assert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Equal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;HttpStatusCode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OK&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;StatusCode&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
        &lt;span class="p"&gt;}&lt;/span&gt; 

        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Fact&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; 
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;Get_MissingProduct_ReturnsNotFound&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; 
        &lt;span class="p"&gt;{&lt;/span&gt; 
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/api/products/404"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
            &lt;span class="n"&gt;Assert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Equal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;HttpStatusCode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NotFound&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;StatusCode&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
        &lt;span class="p"&gt;}&lt;/span&gt; 
    &lt;span class="p"&gt;}&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run:&lt;/p&gt;

&lt;p&gt;.NET&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    dotnet &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; Tests pass and confirm routing + module mapping works.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the most common production mistakes with Minimal APIs and how do you fix them?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1) Why did my Minimal API turn into a “giant Program.cs”?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; You mapped endpoints directly in Program.cs as the project grew.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Move each feature into Endpoints/_Endpoints.cs with Map_Endpoints().&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Why are my endpoints inconsistent (validation, errors, logging)?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Each handler does its own checks and error shapes.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Use endpoint filters for validation, and standardize error responses using Problem Details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Why does RequireAuthorization(“api”) throw “policy not found”?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Policy wasn’t registered or name mismatch.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Ensure AddAuthorization(options =&amp;gt; options.AddPolicy(“api”, …)) matches exactly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4) Why does my POST look like the handler runs even with bad input?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Validation is in-handler, or the filter wasn’t applied.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Confirm .AddEndpointFilter() is on the endpoint or group.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5) Why is my OpenAPI endpoint returning 404?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; OpenAPI services weren’t added or endpoint wasn’t mapped.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Confirm builder.Services.AddOpenApi() and app.MapOpenApi() are both present.&lt;/p&gt;

&lt;h2&gt;
  
  
  What did you achieve, and what should you do next?
&lt;/h2&gt;

&lt;p&gt;You now have a Minimal API starter that’s intentionally “production-shaped”:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Route groups + feature modules&lt;/strong&gt; keep code discoverable &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Endpoint-filter validation&lt;/strong&gt; keeps handlers thin &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;ProblemDetails&lt;/strong&gt; gives predictable error responses &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;OpenAPI generation&lt;/strong&gt; keeps API docs accurate &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Integration tests&lt;/strong&gt; prove wiring won’t regress &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Next step:&lt;/strong&gt; Replace the demo authorization policy with real authentication (JWT/OAuth), then align your API security checklist with OWASP’s API Security Top 10.&lt;/p&gt;

&lt;p&gt;Start today and unlock all features of BoldSign.&lt;/p&gt;

&lt;p&gt;Need assistance? Request a &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt; or visit our &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;Support Portal&lt;/a&gt; for quick help.&lt;/p&gt;

&lt;p&gt;Bring fast, secure eSignatures to your Minimal APIs with BoldSign’s developer-friendly API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://account.boldsign.com/signup?planId=1076&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Try BoldSign API Free&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/long-running-tasks-asp-net-core-best-practices/" rel="noopener noreferrer"&gt;Mastering Long-Running Tasks in ASP.NET Core Without Blocking Requests&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/aspnet-core-jwt-authentication-guide/" rel="noopener noreferrer"&gt;ASP.NET Core JWT Authentication: Setup, Validation, and Best Practices&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/aspnet-core-background-jobs-hosted-services-hangfire-quartz/" rel="noopener noreferrer"&gt;Modern Background Jobs in ASP.NET Core: Comparing Hosted Services, Hangfire, and Quartz.NET&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt; &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>api</category>
      <category>esignatureapi</category>
      <category>documents</category>
    </item>
    <item>
      <title>Prevent “I Didn’t Sign This” Claims with ID Verification Methods &amp; Audit Trails</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Tue, 28 Apr 2026 05:29:15 +0000</pubDate>
      <link>https://forem.com/boldsign/prevent-i-didnt-sign-this-claims-with-id-verification-methods-audit-trails-4h57</link>
      <guid>https://forem.com/boldsign/prevent-i-didnt-sign-this-claims-with-id-verification-methods-audit-trails-4h57</guid>
      <description>&lt;p&gt;“I didn’t sign this” claims, also known as repudiation claims, pose a serious risk in electronic signature workflows. They can delay deals, trigger costly disputes, damage trust, and create compliance issues, especially for legal paperwork, high‑value contracts, financial documents, and HR agreements. BoldSign effectively minimizes these risks by combining advanced signer &lt;a href="https://boldsign.com/electronic-signature-features/signer-identity-verification?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;identity verification&lt;/a&gt; with comprehensive, tamper-evident &lt;a href="https://support.boldsign.com/kb/article/14647/information-the-audit-trail-document-contains" rel="noopener noreferrer"&gt;audit trails&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This layered approach delivers undeniable proof of who signed, when they signed, their intent, and that the document remained unchanged, ensuring strong non-repudiation and legally defensible agreements.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are repudiation claims
&lt;/h2&gt;

&lt;p&gt;Repudiation claims happen when a signer denies signing a document or claims the signature was unauthorized, forged, or completed through a compromised account. In electronic signature workflows, these disputes can delay agreements, create legal challenges, and increase operational risk. They are especially common in low-security workflows that rely only on email access without stronger identity checks.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the risk of repudiation in electronic signatures
&lt;/h2&gt;

&lt;p&gt;Repudiation occurs when a signer denies signing a document, claiming it was forged, unauthorized, or completed through a compromised account. This is more common in basic email-only workflows with minimal identity checks. High-value or regulated agreements are especially vulnerable, as disputes can invalidate contracts, lead to legal challenges, and cause financial or operational harm.&lt;/p&gt;

&lt;p&gt;For an electronic signature to be enforceable and provide non-repudiation, it must prove three key elements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Signer intent –&lt;/strong&gt; Clear evidence they meant to sign.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Signer identity –&lt;/strong&gt; Reasonable (or strong) confirmation of who they are.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Document integrity –&lt;/strong&gt; Proof the document wasn’t altered after signing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;BoldSign exceeds these requirements through layered &lt;a href="https://boldsign.com/security-policy?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;security features&lt;/a&gt;, making repudiation claims extremely difficult to sustain.&lt;/p&gt;

&lt;h2&gt;
  
  
  BoldSign’s advanced identity verification methods
&lt;/h2&gt;

&lt;p&gt;BoldSign offers flexible, multi-layered &lt;a href="https://support.boldsign.com/kb/article/20362/authentication-frequency-settings" rel="noopener noreferrer"&gt;authentication options&lt;/a&gt; to confirm the signer is the authorized person before they access or complete the document. You can apply these selectively per signer (including in multi-party workflows) or standardize them via templates.&lt;/p&gt;

&lt;p&gt;Key methods include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Email OTP –&lt;/strong&gt; A one-time password sent to the signer’s email; they must enter it to proceed, confirming email ownership.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;SMS OTP –&lt;/strong&gt; A one‑time code sent to the signer’s phone by text message.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Access Code –&lt;/strong&gt; A custom PIN you create and share securely through a separate channel; the signer enters it for access.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Government ID Verification with Biometric Selfie –&lt;/strong&gt; For higher-risk documents, require:

&lt;ul&gt;
&lt;li&gt;  Upload of a government-issued ID (e.g., passport, driver’s license, national ID card).&lt;/li&gt;
&lt;li&gt;  A live biometric selfie.&lt;/li&gt;
&lt;li&gt;  Advanced matching (powered by technology like &lt;a href="https://support.boldsign.com/kb/article/15462/what-is-identity-verification-in-boldsign" rel="noopener noreferrer"&gt;Stripe Identity&lt;/a&gt;) compares the selfie to the ID photo, with configurable strictness levels (strict, moderate, lenient) and options like live document capture to prevent photos or photocopies.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnt2kva07ft559p22qsqv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnt2kva07ft559p22qsqv.png" alt="Identity Verification" width="800" height="368"&gt;&lt;/a&gt;Identity Verification&lt;/p&gt;

&lt;p&gt;These controls, especially government ID with a selfie, tie the signing process to real‑world identity and significantly reduce impersonation and unauthorized access risks.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does an audit trail prove
&lt;/h2&gt;

&lt;p&gt;Every BoldSign document includes a detailed, tamper-evident audit trail that logs the entire signing process. This creates a consistent, court-admissible record supporting non-repudiation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The audit trail typically captures:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Precise timestamps for events (sent, viewed, authenticated, signed, completed).&lt;/li&gt;
&lt;li&gt;  IP addresses and device details.&lt;/li&gt;
&lt;li&gt;  Authentication activity, including methods used such as OTP, access code, and ID verification.&lt;/li&gt;
&lt;li&gt;  Signer actions and consent to electronic disclosures.&lt;/li&gt;
&lt;li&gt;  Document integrity verification, using cryptographic hashes to confirm that no alterations were made after signing.&lt;/li&gt;
&lt;li&gt;  Sender and recipient information, including names and email addresses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After completion, download the audit trail as a branded PDF (separately or combined with the signed document). It is digitally signed to prevent tampering, ensuring reliability for reviews, audits, or disputes.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do ID verification and audit trails work together
&lt;/h2&gt;

&lt;p&gt;This combination forms a powerful, multi-layered defense:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Identity is verified upfront – Blocking unauthorized users before access.&lt;/li&gt;
&lt;li&gt;  Every key action is logged – With timestamps, IP/device data, and verification outcomes.&lt;/li&gt;
&lt;li&gt;  Integrity is preserved – Through hashes and tamper-evident records.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, they generate a complete evidence package: Proven identity + documented intent + unaltered document. This makes repudiation claims unsustainable and supports compliance with standards like ESIGN Act, UETA, and eIDAS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key business benefits
&lt;/h2&gt;

&lt;p&gt;Here’s how these features translate into real business advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Stronger legal defensibility – Meets or exceeds global &lt;a href="https://app.boldsign.com/settings/compliance/" rel="noopener noreferrer"&gt;e-signature laws&lt;/a&gt; with verifiable non-repudiation.&lt;/li&gt;
&lt;li&gt;  Fewer disputes and faster resolution – Clear and reliable evidence minimizes challenges and speeds up issue handling.&lt;/li&gt;
&lt;li&gt;  Enhanced trust – Signers, partners, legal teams, and stakeholders gain confidence from robust security.&lt;/li&gt;
&lt;li&gt;  Flexible security – Apply stricter verification only where needed (e.g., high-value documents), balancing protection with efficiency.&lt;/li&gt;
&lt;li&gt;  Operational efficiency – Avoids costly delays from repudiation claims and streamlines workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;“I didn’t sign this” claims don’t have to derail your agreements. BoldSign’s robust identity verification paired with detailed, tamper-evident audit trails provides strong proof of identity, intent, and document integrity, virtually eliminating repudiation risks.&lt;/p&gt;

&lt;p&gt;Secure your high-value or regulated workflows with confidence. Try &lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign free&lt;/a&gt; and explore powerful audit logging, automated workflows, and secure signing.&lt;/p&gt;

&lt;p&gt;Have questions? Our team is here, schedule a &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt; and get expert &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;support&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/audit-trails-download-api-boldsign/" rel="noopener noreferrer"&gt;How to Download an Audit Trail PDF Using the BoldSign API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/e-signature-audit-trails-why-they-matter/" rel="noopener noreferrer"&gt;E-Signature Audit Trail: Why They Matter for Compliance&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/construction-audit-trail-approvals/" rel="noopener noreferrer"&gt;Track Approvals and Sign-Offs with a Construction Audit Trail&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>idverification</category>
      <category>auditrial</category>
      <category>documents</category>
    </item>
    <item>
      <title>Free Email QR Code Generator for Ready‑to‑Use Email Drafts</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Mon, 27 Apr 2026 05:34:12 +0000</pubDate>
      <link>https://forem.com/boldsign/free-email-qr-code-generator-for-ready-to-use-email-drafts-12k3</link>
      <guid>https://forem.com/boldsign/free-email-qr-code-generator-for-ready-to-use-email-drafts-12k3</guid>
      <description>&lt;p&gt;We are excited to introduce the free BoldSign &lt;a href="https://boldsign.com/email-qr-code-generator?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Email QR Code Generator&lt;/a&gt;, a simple and secure tool that helps anyone share a complete email template, including email address, subject, and message, with a quick scan. Whether you’re a freelancer adding contact details to business cards, a professional sharing support information on brochures, or a small business placing QR codes on packaging, this tool makes communication effortless. There is no software to install, no account required, and no cost. Everything runs inside your browser, keeping your information private and helping you connect faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why choose the free BoldSign Email QR Code Generator
&lt;/h2&gt;

&lt;p&gt;Our email QR code generator is built for convenience, privacy, and professional results. It works entirely inside your browser, so your email information is never stored. It is perfect for professionals, creators, and businesses who want a quick way for people to reach their inbox.&lt;/p&gt;

&lt;p&gt;Here are the main reasons for choosing our tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Completely free&lt;/strong&gt;: No sign up, no fees, and no restrictions. Create email QR codes online for free.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Privacy first:&lt;/strong&gt; All processing happens on your device. Your information is never saved or shared.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Professional look&lt;/strong&gt;: Generate clean and polished QR codes ideal for business cards, posters, menus, flyers, resumes, and printed materials.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Works everywhere&lt;/strong&gt;: Create email QR codes from your phone, tablet, or computer without installing anything.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Fast and simple&lt;/strong&gt;: Add your email address, subject, or message and generate a QR code in seconds.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key features of the free Email QR Code Generator
&lt;/h2&gt;

&lt;p&gt;Whether you’re sharing a support email or a personal contact address, these features make BoldSign your go‑to solution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Custom email details&lt;/strong&gt;: Add your email address along with a subject and an optional predefined message so people can contact you instantly with the right context.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;High quality downloads&lt;/strong&gt;: Download clear and print ready QR codes perfect for physical or digital use.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Unlimited creation&lt;/strong&gt;: Generate as many email QR codes as you need. There are no limits and no watermarks.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Simple customization&lt;/strong&gt;: Adjust the appearance of the QR code if supported on the page, so it matches your brand or design.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Beginner friendly&lt;/strong&gt;: No technical knowledge is needed. Enter your details and download them immediately.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to create an email QR code in three simple steps
&lt;/h2&gt;

&lt;p&gt;Getting started takes only a few clicks. Follow these three steps to create your first email QR code:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Open the tool&lt;/strong&gt;: Go to the free BoldSign &lt;a href="https://boldsign.com/email-qr-code-generator?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Email QR Code Generator&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Enter your information&lt;/strong&gt;: Type your email address, subject line, and optional message. Customize the appearance if needed.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Download your email QR Code:&lt;/strong&gt; Save your QR code as PNG, SVG, or JPEG, and display it anywhere so guests can scan and connect instantly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkeud2y4511xgrtlt701d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkeud2y4511xgrtlt701d.png" alt="" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Start sharing your email smarter today
&lt;/h2&gt;

&lt;p&gt;The free BoldSign &lt;a href="https://boldsign.com/email-qr-code-generator?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Email QR Code Generator&lt;/a&gt; makes sharing your email address fast, simple, and accessible to everyone. Whether you are a freelancer, business owner, job seeker, or student, this tool helps people reach you instantly with a quick scan. There is no cost, no setup, and no technical skills required. Create your QR code in minutes and make communication easier than ever.&lt;/p&gt;

&lt;p&gt;Ready to simplify your document workflows? &lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Sign up for a free 30-day trial&lt;/a&gt; or connect with our &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;support team&lt;/a&gt; for a personalized &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/generate-whatsapp-qr-code-online/" rel="noopener noreferrer"&gt;Free WhatsApp QR Code Generator for Instant Chat Links&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/generate-facebook-qr-code-online/" rel="noopener noreferrer"&gt;Free Facebook QR Code Generator for Profiles, Pages &amp;amp; Posts&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/generate-snapchat-qr-code-online/" rel="noopener noreferrer"&gt;Introducing BoldSign’s Snapchat QR Code Generator&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>email</category>
      <category>qrcode</category>
      <category>documents</category>
    </item>
    <item>
      <title>BoldSign Edit Document API: Update Signers, Fields, and Files Without Restarting</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Tue, 21 Apr 2026 03:44:23 +0000</pubDate>
      <link>https://forem.com/boldsign/boldsign-edit-document-api-update-signers-fields-and-files-without-restarting-2f86</link>
      <guid>https://forem.com/boldsign/boldsign-edit-document-api-update-signers-fields-and-files-without-restarting-2f86</guid>
      <description>&lt;p&gt;Updating documents mid-workflow usually means recreating them, reassigning fields, and disrupting signers. The BoldSign Edit Document API lets you update signer details, fields, metadata, and even files without restarting the signing process.&lt;/p&gt;

&lt;p&gt;This guide is for developers, product teams, and automation engineers working with BoldSign. It explains what the Edit Document API can update, how it works, when to use it, and how to perform safe updates with clear examples.&lt;/p&gt;

&lt;h2&gt;
  
  
  What problem this solves
&lt;/h2&gt;

&lt;p&gt;Most eSignature systems treat documents as nearly immutable once created. Any mistakes, such as incorrect signer emails, missing signature fields, outdated clauses, or wrong files, often require:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Recreating the document&lt;/li&gt;
&lt;li&gt;  Reapplying all fields manually&lt;/li&gt;
&lt;li&gt;  Re-inviting all signers&lt;/li&gt;
&lt;li&gt;  Losing audit continuity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The BoldSign Edit Document API eliminates all of these problems.&lt;/p&gt;

&lt;p&gt;It helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Correct signer details without interrupting signing&lt;/li&gt;
&lt;li&gt;  Add or modify fields dynamically&lt;/li&gt;
&lt;li&gt;  Replace or remove files without re uploading a document package&lt;/li&gt;
&lt;li&gt;  Update instructions, messages, or labels instantly&lt;/li&gt;
&lt;li&gt;  Keep workflows running even when your business logic changes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How does the BoldSign edit document API work?
&lt;/h2&gt;

&lt;p&gt;The API uses a flexible update model where you send only the changes you need. It supports two modes of processing based on whether the request includes files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does the completed (synchronous) mode work?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your request does not include files, edits are applied immediately.&lt;/p&gt;

&lt;p&gt;Useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Metadata updates&lt;/li&gt;
&lt;li&gt;  Signer property updates&lt;/li&gt;
&lt;li&gt;  Adding or removing form fields&lt;/li&gt;
&lt;li&gt;  Label changes&lt;/li&gt;
&lt;li&gt;  Reminder setting modifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You receive a response with: &lt;strong&gt;“status”: “Completed”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does the queued (asynchronous) mode work?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your request includes files, BoldSign processes the update in the background.&lt;/p&gt;

&lt;p&gt;You receive: &lt;strong&gt;“status”: “Queued”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After processing finishes, you receive webhook events:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Edited&lt;/strong&gt; → change successful&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;EditFailed&lt;/strong&gt; → change unsuccessful, includes failure reason&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes file replacement safe and traceable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why you need document properties before editing?
&lt;/h2&gt;

&lt;p&gt;To update files, signers, or form fields, you must have their corresponding IDs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;fileId&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;ignerId&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;formFieldId&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These IDs are retrieved from the &lt;a href="https://developers.boldsign.com/documents/document-details-and-status" rel="noopener noreferrer"&gt;Document Properties API&lt;/a&gt;&lt;strong&gt;,&lt;/strong&gt; which returns the complete document structure, including all editable resources and their IDs.&lt;/p&gt;

&lt;p&gt;This is mandatory for safe, targeted updates.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do partial updates differ from nested updates?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What do partial updates change?
&lt;/h3&gt;

&lt;p&gt;Partial updates allow you to send &lt;em&gt;only the fields you want modified&lt;/em&gt;, BoldSign leaves the rest untouched.&lt;br&gt;&lt;br&gt;
Perfect for top level updates such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Message&lt;/li&gt;
&lt;li&gt;  Labels&lt;/li&gt;
&lt;li&gt;  Reminder settings&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  How do nested updates work for files, signers &amp;amp; fields?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Nested resources require:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  EditAction = Add | Update | Remove&lt;/li&gt;
&lt;li&gt;  The resource’s ID (&lt;code&gt;fileId, signerId, formFieldId&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For example:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Updating a signer requires signerId&lt;/li&gt;
&lt;li&gt;  Removing a form field requires formFieldId&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This prevents overwriting the entire signer or field structure.&lt;/p&gt;
&lt;h2&gt;
  
  
  What you’ll need before calling the edit document API?
&lt;/h2&gt;

&lt;p&gt;Make sure you have the following ready:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; A &lt;a href="https://account.boldsign.com/signup?planId=1076utm_&amp;amp;source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign account&lt;/a&gt; (sandbox or production).&lt;/li&gt;
&lt;li&gt; An &lt;a href="https://developers.boldsign.com/authentication/api-key" rel="noopener noreferrer"&gt;API key&lt;/a&gt; (or &lt;a href="https://developers.boldsign.com/authentication/oauth-2-0" rel="noopener noreferrer"&gt;OAuth2 access token&lt;/a&gt;&lt;strong&gt;)&lt;/strong&gt; to call BoldSign APIs over HTTPS.&lt;/li&gt;
&lt;li&gt; A REST client such as cURL, Postman, or your preferred HTTP library.&lt;/li&gt;
&lt;li&gt; &lt;code&gt;documentId&lt;/code&gt; – The ID of the document you want to edit.&lt;/li&gt;
&lt;li&gt; Property IDs – File IDs, signer IDs, and form field IDs (retrieved via /v1/document/properties).&lt;/li&gt;
&lt;li&gt; Basic API Tooling – Ability to make HTTP calls (e.g., cURL, Postman, or any BoldSign SDK).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Authentication headers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use one of the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;API Key:&lt;/strong&gt; X-API-KEY: &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;OAuth2:&lt;/strong&gt; Authorization: Bearer &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  How do you update signers and metadata without editing files?
&lt;/h2&gt;

&lt;p&gt;Because no files are included, this triggers synchronous mode (Completed).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Below is an example code snippet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    curl &lt;span class="nt"&gt;-X&lt;/span&gt; PUT &lt;span class="s1"&gt;'https://api.boldsign.com/v1-beta/document/edit?documentId=YOUR-DOCUMENT-ID'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'X-API-KEY: {API-KEY}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
        "Message": "Please sign this document.",
        "Signers": [
            {
                "EditAction": "Update",
                "Id": "YOUR-SIGNER-ID",
                "AuthenticationType": "EmailOTP",
                "FormFields": [
                    {
                        "EditAction": "Add",
                        "FieldType": "TextBox",
                        "Bounds": {
                            "X": 100,
                            "Y": 100,
                            "Width": 100,
                            "Height": 20
                        },
                        "IsRequired": false,
                        "PageNumber": 1
                    }
                ]
            },
            {
                "EditAction": "Add",
                "Name": "Signer",
                "EmailAddress": "signer@gmail.com",
                "AuthenticationType": "AccessCode",
                "AuthenticationCode": "1234",
                "FormFields": [
                    {
                        "EditAction": "Add",
                        "FieldType": "Signature",
                        "Bounds": {
                            "X": 150,
                            "Y": 150,
                            "Width": 200,
                            "Height": 30
                        },
                        "IsRequired": true,
                        "PageNumber": 1
                    }
                ]
            }
        ],
        "Labels": ["Label1", "Label2"],
        "ReminderSettings": {
            "EnableAutoReminder": true,
            "ReminderDays": 2,
            "ReminderCount": 4
        }
    }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;c#&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ApiClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://api.boldsign.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"YOUR_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;DocumentClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// --- Form fields for existing signer ---&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;textField&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;EditAction&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;EditAction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FieldType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TextBox&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;IsRequired&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Bounds&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;Y&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;Width&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;Height&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;PageNumber&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;signerToUpdate&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;EditAction&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;EditAction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Update&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Id&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"YOUR-SIGNER-ID"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;AuthenticationType&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AuthenticationType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;EmailOTP&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;FormFields&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;textField&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="c1"&gt;// --- Form fields for new signer ---&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;signatureField&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;EditAction&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;EditAction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FieldType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Signature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;IsRequired&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Bounds&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;Y&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;Width&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;Height&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;PageNumber&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;signerToAdd&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;EditAction&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;EditAction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Signer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;EmailAddress&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"signer@gmail.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;AuthenticationType&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AuthenticationType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AccessCode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;AuthenticationCode&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"1234"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;FormFields&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;signatureField&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="c1"&gt;// --- Signers collection ---&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentSigners&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;signerToUpdate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;signerToAdd&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="c1"&gt;// --- Labels ---&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;labels&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="s"&gt;"Label1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s"&gt;"Label2"&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="c1"&gt;// --- Reminder settings ---&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;reminderSettings&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ReminderSettings&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;EnableAutoReminder&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;ReminderCount&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;ReminderDays&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="c1"&gt;// --- Final request ---&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;editDocumentRequest&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;DocumentId&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"YOUR-DOCUMENT-ID"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Message&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Please sign this document."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Signers&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;documentSigners&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Labels&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;ReminderSettings&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;reminderSettings&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentEdited&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;documentClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;EditDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;editDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;    &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;
    &lt;span class="n"&gt;configuration&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ApiClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;api_client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;document_api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_client&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;document_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR-DOCUMENT-ID&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="n"&gt;signer1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;edit_action&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Update&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR-SIGNER-ID&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;authentication_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;EmailOTP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;form_fields&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="n"&gt;edit_action&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Add&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;fieldType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TextBox&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;is_required&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                    &lt;span class="n"&gt;page_number&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;signer2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;edit_action&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Add&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Signer22&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;email_address&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;signer@gmail.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;authentication_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AccessCode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;authentication_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1234&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;form_fields&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="n"&gt;edit_action&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Add&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Signature&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;is_required&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                    &lt;span class="n"&gt;page_number&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;edit_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Please sign this document.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;signers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;signer1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;signer2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="n"&gt;labels&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Label1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Label2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="n"&gt;reminder_settings&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ReminderSettings&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="n"&gt;enable_auto_reminder&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;reminder_count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;reminder_days&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;document_api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;edit_document&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;document_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;edit_request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PHP&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;    &lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="k"&gt;require_once&lt;/span&gt; &lt;span class="s2"&gt;"vendor/autoload.php"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Configuration&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Api\DocumentApi&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Model\EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Model\EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Model\EditFormField&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Model\Rectangle&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Model\ReminderSettings&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Model\EditDocumentFile&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$config&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'YOUR_API_KEY'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$apiInstance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$config&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$document_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"YOUR-DOCUMENT-ID"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$formField2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$formField2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setEditAction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Add"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$formField2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFieldType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"TextBox"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$formField2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setIsRequired&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$formField2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setBounds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;
    &lt;span class="nv"&gt;$formField2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setPageNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signer1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$signer1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setEditAction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Update"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signer1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"YOUR-SIGNER-ID"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signer1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setAuthenticationType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"EmailOTP"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signer1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFormFields&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nv"&gt;$formField2&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="nv"&gt;$formField3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$formField3&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setEditAction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Add"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$formField3&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFieldType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Signature"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$formField3&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setBounds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;
    &lt;span class="nv"&gt;$formField3&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setPageNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signer2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$signer2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setEditAction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Add"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signer2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Signer"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signer2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setEmailAddress&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"signer@gmail.com"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signer2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setAuthenticationType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"AccessCode"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signer2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setAuthenticationCode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"1234"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signer2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFormFields&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nv"&gt;$formField3&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="nv"&gt;$reminderSettings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ReminderSettings&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$reminderSettings&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setEnableAutoReminder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$reminderSettings&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setReminderCount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$reminderSettings&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setReminderDays&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$edit_document_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$edit_document_request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Please sign this document.'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$edit_document_request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setSigners&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nv"&gt;$signer1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$signer2&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="nv"&gt;$edit_document_request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setLabels&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s2"&gt;"Label1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"Label2"&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="nv"&gt;$edit_document_request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setReminderSettings&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$reminderSettings&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$edit_document_response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$apiInstance&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;editDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$document_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$edit_document_request&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Java&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nc"&gt;ApiClient&lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getDefaultApiClient&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setApiKey&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"YOUR_API_KEY"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;DocumentApi&lt;/span&gt; &lt;span class="n"&gt;documentApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;Rectangle&lt;/span&gt; &lt;span class="n"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setX&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setY&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setWidth&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setHeight&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;EditFormField&lt;/span&gt; &lt;span class="n"&gt;formField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditFormField&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;formField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setEditAction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;EditFormField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;EditActionEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ADD&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;formField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFieldType&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;EditFormField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;SIGNATURE&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;formField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setPageNumber&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;formField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setBounds&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt; &lt;span class="n"&gt;signers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;signers&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setEmailAddress&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"signer@gmail.com"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;signers&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setName&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"signername"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;signers&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFormFields&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;formField&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="n"&gt;signers&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setEditAction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;EditActionEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ADD&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt; &lt;span class="n"&gt;editDocumentJsonRequest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;editDocumentJsonRequest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setSigners&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;signers&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="n"&gt;editDocumentJsonRequest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setMessage&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Updated documents"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;documentId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"YOUR-DOCUMENT-ID"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="n"&gt;documentApi&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;editDocument&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;editDocumentJsonRequest&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Node js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;EditDocumentFile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;ReminderSettings&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;boldsign&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;documentApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR-DOCUMENT-ID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bounds1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;bounds1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;bounds1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;bounds1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;bounds1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;formField1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;formField1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;editAction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;EditActionEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formField1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fieldType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TextBox&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formField1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isRequired&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formField1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;bounds1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formField1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pageNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;signer1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;signer1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;editAction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;EditActionEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Update&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signer1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR-SIGNER-ID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signer1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;authenticationType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AuthenticationTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;EmailOtp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signer1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;formFields&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;formField1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bounds2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;bounds2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;bounds2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;bounds2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;bounds2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;formField3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;formField3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;editAction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;EditActionEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formField3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fieldType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;EditFormField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Signature&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formField3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isRequired&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formField3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;bounds2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;formField3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pageNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;signer2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;signer2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;editAction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;EditActionEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signer2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Signer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signer2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;emailAddress&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;signer@gmail.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signer2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;authenticationType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AuthenticationTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AccessCode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signer2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;authenticationCode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1234&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signer2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;formFields&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;formField3&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;reminderSettings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ReminderSettings&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;reminderSettings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;enableAutoReminder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;reminderSettings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reminderCount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;reminderSettings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reminderDays&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;editDocumentRequest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;editDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Please review and sign the attached document.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;editDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;signers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;signer1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;signer2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="nx"&gt;editDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;labels&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Label1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Label2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="nx"&gt;editDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reminderSettings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;reminderSettings&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;editDocumentResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;documentApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;editDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;editDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How do you edit files using the edit document API?
&lt;/h2&gt;

&lt;p&gt;Files in the request immediately enable asynchronous processing(Queued).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Remove a file → all form fields linked to that file are automatically removed.&lt;/strong&gt;
(Because the file no longer exists, its fields cannot remain.)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Add a file → the new file is added as the last file in the document.&lt;/strong&gt;
(It appears at the end of the file list; fetch Document Properties to get its new fileId.)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Replace a file → form fields on pages that no longer exist are deleted.&lt;/strong&gt;
(Example: Old file had 5 pages, new file has 3 → fields on pages 4–5 are removed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Below is an example code snippet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    curl &lt;span class="nt"&gt;-X&lt;/span&gt; PUT &lt;span class="s1"&gt;'https://api.boldsign.com/v1-beta/document/edit?documentId=YOUR-DOCUMENT-ID'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'X-API-KEY: {API-KEY}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
          "files": [
        {
          "editAction": "Add",
          "fileUrl": "YOUR_FILE_URL"
        }
      ]
    }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;c#&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ApiClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://api.boldsign.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"YOUR_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;DocumentClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// File to edit&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;editDocumentFile&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;EditDocumentFile&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;EditAction&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;EditAction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;FileUrl&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Uri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"YOUR_FILE_URL"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;filesToEdit&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;EditDocumentFile&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;editDocumentFile&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="c1"&gt;// Final request&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;editDocumentRequest&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;DocumentId&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"YOUR-DOCUMENT-ID"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Files&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;filesToEdit&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentEdited&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;documentClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;EditDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;editDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;    &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;
    &lt;span class="n"&gt;configuration&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ApiClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;api_client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;document_api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_client&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;document_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR-DOCUMENT-ID&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="n"&gt;document_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;EditDocumentFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;edit_action&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Add&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;YOUR_FILE_PATH&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;edit_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;document_file&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;document_api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;edit_document&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;document_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;edit_request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PHP&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;    &lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="k"&gt;require_once&lt;/span&gt; &lt;span class="s2"&gt;"vendor/autoload.php"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Configuration&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Api\DocumentApi&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Model\EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Model\EditDocumentFile&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$config&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'YOUR_API_KEY'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$apiInstance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$config&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$document_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"YOUR-DOCUMENT-ID"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$edit_document_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$document1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentFile&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$document1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFileUrl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"YOUR_FILE_URL"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$document1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setEditAction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Add'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$edit_document_request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFiles&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nv"&gt;$document1&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="nv"&gt;$edit_document_response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$apiInstance&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;editDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$document_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$edit_document_request&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Java&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nc"&gt;ApiClient&lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getDefaultApiClient&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setApiKey&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"YOUR_API_KEY"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;DocumentApi&lt;/span&gt; &lt;span class="n"&gt;documentApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;EditDocumentFile&lt;/span&gt; &lt;span class="n"&gt;document&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentFile&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setEditAction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;EditDocumentFile&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;EditActionEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ADD&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFileUrl&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="no"&gt;URI&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="s"&gt;"YOUR_FILE_URL"&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt; &lt;span class="n"&gt;editDocumentJsonRequest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;editDocumentJsonRequest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFiles&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;documentId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"YOUR-DOCUMENT-ID"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="n"&gt;documentApi&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;editDocument&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;editDocumentJsonRequest&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Node js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;EditDocumentFile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;EditDocumentRequest&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;boldsign&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;documentApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR-DOCUMENT-ID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentfile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentFile&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;documentfile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createReadStream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_FILE_PATH&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;documentfile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;editAction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;EditDocumentFile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;EditActionEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;editDocumentRequest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;editDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;files&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;documentfile&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;editDocumentResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;documentApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;editDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;editDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How do you edit single field to the same signer using the edit document API?
&lt;/h2&gt;

&lt;p&gt;You can update just one property of a signer without resending all their details.&lt;br&gt;&lt;br&gt;
When you update a signer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Only the specific field you send is changed.&lt;/li&gt;
&lt;li&gt;  If you remove a signer, all form fields linked to that signer are automatically removed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  How do you update only the &lt;em&gt;IsRequired&lt;/em&gt; property on an existing form field?
&lt;/h2&gt;

&lt;p&gt;cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    curl &lt;span class="nt"&gt;-X&lt;/span&gt; PUT &lt;span class="s1"&gt;'https://api.boldsign.com/v1-beta/document/edit?documentId=YOUR-DOCUMENT-ID'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'X-API-KEY: {API-KEY}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
        "Signers": [
            {
                "EditAction": "Update",
                "Id": "YOUR-SIGNER-ID",
                "FormFields": [
                    {
                        "EditAction": "Update",
                        "Id": "YOUR-FIELD-ID",
                        "IsRequired": false
                    }
                ]
            }
        ]
    }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;c#&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ApiClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://api.boldsign.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"YOUR_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;DocumentClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;signerToUpdate&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;EditAction&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;EditAction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Update&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Id&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"YOUR-SIGNER-ID"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;AuthenticationCode&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"1234"&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="c1"&gt;// --- Signers collection ---&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentSigners&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;signerToUpdate&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="c1"&gt;// --- Final request ---&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;editDocumentRequest&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;DocumentId&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"YOUR-DOCUMENT-ID"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Signers&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;documentSigners&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentEdited&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;documentClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;EditDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;editDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;    &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;
    &lt;span class="n"&gt;configuration&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ApiClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;api_client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;document_api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_client&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;document_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR-DOCUMENT-ID&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="n"&gt;signer1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;edit_action&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Update&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR-SIGNER-ID&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;authentication_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1234&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;edit_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;signers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;signer1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;document_api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;edit_document&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;document_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;edit_request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PHP&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;    &lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="k"&gt;require_once&lt;/span&gt; &lt;span class="s2"&gt;"vendor/autoload.php"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Configuration&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Api\DocumentApi&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Model\EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BoldSign\Model\EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$config&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'YOUR_API_KEY'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$apiInstance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$config&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$document_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"YOUR-DOCUMENT-ID"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$signer1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$signer1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setEditAction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Update"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signer1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"YOUR-SIGNER-ID"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$signer1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setAuthenticationCode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"1234"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$edit_document_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$edit_document_request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setSigners&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nv"&gt;$signer1&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="nv"&gt;$edit_document_response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$apiInstance&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;editDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$document_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$edit_document_request&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Java&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nc"&gt;ApiClient&lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getDefaultApiClient&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setApiKey&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"YOUR_API_KEY"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;DocumentApi&lt;/span&gt; &lt;span class="n"&gt;documentApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt; &lt;span class="n"&gt;signers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;signers&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setAuthenticationCode&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"1234"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;signers&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setId&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"YOUR-SIGNER-ID"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;signers&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setEditAction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;EditActionEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;UPDATE&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt; &lt;span class="n"&gt;editDocumentJsonRequest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;editDocumentJsonRequest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setSigners&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;signers&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
            &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;documentId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"YOUR-DOCUMENT-ID"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="n"&gt;documentApi&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;editDocument&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;editDocumentJsonRequest&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Node js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;boldsign&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;documentApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR-DOCUMENT-ID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;signer1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;signer1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;editAction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;EditDocumentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;EditActionEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Update&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signer1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR-SIGNER-ID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;signer1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;authenticationCode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1234&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;editDocumentRequest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;editDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;signers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;signer1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;editDocumentResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;documentApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;editDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;editDocumentRequest&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can update just one property of a form field, such as &lt;code&gt;IsRequired&lt;/code&gt;, without modifying anything else in the signer or document.&lt;/p&gt;

&lt;h2&gt;
  
  
  What updates are restricted or not allowed when editing documents?
&lt;/h2&gt;

&lt;p&gt;Some elements are immutable for security and compliance reasons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Always immutable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You cannot change:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;documentId&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Completed signatures&lt;/li&gt;
&lt;li&gt;  Completed signer actions&lt;/li&gt;
&lt;li&gt;  Audit trail entries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Editable only in draft status&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These can be changed only when the document is still a draft:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Title&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;BrandId&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;EnableSigningOrder&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;ScheduledSendTime&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What if the document was created from a template?
&lt;/h2&gt;

&lt;p&gt;When a document is created from a template, certain elements may already be locked based on the template’s settings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Templates can restrict editing of files, signers, and form fields.&lt;/li&gt;
&lt;li&gt;  If the template disables editing, you cannot modify existing form fields, signers, or files using the Edit Document API.&lt;/li&gt;
&lt;li&gt;  These restrictions are defined during template creation and enforced to maintain template consistency and compliance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What changes are restricted after any signer has already signed?
&lt;/h2&gt;

&lt;p&gt;Once any signer has completed signing, the following changes are restricted:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Editing the details of a signer who has already signed is not allowed.&lt;/li&gt;
&lt;li&gt;  Removing a signer who has already signed is not allowed.&lt;/li&gt;
&lt;li&gt;  Uploading, replacing, or deleting document files is not allowed.&lt;/li&gt;
&lt;li&gt;  Form fields assigned to a signer who has completed signing cannot be changed.&lt;/li&gt;
&lt;li&gt;  Title, BrandId, and Signing Order cannot be edited after the document has been sent (they are editable only in draft).&lt;/li&gt;
&lt;li&gt;  Labels and hyperlinks cannot be edited or added because a signer has already completed signing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How does the completion and error model work when you edit a document?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  The Edited event confirms that your update was successfully applied. This is especially helpful for edits that were queued because they involved file changes. &lt;a href="https://developers.boldsign.com/webhooks/available-events/" rel="noopener noreferrer"&gt;Available Webhook Events&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  The EditFailed event indicates the update could not be applied. It also includes &lt;strong&gt;error details&lt;/strong&gt;, which you must fix before retrying the edit.&lt;/li&gt;
&lt;li&gt;  File-related edits run in the background and return Queued, so you won’t know the final result immediately. The Edited or EditFailed event is what confirms whether the update eventually succeeded or failed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Best practices
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What steps should you always follow?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Fetch → Edit → Verify&lt;/li&gt;
&lt;li&gt;  Always retrieve IDs using Document Properties&lt;/li&gt;
&lt;li&gt;  Only send the fields you want to modify&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why editing documents matters for API workflows?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Workflows change often; signer details, clauses, and form fields may need updates after a document is created.&lt;/li&gt;
&lt;li&gt;  Programmatic edits keep workflows running by allowing your backend to adjust documents without restarting the signing process.&lt;/li&gt;
&lt;li&gt;  Reduces human error because updates happen through predictable API calls rather than manual changes.&lt;/li&gt;
&lt;li&gt;  Supports scalable automation where documents can evolve dynamically based on business logic or real time data&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://developers.boldsign.com/documents/edit-document" rel="noopener noreferrer"&gt;Edit Document API&lt;/a&gt; is most useful when your documents need updates after they’ve been created or sent, without disrupting the signing process. Whether you’re correcting signer details, adding new fields, updating instructions, or replacing files, the API lets you make precise changes safely and efficiently. By always fetching Document Properties first, using the right IDs, and understanding when edits run in &lt;em&gt;Completed&lt;/em&gt; vs. &lt;em&gt;Queued&lt;/em&gt; mode, you ensure that updates are applied smoothly and reliably.&lt;/p&gt;

&lt;p&gt;In short, use the Edit Document API whenever your workflow requires mid-process adjustments, automation-friendly updates, or flexible document handling, all while keeping signers uninterrupted and your workflow running cleanly end‑to‑end.&lt;/p&gt;

&lt;p&gt;If you’d like to explore more about BoldSign capabilities, sign up for a free  &lt;a href="https://account.boldsign.com/signup?planId=1076&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign Sandbox account&lt;/a&gt; leave a comment, book a &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt;, or connect with our support team through the BoldSign &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;support portal&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/visual-studio-enterprise-boldsign-growth/" rel="noopener noreferrer"&gt;Select Visual Studio Enterprise Subscribers: Get 12 Months of BoldSign Growth Plan + 50 API Credits&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/edit-template-api/" rel="noopener noreferrer"&gt;Programmatic Template Editing Using the BoldSign Edit Template API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/controllers-vs-minimal-api-dotnet-8/" rel="noopener noreferrer"&gt;Controllers vs Minimal APIs in .NET 8: What to Choose and Why&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt; &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>api</category>
      <category>boldsign</category>
      <category>documents</category>
    </item>
    <item>
      <title>Track Approvals and Sign-Offs with a Construction Audit Trail</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Mon, 20 Apr 2026 05:29:50 +0000</pubDate>
      <link>https://forem.com/boldsign/track-approvals-and-sign-offs-with-a-construction-audit-trail-19fm</link>
      <guid>https://forem.com/boldsign/track-approvals-and-sign-offs-with-a-construction-audit-trail-19fm</guid>
      <description>&lt;p&gt;Construction managers know the drill, a change of order needs three signatures, but the PDF on your laptop shows no clue who signed first or whether a subcontractor used an old version. That uncertainty slows projects, causes rework, and risks disputes. You need a clear audit trail that records who approved what (and when), so decisions are verifiable and projects keep moving. BoldSign can store that audit trail as part of each signed construction document without extra paperwork.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this topic matters
&lt;/h2&gt;

&lt;p&gt;Construction projects depend on timely, accurate approvals. Missing or unclear approval records lead to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Costly delays and rework.&lt;/li&gt;
&lt;li&gt;  Risk of non-compliance with contracts or regulations.&lt;/li&gt;
&lt;li&gt;  Disputes that require time-consuming evidence of gathering.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A robust audit trail reduces the risks and speeds of decision-making.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simple real-life scenario
&lt;/h2&gt;

&lt;p&gt;You’re a site engineer approving RFI responses on your phone between site checks. Later an owner asks – who approved change X and when. Without an audit trail, you guess. With the right audit trail, you pull a single document record showing the approver, timestamp, and the exact file version.&lt;/p&gt;

&lt;h3&gt;
  
  
  Naive approach
&lt;/h3&gt;

&lt;p&gt;Many teams rely on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Folder naming conventions (e.g., v1_FINAL.pdf).&lt;/li&gt;
&lt;li&gt;  Email chains with attachments.&lt;/li&gt;
&lt;li&gt;  Manual sign-off spreadsheets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Names don’t prove who signed.&lt;/li&gt;
&lt;li&gt;  Emails lose context when threads break.&lt;/li&gt;
&lt;li&gt;  Spreadsheets are easy to mis-edit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Checkpoint: Don’t rely on file names or fragmented email threads to prove approvals.&lt;/p&gt;

&lt;h3&gt;
  
  
  Better approach
&lt;/h3&gt;

&lt;p&gt;Use a structured audit trail attached to each document that captures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Signer identity (name, email, authenticated method)&lt;/li&gt;
&lt;li&gt;  Approval timestamp&lt;/li&gt;
&lt;li&gt;  Document version or hash&lt;/li&gt;
&lt;li&gt;  Action type (approved, rejected, delegated)&lt;/li&gt;
&lt;li&gt;  IP address / device metadata&lt;/li&gt;
&lt;li&gt;  Audit event ID and chain-of-custody information&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Why is this better?
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  A single source of truth for every approval&lt;/li&gt;
&lt;li&gt;  Easily searchable and exportable audit records&lt;/li&gt;
&lt;li&gt;  Strong support for electronic signature and compliance requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; A defensible audit trail always links actions to verified identities and exact document versions.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example Use Cases
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Change Orders: See who approved a cost increase and the timestamp for payment release.&lt;/li&gt;
&lt;li&gt;  RFIs: Track which engineer approved an RFI response and which version was attached.&lt;/li&gt;
&lt;li&gt;  Submittals: Keep approvals linked to exact spec versions to avoid on-site mistakes.&lt;/li&gt;
&lt;li&gt;  Claims &amp;amp; Disputes: Exported audit trails show a verifiable chain of custody.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; Audit trails help with daily site coordination and provide reliable evidence in disputes.&lt;/p&gt;

&lt;h2&gt;
  
  
  How BoldSign fits this workflow
&lt;/h2&gt;

&lt;p&gt;BoldSign stores the audit trail with every signed document, so you do not juggle separate logs or spreadsheets. When a signature or approval happens, BoldSign records the event details and bundles them with the signed PDF and metadata. That means every change of order, RFI, or submittal can carry its own verifiable approval history.&lt;/p&gt;

&lt;h3&gt;
  
  
  What BoldSign captures for each audit event
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Who acted – name and email, authenticated by the account method&lt;/li&gt;
&lt;li&gt;  When it happened – timestamp in UTC (ISO 8601)&lt;/li&gt;
&lt;li&gt;  What happened – action type and signer role&lt;/li&gt;
&lt;li&gt;  What file was seen – document hash for version proof&lt;/li&gt;
&lt;li&gt;  Where it happened – IP address and basic device info&lt;/li&gt;
&lt;li&gt;  A tamper-evident chain-of-custody log&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Simple workflow to add audit trails to your project folder
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; Upload the document to BoldSign App.&lt;/li&gt;
&lt;li&gt; Add signers and approvers in the correct order and require authentication&lt;/li&gt;
&lt;li&gt; Send the approval or signature request.&lt;/li&gt;
&lt;li&gt; Download the signed PDF and the attached audit trail.&lt;/li&gt;
&lt;li&gt; Store both files in the job folder or project system.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Refer the details to &lt;a href="https://boldsign.com/blogs/how-to-send-and-sign-documents-online?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Send Document&lt;/a&gt; in BoldSign App and for &lt;a href="https://support.boldsign.com/kb/article/106/download-audit-trail-document" rel="noopener noreferrer"&gt;Audit Trail&lt;/a&gt; details.&lt;/p&gt;

&lt;p&gt;Tip – &lt;a href="https://support.boldsign.com/kb/article/101/combine-signed-and-audit-trail-documents" rel="noopener noreferrer"&gt;Embed the audit summary into the signed PDF&lt;/a&gt; so a portable copy always includes the verification details.&lt;/p&gt;

&lt;h3&gt;
  
  
  BoldSign API examples
&lt;/h3&gt;

&lt;p&gt;These examples show the idea. Replace &lt;strong&gt;YOUR_API_KEY&lt;/strong&gt; and &lt;strong&gt;DOC_ID&lt;/strong&gt; with your account values&lt;/p&gt;

&lt;p&gt;cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    &lt;span class="c"&gt;# Send document for signature request&lt;/span&gt;
    curl &lt;span class="nt"&gt;-X&lt;/span&gt; &lt;span class="s1"&gt;'POST'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="s1"&gt;'https://api.boldsign.com/v1/document/send'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'accept: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'X-API-KEY: {your API key}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
        "DisableExpiryAlert": false,
        "ReminderSettings": {
            "ReminderDays": 5,
            "ReminderCount": 3,
            "EnableAutoReminder": true
        },
        "BrandId": "",
        "EnableReassign": true,
        "Message": "",
        "Signers": [
            {
                "Name": "Alex",
                "EmailAddress": "alexgayle@boldsign.dev",
                "SignerType": "Signer",
                "FormFields": [
                    {
                        "Id": "string",
                        "Name": "string",
                        "FieldType": "Signature",
                        "PageNumber": 1,
                        "Bounds": {
                            "X": 50,
                            "Y": 50,
                            "Width": 125,
                            "Height": 25
                        },
                        "IsRequired": true
                    },
                    {
                        "Id": "string",
                        "Name": "string",
                        "FieldType": "Label",
                        "PageNumber": 1,
                        "Bounds": {
                            "X": 150,
                            "Y": 250,
                            "Width": 125,
                            "Height": 25
                        },
                        "IsRequired": true,
                        "Value": "string",
                        "BackgroundHexColor": "string"
                    }
                ],
                "Locale": "EN"
            }
        ],
        "ExpiryDays": 30,
        "EnablePrintAndSign": false,
        "AutoDetectFields": false,
        "OnBehalfOf": "",
        "EnableSigningOrder": false,
        "UseTextTags": false,
        "SendLinkValidTill": "",
        "Files": [
            "data:application/pdf;base64,JVBERi0xLjcKJcfs..."
        ],
        "Title": "Sampledocument",
        "HideDocumentId": false,
        "EnableEmbeddedSigning": false,
        "ExpiryDateType": "Days",
        "ExpiryValue": 60,
        "DisableEmails": false,
        "DisableSMS": false,
        "MetaData": {
        "DocumentType": "new",
        "DocumentCategory": "Software"
      }
      }'&lt;/span&gt;
    //Download Audit trail
    curl &lt;span class="nt"&gt;-X&lt;/span&gt; GET &lt;span class="s1"&gt;'https://api.boldsign.com/v1/document/downloadAuditLog?documentId={{:documentId}}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
         &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'accept: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
         &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'X-API-KEY: {your-api-key}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Node js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;    &lt;span class="c1"&gt;//Send document for Signature request&lt;/span&gt;
    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;DocumentSigner&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;SendForSign&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;boldsign&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nx"&gt;documentApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;formField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;formField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fieldType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Signature&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;formField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pageNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;formField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentSigner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentSigner&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nx"&gt;documentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;David&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;documentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;emailAddress&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;david@cubeflakes.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;documentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;signerType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;DocumentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SignerTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Signer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;documentSigner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;formFields&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;formField&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;files&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createReadStream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_FILE_PATH&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sendForSign&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;SendForSign&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nx"&gt;sendForSign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Agreement&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;sendForSign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;signers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;documentSigner&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; 
    &lt;span class="nx"&gt;sendForSign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;files&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;files&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; 
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentCreated&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;documentApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sendDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sendForSign&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;//Download Audit trail&lt;/span&gt;
    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;DocumentApi&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;boldsign&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DocumentApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;documentApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;documentStream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;documentApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;downloadAuditLog&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_DOCUMENT_ID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Best practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Enforce signer authentication (SSO or MFA) for critical approval.&lt;/li&gt;
&lt;li&gt;  Embed the audit summary directly into the signed PDF.&lt;/li&gt;
&lt;li&gt;  Use UTC timestamps to avoid time‑zone confusion.&lt;/li&gt;
&lt;li&gt;  Apply document hashes (such as SHA‑256) to prove file integrity.&lt;/li&gt;
&lt;li&gt;  Automate retention policies to meet legal and compliance needs.&lt;/li&gt;
&lt;li&gt;  Train field staff on how to read and verify audit trail details.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary table – Naive vs Better approach
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area tracked&lt;/th&gt;
&lt;th&gt;Naive Approach&lt;/th&gt;
&lt;th&gt;Better Approach&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Document retrieval&lt;/td&gt;
&lt;td&gt;Paper stacks or scattered emails, hard to find&lt;/td&gt;
&lt;td&gt;Single signed PDF with an embedded audit trail, quick to locate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Approver identity&lt;/td&gt;
&lt;td&gt;Name on a sheet or chat message, approval uncertain&lt;/td&gt;
&lt;td&gt;Verified signer (email + timestamp), who exactly signed and when&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Version control&lt;/td&gt;
&lt;td&gt;Manual filenames like “v1_FINAL.pdf”, high risk&lt;/td&gt;
&lt;td&gt;Versioned file with a document hash (exact match proof)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dispute resolution&lt;/td&gt;
&lt;td&gt;Slow and unclear, little proof&lt;/td&gt;
&lt;td&gt;Fast verification using the audit JSON and signed PDF, clear evidence&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;An audit trail for construction docs turns messy email threads and ambiguous file names into a clear, verifiable record of who approved what (and when). Capture signer identity, timestamps, document versions, and device metadata; store records immutably; and present them in an easy-to-read export. The result: fewer disputes, faster approvals, and projects that keep moving.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Sign up for a free 30-day trial&lt;/a&gt; on the &lt;a href="https://boldsign.com?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign website&lt;/a&gt; or &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;request a demo&lt;/a&gt; to see it in action.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/e-signature-audit-trails-why-they-matter" rel="noopener noreferrer"&gt;E-Signature Audit Trail: Why They Matter for Compliance&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/audit-trails-download-api-boldsign" rel="noopener noreferrer"&gt;How to Download an Audit Trail PDF Using the BoldSign API&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt; &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>auditrial</category>
      <category>boldsign</category>
      <category>documents</category>
    </item>
    <item>
      <title>Implementing Multi‑Factor Authentication for Zero‑Trust eSignatures</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Fri, 17 Apr 2026 05:26:00 +0000</pubDate>
      <link>https://forem.com/boldsign/implementing-multi-factor-authentication-for-zero-trust-esignatures-45mb</link>
      <guid>https://forem.com/boldsign/implementing-multi-factor-authentication-for-zero-trust-esignatures-45mb</guid>
      <description>&lt;p&gt;An email link can show where a document was sent, but it does not always prove who actually signed it. A signature without authentication introduces uncertainty and weakens document security. Implementing signer authentication enhances trust by verifying the signer’s identity and ensuring signatures are legally valid and securely executed.&lt;/p&gt;

&lt;p&gt;Multi‑Factor Authentication for Zero‑Trust eSignatures solve this by requiring every signer to verify their identity at the moment of signing. With &lt;a href="https://support.boldsign.com/kb/article/4/add-authentication-to-a-signer" rel="noopener noreferrer"&gt;authentication methods&lt;/a&gt; like Email OTP, SMS OTP, access codes, or &lt;a href="https://boldsign.com/electronic-signature-features/signer-identity-verification?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;ID verification&lt;/a&gt;, organizations can reduce fraud, strengthen compliance, and create more defensible signed documents, while BoldSign keeps the experience smooth and friction‑free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why zero-trust matters in eSignature workflows
&lt;/h2&gt;

&lt;p&gt;Zero‑trust security follows one core principle: Never trust by default. Always verify.&lt;/p&gt;

&lt;p&gt;Email access alone isn’t enough to confirm a signer’s identity. Every signer must verify who they are during signing.&lt;/p&gt;

&lt;p&gt;With eSignatures widely adopted across HR, finance, healthcare, and legal teams, organizations need signatures that are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Secure&lt;/li&gt;
&lt;li&gt;  Verifiable&lt;/li&gt;
&lt;li&gt;  Tamper-evident audit trails&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This verification‑first approach ensures that every agreement meets those expectations, especially for high‑value or regulated documents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authentication vs verification in eSignatures
&lt;/h2&gt;

&lt;p&gt;These terms are often used interchangeably, but they serve different purposes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Authentication&lt;/strong&gt; answers: &lt;em&gt;Who is signing right now?&lt;/em&gt;
This happens before or during the signing process.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Verification&lt;/strong&gt; answers: &lt;em&gt;Is the signed document authentic and unchanged?&lt;/em&gt;
This happens after signing using audit trails and tamper‑evident records.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Zero‑trust eSignatures require both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Strong authentication before signing&lt;/li&gt;
&lt;li&gt;  Strong verification evidence after signing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why “email-only signing” is not enough
&lt;/h2&gt;

&lt;p&gt;For high‑value or regulated documents, organizations need stronger access controls. Zero‑trust signing assumes any single factor can fail, which is why additional authentication steps are essential.&lt;/p&gt;

&lt;p&gt;Email links are easy to use, but they don’t prove who is actually opening or signing a document. Risks include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Shared inboxes&lt;/li&gt;
&lt;li&gt;  Account takeovers&lt;/li&gt;
&lt;li&gt;  Accidental or intentional forwarding&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why multi-factor authentication
&lt;/h2&gt;

&lt;p&gt;MFA significantly reduces the risk of unauthorized access and identity fraud. For eSignatures, it provides stronger proof that the signer is exactly who they claim to be at the moment of signing.&lt;/p&gt;

&lt;p&gt;Multi‑factor authentication combines two or more signals to confirm identity. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Email link + one‑time passcode&lt;/li&gt;
&lt;li&gt;  Password + phone verification&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  MFA methods you can apply in BoldSign
&lt;/h2&gt;

&lt;p&gt;BoldSign supports &lt;a href="https://boldsign.com/blogs/electronic-signature-authentication-methods?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;multiple signer authentication&lt;/a&gt; options, allowing you to verify signer identity without sacrificing usability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Email OTP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A one-time password is sent to the &lt;a href="https://support.boldsign.com/kb/article/4/add-authentication-to-a-signer" rel="noopener noreferrer"&gt;signer’s email&lt;/a&gt; and must be entered to open the document.&lt;/p&gt;

&lt;p&gt;Best for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Low to medium risk workflows&lt;/li&gt;
&lt;li&gt;  Internal approvals&lt;/li&gt;
&lt;li&gt;  Faster adoption with minimal friction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;SMS OTP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A one-time password is sent to the &lt;a href="https://support.boldsign.com/kb/article/13212/add-sms-authentication-to-a-signer" rel="noopener noreferrer"&gt;signer’s phone via SMS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Best for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Medium to high risk workflows&lt;/li&gt;
&lt;li&gt;  External agreements where phone possession adds stronger assurance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Access Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You set a code (PIN) and share it with the signer through a separate channel.&lt;/p&gt;

&lt;p&gt;Best for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Known parties (repeat vendors, employees)&lt;/li&gt;
&lt;li&gt;  Workflows where you want an extra verification step outside email&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Identity Verification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Signer identity is verified using additional checks to confirm the signer is who they claim to be.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  High‑risk or regulated workflows&lt;/li&gt;
&lt;li&gt;  Legal, financial, and compliance‑driven agreements&lt;/li&gt;
&lt;li&gt;  Scenarios requiring stronger assurance of signer identity&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ID verification for secure eSignatures
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://boldsign.com/electronic-signature-features/signer-identity-verification?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign’s ID verification&lt;/a&gt; serves as a high‑security authentication method by validating signer identity before access or signing. By combining government‑issued ID checks with biometric verification, it helps prevent fraud and ensures trust in compliance‑critical and high‑risk workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Verifies signers using government‑issued photo IDs&lt;/li&gt;
&lt;li&gt;  Uses biometric selfie checks to prevent impersonation&lt;/li&gt;
&lt;li&gt;  Supports configurable verification frequency and attempt limits&lt;/li&gt;
&lt;li&gt;  Enables selective verification for specific signers&lt;/li&gt;
&lt;li&gt;  Available across web, mobile, and API‑based workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to implement MFA for every signer in BoldSign
&lt;/h2&gt;

&lt;p&gt;A consistent setup helps teams avoid missed steps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Define document risk levels&lt;/li&gt;
&lt;li&gt; Choose a default authentication method&lt;/li&gt;
&lt;li&gt; Apply authentication settings in &lt;a href="https://boldsign.com/electronic-signature-features/templates?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;templates&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; Assign authentication to each signer in multi‑signer workflows&lt;/li&gt;
&lt;li&gt; Confirm audit trails capture authentication events&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;BoldSign gives senders full control over how authentication is applied, making zero‑trust implementation flexible and scalable.&lt;/p&gt;

&lt;h2&gt;
  
  
  How audit trails complete the zero-trust model
&lt;/h2&gt;

&lt;p&gt;Authentication reduces unauthorized access. &lt;a href="https://support.boldsign.com/kb/article/14647/information-the-audit-trail-document-contains" rel="noopener noreferrer"&gt;Audit trails&lt;/a&gt; provide the evidence if questions arise later.&lt;/p&gt;

&lt;p&gt;BoldSign audit trails record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Who accessed and signed the document&lt;/li&gt;
&lt;li&gt;  When each action occurred&lt;/li&gt;
&lt;li&gt;  Which authentication method was used&lt;/li&gt;
&lt;li&gt;  IP address and device information&lt;/li&gt;
&lt;li&gt;  Document integrity through tamper detection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, authentication and audit trails support compliance reviews and dispute resolution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Zero-trust eSignatures make digital signing more than just fast. They make it trustworthy. By requiring every signer to verify their identity before signing and backing each action with a detailed audit trail, organizations can reduce fraud, prevent disputes, and strengthen compliance across critical workflows.&lt;/p&gt;

&lt;p&gt;With &lt;a href="https://boldsign.com?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign&lt;/a&gt;, teams can apply the right level of authentication for every document, from simple approvals to high-risk agreements. Start with a baseline MFA method for all signers, then add stronger verification for sensitive transactions when needed. That way, every signature is not only easy to collect, but also easier to trust.&lt;/p&gt;

&lt;p&gt;Make every signature easier to trust. &lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Sign up for a free 30-day trial&lt;/a&gt; or connect with our &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;support team&lt;/a&gt; for a personalized &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt; and see how zero-trust signing works in practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/mandating-signer-authentication-after-sending-documents-via-api/" rel="noopener noreferrer"&gt;Mandating Signer Authentication After Sending Documents via API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/api-keys-vs-oauth-authentication/" rel="noopener noreferrer"&gt;API Key vs OAuth: The Ultimate Guide for Secure API Authentication&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/aspnet-core-jwt-authentication-guide/" rel="noopener noreferrer"&gt;ASP.NET Core JWT Authentication: Setup, Validation, and Best Practices&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>authentication</category>
      <category>boldsign</category>
      <category>documents</category>
    </item>
    <item>
      <title>How to Submit a Data Subject Request with BoldSign</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Wed, 15 Apr 2026 05:27:34 +0000</pubDate>
      <link>https://forem.com/boldsign/how-to-submit-a-data-subject-request-with-boldsign-50ag</link>
      <guid>https://forem.com/boldsign/how-to-submit-a-data-subject-request-with-boldsign-50ag</guid>
      <description>&lt;p&gt;For BoldSign users, we now have a streamlined process for submitting a data subject request for those individuals based in the European Economic Area (EEA) and UK.&lt;/p&gt;

&lt;p&gt;Rights provided under the General Data Protection Regulation (GDPR), UK Data Protection Act 2018, and UK GDPR allow individuals to have more control over their data. In this blog, we will outline how BoldSign users in the EEA and UK can exercise these rights.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview of data subject rights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Access:&lt;/strong&gt; You have the right to be informed about the personal data we process about you and to request access to it.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Rectification:&lt;/strong&gt; You can ask us to amend or update your personal data if it’s inaccurate or incomplete.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Erasure:&lt;/strong&gt; You may request that we delete certain personal data we hold about you.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Restriction:&lt;/strong&gt; You can ask us to temporarily or permanently stop processing all or some of your personal data.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Object:&lt;/strong&gt; You have the right to object to our processing of your personal data at any time, especially if it relates to your specific situation or involves direct marketing.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Data portability:&lt;/strong&gt; You can request a copy of your personal data in electronic format and have the right to transmit that data to another service provider.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to exercise rights with BoldSign
&lt;/h2&gt;

&lt;p&gt;As part of our commitment to data protection and transparency, BoldSign provides clear mechanisms for individuals to exercise their rights under GDPR. If you wish to access, correct, delete, restrict, or transfer your personal data, or object to its processing, you may submit a formal request through our designated channels. We are dedicated to responding promptly and in accordance with applicable legal requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Access the GDPR Request Form&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you wish to exercise your GDPR rights, you can make a request by filling out our &lt;a href="https://boldsign.com/gdpr-request-form-secure-esignature?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;GDPR Request Form&lt;/a&gt;. Our legal team will respond in a timely manner to your request in accordance with GDPR requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; &lt;strong&gt;Fill out the required fields&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customer Name:&lt;/strong&gt; Enter your full name to help BoldSign identify your account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customer email address:&lt;/strong&gt; Provide the email address associated with your BoldSign account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Details:&lt;/strong&gt; Describe your request clearly. Include specific information to ensure timely and accurate handling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requested action&lt;/strong&gt;: Select the GDPR right you wish to exercise from the dropdown menu:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Request corrections to your data.&lt;/li&gt;
&lt;li&gt;  Request erasure of your data.&lt;/li&gt;
&lt;li&gt;  Request a copy of your data.&lt;/li&gt;
&lt;li&gt;  Request a restriction on the processing your data.&lt;/li&gt;
&lt;li&gt;  Object to data processing.&lt;/li&gt;
&lt;li&gt;  Exercise your data portability rights.&lt;/li&gt;
&lt;li&gt;  Other: specify what you would like us to provide.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Submit the form&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once completed, submit the form securely. BoldSign will acknowledge receipt and begin processing your request.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to expect after submission
&lt;/h2&gt;

&lt;p&gt;Upon submission of the form, our legal team will be notified. You should expect a timely receipt of submission. If any follow-up information is required, our team will reach out to you directly. We review each data subject access request carefully to ensure compliance and consideration.&lt;/p&gt;

&lt;p&gt;BoldSign also maintains a GDPR representative. Individuals in the UK and EU can additionally submit their data subject requests through the following means:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EU Representative&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Bird &amp;amp; Bird GDPR Representative Services SRL for EU&lt;/li&gt;
&lt;li&gt;  Avenue Louise 235&lt;/li&gt;
&lt;li&gt;  1050 Bruxelles&lt;/li&gt;
&lt;li&gt;  Belgium &lt;/li&gt;
&lt;li&gt;  &lt;a href="mailto:EUrepresentative.syncfusion@twobirds.com"&gt;EUrepresentative.syncfusion@twobirds.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;UK Representative&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Bird &amp;amp; Bird GDPR Representative Services for UK&lt;/li&gt;
&lt;li&gt;  12 New Fetter Lane&lt;/li&gt;
&lt;li&gt;  London EC4A 1JP&lt;/li&gt;
&lt;li&gt;  United Kingdom&lt;/li&gt;
&lt;li&gt;  &lt;a href="mailto:UKrepresentative.syncfusion@twobirds.com"&gt;UKrepresentative.syncfusion@twobirds.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Sign up for a free 30-day trial&lt;/a&gt; on the &lt;a href="https://boldsign.com?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign website&lt;/a&gt; or &lt;a href="https://staging.boldsign.com/request-demo/" rel="noopener noreferrer"&gt;request a demo&lt;/a&gt; to see it in action.&lt;/p&gt;

</description>
      <category>esignature</category>
      <category>submission</category>
      <category>boldsign</category>
      <category>documents</category>
    </item>
  </channel>
</rss>
