Set Date Range for Editable Date Fields

BoldSign's API allows you to send documents out for signature with editable date fields. This will be useful for situations where you need the signer to enter a specific date, such as a contract start date or a payment due date. To provide a date range for an EditableDate field, you can use the minDate and maxDate properties of the editableDateFieldSettings object.

The minDate and maxDate properties are optional. If left unspecified, the signer will have the flexibility to choose any date. However, if you set minDate to "11/28/2023" and maxDate to "12/28/2023," the signer will be restricted to selecting a date within the specified range.

curl -X 'POST' \
  'https://api.boldsign.com/v1/document/send' \
  -H 'accept: application/json' \
  -H 'X-API-KEY: {your API key}' \
  -H 'Content-Type: multipart/form-data' \
  -F 'Title="Sample Document"' \
  -F 'Signers={
  "name": "hanky",
  "emailAddress": "[email protected]",
  "signerType": "Signer",
  "signerRole": "Signer",
  "formFields": [
    {
      "id": "EditableDate",
      "name": "EditableDate",
      "fieldType": "EditableDate",
      "pageNumber": 1,
      "bounds": {
        "x": 200,
        "y": 200,
        "width": 125,
        "height": 25
      },
      "isRequired": true,
      "editableDateFieldSettings": {
        "dateFormat": "dd/MM/yyyy",
        "minDate": "2023-07-01T18:18:08.567Z",
        "maxDate": "2023-07-31T18:18:08.567Z"
        }
    }
  ],
  "locale": "EN"
}' \
  -F 'Files=@{your file}' \
var apiClient = new ApiClient("https://api.boldsign.com", "{Your API key}");
var documentClient = new DocumentClient(apiClient);

var documentFilePath = new DocumentFilePath
{
    ContentType = "application/pdf",
    FilePath = "{Your File path}"
};

var filesToUpload = new List<IDocumentFile>
{
    documentFilePath,
};

var EditableDateField = new FormField(
    id: "EditableDate",
    isRequired: true,
    type: FieldType.EditableDate,
    pageNumber: 1,
    bounds: new Rectangle(x: 200, y: 200, width: 125, height: 25),
    editableDateFieldSettings: new EditableDateFieldSettings(dateFormat:"dd/MM/yyyy", minDate: DateTime.Now, maxDate: DateTime.Now.AddDays(10)));

var formFieldCollections = new List<FormField>()
{
    EditableDateField
};

var signer = new DocumentSigner(
    signerName: "David",
    signerEmail: "[email protected]",
    formFields: formFieldCollections,
    locale: Locales.EN);

var documentSigners = new List<DocumentSigner>()
{
    signer
};

var sendForSign = new SendForSign()
{
    Signers = documentSigners,
    Title = "Sample Document",
    Files = filesToUpload
};
var documentCreated = documentClient.SendDocument(sendForSign);
Console.WriteLine(documentCreated.DocumentId);
import boldsign

configuration = boldsign.Configuration(host = "https://api.boldsign.com", api_key = "YOUR_API_KEY")

with boldsign.ApiClient(configuration) as api_client:

    document_api = boldsign.DocumentApi(api_client)

    send_for_sign = boldsign.SendForSign(
        title = "Document SDK API",
        document_title = "SDK Document Test case",
        description = "Testing document from SDK integration test case", 
        files = ["YOUR_FILE_PATH"],
        signers = [
            boldsign.DocumentSigner(
                name = "Hanky",
                emailAddress = "[email protected]",
                signerOrder = 1,
                signerType = "Signer",
                formFields = [
                    boldsign.FormField(
                        name = "EditableDate",
                        fieldType = "EditableDate",
                        font = "Helvetica",
                        pageNumber = 1,
                        isRequired = True,
                        bounds = boldsign.Rectangle(x = 100, y = 100, width = 125, height = 25),
                        editableDateFieldSettings = boldsign.EditableDateFieldSettings(
                            dateFormat = "dd/MM/yyyy",
                            minDate = "YOUR_MINDATE",
                            maxDate = "YOUR_MAXDATE"
                        )
                    )
                ],
                privateMessage = "This is private message for signer"
            )
        ]
    )

    document_created = document_api.send_document(send_for_sign)
<?php require_once "vendor/autoload.php";

use BoldSign\Configuration;
use BoldSign\Api\DocumentApi;
use BoldSign\Model\{FormField, Rectangle, EditableDateFieldSettings, DocumentSigner, SendForSign, DocumentInfo, FileInfo};

$config = new Configuration();
$config->setHost("https://api.boldsign.com");
$config->setApiKey('YOUR_API_KEY');

$document_api = new DocumentApi($config);

$form_field = new FormField();
$form_field->setName('EditableDate');
$form_field->setFieldType('EditableDate');
$form_field->setPageNumber(1);
$form_field->setFont('Helvetica');
$form_field->setIsRequired(true);
$bounds = new Rectangle([50, 50, 100, 150]);
$form_field->setBounds($bounds);

