API versions

v2.0.0 API changes

Release date:2020-02-07

    Released stable version

Signing Today Web v2.0.0

Signing Today is the perfect Digital Signature Gateway. Whenever in Your workflow You need to add one or more Digital Signatures to Your document, Signing Today is the right choice. You prepare Your documents, Signing Today takes care of all the rest: send invitations (signature tickets) to signers, collects their signatures, send You back the signed document. Integrating Signing Today in Your existing applications is very easy. Just follow these API specifications and get inspired by the many examples presented hereafter.

The DSTNote model

The DSTNote represents a text note that can be attached to a DST whenever an entitled user needs it (when requesting for clarifications, informing of the proceedings, adding context)

  • attributes
  • idintegerint64

    The id of the note

  • dstIdstringuuid

    The UUID code of the Digital Signature Transaction

  • userIdstringuuid

    The UUID code of the user which created the Note

  • createdAtstringdate-time

    The data-time of the note creation

  • textstringany

    Actual content of the DST Note

Retrieve the DSTNotes associated to the DST

This API allows to retrieve the DST Notes associated to the DST.

  • parameters
  • idpath parameterstring

    The value of the unique id

GET

/DST/{id}/note

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

[
  {
    "id": 32,
    "dstId": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "userId": "123e4567-e89b-12d3-a456-426655440000",
    "createdAt": "2018-12-19 09:26:03.478039",
    "text": "This a DSTNote sample"
  }
]

Append a new DSTNote

This API allows to append a new DSTNote to the DST.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • textstring

    This is the actual content of the DSTNote

POST

/DST/{id}/note

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '{
  "text": "This is the new privacy policy."
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "text": "This is the new privacy policy."
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "text": "This is the new privacy policy."
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = {
  "text": "This is the new privacy policy."
}
r = requests.post(
    url,
    data=payload,
    headers=headers
)
print(r.text)
200

Response

{
  "id": 32,
  "dstId": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
  "userId": "123e4567-e89b-12d3-a456-426655440000",
  "createdAt": "2018-12-19 09:26:03.478039",
  "text": "This a DSTNote sample"
}

Edit a DSTNote

This API allows to edit a DSTNote.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • noteIdpath parameterinteger

    The reference of a DSTNote

  • idinteger

    The id of the note

  • dstIdstring

    The UUID code of the Digital Signature Transaction

  • userIdstring

    The UUID code of the user which created the Note

  • createdAtstring

    The data-time of the note creation

  • textstring

    Actual content of the DST Note

PUT

/DST/{id}/note/{noteId}

Click to copy
curl -L -X PUT \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note/14' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": 32,
  "dstId": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
  "userId": "123e4567-e89b-12d3-a456-426655440000",
  "createdAt": "2018-12-19 09:26:03.478039",
  "text": "This a DSTNote sample"
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note/14");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "id": 32,
  "dstId": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
  "userId": "123e4567-e89b-12d3-a456-426655440000",
  "createdAt": "2018-12-19 09:26:03.478039",
  "text": "This a DSTNote sample"
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "id": 32,
  "dstId": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
  "userId": "123e4567-e89b-12d3-a456-426655440000",
  "createdAt": "2018-12-19 09:26:03.478039",
  "text": "This a DSTNote sample"
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note/14")
  .method("PUT", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note/14"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = {
  "id": 32,
  "dstId": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
  "userId": "123e4567-e89b-12d3-a456-426655440000",
  "createdAt": "2018-12-19 09:26:03.478039",
  "text": "This a DSTNote sample"
}
r = requests.put(
    url,
    data=payload,
    headers=headers
)
print(r.text)
200

Response

{
  "id": 32,
  "dstId": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
  "userId": "123e4567-e89b-12d3-a456-426655440000",
  "createdAt": "2018-12-19 09:26:03.478039",
  "text": "This a DSTNote sample"
}

Delete a DSTNote

This API allows to delete a DSTNote.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • noteIdpath parameterinteger

    The reference of a DSTNote

DELETE

/DST/{id}/note/{noteId}

Click to copy
curl -L -X DELETE \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note/14' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note/14");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note/14")
  .method("DELETE", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/note/14"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.delete(
    url,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

The Devices APIs set

Devices are registered instances of mobile devices (e.g.: smartphones and tables) with SigningToday App installed and bound to a User. This set of APIs lets You manage them.

Get the list of trusted devices

The API allows to enumerate all the devices of a user.

  • parameters
  • userIdquery parameter

    Select the objects relative to the user specified by the parameter. If not specified will be used the id of the current authenticated user

  • $topquery parameter

    A number of results to return. Applied after $skip

  • $skipquery parameter

    An offset into the collection of results

  • $countquery parameter

    If true, the server includes the count of all the items in the response

GET

/devices

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/devices' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/devices");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/devices")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/devices"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "count": 1,
  "values": [
    {
      "userId": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "deviceId": "e6419924-fd1d-4c42-9fa2-88023461f5df",
      "name": "John Doe\"s Iphone",
      "registeredAt": "2021-10-17T07:26Z"
    }
  ]
}

Retrieve a challenge for authorizing a new trusted device

This API allows to retrieve a challenge in order to authorize a new trusted device.

  • If asked in image/png the challenge is given encoded as a QR-Code image.
  • An invocation of the endpoint invalidate any previous challenge.
  • The challenge lasts 10 minutes.
GET

/device/authorization

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/device/authorization' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/device/authorization");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/device/authorization")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/device/authorization"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "userId": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
  "baseURL": "https://web.sandbox.signingtoday.com/api/challenge",
  "challenge": "8df173c3bcd4274715491fc196705da8"
}

Register a new trusted device

This API allows to register a new trusted device. If the device is already present, it returns the current associated Token and updates the name.

  • parameters
  • challengestring

    The challenge to be used to register the device

  • deviceIdstring

    The id of the device

  • namestring

    An arbitrary name to be assigned to the device

POST

/device/authorization

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/device/authorization' \
  -H 'Content-Type: application/json' \
  -d '{
  "challenge": "2a12618a-4128-11ea-b77f-2e728ce88125",
  "deviceId": "123e4567-e89b-12d3-a456-556642440000",
  "name": "John Doe\"s iPhone"
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/device/authorization");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "challenge": "2a12618a-4128-11ea-b77f-2e728ce88125",
  "deviceId": "123e4567-e89b-12d3-a456-556642440000",
  "name": "John Doe\"s iPhone"
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "challenge": "2a12618a-4128-11ea-b77f-2e728ce88125",
  "deviceId": "123e4567-e89b-12d3-a456-556642440000",
  "name": "John Doe\"s iPhone"
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/device/authorization")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/device/authorization"
headers = {
    "Content-Type": "application/json"
}
payload = {
  "challenge": "2a12618a-4128-11ea-b77f-2e728ce88125",
  "deviceId": "123e4567-e89b-12d3-a456-556642440000",
  "name": "John Doe\"s iPhone"
}
r = requests.post(
    url,
    data=payload,
    headers=headers
)
print(r.text)
200

Response

[
  "123e4567-e89b-12d3-a456-556642440000"
]

Clear a trusted device

This APIs allows to deregister a deviceId of a trusted device.

It also deletes any notification push-token associated to the trusted device.

  • parameters
  • deviceIdquery parameter

    The deviceId to deregister

  • userIdquery parameter

    Select the objects relative to the user specified by the parameter. If not specified will be used the id of the current authenticated user

DELETE

/device/authorization

Click to copy
curl -L -X DELETE \
  'https://web.sandbox.signingtoday.com/api/device/authorization?deviceId=05ea656f-df69-49b1-a12b-9bf640c427c2' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/device/authorization?deviceId=05ea656f-df69-49b1-a12b-9bf640c427c2");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/device/authorization?deviceId=05ea656f-df69-49b1-a12b-9bf640c427c2")
  .method("DELETE", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/device/authorization"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
params = {
    "deviceId": "05ea656f-df69-49b1-a12b-9bf640c427c2"
}
r = requests.delete(
    url,
    params=params,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

The Digital Signature Transaction model

The Digital Signature Transaction is the core object at the center of every digital signature workflow in Signing Today. It is a collection element and holds every document (to be signed or just attached to the transaction) as well as the signature plan required to fulfill the transaction; how many signatures are required, are there any forms to be filled, appearance, signature sequence, signers... everything starts here.

  • attributes
  • idstringuuid

    The uuid code that identifies the Digital Signature Transaction

  • domainstringany

    The domain is the Organization which a user or a DST belongs

  • titlestringany

    Title of the Digital Signature Transaction

  • replacesstringuuid

    The DST which this one replaces

  • replacedBystringuuid

    The DST which has replaces the current one

  • createdByUserstringuuid

    The user created the Digital Signature Transaction

  • createdAtstringdate-time

    Date of creation of the Digital Signature Transaction

  • documentsarray

    The documents field is an array containing document objects, where everyone of them is defined as follows

    • _instance_idint64

      It is a reference for internal use

    • idint32

      Unique Id of the document

    • plainDocumentUuiduuid

      Id of the associated Resource (plain PDF file e.g. the one uploaded by the user)

    • filledDocumentUuiduuid

      Id of the associated PDF file that contains all the forms filled (present only once the whole document has been filled)

    • signedDocumentUuiduuid

      Id of the associated PDF file that contains all the signatures (present only once the whole document has been signed)

    • statusany

      The status of the Document, which can be:

      • "plain": The document has been correctly updated by the user
      • "filled": The document has been filled
      • "signed": The document has been signed
    • formsarray

      The fillable elements of the document. Use the type field to identify textual fillable fields and signature fields

    • signatureRequestsarray

      The list of signature request of the document

    • signerGroupsarray

      The sign plan for the document

  • publishedAtstringdate-time

    The date-time the DST has been published

  • expiresAtstringdate-time

    Indicates when the DST will expire

  • resourcesarray

    An array of resources attached to the DST, each one defined as follows

    • iduuid

      Unique id of the resource

    • domainany

      The domain is the Organization which a user or a DST belongs

    • typeany

      Type of the resource, for example a PDFResource

    • dstUuiduuid

      Unique id of the DST which the resource is correlated

    • titleany

      Title of the resource

    • filenameany

      Name of the file uploaded, with its extension as well

    • urlurl

      Url of the resource

    • sizeint64

      Size of the resource

    • createdAtdate-time

      Indicates when the resource has been uploaded

    • mimetypeany

      MIME type of the resource

    • pagesint32

      Indicates how many pages the resource is

    • extraDataany

      Extra data of the resource

  • signaturesarray

    An array of signatures, each one defined as follows

    • _instance_idint64

      It is a reference for internal use

    • documentIdint32

      Id of the document

    • signatureRequestIdint32

      Id of the requested signature

    • signedAtdate-time

      Indicates when the DST has been signed

    • declinedReasonany

      no description provided

    • statusany

      Status of the signature, which can be signed or declined

    • extraDataany

      Extra data of the signature

  • statusstring

    Status of the Digital Signature Transaction

    • draft
    • downloadingInDraft
    • downloadingInPublished
    • published
    • toFill
    • toSign
    • expired
    • signed
    • rejected
    • error
  • errorMessagestringNone

    The explication of the occurred error

  • deletedAtstringdate-time

    Indicates when the DST has been deleted

  • tagsarray

    An array of tags for the DST. In such way is possible to tag in the same way some DSTs in order to keep them organized and been easy to find them through the custom search

  • templateboolean

    Indicates if a template has been used to create the DST or not

  • publicTemplateboolean

    Indicates if a public template has been used to create the DST or not

  • extraDataobject

    Extra information about the DST

  • visibleToarray

    UUIDs of the users to which the DST is visible

  • ccGroupsarray

    Name of groups that are informed about the DST

  • ccUsersarray

    UUIDs of the users that are informed about the DST

  • urgentboolean

    True if the DST is flagged as urgent

  • updatedAtstringdate-time

    Indicates the last update of the DST, such as the performing of a signature

Retrieve DSTs

This API allows to list the DSTs of an organization.

  • parameters
  • templatequery parameter

    Select templates or instances

  • userIdquery parameter

    Select the objects relative to the user specified by the parameter. If not specified will be used the id of the current authenticated user

  • $topquery parameter

    A number of results to return. Applied after $skip

  • $skipquery parameter

    An offset into the collection of results

  • $countquery parameter

    If true, the server includes the count of all the items in the response

  • $orderByquery parameter

    An ordering definition (eg. $orderBy=updatedAt,desc)

  • $filterquery parameter

    A filter definition (eg. $filter=name == "Milk" or surname == "Bread")

GET

/DSTs

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/DSTs' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DSTs");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DSTs")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DSTs"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "count": 1,
  "values": [
    {
      "domain": "bit4id",
      "title": "Real estate sales contract transaction",
      "documents": [
        {
          "id": 1,
          "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
          "forms": [
            {
              "id": 2,
              "documentId": 3,
              "type": "SignatureForm",
              "positionX": "100.00",
              "positionY": "58.14",
              "width": "10.1",
              "height": "5.66",
              "page": 1,
              "signerId": 1,
              "toFill": true,
              "filled": false,
              "invisible": true,
              "extraData": {
                "signatureRequestId": 1
              }
            }
          ],
          "signatureRequests": [
            {
              "id": 3,
              "reason": "As the Buyer",
              "description": "The proponent",
              "signerId": 2,
              "signProfile": "PAdES",
              "withTimestamp": true,
              "declinable": false,
              "restrictions": [
                {
                  "rule": "",
                  "operator": "",
                  "value": ""
                }
              ],
              "extraData": {
                "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
              }
            }
          ],
          "signerGroups": [
            {
              "signers": [
                {
                  "id": 1,
                  "name": "Adam",
                  "surname": "Smith",
                  "email": "adam.smith@email.com",
                  "phone": "+013392213450",
                  "role": "buyer",
                  "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
                  "templateLabel": "Buyer"
                }
              ]
            }
          ]
        }
      ],
      "resources": [
        {
          "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
          "domain": "bit4id",
          "title": "Sales Contract",
          "filename": "contract.pdf",
          "pages": 3,
          "extraData": {
            "toSign": true
          }
        }
      ],
      "signatures": [
        {
          "documentId": 3,
          "signatureRequestId": 2,
          "signedAt": "2021-10-17T07:26Z",
          "declinedReason": "Reason of declination",
          "extraData": {
            "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
          }
        }
      ],
      "errorMessage": null,
      "tags": [
        "important"
      ],
      "template": false,
      "publicTemplate": false,
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      },
      "visibleTo": [
        "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
      ],
      "ccGroups": [
        "Marketing"
      ],
      "ccUsers": [
        "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
      ],
      "urgent": false
    }
  ]
}

