Skip to content
Advertisement

DocuSign EnvelopesApi::CreateRecipient API call does not create tabs

i’m trying to update an existing and not completed Docusign envelope and add a new signer to the document inside. For this purpose i’m using the PHP SDK with EnvelopesApi::createRecipient method, framework is CodeIgniter btw. The API call successfully creates the recipient (I can check it in the DocuSign admin panel), but the signature I supplied with a new SignHere tab is not added to the document. I tried making the call via Postman directly but same issue.

I double-checked the supplied ids (clientUserId, recipientId, documentId) and they are ok, same for the SignHere anchor string which is auto placed.

Sample code :

public function testAddRecipient(Contrat $contrat) {
            $CI = & get_instance();
            $envelopeApi = $this->createEnveloppeApi($CI);      # returns the EnvelopesApi object
            $signer = $this->createSigner($contrat, "test@hotmail.com", 3); # returns a new Signer object with a SignHere tab
            $recipients = new Recipients();
            $recipients->setSigners([$signer]);
            $response = $envelopeApi->createRecipient($this->config['ds_account_id'], $contrat->getDsEnvelopeId(), $recipients);
            var_dump($response);
            exit;
        }

Create signer method, returning the Signer object with his SignHere tab :

public function createSigner($contrat, $recipient, $routingOrder) {
        // # Create the signer recipient model
        $signer = new Signer([# The signer
            'email' => $recipient,
            'name' => $recipient,
            'recipient_id' => $this->getRecipientId($contrat, $recipient),  # This method returns an unique id based on supplied email
            'routing_order' => $routingOrder,
            # Setting the client_user_id marks the signer as embedded
            'client_user_id' => $this->getRecipientId($contrat, $recipient)
        ]);


        // # Create a sign_here tab (field on the document)
        $roles = $contrat->getProfilsUtilisateurByMail($recipient);     #Returns a list of roles (a signer may sign several times)
        $signHereArray = [];
        foreach ($roles as $role) {
            $signHere = new SignHere([
                'document_id' => $contrat->getId(),
                'recipient_id' => $this->getRecipientId($contrat, $recipient),
                'tab_id' => 'sign_' . $role,
                'tab_label' => 'Signer Ici',
                'anchor_string' => '**sign-' . $role . '**',
                'anchor_units' => 'pixels',
                'anchor_x_offset' => '10',
                'anchor_y_offset' => '25',
                'anchor_ignore_if_not_present' => 'false',
            ]);

            $signHereArray[] = $signHere;
        }

        $signer->setTabs(new Tabs(['sign_here_tabs' => $signHereArray]));
        return $signer;
    }

JSON body posted to the API endpoint :

{
    "signers": [
        {
            "clientUserId": 15,
            "email": "test@hotmail.com",
            "name": "test@hotmail.com",
            "recipientId": 15,
            "routingOrder": 3,
            "tabs": {
                "signHereTabs": [
                    {
                        "anchorIgnoreIfNotPresent": "false",
                        "anchorString": "**sign-souscripteur**",
                        "anchorUnits": "pixels",
                        "anchorXOffset": "10",
                        "anchorYOffset": "25",
                        "documentId": 156,
                        "recipientId": 15,
                        "tabId": "sign_souscripteur",
                        "tabLabel": "Signer Ici"
                    }
                ]
            }
        }
    ]
}

API response :

{
    "signers": [
        {
            "creationReason": "sender",
            "requireUploadSignature": "false",
            "name": "test@hotmail.com",
            "email": "test@hotmail.com",
            "recipientId": "15",
            "requireIdLookup": "false",
            "routingOrder": "3",
            "status": "created",
            "completedCount": "0",
            "deliveryMethod": "email",
            "recipientType": "signer"
        }
    ],
    "agents": [],
    "editors": [],
    "intermediaries": [],
    "carbonCopies": [],
    "certifiedDeliveries": [],
    "inPersonSigners": [],
    "seals": [],
    "witnesses": [],
    "recipientCount": "1"
}

No error in response, what am I doing wrong ?

I also tried other SDK method like EnvelopesApi::updateRecipients, EnvelopesApi::updateTabs or EnvelopesApi::updateDocumentTabs with no more success

Update Thanks to Inbar Gazit’s response down below, correct endpoint is

/restapi/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/tabs

which is called via these methods in SDK : EnvelopesApi::createTabsWithHttpInfo, EnvelopesApi::updateTabsWithHttpInfo etc.

Advertisement

Answer

I’m sorry this is harder than it should be. The correct end point is [UpdateRecipientTabs][1] It’s a PUT call that looks like this

PUT
/restapi/v2.1/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/tabs
{
  "signHereTabs": [
    {
.. // fill this out
}]}
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement