EIDAS Digital Signature API: Introduction

The SELL&SIGN API gives you the possibility to create new contracts, to manage your customer base and to manage the contracts in progress. This API is accessible in Java, JavaScript, and as a REST-like web service.

With the same SELL&SIGN API, you can create digital signature transactions in the 3 SELL&SIGN signature modes:

  • Online Digital Signature

    The API lets you get any PDF document signed online on your website or in your web application

  • Digital Signature by E-mail

    With the same API, you can also trigger the sending of a PDF document by e-mail to get it signed remotely

  • Digital Signature on a Tablet

    This API gives you the ability to synchronize the PDF document with your tablet to sign it face-to-face

This documentation focuses on the case of an existing PDF document you want to get signed.
However, the SELL&SIGN API also gives the possibility to handle other situations, like the creation of a personalized signature course with marketing visuals, pictures board and an automated generation of the PDF contract ready to be signed.
Please contact us to access these advanced features of SELL&SIGN!

Request your License

With a free trial license, you'll be able to access the SELL&SIGN API and start testing your integration, with the complimentary support of our team of experts.

Using the API with HTTP GET

Although the HTTP PUT method is highly recommended, the REST API is accessible by simple HTTP GET calls on URLs built like this:

https://[host]/calinda/hub/selling/model/[class]/[action type]?action=[method]&[parameters]

Example on the SELL&SIGN cloud

To retrieve all the contract templates present on your licence.

https://cloud.sellandsign.com/calinda/hub/selling/model/contractdefinition/list?action=getContractDefinitionList

Returns:

[{
	"id":86, // this is the identifier of the PDF ADHOC contract template in this sample license
	"name":"Get a PDF document signed",
	"documentName":"","documentToken":"",
	"imageToken":"abc123",
	"rank":1,
	"onFlyComposable":false,
	"syncTimer":1451488562978,
	"lastModificationPlace":"SERVER",
	"minContractor":1,
	"maxContractor":100,
	"signatureModePageRequired":true,
	"conditionToken":"",
	"autovalidationToken":"",
	"contentToken":"",
	"showOptions":false
},
{
	"id":162,
	"name":"Calinda Sellsign",
	"documentName":"Calinda_sell_sign",
	"documentToken":"abc123",
	"imageToken":"abc123\u003d",
	"rank":5,
	"onFlyComposable":false,
	"syncTimer":1475845922546,
	"lastModificationPlace":"SERVER",
	"minContractor":1,
	"maxContractor":1,
	"signatureModePageRequired":true,
	"conditionToken":"",
	"autovalidationToken":"",
	"contentToken":"abc123",
	"showOptions":false
},
{
	"id":344,
	"name":"mandat SEPA",
	"documentName":"SEPA",
	"documentToken":"abc123",
	"imageToken":"abc123",
	"rank":6,
	"onFlyComposable":false,
	"syncTimer":1464001096006,
	"lastModificationPlace":"SERVER",	
	"minContractor":1,
	"maxContractor":1,
	"signatureModePageRequired":true,
	"conditionToken":"",
	"autovalidationToken":"",
	"contentToken":"",
	"showOptions":false,
	"reportGeneratorToken":""
}]

Example on the SELL&SIGN cloud

To retrieve the signature modes allowed for the contract template number 86.

https://cloud.sellandsign.com/calinda/hub/selling/model/signaturemode/list?action=getSignatureModesFor&contract_definition_id=86

Returns:

{
  "newElementAdded":true,"elements":
  [{
     "id":101,
    "contractDefinitionId":86,
    "mode":"INSTANT_OTP",
    "status":1,
    "lastModificationDate":1451488562992,
    "lastModificationPlace":1
    },
    {
    "id":102,
    "contractDefinitionId":86,
    "mode":"INSTANT_PAD",
    "status":1,
    "lastModificationDate":1451488562997,
    "lastModificationPlace":1
    },
    {
    "id":103,
    "contractDefinitionId":86,
    "mode":"MAIL_OTP",
    "status":1,
    "lastModificationDate":1451488563000,
    "lastModificationPlace":1
    }],
  "totalSize":3
}

In order to avoid some limitations like the limited length of the URLs, using the API in HTTP POST is recommended.

Using the API in HTTP POST

The API in HTTP POST and in HTTP GET both work with the same interfaces. The difference is in the way of communicating the parameters to the server. Indeed, instead of beeing included as URL parameters, they are transmitted to the server directly in the request, in the form of a JSON structure.

For exemple, a HTTP POST on the following URL:

https://[host]/calinda/hub/selling/model/[class]/[action type]?action=[method]

will result in calling the method « method », and the settings will be directly passed in the HTTP request, like on the following example:

Example on the SELL&SIGN cloud

To get the signature modes allowed for the contract form number 1.

POST https://cloud.sellandsign.com/calinda/hub/selling/model/signaturemode/list?action=getSignatureModesFor

{
  "contract_definition_id" : "1"
}

Returns the same as the equivalent GET call:

{
  "newElementAdded":true,"elements":
  [{
     "id":101,
    "contractDefinitionId":86,
    "mode":"INSTANT_OTP",
    "status":1,
    "lastModificationDate":1451488562992,
    "lastModificationPlace":1
    },
    {
    "id":102,
    "contractDefinitionId":86,
    "mode":"INSTANT_PAD",
    "status":1,
    "lastModificationDate":1451488562997,
    "lastModificationPlace":1
    },
    {
    "id":103,
    "contractDefinitionId":86,
    "mode":"MAIL_OTP",
    "status":1,
    "lastModificationDate":1451488563000,
    "lastModificationPlace":1
    }],
  "totalSize":3
}

In case of HTTP error

An error HTTP 400 could indicate a missing required parameter, or an inappropriate value. The message included in the error will give you the detailed cause. In case of error HTTP 500, you can contact the support team for assistance by posting a ticket on our support portal.