Create a new DST

This API allows to creates a new DST. A DST is created in the Draft state and then updated using PUT. Example of creation request:

{
  status: "draft",
  publishedAt: null,
  tags: [],
  urgent: false,
  template: false
}

To add documents use the Resources Patch endpoint /DST/{id}/resources.

If the template flag is set true the DST is a Template. If the publicTemplate flag is set true the Template is visible to all users with rights to create a DST.

A DST is made made available to users using publish end point. A template generates a DST with the instantiate endpoint.

  • parameters
  • idstring

    The uuid code that identifies the Digital Signature Transaction

  • domainstring

    The domain is the Organization which a user or a DST belongs

  • titlestring

    Title of the Digital Signature Transaction

  • replacesstring

    The DST which this one replaces

  • replacedBystring

    The DST which has replaces the current one

  • createdByUserstring

    The user created the Digital Signature Transaction

  • createdAtstring

    Date of creation of the Digital Signature Transaction

  • documentsarray

    The documents field is an array containing document objects, where everyone of them is defined as follows

    • _instance_idint64

      It is a reference for internal use

    • idint32

      Unique Id of the document

    • plainDocumentUuiduuid

      Id of the associated Resource (plain PDF file e.g. the one uploaded by the user)

    • filledDocumentUuiduuid

      Id of the associated PDF file that contains all the forms filled (present only once the whole document has been filled)

    • signedDocumentUuiduuid

      Id of the associated PDF file that contains all the signatures (present only once the whole document has been signed)

    • statusany

      The status of the _Document_, which can be:
      - "plain": The document has been correctly updated by the user
      - "filled": The document has been filled
      - "signed": The document has been signed

    • formsarray

      The fillable elements of the document. Use the type field to identify textual fillable fields and signature fields

    • signatureRequestsarray

      The list of signature request of the document

    • signerGroupsarray

      The sign plan for the document

  • publishedAtstring

    The date-time the DST has been published

  • expiresAtstring

    Indicates when the DST will expire

  • resourcesarray

    An array of resources attached to the DST, each one defined as follows

    • iduuid

      Unique id of the resource

    • domainany

      The _domain_ is the Organization which a user or a DST belongs

    • typeany

      Type of the resource, for example a _PDFResource_

    • dstUuiduuid

      Unique id of the _DST_ which the resource is correlated

    • titleany

      Title of the resource

    • filenameany

      Name of the file uploaded, with its extension as well

    • urlurl

      Url of the resource

    • sizeint64

      Size of the resource

    • createdAtdate-time

      Indicates when the resource has been uploaded

    • mimetypeany

      _MIME_ type of the resource

    • pagesint32

      Indicates how many pages the resource is

    • extraDataany

      Extra data of the resource

  • signaturesarray

    An array of signatures, each one defined as follows

    • _instance_idint64

      It is a reference for internal use

    • documentIdint32

      Id of the document

    • signatureRequestIdint32

      Id of the requested signature

    • signedAtdate-time

      Indicates when the DST has been signed

    • declinedReasonany

      None

    • statusany

      Status of the signature, which can be _signed_ or _declined_

    • extraDataany

      Extra data of the signature

  • statusstring

    Status of the Digital Signature Transaction

    • draft
    • downloadingInDraft
    • downloadingInPublished
    • published
    • toFill
    • toSign
    • expired
    • signed
    • rejected
    • error
  • errorMessagestring

    The explication of the occurred error

  • deletedAtstring

    Indicates when the DST has been deleted

  • tagsarray

    An array of tags for the DST. In such way is possible to tag in the same way some DSTs in order to keep them organized and been easy to find them through the custom search

  • templateboolean

    Indicates if a template has been used to create the DST or not

  • publicTemplateboolean

    Indicates if a public template has been used to create the DST or not

  • extraDataobject

    Extra information about the DST

  • visibleToarray

    UUIDs of the users to which the DST is visible

  • ccGroupsarray

    Name of groups that are informed about the DST

  • ccUsersarray

    UUIDs of the users that are informed about the DST

  • urgentboolean

    True if the DST is flagged as urgent

  • updatedAtstring

    Indicates the last update of the DST, such as the performing of a signature

POST

/DSTs

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/DSTs' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DSTs");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DSTs")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DSTs"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = {
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}
r = requests.post(
    url,
    data=payload,
    headers=headers
)
print(r.text)
201

Response

{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}

Instantiate a DST from a template

This API allows to instantiate a DST from a template by specifying the template Id.

  • parameters
  • idpath parameterstring

    The value of the unique id

POST

/DST/{id}/instantiate

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/instantiate' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/instantiate");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/instantiate")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/instantiate"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.post(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}

Modify a published DST template

This API allows to move a published DST to DRAFT, allowing the modification. This way is possible to modify a DST Template.

  • parameters
  • idpath parameterstring

    The value of the unique id

POST

/DST/{id}/modify

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/modify' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/modify");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/modify")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/modify"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.post(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}

Create a template from a DST

This API allows to creates a new template starting from a DST. Currently implemented only for published DST templates.

  • parameters
  • idpath parameterstring

    The value of the unique id

POST

/DST/{id}/templatize

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/templatize' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/templatize");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/templatize")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/templatize"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.post(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}

Retrieve the audit records associated to the DST

This API allows to retrieves the audit records associated to the DST.

  • parameters
  • idpath parameterstring

    The value of the unique id

GET

/DST/{id}/audit

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/audit' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/audit");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/audit")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/audit"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

[
  {
    "at": "2020-01-17T07:26Z",
    "event": "stage_signed",
    "signer": {
      "name": "Adam",
      "surname": "Smith",
      "email": "adam.smith@email.com",
      "role": "buyer",
      "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
    },
    "value": "utente registrato John Doe (jdo@bit4id.com) ha pubblicato la DST \"Contratto\" (aeaa6c62-8b59-4fac-9419-8e9a95aea410)\nLa DST contiene i documenti:\n- \"Contratto Preliminare\" con compilatori [John Doe (jdo@bit4id.com)] e firmatari [Adam Smith (adam.smith@email.com)]",
    "dstId": "00f462e8-333c-45d6-bdef-95797cc1a2a9",
    "documentId": 2,
    "fillableFormId": 3,
    "signatureRequestId": 1,
    "noteId": 2
  }
]

Replace a rejected DST

This API allows to replace a rejected DST instantiating a new one. The replacing DST is created in DRAFT state.

  • parameters
  • idpath parameterstring

    The value of the unique id

POST

