How to Add Group Checkboxes to the Document

Group Checkboxes allow you to apply validation rules across multiple checkbox fields, ensuring that users select a specified number of checkboxes within a group. This feature is particularly useful in scenarios like surveys or forms, where it's necessary to restrict or mandate the number of options a user can choose.

Validation types in group checkboxes dictate how many checkboxes must be selected, enforcing conditions such as a minimum, maximum, or exact number of selections. This ensures that user input aligns with the desired criteria, improving the accuracy and consistency of the data collected.

Following are the validation types available for group checkbox

  • Maximum: Specifies the maximum number of checkboxes that can be selected.
  • Minimum: Specifies the minimum number of checkboxes that must be selected, with the option to select more if needed.
  • Absolute: Specifies the exact number of checkboxes that must be selected. Both minimumCount and maximumCount should be the same.
  • Range: Allows a range of checkboxes to be selected between a minimum and maximum value.

In this article, we'll explore how to add group checkbox fields to a document via the BoldSign API.Lets see the code examples as follows:

curl -X 'POST' \
  'https://api.boldsign.com/v1/document/send' \
  -H 'accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "title": "Send Document",
    "files": [
        "data:application/pdf;base64,JVBERi0xLjcKJcfs..."
    ],
    "signers": [
        {
            "name": "{Signer name}",
            "signerOrder": 1,
            "emailAddress": "{Signer email}",
            "signerType": "Signer",
            "FormFields": [
                {
                    "fieldType": "CheckBox",
                    "id": "check1",
                    "pageNumber": 1,
                    "bounds": {
                        "X": 100,
                        "Y": 100,
                        "Width": 30,
                        "Height": 30
                    },
                    "isRequired": true,
                    "groupName": "checkgroup1"
                },
                {
                    "id": "check2",
                    "fieldType": "CheckBox",
                    "pageNumber": 1,
                    "bounds": {
                        "X": 130,
                        "Y": 100,
                        "Width": 30,
                        "Height": 30
                    },
                    "isRequired": true,
                    "groupName": "checkgroup1"
                },
                {
                    "fieldType": "CheckBox",
                    "id": "check11",
                    "pageNumber": 1,
                    "bounds": {
                        "X": 300,
                        "Y": 300,
                        "Width": 30,
                        "Height": 30
                    },
                    "isRequired": true,
                    "groupName": "checkgroup2"
                },
                {
                    "id": "check21",
                    "fieldType": "CheckBox",
                    "pageNumber": 1,
                    "bounds": {
                        "X": 350,
                        "Y": 300,
                        "Width": 30,
                        "Height": 30
                    },
                    "isRequired": true,
                    "groupName": "checkgroup2"
                }
            ]
        }
    ],
    "formGroups": [
        {
            "maximumCount": 2,
            "groupNames": [
                "checkgroup1"
            ],
            "groupValidation": "Maximum"
        },
        {
            "minimumCount": 1,
            "groupNames": [
                "checkgroup2"
            ],
            "groupValidation": "Minimum"
        }
    ]
}'
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 formFields = new List<FormField>();

formFields.Add(new FormField(
    name: "check1",
    type: FieldType.CheckBox,
    pageNumber: 1,
    bounds: new Rectangle(x: 200, y: 250, width: 30, height: 30)));

formFields.Add(new FormField(
    name: "check2",
    type: FieldType.CheckBox,
    pageNumber: 1,
    bounds: new Rectangle(x: 230, y: 250, width: 30, height: 30)));

formFields.Add(new FormField(
    name: "check3",
    type: FieldType.CheckBox,
    pageNumber: 1,
    bounds: new Rectangle(x: 200, y: 450, width: 30, height: 30)));

formFields.Add(new FormField(
    name: "check4",
    type: FieldType.CheckBox,
    pageNumber: 1,
    bounds: new Rectangle(x: 230, y: 450, width: 30, height: 30)));

formFields[0].GroupName = "checkGroup1";
formFields[1].GroupName = "checkGroup1";
formFields[2].GroupName = "checkGroup2";
formFields[3].GroupName = "checkGroup2";


var signer = new DocumentSigner(
  signerName: "David",
  signerType: SignerType.Signer,
  signerEmail: "[email protected]",
  formFields: formFields);

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

var groupNames = new List<string>() { "checkGroup1" };
var groupNames2 = new List<string>() { "checkGroup2" };

var formGroups = new List<FormGroup>()
{
    new FormGroup(groupNames: groupNames, groupValidation: GroupValidation.Minimum)
    {
        MinimumCount = 1
    },
    new FormGroup(groupNames: groupNames2, groupValidation: GroupValidation.Maximum)
    {
        MaximumCount = 2
    }
};