$editable_date_field_settings = new EditableDateFieldSettings();
$editable_date_field_settings->setDateFormat('dd/MM/yyyy');
$editable_date_field_settings->setMinDate('YOUR_MINDATE');
$editable_date_field_settings->setMaxDate('YOUR_MAXDATE');
$form_fields->setEditableDateFieldSettings($editable_date_field_settings);

$document_signer = new DocumentSigner();
$document_signer->setName('Hanky');
$document_signer->setEmailAddress('[email protected]');
$document_signer->setSignerOrder(1);
$document_signer->setSignerType('Signer');
$document_signer->setFormFields([$form_field]);
$document_signer->setPrivateMessage('This is private message for signer');

$send_for_sign = new SendForSign();

$documentInfo = new DocumentInfo();
$documentInfo->setTitle('Document SDK API');
$documentInfo->setDescription('Testing document from SDK integration test case');
$send_for_sign->setDocumentInfo([$documentInfo]);

$files = new FileInfo();
$files = 'YOUR_FILE_PATH';
$send_for_sign->setFiles([$files]);

$send_for_sign->setTitle('SDK Document Test case');
$send_for_sign->setSigners([$document_signer]);

$document_created = $document_api->sendDocument($send_for_sign);
ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath("https://api.boldsign.com");
client.setApiKey("YOUR_API_KEY");

DocumentApi documentApi = new DocumentApi(client);

FormField formField = new FormField();
formField.setName("EditableDate");
formField.setFieldType(FormField.FieldTypeEnum.EDITABLE_DATE);
formField.setPageNumber(1);
formField.setFont(FormField.FontEnum.HELVETICA);
formField.setIsRequired(true);
Rectangle bounds = new Rectangle().x(100f).y(100f).width(100f).height(50f);
formField.setBounds(bounds);

EditableDateFieldSettings editableDateFieldSettings = new EditableDateFieldSettings();
editableDateFieldSettings.setDateFormat("dd/MM/yyyy");
editableDateFieldSettings.setMinDate(OffsetDateTime.parse("YOUR_MINDATE"));
editableDateFieldSettings.setMaxDate(OffsetDateTime.parse("YOUR_MAXDATE")); 
formField.setEditableDateFieldSettings(editableDateFieldSettings);

DocumentSigner signer = new DocumentSigner();
signer.setName("Hanky");
signer.setEmailAddress("[email protected]");
signer.setSignerOrder(1);
signer.setSignerType(DocumentSigner.SignerTypeEnum.SIGNER);
signer.setFormFields(Arrays.asList(formField));
signer.setPrivateMessage("This is private message for signer");

SendForSign sendForSign = new SendForSign();

File file = new File("YOUR_FILE_PATH");  
sendForSign.setFiles(Arrays.asList(file));   

sendForSign.setSigners(Arrays.asList(signer));
sendForSign.setTitle("Document SDK API");

DocumentCreated documentCreated = documentApi.sendDocument(sendForSign);
import { DocumentApi, DocumentSigner, DocumentInfo, FormField, Rectangle, SendForSign, EditableDateFieldSettings } from "boldsign"; 
import * as fs from 'fs';

const documentApi = new DocumentApi();
documentApi.setApiKey("YOUR_API_KEY");

const bounds = new Rectangle();
bounds.x = 100;
bounds.y = 50;
bounds.width = 100;
bounds.height = 100;

const editableDateField = new FormField();
editableDateField.name = "EditableDate";
editableDateField.fieldType = FormField.FieldTypeEnum.EditableDate;
editableDateField.font = FormField.FontEnum.Helvetica;
editableDateField.pageNumber = 1;
editableDateField.isRequired = true;
editableDateField.bounds = bounds;

const editableDateFieldSettings = new EditableDateFieldSettings();
editableDateFieldSettings.dateFormat = "dd/MM/yyyy";
editableDateFieldSettings.minDate = new Date('YOUR_MINDATE');
editableDateFieldSettings.maxDate = new Date('YOUR_MAXDATE');
editableDateField.editableDateFieldSettings = editableDateFieldSettings;

const documentSigner = new DocumentSigner();
documentSigner.name = "David";
documentSigner.emailAddress = "[email protected]";
documentSigner.signerOrder = 1;
documentSigner.signerType = DocumentSigner.SignerTypeEnum.Signer;
documentSigner.formFields = [editableDateField];
documentSigner.privateMessage = "This is private message for signer";

const files = fs.createReadStream("YOUR_FILE_PATH");

const sendForSign = new SendForSign();

const documentInfo = new DocumentInfo();
documentInfo.title = "SDK Document Test case";
documentInfo.description = "Testing document from SDK integration test case";
sendForSign.documentInfo = [documentInfo];

sendForSign.title = "Document SDK API";
sendForSign.signers = [documentSigner];
sendForSign.files = [files];

const documentCreated = documentApi.sendDocument(sendForSign);

In the given example, replace the minDate and maxDate values with the desired dates. Set the field type as EditableDate and configure the minDate and maxDate properties according to the supported date formats. Upon executing the provided code, a document will be generated with the specified date range values for the editable date form fields.