/DST/{id}/replace

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/replace' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/replace");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/replace")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/replace"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.post(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}

Return the address for signing

This API returns the address to perform the signature.

  • parameters
  • idpath parameter

    The value of the unique id

  • docIdpath parameter

    Reference to docId has to be signed

  • signIdpath parameter

    Reference to the signature request id

GET

/DST/{id}/sign/{docId}/{signId}

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/DST/{id}/sign/{docId}/{signId}' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/{id}/sign/{docId}/{signId}");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/{id}/sign/{docId}/{signId}")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/{id}/sign/{docId}/{signId}"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "url": "https://web.sandbox.signingtoday.com/dst/da789cfe-4a8f-42d1-a34e-adc6908d6956"
}

Retrieve a DST

This API allows to retrieve a DST.

  • parameters
  • idpath parameterstring

    The value of the unique id

GET

/DST/{id}

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}

Update a DST

This API allows to update a DST.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • idstring

    The uuid code that identifies the Digital Signature Transaction

  • domainstring

    The domain is the Organization which a user or a DST belongs

  • titlestring

    Title of the Digital Signature Transaction

  • replacesstring

    The DST which this one replaces

  • replacedBystring

    The DST which has replaces the current one

  • createdByUserstring

    The user created the Digital Signature Transaction

  • createdAtstring

    Date of creation of the Digital Signature Transaction

  • documentsarray

    The documents field is an array containing document objects, where everyone of them is defined as follows

    • _instance_idint64

      It is a reference for internal use

    • idint32

      Unique Id of the document

    • plainDocumentUuiduuid

      Id of the associated Resource (plain PDF file e.g. the one uploaded by the user)

    • filledDocumentUuiduuid

      Id of the associated PDF file that contains all the forms filled (present only once the whole document has been filled)

    • signedDocumentUuiduuid

      Id of the associated PDF file that contains all the signatures (present only once the whole document has been signed)

    • statusany

      The status of the _Document_, which can be:
      - "plain": The document has been correctly updated by the user
      - "filled": The document has been filled
      - "signed": The document has been signed

    • formsarray

      The fillable elements of the document. Use the type field to identify textual fillable fields and signature fields

    • signatureRequestsarray

      The list of signature request of the document

    • signerGroupsarray

      The sign plan for the document

  • publishedAtstring

    The date-time the DST has been published

  • expiresAtstring

    Indicates when the DST will expire

  • resourcesarray

    An array of resources attached to the DST, each one defined as follows

    • iduuid

      Unique id of the resource

    • domainany

      The _domain_ is the Organization which a user or a DST belongs

    • typeany

      Type of the resource, for example a _PDFResource_

    • dstUuiduuid

      Unique id of the _DST_ which the resource is correlated

    • titleany

      Title of the resource

    • filenameany

      Name of the file uploaded, with its extension as well

    • urlurl

      Url of the resource

    • sizeint64

      Size of the resource

    • createdAtdate-time

      Indicates when the resource has been uploaded

    • mimetypeany

      _MIME_ type of the resource

    • pagesint32

      Indicates how many pages the resource is

    • extraDataany

      Extra data of the resource

  • signaturesarray

    An array of signatures, each one defined as follows

    • _instance_idint64

      It is a reference for internal use

    • documentIdint32

      Id of the document

    • signatureRequestIdint32

      Id of the requested signature

    • signedAtdate-time

      Indicates when the DST has been signed

    • declinedReasonany

      None

    • statusany

      Status of the signature, which can be _signed_ or _declined_

    • extraDataany

      Extra data of the signature

  • statusstring

    Status of the Digital Signature Transaction

    • draft
    • downloadingInDraft
    • downloadingInPublished
    • published
    • toFill
    • toSign
    • expired
    • signed
    • rejected
    • error
  • errorMessagestring

    The explication of the occurred error

  • deletedAtstring

    Indicates when the DST has been deleted

  • tagsarray

    An array of tags for the DST. In such way is possible to tag in the same way some DSTs in order to keep them organized and been easy to find them through the custom search

  • templateboolean

    Indicates if a template has been used to create the DST or not

  • publicTemplateboolean

    Indicates if a public template has been used to create the DST or not

  • extraDataobject

    Extra information about the DST

  • visibleToarray

    UUIDs of the users to which the DST is visible

  • ccGroupsarray

    Name of groups that are informed about the DST

  • ccUsersarray

    UUIDs of the users that are informed about the DST

  • urgentboolean

    True if the DST is flagged as urgent

  • updatedAtstring

    Indicates the last update of the DST, such as the performing of a signature

PUT

/DST/{id}