var sendForSign = new SendForSign()
{
    Message = "please sign this",
    Title = "Agreement",
    Signers = documentSigners,
    Files = filesToUpload,
    FormGroups = formGroups
};

var documentCreated = documentClient.SendDocument(sendForSign);
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)

    form_fields = [
        boldsign.FormField(
            id="check1",
            fieldType="CheckBox",
            pageNumber=1,
            isRequired=True,
            bounds=boldsign.Rectangle(x=100, y=100, width=30, height=30),
            groupName="checkgroup1"
        ),
        boldsign.FormField(
            id="check2",
            fieldType="CheckBox",
            pageNumber=1,
            isRequired=True,
            bounds=boldsign.Rectangle(x=130, y=100, width=30, height=30),
            groupName="checkgroup1"
        ),
        boldsign.FormField(
            id="check11",
            fieldType="CheckBox",
            pageNumber=1,
            isRequired=True,
            bounds=boldsign.Rectangle(x=300, y=300, width=30, height=30),
            groupName="checkgroup2"
        ),
        boldsign.FormField(
            id="check21",
            fieldType="CheckBox",
            pageNumber=1,
            isRequired=True,
            bounds=boldsign.Rectangle(x=350, y=300, width=30, height=30),
            groupName="checkgroup2"
        )
    ]

    signer = boldsign.DocumentSigner(
        name="{Signer name}",
        emailAddress="{Signer email}",
        signerOrder=1,
        signerType="Signer",
        formFields=form_fields
    )

    form_groups = [
        boldsign.FormGroup(
            groupNames=["checkgroup1"],
            groupValidation="Maximum",
            maximumCount=2
        ),
        boldsign.FormGroup(
            groupNames=["checkgroup2"],
            groupValidation="Minimum",
            minimumCount=1
        )
    ]

    send_for_sign = boldsign.SendForSign(
        title="Send Document",
        files=["YOUR_FILE_PATH"],
        signers=[signer],
        formGroups=form_groups
    )

    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, DocumentSigner, SendForSign, FormGroup};

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

$document_api = new DocumentApi($config);

$check1 = new FormField();
$check1->setId('check1');
$check1->setFieldType('CheckBox');
$check1->setPageNumber(1);
$check1->setIsRequired(true);
$check1->setBounds(new Rectangle(['x' => 100, 'y' => 100, 'width' => 30, 'height' => 30]));
$check1->setGroupName('checkgroup1');

$check2 = new FormField();
$check2->setId('check2');
$check2->setFieldType('CheckBox');
$check2->setPageNumber(1);
$check2->setIsRequired(true);
$check2->setBounds(new Rectangle(['x' => 130, 'y' => 100, 'width' => 30, 'height' => 30]));
$check2->setGroupName('checkgroup1');

$check11 = new FormField();
$check11->setId('check11');
$check11->setFieldType('CheckBox');
$check11->setPageNumber(1);
$check11->setIsRequired(true);
$check11->setBounds(new Rectangle(['x' => 300, 'y' => 300, 'width' => 30, 'height' => 30]));
$check11->setGroupName('checkgroup2');

$check21 = new FormField();
$check21->setId('check21');
$check21->setFieldType('CheckBox');
$check21->setPageNumber(1);
$check21->setIsRequired(true);
$check21->setBounds(new Rectangle(['x' => 350, 'y' => 300, 'width' => 30, 'height' => 30]));
$check21->setGroupName('checkgroup2');

$signer = new DocumentSigner();
$signer->setName('{Signer name}');
$signer->setEmailAddress('{Signer email}');
$signer->setSignerOrder(1);
$signer->setSignerType('Signer');
$signer->setFormFields([$check1, $check2, $check11, $check21]);

$group1 = new FormGroup();
$group1->setGroupNames(['checkgroup1']);
$group1->setGroupValidation('Maximum');
$group1->setMaximumCount(2);

$group2 = new FormGroup();
$group2->setGroupNames(['checkgroup2']);
$group2->setGroupValidation('Minimum');
$group2->setMinimumCount(1);

$send_for_sign = new SendForSign();
$send_for_sign->setTitle('Send Document');
$send_for_sign->setFiles(['YOUR_FILE_PATH']);
$send_for_sign->setSigners([$signer]);
$send_for_sign->setFormGroups([$group1, $group2]);

$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 check1 = new FormField();
check1.setId("check1");
check1.setFieldType(FormField.FieldTypeEnum.CHECK_BOX);
check1.setPageNumber(1);
check1.setIsRequired(true);
check1.setBounds(new Rectangle().x(100f).y(100f).width(30f).height(30f));
check1.setGroupName("checkgroup1");