Click to copy
curl -L -X PUT \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .method("PUT", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = {
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}
r = requests.put(
    url,
    data=payload,
    headers=headers
)
print(r.text)
200

Response

{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}

Delete a DST

This API allows to delete a DST. Actually the DST is marked as deleted thus not displayed anymore into the organization, but it will still be present in the database.

  • parameters
  • idpath parameterstring

    The value of the unique id

DELETE

/DST/{id}

Click to copy
curl -L -X DELETE \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .method("DELETE", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.delete(
    url,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Fill a form of a DST

This API allows to fill a form of a DST.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • _instance_idinteger

    It is a reference for internal use

  • idinteger

    Id of the form

  • documentIdinteger

    Id of the document

  • typestring

    Type of the fill form

  • positionXnumber

    Position onto the X axis of the form, expressed in percentage

  • positionYnumber

    Position onto the Y axis of the form, expressed in percentage

  • widthnumber

    Width of the form expressed in percentage

  • heightnumber

    Height of the form expressed in percentage

  • pageinteger

    Page of the document where the form is

  • signerIdinteger

    Id of the signer in the sign plan

  • toFillboolean

    True if the field need to be filled by the user. In case of a Signature it is false

  • filledboolean

    True ones the form has been filled

  • invisibleboolean

    True if the appearance has to be hidden

  • extraDataobject

    Extra information about the form

PATCH

/DST/{id}/fill

Click to copy
curl -L -X PATCH \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/fill' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": 2,
  "documentId": 3,
  "type": "SignatureForm",
  "positionX": "100.00",
  "positionY": "58.14",
  "width": "10.1",
  "height": "5.66",
  "page": 1,
  "signerId": 1,
  "toFill": true,
  "filled": false,
  "invisible": true,
  "extraData": {
    "signatureRequestId": 1
  }
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/fill");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "id": 2,
  "documentId": 3,
  "type": "SignatureForm",
  "positionX": "100.00",
  "positionY": "58.14",
  "width": "10.1",
  "height": "5.66",
  "page": 1,
  "signerId": 1,
  "toFill": true,
  "filled": false,
  "invisible": true,
  "extraData": {
    "signatureRequestId": 1
  }
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "id": 2,
  "documentId": 3,
  "type": "SignatureForm",
  "positionX": "100.00",
  "positionY": "58.14",
  "width": "10.1",
  "height": "5.66",
  "page": 1,
  "signerId": 1,
  "toFill": true,
  "filled": false,
  "invisible": true,
  "extraData": {
    "signatureRequestId": 1
  }
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/fill")
  .method("PATCH", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/fill"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = {
  "id": 2,
  "documentId": 3,
  "type": "SignatureForm",
  "positionX": "100.00",
  "positionY": "58.14",
  "width": "10.1",
  "height": "5.66",
  "page": 1,
  "signerId": 1,
  "toFill": true,
  "filled": false,
  "invisible": true,
  "extraData": {
    "signatureRequestId": 1
  }
}
r = requests.patch(
    url,
    data=payload,
    headers=headers
)
print(r.text)
200

Response

{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}

Publish a DST

This API allows to publish a DST, the new state becomes published. It will automatically evolve to a new state where it will be filled or signed.

  • parameters
  • idpath parameterstring

    The value of the unique id

POST

/DST/{id}/publish

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/publish' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/publish");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/publish")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/publish"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.post(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}

Send notifications for a DST

This API allows to send notifications to pending users for an active DST.

  • parameters
  • idpath parameterstring

    The value of the unique id

POST

/DST/{id}/notify

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/notify' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/notify");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/notify")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/notify"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.post(
    url,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

The Notifications APIs set

The Notifications APIs set describes all about the notifications, used to send updates about the DSTs to everyone involved.

Get latest DST Notifications

This APIs allows to get latest user Notifications for DSTs sorted desc by time.

  • parameters
  • $topquery parameter

    A number of results to return. Applied after $skip

  • $skipquery parameter

    An offset into the collection of results

  • $countquery parameter

    If true, the server includes the count of all the items in the response

GET

/notifications/dsts

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/notifications/dsts' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/notifications/dsts");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/notifications/dsts")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/notifications/dsts"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "count": 1,
  "values": [
    {
      "dstTitle": "Contract",
      "username": "johndoe",
      "email": "jdo@bit4id.com"
    }
  ]
}

Clear Notifications for a DST

This API notifies that a user consumed all active notifications for a DST.

  • parameters
  • idpath parameter

    The value of the unique id

DELETE

/notifications/dst/{id}

Click to copy
curl -L -X DELETE \
  'https://web.sandbox.signingtoday.com/api/notifications/dst/{id}' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/notifications/dst/{id}");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/notifications/dst/{id}")
  .method("DELETE", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/notifications/dst/{id}"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.delete(
    url,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Register a token for push notifications

This API allows to register a token for push notifications. Only trusted deviceId can be registered.

  • parameters
  • deviceIdstring

    Unique reference to the device

  • tokenstring

    The token to register

POST

/notifications/push-token

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/notifications/push-token' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '{
  "deviceId": "1ca229c8-2a99-4f3e-9421-36377fd8d9e5",
  "token": "c84c1180-3bdf-44e0-afee-1e255c7ab88f"
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/notifications/push-token");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "deviceId": "1ca229c8-2a99-4f3e-9421-36377fd8d9e5",
  "token": "c84c1180-3bdf-44e0-afee-1e255c7ab88f"
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "deviceId": "1ca229c8-2a99-4f3e-9421-36377fd8d9e5",
  "token": "c84c1180-3bdf-44e0-afee-1e255c7ab88f"
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/notifications/push-token")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/notifications/push-token"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = {
  "deviceId": "1ca229c8-2a99-4f3e-9421-36377fd8d9e5",
  "token": "c84c1180-3bdf-44e0-afee-1e255c7ab88f"
}
r = requests.post(
    url,
    data=payload,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Clear a registered push notification token

This API deregister a deviceId from the push notifications.

  • parameters
  • deviceIdquery parameter

    The deviceId to deregister

DELETE

/notifications/push-token

Click to copy
curl -L -X DELETE \
  'https://web.sandbox.signingtoday.com/api/notifications/push-token?deviceId=05ea656f-df69-49b1-a12b-9bf640c427c2' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/notifications/push-token?deviceId=05ea656f-df69-49b1-a12b-9bf640c427c2");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/notifications/push-token?deviceId=05ea656f-df69-49b1-a12b-9bf640c427c2")
  .method("DELETE", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/notifications/push-token"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
params = {
    "deviceId": "05ea656f-df69-49b1-a12b-9bf640c427c2"
}
r = requests.delete(
    url,
    params=params,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

The Resources APIs set

The Resources APIs set is all about the Resources/Files associated to Users or DSTs. This set of APIs contains what You need to add, delete or just retrieve resources of a DST, such as the documents to be signed. In the same way there are APIs to upload or delete the signature appearance of the users' identities.

Download an identity appearance resource

This API allows to get the identity appearance resource.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • identity-idpath parameterstring

    The unique id of the Identity

GET

/user/{id}/identity/{identity-id}/appearance

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

The response is the binary resource file content.

Add a graphical appearance to a user's identity

This API allows to add a graphical appearance to the identity of a user.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • identity-idpath parameterstring

    The unique id of the Identity

  • filestring

    The path of the file to upload

  • filenamestring

    The name of the file

  • resourceTypestring

    The type of the resource

    • PDF_Document
    • Image
  • titlestring

    User-defined title of the resource

POST

/user/{id}/identity/{identity-id}/appearance

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: multipart/form-data' \
  -f 'file=C:\Users\jdo\contracts\contract.pdf' \
  -f 'filename=contract.pdf' \
  -f 'resourceType=PDF_Document' \
  -f 'title=Sales Contract'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "multipart/form-data");
request.AlwaysMultipartFormData = true;
request.AddParameter("file", "C:\Users\jdo\contracts\contract.pdf");
request.AddParameter("filename", "contract.pdf");
request.AddParameter("resourceType", "PDF_Document");
request.AddParameter("title", "Sales Contract");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("multipart/form-data");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
  .addFormDataPart("file", "C:\Users\jdo\contracts\contract.pdf")
  .addFormDataPart("filename", "contract.pdf")
  .addFormDataPart("resourceType", "PDF_Document")
  .addFormDataPart("title", "Sales Contract")
  .build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "multipart/form-data")
  .build();
Response response = client.newCall(request).execute();
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
url = "https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "multipart/form-data"
}
payload = MultipartEncoder(
    fields = {
        "file": "C:\\Users\\jdo\\contracts\\contract.pdf",
        "filename": "contract.pdf",
        "resourceType": "PDF_Document",
        "title": "Sales Contract"
})
r = requests.post(
    url,
    data=payload,
    headers=headers
)
print(r.text)
200

Response

{
  "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
  "domain": "bit4id",
  "title": "Sales Contract",
  "filename": "contract.pdf",
  "pages": 3,
  "extraData": {
    "toSign": true
  }
}

Delete a user appearance resource.

This API allows to delete an identity appearance resource.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • identity-idpath parameterstring

    The unique id of the Identity

DELETE

/user/{id}/identity/{identity-id}/appearance

Click to copy
curl -L -X DELETE \
  'https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance")
  .method("DELETE", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.delete(
    url,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Retrieve a Resource

This API allows to retrieve a Resource.

  • parameters
  • idpath parameterstring

    The value of the unique id

GET

/resource/{id}

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/resource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/resource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/resource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/resource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

The response is the binary resource file content.

Update a Resource

This API allows to update a Resource.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • idstring

    Unique id of the resource

  • domainstring

    The domain is the Organization which a user or a DST belongs

  • typestring

    Type of the resource, for example a PDFResource

  • dstUuidstring

    Unique id of the DST which the resource is correlated

  • titlestring

    Title of the resource

  • filenamestring

    Name of the file uploaded, with its extension as well

  • urlstring

    Url of the resource

  • sizeinteger

    Size of the resource

  • createdAtstring

    Indicates when the resource has been uploaded

  • mimetypestring

    MIME type of the resource

  • pagesinteger

    Indicates how many pages the resource is

  • extraDataobject

    Extra data of the resource

PUT

/resource/{id}

Click to copy
curl -L -X PUT \
  'https://web.sandbox.signingtoday.com/api/resource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
  "domain": "bit4id",
  "title": "Sales Contract",
  "filename": "contract.pdf",
  "pages": 3,
  "extraData": {
    "toSign": true
  }
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/resource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
  "domain": "bit4id",
  "title": "Sales Contract",
  "filename": "contract.pdf",
  "pages": 3,
  "extraData": {
    "toSign": true
  }
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
  "domain": "bit4id",
  "title": "Sales Contract",
  "filename": "contract.pdf",
  "pages": 3,
  "extraData": {
    "toSign": true
  }
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/resource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .method("PUT", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/resource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = {
  "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
  "domain": "bit4id",
  "title": "Sales Contract",
  "filename": "contract.pdf",
  "pages": 3,
  "extraData": {
    "toSign": true
  }
}
r = requests.put(
    url,
    data=payload,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Delete a Resource

This API allows to delete a Resource.

  • parameters
  • idpath parameterstring

    The value of the unique id

DELETE

/DST/resource/{id}

Click to copy
curl -L -X DELETE \
  'https://web.sandbox.signingtoday.com/api/DST/resource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/resource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/resource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .method("DELETE", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/resource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.delete(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}

Retrieve all resources associated to a DST

This API allows to retrieve all resources associated to a DST.

  • parameters
  • idpath parameterstring

    The value of the unique id

GET

/DST/{id}/resources

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/resources' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/resources");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/resources")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/resources"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

The response body contains all resources associated to a DST into a zip file.

Append a new resource to a DST

This API allows to append a new Resource to a DST.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • filestring

    The file to upload

  • filenamestring

    The name of the file

  • resourceTypestring

    None

    • PDF_Document
  • titlestring

    User-defined title of the resource.

PATCH

/DST/{id}/resources

Click to copy
curl -L -X PATCH \
  'https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/resources' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: multipart/form-data' \
  -f 'file=C:\Users\jdo\contracts\contract.pdf' \
  -f 'filename=contract.pdf' \
  -f 'resourceType=PDF_Document' \
  -f 'title=Sales Contract'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/resources");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "multipart/form-data");
request.AlwaysMultipartFormData = true;
request.AddParameter("file", "C:\Users\jdo\contracts\contract.pdf");
request.AddParameter("filename", "contract.pdf");
request.AddParameter("resourceType", "PDF_Document");
request.AddParameter("title", "Sales Contract");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("multipart/form-data");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
  .addFormDataPart("file", "C:\Users\jdo\contracts\contract.pdf")
  .addFormDataPart("filename", "contract.pdf")
  .addFormDataPart("resourceType", "PDF_Document")
  .addFormDataPart("title", "Sales Contract")
  .build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/resources")
  .method("PATCH", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "multipart/form-data")
  .build();
Response response = client.newCall(request).execute();
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
url = "https://web.sandbox.signingtoday.com/api/DST/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/resources"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "multipart/form-data"
}
payload = MultipartEncoder(
    fields = {
        "file": "C:\\Users\\jdo\\contracts\\contract.pdf",
        "filename": "contract.pdf",
        "resourceType": "PDF_Document",
        "title": "Sales Contract"
})
r = requests.patch(
    url,
    data=payload,
    headers=headers
)
print(r.text)
200

Response

{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}

The Robots APIs set

Whenever You are integrating Signing Today into Your existing Applications (CRM, HR, etc.) and You need to add signature services to them, a couple of simple APIs are all that separates You from Your goal. Here they are. If You're in a hurry go straight to Create a new DST and to Instantiate a DST from a template

Retrieve the Robot authentication lifetime token

This API allows to generate or retrieves the Robot authentication lifetime token for the specified robot account, or the current logged in account.

  • parameters
  • usernamequery parameter

    The username associated to the account

  • domainquery parameter

    The domain associated to the account

GET

/robot/authentication

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/robot/authentication' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/robot/authentication");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/robot/authentication")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/robot/authentication"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "accessToken": "19a6f7b6-e558-46c7-ac1c-ed4fea78e644"
}

Clear a Robot authentication lifetime token

This API allows to clear the Robot authentication lifetime token.

  • parameters
  • usernamequery parameter

    The username associated to the account

  • domainquery parameter

    The domain associated to the account

DELETE

/robot/authentication

Click to copy
curl -L -X DELETE \
  'https://web.sandbox.signingtoday.com/api/robot/authentication' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/robot/authentication");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/robot/authentication")
  .method("DELETE", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/robot/authentication"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.delete(
    url,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Retrieve the Robot configuration

This API allows to retrieve the Robot configuration.

  • parameters
  • usernamequery parameter

    The username associated to the account

  • domainquery parameter

    The domain associated to the account

GET

/robot/configuration

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/robot/configuration' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/robot/configuration");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/robot/configuration")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/robot/configuration"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "requestHeaders": {
    "Authorization": [
      "Token eed3fc66-cfc8-4b11-9bf9-33493d95411b"
    ]
  },
  "authentication": {
    "username": "jdo",
    "password": "A12345678z",
    "authMode": "basic",
    "clientKey": "clientKey",
    "clientCert": ""
  },
  "webhooks": {
    "dst": "https://web.sandbox.signingtoday.com"
  }
}

Edit the Robot configuration

This API allows to edit the Robot configuration.

  • parameters
  • usernamequery parameter

    The username associated to the account

  • domainquery parameter

    The domain associated to the account

  • requestHeadersobject

    Eventually the headers the application have to use during requests

  • authenticationobject

    The data the application will use to authenticate itself wherever there will be the need, for example in order to access to a resource

    • usernamestring

      The username for the authentication

    • passwordstring

      The password for the authentication

    • authModestring

      The type of authentication

    • clientKeystring

      Client key

    • clientCertstring

      Client certificate

  • webhooksobject

    The webhook where the notifications have to be send

    • dsturl

      Actual URL

PUT

/robot/configuration

Click to copy
curl -L -X PUT \
  'https://web.sandbox.signingtoday.com/api/robot/configuration' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '{
  "requestHeaders": {
    "Authorization": [
      "Token eed3fc66-cfc8-4b11-9bf9-33493d95411b"
    ]
  },
  "authentication": {
    "username": "jdo",
    "password": "A12345678z",
    "authMode": "basic",
    "clientKey": "clientKey",
    "clientCert": ""
  },
  "webhooks": {
    "dst": "https://web.sandbox.signingtoday.com"
  }
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/robot/configuration");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "requestHeaders": {
    "Authorization": [
      "Token eed3fc66-cfc8-4b11-9bf9-33493d95411b"
    ]
  },
  "authentication": {
    "username": "jdo",
    "password": "A12345678z",
    "authMode": "basic",
    "clientKey": "clientKey",
    "clientCert": ""
  },
  "webhooks": {
    "dst": "https://web.sandbox.signingtoday.com"
  }
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "requestHeaders": {
    "Authorization": [
      "Token eed3fc66-cfc8-4b11-9bf9-33493d95411b"
    ]
  },
  "authentication": {
    "username": "jdo",
    "password": "A12345678z",
    "authMode": "basic",
    "clientKey": "clientKey",
    "clientCert": ""
  },
  "webhooks": {
    "dst": "https://web.sandbox.signingtoday.com"
  }
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/robot/configuration")
  .method("PUT", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/robot/configuration"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = {
  "requestHeaders": {
    "Authorization": [
      "Token eed3fc66-cfc8-4b11-9bf9-33493d95411b"
    ]
  },
  "authentication": {
    "username": "jdo",
    "password": "A12345678z",
    "authMode": "basic",
    "clientKey": "clientKey",
    "clientCert": ""
  },
  "webhooks": {
    "dst": "https://web.sandbox.signingtoday.com"
  }
}
r = requests.put(
    url,
    data=payload,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Create a new DST in one call

This API allows to create a new DST with a more convenient interface for client applications. The purpose is to provide a method for the creation of a DST in order to semplify the integration into third part applications.

  • parameters
  • titlestring

    Title of the Digital Signature Transaction

  • documentsarray

    The document or documents of the DST

    • resourceobject

      The actual resource (e.g. a pdf file)

    • formsarray

      The fillable elements of the document. Use the type field to identify textual fillable field and signature fields.

    • signatureRequestsarray

      The list of signature request of the document.

    • signerGroupsarray

      The sign plan for the document

  • statusstring

    Status of the DST

    • draft
    • published
  • expiresAtstring

    Date of expiration of the DST

  • tagsarray

    An array of tags for the DST. In such way is possible to tag in the same way some DSTs in order to keep them organized and been easy to find them through the custom search

  • templateboolean

    True if the DST has been created from a template

  • publicTemplateboolean

    Indicates if a public template has been used to create the DST or not

  • ccGroupsarray

    Name of groups that are informed about the DST.

  • ccUsersarray

    UUIDs of the users that are informed about the DST.

  • urgentboolean

    True if the DST is flagged as urgent

POST

/robot/DSTs

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/robot/DSTs' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '{
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "resource": {
        "filename": "contract.pdf",
        "resourceType": [
          "PDF_Document"
        ],
        "title": "Sales Contract",
        "source": {
          "type": "Embedded",
          "embeddedData": "",
          "sourceURL": ""
        }
      },
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "status": "toSign",
  "expiresAt": "2007-04-25T12:00:00Z",
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/robot/DSTs");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "resource": {
        "filename": "contract.pdf",
        "resourceType": [
          "PDF_Document"
        ],
        "title": "Sales Contract",
        "source": {
          "type": "Embedded",
          "embeddedData": "",
          "sourceURL": ""
        }
      },
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "status": "toSign",
  "expiresAt": "2007-04-25T12:00:00Z",
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "resource": {
        "filename": "contract.pdf",
        "resourceType": [
          "PDF_Document"
        ],
        "title": "Sales Contract",
        "source": {
          "type": "Embedded",
          "embeddedData": "",
          "sourceURL": ""
        }
      },
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "status": "toSign",
  "expiresAt": "2007-04-25T12:00:00Z",
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/robot/DSTs")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/robot/DSTs"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = {
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "resource": {
        "filename": "contract.pdf",
        "resourceType": [
          "PDF_Document"
        ],
        "title": "Sales Contract",
        "source": {
          "type": "Embedded",
          "embeddedData": "",
          "sourceURL": ""
        }
      },
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "status": "toSign",
  "expiresAt": "2007-04-25T12:00:00Z",
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}
r = requests.post(
    url,
    data=payload,
    headers=headers
)
print(r.text)
200

Response

{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}

Instantiate a DST from a template by robot

This API allows to instantiate a DST from a template patching parts of its data structure.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • templatePatchesobject

    The DST Template from which will be created the DST

    • titlestring

      Title of the Digital Signature Transaction

    • documentsarray

      The document or documents of the DST

    • statusstring

      Status of the DST

    • expiresAtdate-time

      Date of expiration of the DST

    • tagsstring

      An array of tags for the DST. In such way is possible to tag in the same way some DSTs in order to keep them organized and been easy to find them through the custom search

    • templateboolean

      True if the DST has been created from a template

    • publicTemplateboolean

      Indicates if a public template has been used to create the DST or not

    • ccGroupsarray

      Name of groups that are informed about the DST.

    • ccUsersarray

      UUIDs of the users that are informed about the DST.

    • urgentboolean

      True if the DST is flagged as urgent

  • rolesMappingarray

    Indicates the mapping between the role specified into the template and the actual signer have to sign the Digital Signature Transaction

    • roleNamestring

      The role indicated into the template

    • signerobject

      The Mapping of the Roles will be used in the new DST

POST

/robot/{id}/instantiate

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/robot/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/instantiate' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '{
  "templatePatches": {
    "title": "Real estate sales contract transaction",
    "documents": [
      {
        "resource": {
          "filename": "contract.pdf",
          "resourceType": [
            "PDF_Document"
          ],
          "title": "Sales Contract",
          "source": {
            "type": "Embedded",
            "embeddedData": "",
            "sourceURL": ""
          }
        },
        "forms": [
          {
            "id": 2,
            "documentId": 3,
            "type": "SignatureForm",
            "positionX": "100.00",
            "positionY": "58.14",
            "width": "10.1",
            "height": "5.66",
            "page": 1,
            "signerId": 1,
            "toFill": true,
            "filled": false,
            "invisible": true,
            "extraData": {
              "signatureRequestId": 1
            }
          }
        ],
        "signatureRequests": [
          {
            "id": 3,
            "reason": "As the Buyer",
            "description": "The proponent",
            "signerId": 2,
            "signProfile": "PAdES",
            "withTimestamp": true,
            "declinable": false,
            "restrictions": [
              {
                "rule": "",
                "operator": "",
                "value": ""
              }
            ],
            "extraData": {
              "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
            }
          }
        ],
        "signerGroups": [
          {
            "signers": [
              {
                "id": 1,
                "name": "Adam",
                "surname": "Smith",
                "email": "adam.smith@email.com",
                "phone": "+013392213450",
                "role": "buyer",
                "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
                "templateLabel": "Buyer"
              }
            ]
          }
        ]
      }
    ],
    "status": "toSign",
    "expiresAt": "2007-04-25T12:00:00Z",
    "tags": [
      "important"
    ],
    "template": false,
    "publicTemplate": false,
    "ccGroups": [
      "Marketing"
    ],
    "ccUsers": [
      "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
    ],
    "urgent": false
  },
  "rolesMapping": [
    {
      "roleName": "Buyer",
      "signer": {
        "name": "Adam",
        "surname": "Smith",
        "email": "adam.smith@email.com",
        "phone": "+013392213450",
        "userUUID": "a845e772-cb45-466f-9c02-d9dd06afa36e"
      }
    }
  ]
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/robot/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/instantiate");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "templatePatches": {
    "title": "Real estate sales contract transaction",
    "documents": [
      {
        "resource": {
          "filename": "contract.pdf",
          "resourceType": [
            "PDF_Document"
          ],
          "title": "Sales Contract",
          "source": {
            "type": "Embedded",
            "embeddedData": "",
            "sourceURL": ""
          }
        },
        "forms": [
          {
            "id": 2,
            "documentId": 3,
            "type": "SignatureForm",
            "positionX": "100.00",
            "positionY": "58.14",
            "width": "10.1",
            "height": "5.66",
            "page": 1,
            "signerId": 1,
            "toFill": true,
            "filled": false,
            "invisible": true,
            "extraData": {
              "signatureRequestId": 1
            }
          }
        ],
        "signatureRequests": [
          {
            "id": 3,
            "reason": "As the Buyer",
            "description": "The proponent",
            "signerId": 2,
            "signProfile": "PAdES",
            "withTimestamp": true,
            "declinable": false,
            "restrictions": [
              {
                "rule": "",
                "operator": "",
                "value": ""
              }
            ],
            "extraData": {
              "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
            }
          }
        ],
        "signerGroups": [
          {
            "signers": [
              {
                "id": 1,
                "name": "Adam",
                "surname": "Smith",
                "email": "adam.smith@email.com",
                "phone": "+013392213450",
                "role": "buyer",
                "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
                "templateLabel": "Buyer"
              }
            ]
          }
        ]
      }
    ],
    "status": "toSign",
    "expiresAt": "2007-04-25T12:00:00Z",
    "tags": [
      "important"
    ],
    "template": false,
    "publicTemplate": false,
    "ccGroups": [
      "Marketing"
    ],
    "ccUsers": [
      "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
    ],
    "urgent": false
  },
  "rolesMapping": [
    {
      "roleName": "Buyer",
      "signer": {
        "name": "Adam",
        "surname": "Smith",
        "email": "adam.smith@email.com",
        "phone": "+013392213450",
        "userUUID": "a845e772-cb45-466f-9c02-d9dd06afa36e"
      }
    }
  ]
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "templatePatches": {
    "title": "Real estate sales contract transaction",
    "documents": [
      {
        "resource": {
          "filename": "contract.pdf",
          "resourceType": [
            "PDF_Document"
          ],
          "title": "Sales Contract",
          "source": {
            "type": "Embedded",
            "embeddedData": "",
            "sourceURL": ""
          }
        },
        "forms": [
          {
            "id": 2,
            "documentId": 3,
            "type": "SignatureForm",
            "positionX": "100.00",
            "positionY": "58.14",
            "width": "10.1",
            "height": "5.66",
            "page": 1,
            "signerId": 1,
            "toFill": true,
            "filled": false,
            "invisible": true,
            "extraData": {
              "signatureRequestId": 1
            }
          }
        ],
        "signatureRequests": [
          {
            "id": 3,
            "reason": "As the Buyer",
            "description": "The proponent",
            "signerId": 2,
            "signProfile": "PAdES",
            "withTimestamp": true,
            "declinable": false,
            "restrictions": [
              {
                "rule": "",
                "operator": "",
                "value": ""
              }
            ],
            "extraData": {
              "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
            }
          }
        ],
        "signerGroups": [
          {
            "signers": [
              {
                "id": 1,
                "name": "Adam",
                "surname": "Smith",
                "email": "adam.smith@email.com",
                "phone": "+013392213450",
                "role": "buyer",
                "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
                "templateLabel": "Buyer"
              }
            ]
          }
        ]
      }
    ],
    "status": "toSign",
    "expiresAt": "2007-04-25T12:00:00Z",
    "tags": [
      "important"
    ],
    "template": false,
    "publicTemplate": false,
    "ccGroups": [
      "Marketing"
    ],
    "ccUsers": [
      "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
    ],
    "urgent": false
  },
  "rolesMapping": [
    {
      "roleName": "Buyer",
      "signer": {
        "name": "Adam",
        "surname": "Smith",
        "email": "adam.smith@email.com",
        "phone": "+013392213450",
        "userUUID": "a845e772-cb45-466f-9c02-d9dd06afa36e"
      }
    }
  ]
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/robot/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/instantiate")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/robot/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/instantiate"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = {
  "templatePatches": {
    "title": "Real estate sales contract transaction",
    "documents": [
      {
        "resource": {
          "filename": "contract.pdf",
          "resourceType": [
            "PDF_Document"
          ],
          "title": "Sales Contract",
          "source": {
            "type": "Embedded",
            "embeddedData": "",
            "sourceURL": ""
          }
        },
        "forms": [
          {
            "id": 2,
            "documentId": 3,
            "type": "SignatureForm",
            "positionX": "100.00",
            "positionY": "58.14",
            "width": "10.1",
            "height": "5.66",
            "page": 1,
            "signerId": 1,
            "toFill": true,
            "filled": false,
            "invisible": true,
            "extraData": {
              "signatureRequestId": 1
            }
          }
        ],
        "signatureRequests": [
          {
            "id": 3,
            "reason": "As the Buyer",
            "description": "The proponent",
            "signerId": 2,
            "signProfile": "PAdES",
            "withTimestamp": true,
            "declinable": false,
            "restrictions": [
              {
                "rule": "",
                "operator": "",
                "value": ""
              }
            ],
            "extraData": {
              "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
            }
          }
        ],
        "signerGroups": [
          {
            "signers": [
              {
                "id": 1,
                "name": "Adam",
                "surname": "Smith",
                "email": "adam.smith@email.com",
                "phone": "+013392213450",
                "role": "buyer",
                "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
                "templateLabel": "Buyer"
              }
            ]
          }
        ]
      }
    ],
    "status": "toSign",
    "expiresAt": "2007-04-25T12:00:00Z",
    "tags": [
      "important"
    ],
    "template": false,
    "publicTemplate": false,
    "ccGroups": [
      "Marketing"
    ],
    "ccUsers": [
      "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
    ],
    "urgent": false
  },
  "rolesMapping": [
    {
      "roleName": "Buyer",
      "signer": {
        "name": "Adam",
        "surname": "Smith",
        "email": "adam.smith@email.com",
        "phone": "+013392213450",
        "userUUID": "a845e772-cb45-466f-9c02-d9dd06afa36e"
      }
    }
  ]
}
r = requests.post(
    url,
    data=payload,
    headers=headers
)
print(r.text)
200

Response

{
  "domain": "bit4id",
  "title": "Real estate sales contract transaction",
  "documents": [
    {
      "id": 1,
      "plainDocumentUuid": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "forms": [
        {
          "id": 2,
          "documentId": 3,
          "type": "SignatureForm",
          "positionX": "100.00",
          "positionY": "58.14",
          "width": "10.1",
          "height": "5.66",
          "page": 1,
          "signerId": 1,
          "toFill": true,
          "filled": false,
          "invisible": true,
          "extraData": {
            "signatureRequestId": 1
          }
        }
      ],
      "signatureRequests": [
        {
          "id": 3,
          "reason": "As the Buyer",
          "description": "The proponent",
          "signerId": 2,
          "signProfile": "PAdES",
          "withTimestamp": true,
          "declinable": false,
          "restrictions": [
            {
              "rule": "",
              "operator": "",
              "value": ""
            }
          ],
          "extraData": {
            "st_ticketUrl": "http://signing.today/ticket/8bd4aead-ad37-42bc-b3b0-22ce3d1c9e79"
          }
        }
      ],
      "signerGroups": [
        {
          "signers": [
            {
              "id": 1,
              "name": "Adam",
              "surname": "Smith",
              "email": "adam.smith@email.com",
              "phone": "+013392213450",
              "role": "buyer",
              "userUUID": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
              "templateLabel": "Buyer"
            }
          ]
        }
      ]
    }
  ],
  "resources": [
    {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    }
  ],
  "signatures": [
    {
      "documentId": 3,
      "signatureRequestId": 2,
      "signedAt": "2021-10-17T07:26Z",
      "declinedReason": "Reason of declination",
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ],
  "errorMessage": null,
  "tags": [
    "important"
  ],
  "template": false,
  "publicTemplate": false,
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  },
  "visibleTo": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "ccGroups": [
    "Marketing"
  ],
  "ccUsers": [
    "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  ],
  "urgent": false
}

The Services APIs set

The Services APIs set includes all the endpoints used as support for the other APIs. For example the APIs referring the authentication are into this set, as well as service resources or login/logout endpoints.

Get the bearer token

This API allows to get the token needed to access other APIs through the OAuth2 authentication.

  • parameters
  • usernamestring

    The username in the form username@domain where domain is the organization the user belongs to

  • passwordstring

    This is the actual password of the user

  • grant_typestring

    A parameter that indicates the type of the grant in order to perform the basic authentication

    • password
POST

/oauth/token

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/oauth/token' \
  -H 'Authorization: Basic X3yrAW61OnNlY4JgfB==' \
  -H 'Content-Type: multipart/form-data' \
  -f 'username=username@bit4id' \
  -f 'password=a12345678z' \
  -f 'grant_type=password'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/oauth/token");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic X3yrAW61OnNlY4JgfB==");
request.AddHeader("Content-Type", "multipart/form-data");
request.AlwaysMultipartFormData = true;
request.AddParameter("username", "username@bit4id");
request.AddParameter("password", "a12345678z");
request.AddParameter("grant_type", "password");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("multipart/form-data");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
  .addFormDataPart("username", "username@bit4id")
  .addFormDataPart("password", "a12345678z")
  .addFormDataPart("grant_type", "password")
  .build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/oauth/token")
  .method("POST", body)
  .addHeader("Authorization", "Basic X3yrAW61OnNlY4JgfB==")
  .addHeader("Content-Type", "multipart/form-data")
  .build();
Response response = client.newCall(request).execute();
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
url = "https://web.sandbox.signingtoday.com/api/oauth/token"
headers = {
    "Authorization": "Basic X3yrAW61OnNlY4JgfB==",
    "Content-Type": "multipart/form-data"
}
payload = MultipartEncoder(
    fields = {
        "username": "username@bit4id",
        "password": "a12345678z",
        "grant_type": "password"
})
r = requests.post(
    url,
    data=payload,
    headers=headers
)
print(r.text)
200

Response

{
  "access_token": "5c7fe85e-5ccd-4ae7-9629-ed49f969eee9",
  "token_type": "bearer",
  "refresh_token": "ef1185f4-2af7-4bf2-acd5-3c4b2e7dad72",
  "expires_in": 30623,
  "scope": "all"
}

Log out current user terminating the session

This API allows to Log out current user.

GET

/auth/logout

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/auth/logout' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/auth/logout");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/auth/logout")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/auth/logout"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Return the current logged in user

This API allows to retrieve the current logged in user.

GET

/auth/user

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/auth/user' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/auth/user");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/auth/user")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/auth/user"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "username": "jdo",
  "domain": "bit4id",
  "language": "en",
  "name": "John",
  "surname": "Doe",
  "email": "john.doe@email.com",
  "phone": "+013392213450",
  "role": "signer",
  "groups": [
    {
      "name": "Marketing BU",
      "domain": "bit4id"
    }
  ],
  "capabilities": [
    "user.create.all"
  ],
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  }
}

Request to recover own password

This API requests to recover the own password.

  • parameters
  • usernamequery parameter

    Username associated to the account

  • domainquery parameter

    Domain associated to the account

GET

/auth/passwordLost

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/auth/passwordLost?username=jdo&domain=demo' \
  
var client = new RestClient("https://web.sandbox.signingtoday.com/api/auth/passwordLost?username=jdo&domain=demo");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/auth/passwordLost?username=jdo&domain=demo")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/auth/passwordLost"
headers = {}
params = {
    "username": "jdo",
    "domain": "demo"
}
r = requests.get(
    url,
    params=params,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Reset a user password with superuser

This API allows to reset the password of a user. This is possible when the request is performed with a superuser.

  • parameters
  • usernamequery parameter

    Username associated to the account

  • domainquery parameter

    Domain associated to the account

GET

/auth/passwordReset

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/auth/passwordReset?username=jdo&domain=demo' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/auth/passwordReset?username=jdo&domain=demo");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/auth/passwordReset?username=jdo&domain=demo")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/auth/passwordReset"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
params = {
    "username": "jdo",
    "domain": "demo"
}
r = requests.get(
    url,
    params=params,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Reset your own password

This API allows to reset your own password knowing the previous one with a logged user.

  • parameters
  • currentPasswordstring

    The current password of the user

  • newPasswordstring

    The new password choosen

POST

/auth/passwordReset

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/auth/passwordReset' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '{
  "currentPassword": "a12345678Z",
  "newPassword": "0abcdefgH9"
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/auth/passwordReset");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "currentPassword": "a12345678Z",
  "newPassword": "0abcdefgH9"
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "currentPassword": "a12345678Z",
  "newPassword": "0abcdefgH9"
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/auth/passwordReset")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/auth/passwordReset"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = {
  "currentPassword": "a12345678Z",
  "newPassword": "0abcdefgH9"
}
r = requests.post(
    url,
    data=payload,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Consume a token to change the password

This API allows to change the password by consuming a token.

  • parameters
  • passwordTokenquery parameter

    The password token issued to change password

  • Newpasswordstring

    New password associated to the account (BCrypt)

POST

/auth/changePassword

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/auth/changePassword?passwordToken=05ea656f-df69-49b1-a12b-9bf640c427c2' \
  -H 'Content-Type: text/plain' \
  -d '"A12345678z"'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/auth/changePassword?passwordToken=05ea656f-df69-49b1-a12b-9bf640c427c2");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "text/plain");
request.AddParameter("text/plain", "\"A12345678z\"");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "\"A12345678z\"");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/auth/changePassword?passwordToken=05ea656f-df69-49b1-a12b-9bf640c427c2")
  .method("POST", body)
  .addHeader("Content-Type", "text/plain")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/auth/changePassword"
headers = {
    "Content-Type": "text/plain"
}
params = {
    "passwordToken": "05ea656f-df69-49b1-a12b-9bf640c427c2"
}
payload = "A12345678z"
r = requests.post(
    url,
    params=params,
    data=payload,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Change the password of a service user

This API allows to change the password of a service user.

  • parameters
  • usernamequery parameter

    Username associated to the account

  • domainquery parameter

    Domain associated to the account

  • Newpasswordstring

    New password associated to the account (BCrypt)

POST

/service/changePassword

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/service/changePassword?username=jdo&domain=demo' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: text/plain' \
  -d '"A12345678z"'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/service/changePassword?username=jdo&domain=demo");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "text/plain");
request.AddParameter("text/plain", "\"A12345678z\"");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "\"A12345678z\"");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/service/changePassword?username=jdo&domain=demo")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "text/plain")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/service/changePassword"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "text/plain"
}
params = {
    "username": "jdo",
    "domain": "demo"
}
payload = "A12345678z"
r = requests.post(
    url,
    params=params,
    data=payload,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Register or Update a SAML user

This API allows to register or Update a SAML user.

  • parameters
  • domainstring

    SAML domain

  • IDToken1string

    The BASE64-encoded SAML Reply in JSON

  • IDToken2string

    The Hex-encoded HMAC-SHA256 of the decoded IDToken1

POST

/auth/saml

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/auth/saml' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'domain=bit4id' \
  -d 'IDToken1=PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJSZDkwYTY5NDg1YTdiMmMxYjM0NWFjOGQ1Y2UyZmExMzFkZmRkMzRlOSIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTYtMDMtMTdUMjI6NTA6MzBaIiBEZXN0aW5hdGlvbj0iaHR0cHM6Ly97c3ViZG9tYWlufS5mYWNlYm9vay5jb20vd29yay9zYW1sLnBocCI+P...' \
  -d 'IDToken2=f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/auth/saml");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("domain", "bit4id");
request.AddParameter("IDToken1", "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJSZDkwYTY5NDg1YTdiMmMxYjM0NWFjOGQ1Y2UyZmExMzFkZmRkMzRlOSIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTYtMDMtMTdUMjI6NTA6MzBaIiBEZXN0aW5hdGlvbj0iaHR0cHM6Ly97c3ViZG9tYWlufS5mYWNlYm9vay5jb20vd29yay9zYW1sLnBocCI+P...");
request.AddParameter("IDToken2", "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "domain=bit4id&IDToken1=PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJSZDkwYTY5NDg1YTdiMmMxYjM0NWFjOGQ1Y2UyZmExMzFkZmRkMzRlOSIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTYtMDMtMTdUMjI6NTA6MzBaIiBEZXN0aW5hdGlvbj0iaHR0cHM6Ly97c3ViZG9tYWlufS5mYWNlYm9vay5jb20vd29yay9zYW1sLnBocCI+P...&IDToken2=f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/auth/saml")
  .method("POST", body)
  .addHeader("Content-Type", "application/x-www-form-urlencoded")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/auth/saml"
headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}
payload = {
    "domain": "bit4id",
    "IDToken1": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJSZDkwYTY5NDg1YTdiMmMxYjM0NWFjOGQ1Y2UyZmExMzFkZmRkMzRlOSIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTYtMDMtMTdUMjI6NTA6MzBaIiBEZXN0aW5hdGlvbj0iaHR0cHM6Ly97c3ViZG9tYWlufS5mYWNlYm9vay5jb20vd29yay9zYW1sLnBocCI+P...",
    "IDToken2": "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8"
}
r = requests.post(
    url,
    data=payload,
    headers=headers
)
print(r.text)
303

Response

Redirect to frontend page with new auth token (Post/Redirect/Get design pattern).

Sync user accounts

This API allows to sync user accounts.

  • parameters
  • eduPersonPrincipalNamestring

    The username of the account

  • isMemberOfarray

    Memberships of the user

  • givenNamestring

    First name of the user

  • surnamestring

    Last name of the user

  • orgRolestring

    The role of the user in the organization

    • admin
    • instructor
    • signer
POST

/service/users/sync

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/service/users/sync' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '[
  {
    "eduPersonPrincipalName": "jdo@email.com",
    "isMemberOf": [
      "i:bit:R_D:system_network::n:member"
    ],
    "givenName": "John",
    "surname": "Doe",
    "orgRole": "signer"
  }
]'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/service/users/sync");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[
  {
    "eduPersonPrincipalName": "jdo@email.com",
    "isMemberOf": [
      "i:bit:R_D:system_network::n:member"
    ],
    "givenName": "John",
    "surname": "Doe",
    "orgRole": "signer"
  }
]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "[
  {
    "eduPersonPrincipalName": "jdo@email.com",
    "isMemberOf": [
      "i:bit:R_D:system_network::n:member"
    ],
    "givenName": "John",
    "surname": "Doe",
    "orgRole": "signer"
  }
]");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/service/users/sync")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/service/users/sync"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = [
  {
    "eduPersonPrincipalName": "jdo@email.com",
    "isMemberOf": [
      "i:bit:R_D:system_network::n:member"
    ],
    "givenName": "John",
    "surname": "Doe",
    "orgRole": "signer"
  }
]
r = requests.post(
    url,
    data=payload,
    headers=headers
)
print(r.text)
200

Response

{
  "users": {
    "deleted": 1,
    "inserted": 2,
    "updated": 1
  }
}

Get token to change password

This API allows to get a password token to use in order to change a password.

GET

/auth/passwordToken

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/auth/passwordToken' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/auth/passwordToken");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/auth/passwordToken")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/auth/passwordToken"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

[
  "a9851478-7fe3-4d67-bcbc-1ba30581fab3"
]

Retrieve a Resource (of service)

This API allows to extract thumbnails from a PDF Resource.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • pagequery parameter

    The page to retrieve

  • widthquery parameter

    The output image width

GET

/pdfResource/{id}/thumbs

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/pdfResource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/thumbs?page=1' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/pdfResource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/thumbs?page=1");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/pdfResource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/thumbs?page=1")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/pdfResource/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/thumbs"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
params = {
    "page": 1
}
r = requests.get(
    url,
    params=params,
    headers=headers
)
print(r.text)
200

Response

The output is a raw string. The thumbnails of the page requested for the PDF resource.

Retrieve the App configuration

This API allows to get the public configuration associated to the application.

GET

/service/configuration

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/service/configuration' \
  
var client = new RestClient("https://web.sandbox.signingtoday.com/api/service/configuration");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/service/configuration")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/service/configuration"
headers = {}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

{}

The User model

The User object is the one that serializes the users of the Organizations. The User has field that identifies the generality of the person who has been registered and uses the platform, as well as the digital identities through which he can sign documents.

  • attributes
  • idstringuuid

    The unique id of the User

  • usernamestringany

    The username of the User. The username is used to login

  • domainstringany

    The domain is the Organization which a user or a DST belongs

  • languagestring

    The default language of the User

    • it
    • en
    • es
    • fr
  • namestringany

    The name of the User

  • surnamestringany

    The name of the User

  • emailstringemail

    The email address of the User

  • phonestringnumber

    The phone number of the User

  • rolestring

    The role of the User. The admin can create users, as well as DSTs and can sign. The instructor can create DSTs and sign. The signer can only sign documents.

    • admin
    • instructor
    • signer
  • groupsarray

    A group of users. This is useful during DSTs creation, it is possible to select a group as signers. This way all the components of that group have to sign the document

    • idint64

      Unique id of the Group

    • nameany

      Name of the Group

    • domainany

      Organization which the Group belongs

  • capabilitiesarray

    The capabilities represents the action a user is able to do

    • user.pwd.clear
    • user.create.all
    • user.access.all
    • user.delete.all
    • dst.list.all
    • dst.delete.all
    • dst.create.modify_all
    • devices.list.all
    • devices.delete.all
    • organizations.access.write.user
  • createdBystringuuid

    The one which created the User

  • createdAtstringdate-time

    The date of the creation of the User

  • deletedAtstringdate-time

    The date of deletion of the User

  • automaticboolean

    If true the user is automatic

  • extraDataobject

    Extra data associated to the User

Retrieve Users

This allows to get the list of the Users of an Organization.

  • parameters
  • $topquery parameter

    A number of results to return. Applied after $skip

  • $skipquery parameter

    An offset into the collection of results

  • $countquery parameter

    If true, the server includes the count of all the items in the response

  • $orderByquery parameter

    An ordering definition (eg. $orderBy=updatedAt,desc)

  • $filterquery parameter

    A filter definition (eg. $filter=name == "Milk" or surname == "Bread")

GET

/users

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/users' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/users");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/users")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/users"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "count": 1,
  "values": [
    {
      "username": "jdo",
      "domain": "bit4id",
      "language": "en",
      "name": "John",
      "surname": "Doe",
      "email": "john.doe@email.com",
      "phone": "+013392213450",
      "role": "signer",
      "groups": [
        {
          "name": "Marketing BU",
          "domain": "bit4id"
        }
      ],
      "capabilities": [
        "user.create.all"
      ],
      "extraData": {
        "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
      }
    }
  ]
}

Create a new User

This API allows to create a new User.

  • parameters
  • userobject

    The User object is the one that serializes the users of the Organizations. The User has field that identifies the generality of the person who has been registered and uses the platform, as well as the digital identities through which he can sign documents.

    • iduuid

      The unique id of the User

    • usernameany

      The username of the User. The username is used to login

    • domainany

      The domain is the Organization which a user or a DST belongs

    • languagestring

      The default language of the User

    • nameany

      The name of the User

    • surnameany

      The name of the User

    • emailemail

      The email address of the User

    • phonenumber

      The phone number of the User

    • roleany

      The role of the User. The admin can create users, as well as DSTs and can sign. The instructor can create DSTs and sign. The signer can only sign documents.<br>

    • groupsarray

      A group of users. This is useful during DSTs creation, it is possible to select a group as signers. This way all the components of that group have to sign the document

    • capabilitiesarray

      The capabilities represents the action a user is able to do

    • createdByuuid

      The one which created the User

    • createdAtdate-time

      The date of the creation of the User

    • deletedAtdate-time

      The date of deletion of the User

    • automaticNone

      If true the user is automatic

    • extraDataobject

      Extra data associated to the User

  • passwordstring

    This represents the password the user will use to login from the web interface. If the field is omitted the email address provided during the creation of the user will receive an email with a link from where will be possible to set a password