FormField check2 = new FormField();
check2.setId("check2");
check2.setFieldType(FormField.FieldTypeEnum.CHECK_BOX);
check2.setPageNumber(1);
check2.setIsRequired(true);
check2.setBounds(new Rectangle().x(130f).y(100f).width(30f).height(30f));
check2.setGroupName("checkgroup1");

FormField check11 = new FormField();
check11.setId("check11");
check11.setFieldType(FormField.FieldTypeEnum.CHECK_BOX);
check11.setPageNumber(1);
check11.setIsRequired(true);
check11.setBounds(new Rectangle().x(300f).y(300f).width(30f).height(30f));
check11.setGroupName("checkgroup2");

FormField check21 = new FormField();
check21.setId("check21");
check21.setFieldType(FormField.FieldTypeEnum.CHECK_BOX);
check21.setPageNumber(1);
check21.setIsRequired(true);
check21.setBounds(new Rectangle().x(350f).y(300f).width(30f).height(30f));
check21.setGroupName("checkgroup2");

DocumentSigner signer = new DocumentSigner();
signer.setName("{Signer name}");
signer.setEmailAddress("{Signer email}");
signer.setSignerOrder(1);
signer.setSignerType(DocumentSigner.SignerTypeEnum.SIGNER);
signer.setFormFields(Arrays.asList(check1, check2, check11, check21));

FormGroup group1 = new FormGroup();
group1.setGroupNames(Arrays.asList("checkgroup1"));
group1.setGroupValidation(FormGroup.GroupValidationEnum.MAXIMUM);
group1.setMaximumCount(2);

FormGroup group2 = new FormGroup();
group2.setGroupNames(Arrays.asList("checkgroup2"));
group2.setGroupValidation(FormGroup.GroupValidationEnum.MINIMUM);
group2.setMinimumCount(1);

SendForSign sendForSign = new SendForSign();
sendForSign.setTitle("Send Document");
sendForSign.setFiles(Arrays.asList(new File("YOUR_FILE_PATH")));
sendForSign.setSigners(Arrays.asList(signer));
sendForSign.setFormGroups(Arrays.asList(group1, group2));

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

const documentApi = new DocumentApi("https://api.boldsign.com");
documentApi.setApiKey("YOUR_API_KEY");

const check1 = new FormField();
check1.id = "check1";
check1.fieldType = FormField.FieldTypeEnum.CheckBox;
check1.pageNumber = 1;
check1.bounds = new Rectangle();
check1.bounds.x = 100;
check1.bounds.y = 50;
check1.bounds.width = 100;
check1.bounds.height = 100;
check1.isRequired = true;
check1.groupName = "checkgroup1";

const check2 = new FormField();
check2.id = "check2";
check2.fieldType = FormField.FieldTypeEnum.CheckBox;
check2.pageNumber = 1;
check2.bounds = new Rectangle();
check2.bounds.x = 100;
check2.bounds.y = 50;
check2.bounds.width = 100;
check2.bounds.height = 100;
check2.isRequired = true;
check2.groupName = "checkgroup1";

const check11 = new FormField();
check11.id = "check11";
check11.fieldType = FormField.FieldTypeEnum.CheckBox;
check11.pageNumber = 1;
check11.bounds = new Rectangle();
check11.bounds.x = 100;
check11.bounds.y = 50;
check11.bounds.width = 100;
check11.bounds.height = 100;
check11.isRequired = true;
check11.groupName = "checkgroup2";

const check21 = new FormField();
check21.id = "check21";
check21.fieldType = FormField.FieldTypeEnum.CheckBox;
check21.pageNumber = 1;
check21.bounds = new Rectangle();
check21.bounds.x = 100;
check21.bounds.y = 50;
check21.bounds.width = 100;
check21.bounds.height = 100;
check21.isRequired = true;
check21.groupName = "checkgroup2";

const signer = new DocumentSigner();
signer.name = "{Signer name}";
signer.emailAddress = "{Signer email}";
signer.signerOrder = 1;
signer.signerType = DocumentSigner.SignerTypeEnum.Signer;
signer.formFields = [check1, check2, check11, check21];

const group1 = new FormGroup();
group1.groupNames = ["checkgroup1"];
group1.groupValidation = FormGroup.GroupValidationEnum.Maximum;
group1.maximumCount = 2;

const group2 = new FormGroup();
group2.groupNames = ["checkgroup2"];
group2.groupValidation = FormGroup.GroupValidationEnum.Minimum;
group2.minimumCount = 1;

const sendForSign = new SendForSign();
sendForSign.title = "Send Document";
sendForSign.files = fs.createReadStream("YOUR_FILE_PATH");
sendForSign.signers = [signer];
sendForSign.formGroups = [group1, group2];

const documentCreated = documentApi.sendDocument(sendForSign);

By updating group checkboxes with validation, you control user interactions, ensuring they comply with required conditions for document signing.