POST

/users

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/users' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '{
  "user": {
    "username": "jdo",
    "domain": "bit4id",
    "language": "en",
    "name": "John",
    "surname": "Doe",
    "email": "john.doe@email.com",
    "phone": "+013392213450",
    "role": "signer",
    "groups": [
      {
        "name": "Marketing BU",
        "domain": "bit4id"
      }
    ],
    "capabilities": [
      "user.create.all"
    ],
    "extraData": {
      "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
    }
  },
  "password": "A12345678z"
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/users");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "user": {
    "username": "jdo",
    "domain": "bit4id",
    "language": "en",
    "name": "John",
    "surname": "Doe",
    "email": "john.doe@email.com",
    "phone": "+013392213450",
    "role": "signer",
    "groups": [
      {
        "name": "Marketing BU",
        "domain": "bit4id"
      }
    ],
    "capabilities": [
      "user.create.all"
    ],
    "extraData": {
      "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
    }
  },
  "password": "A12345678z"
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "user": {
    "username": "jdo",
    "domain": "bit4id",
    "language": "en",
    "name": "John",
    "surname": "Doe",
    "email": "john.doe@email.com",
    "phone": "+013392213450",
    "role": "signer",
    "groups": [
      {
        "name": "Marketing BU",
        "domain": "bit4id"
      }
    ],
    "capabilities": [
      "user.create.all"
    ],
    "extraData": {
      "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
    }
  },
  "password": "A12345678z"
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/users")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/users"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = {
  "user": {
    "username": "jdo",
    "domain": "bit4id",
    "language": "en",
    "name": "John",
    "surname": "Doe",
    "email": "john.doe@email.com",
    "phone": "+013392213450",
    "role": "signer",
    "groups": [
      {
        "name": "Marketing BU",
        "domain": "bit4id"
      }
    ],
    "capabilities": [
      "user.create.all"
    ],
    "extraData": {
      "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
    }
  },
  "password": "A12345678z"
}
r = requests.post(
    url,
    data=payload,
    headers=headers
)
print(r.text)
201

Response

[
  "7e49d963-544e-407e-ba57-049785ef3760"
]

Retrieve UserGroups

This API allows to get the list of the UserGroups.

  • parameters
  • $topquery parameter

    A number of results to return. Applied after $skip

  • $skipquery parameter

    An offset into the collection of results

  • $countquery parameter

    If true, the server includes the count of all the items in the response

  • $orderByquery parameter

    An ordering definition (eg. $orderBy=updatedAt,desc)

  • $filterquery parameter

    A filter definition (eg. $filter=name == "Milk" or surname == "Bread")

GET

/users/groups

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/users/groups' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/users/groups");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/users/groups")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/users/groups"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "count": 1,
  "values": [
    {
      "name": "Marketing BU",
      "domain": "bit4id"
    }
  ]
}

Create a new UserGroups

This API allows to create a new UserGroups.

  • parameters
  • idinteger

    Unique id of the Group

  • namestring

    Name of the Group

  • domainstring

    Organization which the Group belongs

POST

/users/groups

Click to copy
curl -L -X POST \
  'https://web.sandbox.signingtoday.com/api/users/groups' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '[
  {
    "name": "Marketing BU",
    "domain": "bit4id"
  }
]'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/users/groups");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[
  {
    "name": "Marketing BU",
    "domain": "bit4id"
  }
]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "[
  {
    "name": "Marketing BU",
    "domain": "bit4id"
  }
]");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/users/groups")
  .method("POST", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/users/groups"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = [
  {
    "name": "Marketing BU",
    "domain": "bit4id"
  }
]
r = requests.post(
    url,
    data=payload,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Retrieve a User

This API allows to retrieve a User.

  • parameters
  • idpath parameterstring

    The value of the unique id

GET

/user/{id}

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

{
  "username": "jdo",
  "domain": "bit4id",
  "language": "en",
  "name": "John",
  "surname": "Doe",
  "email": "john.doe@email.com",
  "phone": "+013392213450",
  "role": "signer",
  "groups": [
    {
      "name": "Marketing BU",
      "domain": "bit4id"
    }
  ],
  "capabilities": [
    "user.create.all"
  ],
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  }
}

Update a User

This API allows to update a User.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • idstring

    The unique id of the User

  • usernamestring

    The username of the User. The username is used to login

  • domainstring

    The domain is the Organization which a user or a DST belongs

  • languagestring

    The default language of the User

    • it
    • en
    • es
    • fr
  • namestring

    The name of the User

  • surnamestring

    The name of the User

  • emailstring

    The email address of the User

  • phonestring

    The phone number of the User

  • rolestring

    The role of the User. The admin can create users, as well as DSTs and can sign. The instructor can create DSTs and sign. The signer can only sign documents.

    • admin
    • instructor
    • signer
  • groupsarray

    A group of users. This is useful during DSTs creation, it is possible to select a group as signers. This way all the components of that group have to sign the document

    • idint64

      Unique id of the Group

    • nameany

      Name of the Group

    • domainany

      Organization which the Group belongs

  • capabilitiesarray

    The capabilities represents the action a user is able to do

    • user.pwd.clear
    • user.create.all
    • user.access.all
    • user.delete.all
    • dst.list.all
    • dst.delete.all
    • dst.create.modify_all
    • devices.list.all
    • devices.delete.all
    • organizations.access.write.user
  • createdBystring

    The one which created the User

  • createdAtstring

    The date of the creation of the User

  • deletedAtstring

    The date of deletion of the User

  • automaticboolean

    If true the user is automatic

  • extraDataobject

    Extra data associated to the User

PUT

/user/{id}

Click to copy
curl -L -X PUT \
  'https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' \
  -H 'Content-Type: application/json' \
  -d '{
  "username": "jdo",
  "domain": "bit4id",
  "language": "en",
  "name": "John",
  "surname": "Doe",
  "email": "john.doe@email.com",
  "phone": "+013392213450",
  "role": "signer",
  "groups": [
    {
      "name": "Marketing BU",
      "domain": "bit4id"
    }
  ],
  "capabilities": [
    "user.create.all"
  ],
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  }
}'
var client = new RestClient("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{
  "username": "jdo",
  "domain": "bit4id",
  "language": "en",
  "name": "John",
  "surname": "Doe",
  "email": "john.doe@email.com",
  "phone": "+013392213450",
  "role": "signer",
  "groups": [
    {
      "name": "Marketing BU",
      "domain": "bit4id"
    }
  ],
  "capabilities": [
    "user.create.all"
  ],
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  }
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
  "username": "jdo",
  "domain": "bit4id",
  "language": "en",
  "name": "John",
  "surname": "Doe",
  "email": "john.doe@email.com",
  "phone": "+013392213450",
  "role": "signer",
  "groups": [
    {
      "name": "Marketing BU",
      "domain": "bit4id"
    }
  ],
  "capabilities": [
    "user.create.all"
  ],
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  }
}");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .method("PUT", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e",
    "Content-Type": "application/json"
}
payload = {
  "username": "jdo",
  "domain": "bit4id",
  "language": "en",
  "name": "John",
  "surname": "Doe",
  "email": "john.doe@email.com",
  "phone": "+013392213450",
  "role": "signer",
  "groups": [
    {
      "name": "Marketing BU",
      "domain": "bit4id"
    }
  ],
  "capabilities": [
    "user.create.all"
  ],
  "extraData": {
    "st_uuid": "d6ebb1ed-73a4-45ba-b33a-7db8a6cdd882"
  }
}
r = requests.put(
    url,
    data=payload,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Enable or disable a User

This API allows to enable or disable a User account.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • enabledquery parameter

    This is a boolean parameter. If true the User is enabled

DELETE

/user/{id}

Click to copy
curl -L -X DELETE \
  'https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .method("DELETE", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.delete(
    url,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Change the User role

This API allows to change the permissions associated to the users, (capabilities) according to predefined user roles.

  • parameters
  • idpath parameterstring

    The value of the unique id

  • newRolequery parameter

    The new role of the User. Allowed values are admin, instructor, signer

PUT

/user/{id}/role

Click to copy
curl -L -X PUT \
  'https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/role?newRole=instructor' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/role?newRole=instructor");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/role?newRole=instructor")
  .method("PUT", body)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/role"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
params = {
    "newRole": "instructor"
}
r = requests.put(
    url,
    params=params,
    headers=headers
)
print(r.text)
204

Response

The request has been satisfyied. No output.

Retrieve User identities

This API allows to retrieve user identities.

  • parameters
  • idpath parameterstring

    The value of the unique id

GET

/user/{id}/identities

Click to copy
curl -L -X GET \
  'https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identities' \
  -H 'Authorization: Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e' 
var client = new RestClient("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identities");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient.newBuilder().build();
Request request = new Request.Builder()
  .url("https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identities")
  .method("GET", null)
  .addHeader("Authorization", "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e")
  .build();
Response response = client.newCall(request).execute();
import requests
url = "https://web.sandbox.signingtoday.com/api/user/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identities"
headers = {
    "Authorization": "Bearer 607a3bbc-b5e5-42c4-9b3c-533372ac1d3e"
}
r = requests.get(
    url,
    headers=headers
)
print(r.text)
200

Response

[
  {
    "id": "abd562ae-e8ab-4cfd-a688-395e06eea9ff",
    "provider": "Approval Signing Today",
    "label": "Token John Doe",
    "providerType": "token",
    "subjectCommonName": "John Doe",
    "issuerCommonName": "Emicert",
    "expireDate": "2022-12-13T23:59:59Z",
    "rawCertificate": null,
    "appearance": {
      "id": "05a80817-a3a5-48fe-83c0-0df0f48a2a26",
      "domain": "bit4id",
      "title": "Sales Contract",
      "filename": "contract.pdf",
      "pages": 3,
      "extraData": {
        "toSign": true
      }
    },
    "providerData": {
      "smartcardID": -1121978858,
      "middlewareID": "bit4xpki",
      "ATR": "3bff1800008131fe55006b02090403010101434e5310318065",
      "tokenInfo": {
        "ulMinPinLen": 4,
        "manufacturerID": "Bit4id",
        "ulFreePublicMemory": 41168,
        "serialNumber": "7430010005961358",
        "ulTotalPublicMemory": 80000,
        "label": "CNS",
        "flags": 1037,
        "ulTotalPrivateMemory": 80000,
        "model": "JS2048 (LB)",
        "ulFreePrivateMemory": 41168,
        "ulMaxPinLen": 8
      },
      "reader": "Generic Smart Card Reader Interface 0"
    },
    "valid": true,
    "tags": [
      "qualified"
    ]
  }
]