API versions

v1.5.0 API changes

Release date:2019-11-21

    Added

  • Signer groups features.

  • API to change organization detail and settings.

  • API to change or remove identity signature appearance.

  • API to associate identity from token.

  • API to sign a document.

  • API to create a channel.

  • API to sign multiple signatures with a Session.

  • Filters for signature transaction list.

  • Provider to sign a document without OTP or PIN.

v1.4.3 API changes

Release date:2019-11-13

    Fixed

  • Stability fix.

v1.4.2 API changes

Release date:2019-11-11

    Changed

  • The order of the DST list API with the creation data in descending order.

v1.4.1 API changes

Release date:2019-11-11

    Fixed

  • Document viewer to support pdf with rotated pages.

  • Stability fix.

v1.4.0 API changes

Release date:2019-11-04

    Added

  • Improved error checking tools.

v1.3.0 API changes

Release date:2019-10-28

    Added

  • Created field in DST info.

  • New search filter for DST, now it's possible to filter by creation date.

v1.2.3 API changes

Release date:2019-10-24

    Fixed

  • Notifications are sent to all applications token and not for all organizations token.

    Added

  • Updated windows DDNA client.

v1.2.2 API changes

Release date:2019-10-02

    Fixed

  • CSP (Windows) signature with token certificate.

v1.2.1 API changes

Release date:2019-10-02

    Fixed

  • Signature tray check on selected identity.

v1.2.0 API changes

Release date:2019-10-02

    Added

  • In DST details added document's preview url in dst detail.

  • API to get organizations detail.

  • Signature profiles: cades-bes and cades-t.

  • Spanish and French translations.

  • Signature flow to sign with an existing certificate in your CSP (Windows only).

    Changed

  • Updated Signing Today Client for Windows version, to support CSP.

  • Token association flow, now it's possible to choose certificate after token unlock.

    Fixed

  • Pagination filters for next end previous url.

v1.1.1 API changes

Release date:2019-10-02

    Fixed

  • Solved alert error on Namirial activation enroll form.

  • Restored units features on signature position.

v1.1.0 API changes

Release date:2019-06-20

    Added

  • Changelog to track changes.

  • Security check to verify digest in signature.

    Changed

  • Unit of measure to position the signature appearance: pt, mm and in.

  • Custom signature appearance text.

    Fixed

  • Updated physical token form, solved signature bug.

v1.0.0 API changes

Release date:2018-11-06

    Released stable version

Signing Today API v1.5.0

Signing Today enables seamless integration of digital signatures into any website by the use of easy requests to our API. This is the smart way of adding digital signature support with a great user experience.

Signing Today APIs use HTTP methods and are RESTful based, moreover they are protected by a server to server authentication standard by the use of tokens.

Signing Today APIs can be used in these environments:

Environment Description Endpoint
Sandbox Test environment https://sandbox.signingtoday.com
Live Production environment https://api.signingtoday.com

For every single request to Signing Today has to be defined the following HTTP header:

  • Authorization, which contains the authentication token.

If the request has a body than another HTTP header is requested:

  • Content-Type, with application/json value.

Follows an example of usage to enumerate all the user of my-org organization.

Example

$ curl https://sandbox.signingtoday.com/api/v1/my-org/users \
    -H 'Authorization: Token <access-token>'

HTTP methods used

APIs use the right HTTP verb in every situation.

Method Description
GET Request data from a resource
POST Send data to create a resource
PUT Update a resource
PATCH Partially update a resource
DELETE Delete a resourse

Response definition

All the response are in JSON format. As response to a request of all users of an organization you will have a result like this:

{
    "pagination": {
      "count": 75,
      "previous": "https://sandbox.signingtoday.com/api/v1/my-org/users?page=1",
      "next": "https://sandbox.signingtoday.com/api/v1/my-org/users?page=3",
      "pages": 8,
      "page": 2
    },
    "meta": {
      "code": 200
    },
    "data": [
      {
        "id": "jdo",
        "status": "enabled",
        "type": "Basic user account",
        "email": johndoe@dummyemail.com,
        "first_name": "John",
        "last_name": "Doe",
        "wallet": [],
        "created_by": "system",
        "owner": false,
        "automatic": false,
        "rao": false
      },
      ...
    ]
  }

The JSON of the response is made of three parts:

  • Pagination
  • Meta
  • Data

Pagination

Pagination object allows to split the response into parts and then to rebuild it sequentially by the use of next and previous parameters, by which you get previous and following blocks. The Pagination is present only if the response is a list of objects.

The general structure of Pagination object is the following:

{
    "pagination": {
      "count": 75,
      "previous": "https://sandbox.signingtoday.com/api/v1/my-org/users?page=1",
      "next": "https://sandbox.signingtoday.com/api/v1/my-org/users?page=3",
      "pages": 8,
      "page": 2
    },
    ...
  }

Meta

Meta object is used to enrich the information about the response. In the previous example, a successful case of response, Meta will have value status: 2XX. In case of unsuccessful response, Meta will have further information, as follows:

{
    "meta": {
      "code": <HTTP STATUS CODE>,
      "error_type": <STATUS CODE DESCRIPTION>,
      "error_message": <ERROR DESCRIPTION>
    }
  }

Data

Data object outputs as object or list of them. Contains the expected data as requested to the API.

Search filters

Search filters of the API have the following structure:

where_ATTRIBUTENAME=VALUE

In this way you make a case-sensitive search of VALUE. You can extend it through the Django lookup, obtaining more specific filters. For example:

where_ATTRIBUTENAME__LOOKUP=VALUE

where LOOKUP can be replaced with icontains to have a partial insensitive research, where

where_first_name__icontains=CHa

matches with every user that have the cha string in their name, with no differences between capital and lower cases.

Here the list of the lookups.

Webhooks

Signing Today supports webhooks for the update of DSTs and identities status. You can choose if to use or not webhooks and if you want to receive updates about DSTs and/or identities. You can configurate it on application token level, in the webhook field, as follows:

"webhooks": {
  "dst": "URL",
  "identity": "URL"
  }

DSTs status update

DSTs send the following status updates:

  • DST_STATUS_CHANGED: whenever the DST changes its status
  • SIGNATURE_STATUS_CHANGED: whenever one of the signatures changes its status

DST_STATUS_CHANGED

Sends the following information:

{
    "message": "DST_STATUS_CHANGED",
    "data": {
      "status": "<DST_STATUS>",
      "dst": "<DST_ID>",
      "reason": "<DST_REASON>"
    }
  }

SIGNATURE_STATUS_CHANGED

Sends the following information:

{
    "message": "SIGNATURE_STATUS_CHANGED",
    "data": {
      "status": "<SIGNATURE_STATUS>",
      "group": <MEMBERSHIP_GROUP_INDEX>,
      "dst": {
        "id": "<DST_ID>",
        "title": "<DST_TITLE>"
      },
      "signature": "<SIGNATURE_ID>",
      "signer": "<SIGNER_USERNAME>",
      "position": "<SIGNATURE_POSITION>",
      "document": {
        "display_name": "<DOCUMENT_TITLE>",
        "id": "<DOCUMENT_ID>",
        "order": <DOCUMENT_INDEX>
      },
      "automatic": <DECLARES_IF_THE_SIGNER_IS_AUTOMATIC>,
      "page": "<SIGNATURE_PAGE>"
    }
  }

Identities status update

Identities send the following status updates:

  • IDENTITY_REQUEST_ENROLLED: whenever an identity request is activated

IDENTITY_REQUEST_ENROLLED

Sends the following information:

{
    "message": "IDENTITY_REQUEST_ENROLLED",
    "data": {
      "status": "<REQUEST_STATUS>",
      "request": "<REQUEST_ID>",
      "user": "<APPLICANT_USERNAME>"
    }
  }

Urlback

Sometimes may be necessary to make a redirect after an user, from the signature tray, has completed his operations or activated a certificate.

If set, redirects could happen in 3 cases:

  • after a signature or decline
  • after a DST has been signed by all the signers or canceled
  • after the activation of a certificate

In the first two cases the urlback returns the following information through a data form:

  • dst-id: id of the DST
  • dst-url: signature_ticket of the signature
  • dst-status: current status of the DST
  • dst-signature-id: id of the signature
  • dst-signature-status: current status of the signature
  • user: username of the signer
  • decline-reason: in case of a refused DST contains the reason of the decline

In the last case the urlback returns the following information through a data form:

  • user: username of the user activated the certificate
  • identity-provider: the provider has been used to issue the certificate
  • identity-request-id: id of the enrollment request
  • identity-id: id of the new identity
  • identity-label: the label assigned to the identity
  • identity-certificate: public key of the certificate

The Identity model

The Identity is the core object of SigningToday, because inside it there are all the information that allows an user to sign a digital signature transaction. Of course the most important information is the cerficate, which is a base64 string in PEM format. This allows to sign documents with a legal validity. The Identity has as well an expiration date, a status, which may be simply active, error, in case of problems during its emission either if the certificate has been somehow altered, or pending if the enrollment procedure has to be completed (the following steps are indicated in the 'next' field as well). Also there are information about the provider issued the Identity and fields with an url value that allows to send one time passwords or to sign digital signature transactions.

  • attributes
  • idstringuuid

    The uuid code that identifies the Identity

  • certificatestringPEM

    The X.509 certificate in PEM format of the Identity

  • not_afterstringdateTime

    Deadline of the Identity, expressed in ISO format

  • statusstring

    Identity status which can be one of the following. When an identity request is send, the identity is created and the status is pending until the provider dont'approve the request. Then status of the identity changes to active. If for some reason an error occurs during the process, or after that, the status will be error

    • pending
    • active
    • error
  • nextstringurl

    The next step to complete the activation procedure

  • actionsobject

    The object that identifies the urls to sign, to send a one time password or to update the certificate

    • send_otpurl

      The url to get a one time password

    • update_certificateurl

      The url to update the certificate

    • signurl

      The url to sign a document

  • providerstringany

    The name of the provider that issued the certificate for the Identity

  • labelstringany

    The label is an arbitrary name is possible to associate to an idenity. Doing so allows to distinguish different identities issued from the same provider during the performance of the signature in the signature tray

  • signature_appearance_uristringurl

    This is the url to the image that will be impressed on the document after the performance of the signature

  • provider_idstringuuid

    provider_id is the univocal name of the provider that issued the identity

  • provider_typestringany

    Type of the provider. The most usual type is cloud

  • provider_dataobject

    Data of the provider that issued the certificate, it is variable from provider to provider

  • provider_imagestringurl

    This is the logo of the provider that issued the identity

  • send_otp_urlstringurl

    The url to send a one time password to the user which the identity is associated

  • sign_urlstringurl

    The url to sign a document of a digital signature transaction

  • has_been_importedboolean

    If the Identity has been imported from another pre-existing Identity the has_been_imported field is set to true

Enumerate the identities of an user

This API allows to enumerate all the identities of an user, which are located in its wallet.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • user-idpath parameterstring

    The user-id is the uuid code that identifies a user of an organization. It is used as a path parameter to restrict the requested operation to the scope of that user

  • pagequery parameter

    Restricts the search to the chosen page

  • countquery parameter

    Sets the number of users per page to display

GET

/{organization-id}/users/{user-id}/wallet

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/wallet \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/wallet");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/wallet")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/wallet'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "pagination": {
    "count": 2,
    "next": "next_page@signing.today",
    "previous": "previous_page@signing.today",
    "pages": 20,
    "page": 2
  },
  "meta": {
    "code": 200
  },
  "data": [
    {
      "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "certificate": "",
      "not_after": "2021-10-17T07:26Z",
      "status": "active",
      "next": "next activity to complete ",
      "actions": {
        "send_otp": "https://signing.today/sample/provider/get-one-time-pass",
        "update_certificate": "https://signing.today/sample/provider/update-certificate",
        "sign": "https://signing.today/sample/provider/sign-document"
      },
      "provider": "System Sample Provider",
      "label": "Identity Label",
      "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png",
      "provider_id": "sys_provider",
      "provider_type": "provider type",
      "provider_data": {},
      "provider_image": "https://my-org/image",
      "send_otp_url": "https://signing.today/sample/send-otp",
      "sign_url": "https://signing.today/sample/sign-document",
      "has_been_imported": false
    }
  ]
}

Associate to an user an already existing identity

Associate to an user of the organization an already existing identity of a provider. The provider_data field is an object and is different for each provider. The minimum set of information to provide as provider_data is the following:

  • aruba
    • auth_domain : string
    • username : string
    • password : string
  • aruba-auto
    • auth_domain : string
    • username : string
    • password : string
  • infocert
    • username : string
    • password : string
  • namirial
    • id_titolare : string
    • id_otp : string
    • username : string
    • password : string
  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • user-idpath parameterstring

    The user-id is the uuid code that identifies a user of an organization. It is used as a path parameter to restrict the requested operation to the scope of that user

  • provider_idstring

    provider_id is the univocal name of the provider that issued the identity

    • aruba
    • aruba-auto
    • infocert
    • namirial
  • labelstring

    The label is an arbitrary name is possible to associate to an idenity. Doing so allows to distinguish different identities issued from the same provider during the performance of the signature in the signature tray

  • provider_dataobject

    Data of the provider that issued the certificate, it is variable from to provider to provider

POST

/{organization-id}/users/{user-id}/wallet

Click to copy
curl -L -X POST \
  https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/wallet \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "provider_id": "aruba",
    "label": "aruba-prv",
    "provider_data": {}
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/wallet");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "provider_id": "aruba",
    "label": "aruba-prv",
    "provider_data": {}
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "provider_id": "aruba",
    "label": "aruba-prv",
    "provider_data": {}
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/wallet")
  .post(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/wallet'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "provider_id": "aruba",
    "label": "aruba-prv",
    "provider_data": {}
}
r = requests.post(
    url,
    json=payload,
    headers=headers)
print(r.json())
201

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "certificate": "",
    "not_after": "2021-10-17T07:26Z",
    "status": "active",
    "next": "next activity to complete ",
    "actions": {
      "send_otp": "https://signing.today/sample/provider/get-one-time-pass",
      "update_certificate": "https://signing.today/sample/provider/update-certificate",
      "sign": "https://signing.today/sample/provider/sign-document"
    },
    "provider": "System Sample Provider",
    "label": "Identity Label",
    "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png",
    "provider_id": "sys_provider",
    "provider_type": "provider type",
    "provider_data": {},
    "provider_image": "https://my-org/image",
    "send_otp_url": "https://signing.today/sample/send-otp",
    "sign_url": "https://signing.today/sample/sign-document",
    "has_been_imported": false
  }
}

List the enrollments of an user

This API allows to list all the enrollments of an user.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • user-idpath parameterstring

    The user-id is the uuid code that identifies a user of an organization. It is used as a path parameter to restrict the requested operation to the scope of that user

  • pagequery parameter

    Restricts the search to the chosen page

  • countquery parameter

    Sets the number of users per page to display

GET

/{organization-id}/users/{user-id}/identity-requests

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity-requests \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity-requests");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity-requests")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/identity-requests'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "pagination": {
    "count": 2,
    "next": "next_page@signing.today",
    "previous": "previous_page@signing.today",
    "pages": 20,
    "page": 2
  },
  "meta": {
    "code": 200
  },
  "data": [
    {
      "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "status": "active",
      "next": "next activity to complete sample",
      "actions": {
        "send_otp": "https://signing.today/sample/get-one-time-pass",
        "activate": "https://signing.today/sample/sign-document"
      },
      "provider": "system provider",
      "label": "identity provider",
      "provider_type": "provider type",
      "user": "jdo",
      "registered_by": "jdo",
      "provider_data": {},
      "enroll_ticket": "https://signing.today/sample/enroll-ticket",
      "created_by": "admin@sample.com",
      "urlback": "https://signing.today/sample/home"
    }
  ]
}

Enumerate the identities of an organization

This API allows to enumerate all the users of an organization. It is possible to filter the data using the supported django lookups.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • where_providerquery parameter

    Returns the identities that have been issued by the specified provider

  • where_userquery parameter

    Returns the identities of the specified user, searched by its id

  • where_first_namequery parameter

    Returns the identities of the users that have the specified first name

  • where_last_namequery parameter

    Returns the identities of the users that have the specified last name

  • where_registered_byquery parameter

    Returns the identities registered by this user

  • where_fiscal_codequery parameter

    Returns the identities that have the specified fiscal code

  • pagequery parameter

    Restricts the search to the chosen page

  • countquery parameter

    Sets the number of users per page to display

GET

/{organization-id}/identities

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/identities \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/identities");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/identities")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/identities'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "pagination": {
    "count": 2,
    "next": "next_page@signing.today",
    "previous": "previous_page@signing.today",
    "pages": 20,
    "page": 2
  },
  "meta": {
    "code": 200
  },
  "data": [
    {
      "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "certificate": "",
      "not_after": "2021-10-17T07:26Z",
      "status": "active",
      "next": "next activity to complete ",
      "actions": {
        "send_otp": "https://signing.today/sample/provider/get-one-time-pass",
        "update_certificate": "https://signing.today/sample/provider/update-certificate",
        "sign": "https://signing.today/sample/provider/sign-document"
      },
      "provider": "System Sample Provider",
      "label": "Identity Label",
      "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png",
      "provider_id": "sys_provider",
      "provider_type": "provider type",
      "provider_data": {},
      "provider_image": "https://my-org/image",
      "send_otp_url": "https://signing.today/sample/send-otp",
      "sign_url": "https://signing.today/sample/sign-document",
      "has_been_imported": false
    }
  ]
}

Create an identity from token

This API allows to create an identity from a token.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • certificatestring

    The X.509 certificate in PEM format is wanted to associate to the identity will be created

  • labelstring

    The label is an arbitrary name is possible to associate to an idenity. Doing so allows to distinguish different identities issued from the same provider during the performance of the signature in the signature tray

  • dataobject

    The data associated to the identity, analogue to the provider_data field used during traditional identity creation. Of course the provider_data has to be congruent with the choosen cerficate

POST

/{organization-id}/identities/create/token

Click to copy
curl -L -X POST \
  https://sandbox.signingtoday.com/api/v1/api-demo/identities/create/token \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "certificate": "",
    "label": "Identity from Token",
    "data": {}
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/identities/create/token");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "certificate": "",
    "label": "Identity from Token",
    "data": {}
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "certificate": "",
    "label": "Identity from Token",
    "data": {}
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/identities/create/token")
  .post(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/identities/create/token'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "certificate": "",
    "label": "Identity from Token",
    "data": {}
}
r = requests.post(
    url,
    json=payload,
    headers=headers)
print(r.json())
201

Response

{
  "meta": {
    "code": 200
  },
  "data": null
}

Get information about an identity

This API allows to get all the information of an identity.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • identity-idpath parameterstring

    The identity-id is the uuid code that identifies an identity in the wallet of an user. It is, as well, used to restrict the requested operation to the scope of that identity

GET

/{organization-id}/identities/{identity-id}

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4 \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "pagination": {
    "count": 2,
    "next": "next_page@signing.today",
    "previous": "previous_page@signing.today",
    "pages": 20,
    "page": 2
  },
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "certificate": "",
    "not_after": "2021-10-17T07:26Z",
    "status": "active",
    "next": "next activity to complete ",
    "actions": {
      "send_otp": "https://signing.today/sample/provider/get-one-time-pass",
      "update_certificate": "https://signing.today/sample/provider/update-certificate",
      "sign": "https://signing.today/sample/provider/sign-document"
    },
    "provider": "System Sample Provider",
    "label": "Identity Label",
    "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png",
    "provider_id": "sys_provider",
    "provider_type": "provider type",
    "provider_data": {},
    "provider_image": "https://my-org/image",
    "send_otp_url": "https://signing.today/sample/send-otp",
    "sign_url": "https://signing.today/sample/sign-document",
    "has_been_imported": false
  }
}

Delete an identity

This API allows to delete an identity of an user.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • identity-idpath parameterstring

    The identity-id is the uuid code that identifies an identity in the wallet of an user. It is, as well, used to restrict the requested operation to the scope of that identity

DELETE

/{organization-id}/identities/{identity-id}

Click to copy
curl -L -X DELETE \
  https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4 \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .delete(null)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.delete(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": "deleted"
}

Associate an appearance to an identity

Associate a signature appearance to an already existing identity through an url to an image. This appearance will be displayed on the document after the signature.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • identity-idpath parameterstring

    The identity-id is the uuid code that identifies an identity in the wallet of an user. It is, as well, used to restrict the requested operation to the scope of that identity

  • signature_appearance_uristring

    This is the url to the image that will be impressed on the document after the performance of the signature

POST

/{organization-id}/identities/{identity-id}/appearance

Click to copy
curl -L -X POST \
  https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png"
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png"
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png"
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance")
  .post(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png"
}
r = requests.post(
    url,
    json=payload,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "certificate": "",
    "not_after": "2021-10-17T07:26Z",
    "status": "active",
    "next": "next activity to complete ",
    "actions": {
      "send_otp": "https://signing.today/sample/provider/get-one-time-pass",
      "update_certificate": "https://signing.today/sample/provider/update-certificate",
      "sign": "https://signing.today/sample/provider/sign-document"
    },
    "provider": "System Sample Provider",
    "label": "Identity Label",
    "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png",
    "provider_id": "sys_provider",
    "provider_type": "provider type",
    "provider_data": {},
    "provider_image": "https://my-org/image",
    "send_otp_url": "https://signing.today/sample/send-otp",
    "sign_url": "https://signing.today/sample/sign-document",
    "has_been_imported": false
  }
}

Delete the appearance of an identity

This API allows to delete the appearance associated to an identity.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • identity-idpath parameterstring

    The identity-id is the uuid code that identifies an identity in the wallet of an user. It is, as well, used to restrict the requested operation to the scope of that identity

DELETE

/{organization-id}/identities/{identity-id}/appearance

Click to copy
curl -L -X DELETE \
  https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance")
  .delete(null)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/identities/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/appearance'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.delete(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "certificate": "",
    "not_after": "2021-10-17T07:26Z",
    "status": "active",
    "next": "next activity to complete ",
    "actions": {
      "send_otp": "https://signing.today/sample/provider/get-one-time-pass",
      "update_certificate": "https://signing.today/sample/provider/update-certificate",
      "sign": "https://signing.today/sample/provider/sign-document"
    },
    "provider": "System Sample Provider",
    "label": "Identity Label",
    "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png",
    "provider_id": "sys_provider",
    "provider_type": "provider type",
    "provider_data": {},
    "provider_image": "https://my-org/image",
    "send_otp_url": "https://signing.today/sample/send-otp",
    "sign_url": "https://signing.today/sample/sign-document",
    "has_been_imported": false
  }
}

Enumerate the enrollment requests of an organization

This API allows to enumerate the enrollment requests of an organization.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • where_providerquery parameter

    Returns the identity requests that have been issued by the specified provider

  • where_userquery parameter

    Returns the identity requests of the specified user, searched by its id

  • where_first_namequery parameter

    Returns the identity requests of the users that have the specified first name

  • where_last_namequery parameter

    Returns the identity requests of the users that have the specified last name

  • where_registered_byquery parameter

    Returns the identity requests registered by this user

  • where_fiscal_codequery parameter

    Returns the identity requests have the specified fiscal code

  • pagequery parameter

    Restricts the search to the chosen page

  • countquery parameter

    Sets the number of users per page to display

GET

/{organization-id}/identity-requests

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/identity-requests \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/identity-requests");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/identity-requests")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/identity-requests'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "pagination": {
    "count": 2,
    "next": "next_page@signing.today",
    "previous": "previous_page@signing.today",
    "pages": 20,
    "page": 2
  },
  "meta": {
    "code": 200
  },
  "data": [
    {
      "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "status": "active",
      "next": "next activity to complete sample",
      "actions": {
        "send_otp": "https://signing.today/sample/get-one-time-pass",
        "activate": "https://signing.today/sample/sign-document"
      },
      "provider": "system provider",
      "label": "identity provider",
      "provider_type": "provider type",
      "user": "jdo",
      "registered_by": "jdo",
      "provider_data": {},
      "enroll_ticket": "https://signing.today/sample/enroll-ticket",
      "created_by": "admin@sample.com",
      "urlback": "https://signing.today/sample/home"
    }
  ]
}

Get information about an enrollment request

This API allows to get information about an enrollment request.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • enrollment-idpath parameterstring

    The enrollment-id is the uuid code that identifies a specific enrollment request

GET

/{organization-id}/identity-requests/{enrollment-id}

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/identity-requests/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4 \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/identity-requests/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/identity-requests/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/identity-requests/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "status": "active",
    "next": "next activity to complete sample",
    "actions": {
      "send_otp": "https://signing.today/sample/get-one-time-pass",
      "activate": "https://signing.today/sample/sign-document"
    },
    "provider": "system provider",
    "label": "identity provider",
    "provider_type": "provider type",
    "user": "jdo",
    "registered_by": "jdo",
    "provider_data": {},
    "enroll_ticket": "https://signing.today/sample/enroll-ticket",
    "created_by": "admin@sample.com",
    "urlback": "https://signing.today/sample/home"
  }
}

Delete an enrollment request

This API allows to delete an enrollment request.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • enrollment-idpath parameterstring

    The enrollment-id is the uuid code that identifies a specific enrollment request

DELETE

/{organization-id}/identity-requests/{enrollment-id}

Click to copy
curl -L -X DELETE \
  https://sandbox.signingtoday.com/api/v1/api-demo/identity-requests/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4 \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/identity-requests/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/identity-requests/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .delete(null)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/identity-requests/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.delete(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": null
}

Submit an enrollment request

This API allows to submit an enrollment request. The user of the request will be created if it does not exists already.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • userstring

    The user is intended to associate the requestd identity

  • provider_idstring

    The id of the provider will issue the requested identity

    • sms
    • st-approval
  • labelstring

    The label is an arbitrary name is possible to associate to an idenity. Doing so allows to distinguish different identities issued from the same provider during the performance of the signature in the signature tray

  • provider_dataobject

    SMS provider data is needed to supply in order to create an identity issued by SMS

    • last_namestring

      Last name of the identity

    • first_namestring

      First name of the identity

    • birth_datedate

      Birthdate of the identity

    • birth_countrystring

      Country of birth of the identity

    • emailemail

      Email address associated to the identity

    • phone_mobilephone number

      Phone number associated to the identity

  • registered_bystring

    The RAO user that registered the identity

POST

/{organization-id}/enroll

Click to copy
curl -L -X POST \
  https://sandbox.signingtoday.com/api/v1/api-demo/enroll \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "user": "jdo",
    "provider_id": "sms",
    "label": "string label",
    "provider_data": {
        "last_name": "Doe",
        "first_name": "John",
        "birth_date": "01-01-1990",
        "birth_country": "Italy",
        "email": "jdo@example.com",
        "phone_mobile": "+391234567890"
    },
    "registered_by": "jdo"
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/enroll");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "user": "jdo",
    "provider_id": "sms",
    "label": "string label",
    "provider_data": {
        "last_name": "Doe",
        "first_name": "John",
        "birth_date": "01-01-1990",
        "birth_country": "Italy",
        "email": "jdo@example.com",
        "phone_mobile": "+391234567890"
    },
    "registered_by": "jdo"
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "user": "jdo",
    "provider_id": "sms",
    "label": "string label",
    "provider_data": {
        "last_name": "Doe",
        "first_name": "John",
        "birth_date": "01-01-1990",
        "birth_country": "Italy",
        "email": "jdo@example.com",
        "phone_mobile": "+391234567890"
    },
    "registered_by": "jdo"
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/enroll")
  .post(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/enroll'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "user": "jdo",
    "provider_id": "sms",
    "label": "string label",
    "provider_data": {
        "last_name": "Doe",
        "first_name": "John",
        "birth_date": "01-01-1990",
        "birth_country": "Italy",
        "email": "jdo@example.com",
        "phone_mobile": "+391234567890"
    },
    "registered_by": "jdo"
}
r = requests.post(
    url,
    json=payload,
    headers=headers)
print(r.json())
201

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "status": "active",
    "next": "next activity to complete sample",
    "actions": {
      "send_otp": "https://signing.today/sample/get-one-time-pass",
      "activate": "https://signing.today/sample/sign-document"
    },
    "provider": "system provider",
    "label": "identity provider",
    "provider_type": "provider type",
    "user": "jdo",
    "registered_by": "jdo",
    "provider_data": {},
    "enroll_ticket": "https://signing.today/sample/enroll-ticket",
    "created_by": "admin@sample.com",
    "urlback": "https://signing.today/sample/home"
  }
}

The Organization model

The Organization is a meta object of SigningToday. Every single Organization is indipendent from the others, has its token, its rao user and everything else. In this way SigningToday allows the coexistance of many different organizations.

  • attributes
  • idstringuuid

    The uuid code that identifies the Organization

  • namestringany

    This is an arbitrary name is possible to associate to the Organization

  • slugstringany

    This is the organization-slug that is used as parameter in the endpoints or in the body of the requests

  • settingsobject

    Default settings it is possible to setup for the Organization

    • default_raoany

      This is the default RAO user of the Organization. A rao user is the one can associate identities to the other users

    • dst_default_monthsinteger

      This is the default deadline before the expiration of a digital signature transaction

    • signature_appearanceurl

      This is the url to the default signature appearance will be used for every member of the organization. In the scenario of a user that owns an identity with a signature_appearance will be uset the image associated to the identity rather than the default one

  • logostringurl

    This is the url to the image is supposed to be used as logo of the Organization, for example the logo or the motto of the company is integrating SigningToday

Get the settings of an oraganization

This API allows to obtain the settings of an organization, such as:

  • default_rao : the default rao user of the organization
  • dst_default_months : default deadline of a dst before its expiration
  • logo : the logo of the organization
  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

GET

/organizations/{organization-id}

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/organizations/api-demo \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/organizations/api-demo");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/organizations/api-demo")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/organizations/api-demo'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "name": "Bit4id",
    "slug": "bit4id",
    "settings": {
      "default_rao": "jdo",
      "dst_default_months": 3,
      "signature_appearance": "https://www.my-organization.com/signature.png"
    },
    "logo": "https://www.my-organization.com/logo.png"
  }
}

Edit the settings of an organization

This API allows to edit every single setting of an organization except the slug field.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • default_raostring

    This is the default RAO user of the Organization. A rao user is the one can associate identities to the other users

  • dst_default_monthsinteger

    This is the default deadline before the expiration of a digital signature transaction

  • signature_appearancestring

    This is the url to the default signature appearance will be used for every member of the organization. In the scenario of a user that owns an identity with a signature_appearance will be uset the image associated to the identity rather than the default one

  • namestring

    This is an arbitrary name is possible to associate to the Organization

  • logostring

    This is the url to the image is supposed to be used as logo of the Organization, for example the logo or the motto of the company is integrating SigningToday

PATCH

/organizations/{organization-id}

Click to copy
curl -L -X PATCH \
  https://sandbox.signingtoday.com/api/v1/organizations/api-demo \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "default_rao": "jdo",
    "dst_default_months": 3,
    "signature_appearance": "https://www.my-organization.com/signature.png",
    "name": "Bit4id",
    "logo": "https://www.my-organization.com/logo.png"
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/organizations/api-demo");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "default_rao": "jdo",
    "dst_default_months": 3,
    "signature_appearance": "https://www.my-organization.com/signature.png",
    "name": "Bit4id",
    "logo": "https://www.my-organization.com/logo.png"
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "default_rao": "jdo",
    "dst_default_months": 3,
    "signature_appearance": "https://www.my-organization.com/signature.png",
    "name": "Bit4id",
    "logo": "https://www.my-organization.com/logo.png"
}");
  .url("https://sandbox.signingtoday.com/api/v1/organizations/api-demo")
  .patch(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/organizations/api-demo'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "default_rao": "jdo",
    "dst_default_months": 3,
    "signature_appearance": "https://www.my-organization.com/signature.png",
    "name": "Bit4id",
    "logo": "https://www.my-organization.com/logo.png"
}
r = requests.patch(
    url,
    json=payload,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "name": "Bit4id",
    "slug": "bit4id",
    "settings": {
      "default_rao": "jdo",
      "dst_default_months": 3,
      "signature_appearance": "https://www.my-organization.com/signature.png"
    },
    "logo": "https://www.my-organization.com/logo.png"
  }
}

The Signature Transaction model

The Digital Signature Transaction is the object that makes possible a flow of signatures of one or more documents happen. Once there is an organization with some users, it is possible to create a dst through the definition of the document or the documents have to be signed, the signer or, eventually, the signers, grouping them, in this way it is possible to decide the order of the signatories will be followed. The status of the DST is pending until all the signers have signed. Once that happens the status will change to performed.

  • attributes
  • idstringuuid

    The uuid code that identifies the Digital Signature Transaction

  • documentsarray

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

    • document_uriurl

      This is the url from where the document, commonly in pdf format, has been uploaded to the Digital Signature Transaction

    • document_uri_optionsobject

      Additional options about the upload of the document

    • documenturl

      The url to download the document

    • display_namestring

      The name associated to the document, provided during the Digital Signature Transaction creation

    • groupsarray

      The scheduled signatures ordered as groups of signers. The signatures of a group can be performed only once all the signatures of the previous groups have been completed

    • previewurl

      The preview field is a parametric url which can be used to make a preview of the documents in the client integration of SigningToday. The parameters are:

      • page: the page to display
      • width: the width of the page
      • heigth: the heigth of the page The width and height parameters allows to display the page in a preferred size. If both are provided the first one is only use because the proportion of the page remains unchanged
  • created_bystringany

    The user created the Digital Signature Transaction

  • statusstring

    The Digital Signature Transaction may have the following statuses:

    • waiting: Not all the documents has ben uploaded and validated yet
    • pending: The DST is ready to be signed
    • performed: The DST has been signed by all the signers
    • expired: The DST expired before all the signers have signed it
    • cancelled: The DST has been canceled; the motivation is in the reason
    • waiting
    • pending
    • performed
    • expired
    • cancelled
  • createdstringdateTime

    Date of creation of the Digital Signature Transaction

  • reasonstring

    The motivations for the cancellation may be:

    • CANNOT_DOWNLOAD_DOCUMENT: Signing Today could not download the document
    • INVALID_DOCUMENT: The downloaded document is not valid
    • PROTECTED_DOCUMENT: The document is protected by password
    • declined: One of the documents has been refused
    • MOTIVAZIONE_ESPLICITA: Rejected from the system with a custom reason
    • CANNOT_DOWNLOAD_DOCUMENT
    • INVALID_DOCUMENT
    • PROTECTED_DOCUMENT
    • declined
    • MOTIVAZIONE_ESPLICITA
  • titlestringany

    Title of the Digital Signature Transaction

  • not_afterstringdateTime

    Deadline of the Digital Signature Transaction, expressed in ISO format

  • urlbackstringurl

    The url for the redirection from signature tray when the Digital Signature Transaction is completed or annulled

  • template_namestringany

    A label to indicate the template used to create the Digital Signature Transaction

List the DSTs of an organization

This API allows to list the Digital Signature Transactions of an organization.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • where_signerquery parameter

    Returns the Digital Signature Transactions where the specified user is a signer, searched by its id

  • where_statusquery parameter

    Returns the Digital Signature Transactions with the specified status

  • where_titlequery parameter

    Returns the Digital Signature Transactions that have the specified title

  • where_created_byquery parameter

    Returns the Digital Signature Transactions created by the specified user

  • where_createdquery parameter

    Returns the Digital Signature Transactions created before, after or in the declared range

  • where_signature_statusquery parameter

    Returns the Digital Signature Transactions where at least one of the signers has the queried status

  • where_document_namequery parameter

    Returns the Digital Signature Transactions that have into its documents the queried one

  • where_reasonquery parameter

    Returns the Digital Signature Transactions with the specified reason

  • where_signature_namequery parameter

    Returns the Digital Signature Transactions where the specified user is a signer, searched by its name

  • where_signer_groupquery parameter

    Returns the Digital Signature Transactions that have the specified group of signers

  • pagequery parameter

    Restricts the search to the chosen page

  • countquery parameter

    Sets the number of users per page to display

GET

/{organization-id}/signature-transactions

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "pagination": {
    "count": 2,
    "next": "next_page@signing.today",
    "previous": "previous_page@signing.today",
    "pages": 20,
    "page": 2
  },
  "meta": {
    "code": 200
  },
  "data": [
    {
      "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "documents": [
        {
          "document_uri": "https://signing.today/sample/document-uri",
          "document_uri_options": {
            "method": "GET"
          },
          "document": "https://signing.today/sample/get-document",
          "display_name": "Work Contract",
          "groups": [
            [
              {
                "id": "787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5",
                "signer": "jdo",
                "signer_group": null,
                "signature_ticket": "https://sandbox.signingtoday.com/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/signature",
                "automatic": false,
                "decline_url": "/api/v1/bit4id/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/decline",
                "description_html": "my-description",
                "status": "performed",
                "display_name": "John",
                "profile": "pades-bes",
                "reason": "For approval",
                "description": "*my-description*",
                "declinable": true,
                "urlback": "https://signing.today/sample/home",
                "where": {
                  "page": 1,
                  "position": "rect: 50, 100, 200, 150"
                },
                "constraints": {}
              }
            ]
          ],
          "preview": "/pdfr/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/0/{page}.png?w={width}&h={height}"
        }
      ],
      "created_by": "jdo@bit4id",
      "status": "performed",
      "created": "2019-11-24T12:24:17.430Z",
      "reason": null,
      "title": "Signature Transaction Demo",
      "not_after": "2019-09-19T19:00:18.016304Z",
      "urlback": "https://signing.today/sample/home",
      "template_name": "Template-1"
    }
  ]
}

Create a Digital Signature Transaction

This API allows to create a Digital Signature Transaction.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • titlestring

    Title of the Digital Signature Transaction

  • documentsarray

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

    • display_namestring

      The name associated to the document, provided during the Digital Signature Transaction creation

    • document_uriurl

      This is the url from where the document, commonly in pdf format, has been uploaded to the Digital Signature Transaction

    • groupsarray

      The scheduled signatures ordered as groups of signers. The signatures of a group can be performed only once all the signatures of the previous groups have been completed

POST

/{organization-id}/signature-transactions

Click to copy
curl -L -X POST \
  https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "title": "Signature Transaction Demo",
    "documents": [
        {
            "display_name": "Work Contract",
            "document_uri": "http://www.africau.edu/images/default/sample.pdf",
            "groups": [
                [
                    {
                        "declinable": true,
                        "profile": "pades-bes",
                        "display_name": "John",
                        "reason": "For approval",
                        "signer": "jdo",
                        "description": "*my-description*",
                        "urlback": "https://signing.today/sample/home",
                        "where": {
                            "page": 1,
                            "position": "rect: 50, 100, 200, 150"
                        },
                        "constraints": {}
                    }
                ]
            ]
        }
    ]
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "title": "Signature Transaction Demo",
    "documents": [
        {
            "display_name": "Work Contract",
            "document_uri": "http://www.africau.edu/images/default/sample.pdf",
            "groups": [
                [
                    {
                        "declinable": true,
                        "profile": "pades-bes",
                        "display_name": "John",
                        "reason": "For approval",
                        "signer": "jdo",
                        "description": "*my-description*",
                        "urlback": "https://signing.today/sample/home",
                        "where": {
                            "page": 1,
                            "position": "rect: 50, 100, 200, 150"
                        },
                        "constraints": {}
                    }
                ]
            ]
        }
    ]
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "title": "Signature Transaction Demo",
    "documents": [
        {
            "display_name": "Work Contract",
            "document_uri": "http://www.africau.edu/images/default/sample.pdf",
            "groups": [
                [
                    {
                        "declinable": true,
                        "profile": "pades-bes",
                        "display_name": "John",
                        "reason": "For approval",
                        "signer": "jdo",
                        "description": "*my-description*",
                        "urlback": "https://signing.today/sample/home",
                        "where": {
                            "page": 1,
                            "position": "rect: 50, 100, 200, 150"
                        },
                        "constraints": {}
                    }
                ]
            ]
        }
    ]
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions")
  .post(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "title": "Signature Transaction Demo",
    "documents": [
        {
            "display_name": "Work Contract",
            "document_uri": "http://www.africau.edu/images/default/sample.pdf",
            "groups": [
                [
                    {
                        "declinable": true,
                        "profile": "pades-bes",
                        "display_name": "John",
                        "reason": "For approval",
                        "signer": "jdo",
                        "description": "*my-description*",
                        "urlback": "https://signing.today/sample/home",
                        "where": {
                            "page": 1,
                            "position": "rect: 50, 100, 200, 150"
                        },
                        "constraints": {}
                    }
                ]
            ]
        }
    ]
}
r = requests.post(
    url,
    json=payload,
    headers=headers)
print(r.json())
201

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "documents": [
      {
        "document_uri": "https://signing.today/sample/document-uri",
        "document_uri_options": {
          "headers": {
            "Authorization": "barer ba12bb43ac54dd65"
          }
        },
        "document": "https://signing.today/sample/get-document",
        "display_name": "Work Contract",
        "groups": [
          [
            {
              "id": "787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5",
              "signer": "jdo",
              "signer_group": null,
              "signature_ticket": "https://sandbox.signingtoday.com/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/signature",
              "automatic": false,
              "decline_url": "/api/v1/bit4id/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/decline",
              "description_html": "my-description",
              "status": "performed",
              "display_name": "John",
              "profile": "pades-bes",
              "reason": "For approval",
              "description": "*my-description*",
              "declinable": true,
              "urlback": "https://signing.today/sample/home",
              "where": {
                "page": 1,
                "position": "rect: 50, 100, 200, 150"
              },
              "constraints": {}
            }
          ]
        ],
        "preview": "/pdfr/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/0/{page}.png?w={width}&h={height}"
      }
    ],
    "created_by": "jdo@bit4id",
    "status": "performed",
    "created": "2019-11-24T12:24:17.430Z",
    "reason": null,
    "title": "Signature Transaction Demo",
    "not_after": "2019-09-19T19:00:18.016304Z",
    "urlback": "https://signing.today/sample/home",
    "template_name": "Template-1"
  }
}

Get information about a DST

This API allows to get information about a Digital Signature Transaction.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • dst-idpath parameterstring

    The dst-id is the uuid code that identifies a digital signature transaction. It is used as a path parameter to filter the requested operation to the specified dst

GET

/{organization-id}/signature-transactions/{dst-id}

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4 \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "documents": [
      {
        "document_uri": "https://signing.today/sample/document-uri",
        "document_uri_options": {},
        "document": "https://signing.today/sample/get-document",
        "display_name": "Work Contract",
        "groups": [
          [
            {
              "id": "787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5",
              "signer": "jdo",
              "signer_group": null,
              "signature_ticket": "https://sandbox.signingtoday.com/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/signature",
              "automatic": false,
              "decline_url": "/api/v1/bit4id/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/decline",
              "description_html": "my-description",
              "status": "performed",
              "display_name": "John",
              "profile": "pades-bes",
              "reason": "For approval",
              "description": "*my-description*",
              "declinable": true,
              "urlback": "https://signing.today/sample/home",
              "where": {
                "page": 1,
                "position": "rect: 50, 100, 200, 150"
              },
              "constraints": {}
            }
          ]
        ],
        "preview": "/pdfr/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/0/{page}.png?w={width}&h={height}"
      }
    ],
    "created_by": "jdo@bit4id",
    "status": "performed",
    "created": "2019-11-24T12:24:17.430Z",
    "reason": null,
    "title": "Signature Transaction Demo",
    "not_after": "2019-09-19T19:00:18.016304Z",
    "urlback": "https://signing.today/sample/home",
    "template_name": "Template-1"
  }
}

Delete a Digital Signature Transaction

This API allows to delete a Digital Signature Transaction.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • dst-idpath parameterstring

    The dst-id is the uuid code that identifies a digital signature transaction. It is used as a path parameter to filter the requested operation to the specified dst

DELETE

/{organization-id}/signature-transactions/{dst-id}

Click to copy
curl -L -X DELETE \
  https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4 \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .delete(null)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.delete(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "deleted": true,
    "code": 200
  },
  "data": null
}

Mark a DST as canceled

This API allows to mark a Digital Signature Transaction as canceled providing a reason.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • dst-idpath parameterstring

    The dst-id is the uuid code that identifies a digital signature transaction. It is used as a path parameter to filter the requested operation to the specified dst

  • reasonstring

    This is the actual reason why the Digital Signature Transaction is going to be canceled, to be provided in the body of the request

POST

/{organization-id}/signature-transactions/{dst-id}/cancel

Click to copy
curl -L -X POST \
  https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/cancel \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "reason": "Reason for the cancellation"
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/cancel");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "reason": "Reason for the cancellation"
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "reason": "Reason for the cancellation"
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/cancel")
  .post(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/signature-transactions/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/cancel'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "reason": "Reason for the cancellation"
}
r = requests.post(
    url,
    json=payload,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "documents": [
      {
        "document_uri": "https://signing.today/sample/document-uri",
        "document_uri_options": {},
        "document": "https://signing.today/sample/get-document",
        "display_name": "Work Contract",
        "groups": [
          [
            {
              "id": "787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5",
              "signer": "jdo",
              "signer_group": null,
              "signature_ticket": "https://sandbox.signingtoday.com/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/signature",
              "automatic": false,
              "decline_url": "/api/v1/bit4id/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/decline",
              "description_html": "my-description",
              "status": "performed",
              "display_name": "John",
              "profile": "pades-bes",
              "reason": "For approval",
              "description": "*my-description*",
              "declinable": true,
              "urlback": "https://signing.today/sample/home",
              "where": {
                "page": 1,
                "position": "rect: 50, 100, 200, 150"
              },
              "constraints": {}
            }
          ]
        ],
        "preview": "/pdfr/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/0/{page}.png?w={width}&h={height}"
      }
    ],
    "created_by": "jdo@bit4id",
    "status": "performed",
    "created": "2019-11-24T12:24:17.430Z",
    "reason": null,
    "title": "Signature Transaction Demo",
    "not_after": "2019-09-19T19:00:18.016304Z",
    "urlback": "https://signing.today/sample/home",
    "template_name": "Template-1"
  }
}

Download a document from a DST

This API allows to download a document from a digital signature transaction. The document can be downloaded before or after one or every signature have been performed.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • document-idpath parameterstring

    The document-id is the uuid code that identifies a document of a digital signature transaction. This parameter is usually used in order to download a document from a digital signature transaction

GET

/{organization-id}/documents/{document-id}/download

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/documents/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/download \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/documents/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/download");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/documents/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/download")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/documents/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/download'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{}

The Signature model

The Signature is an object of SigningToday which contains all the information needed to digitally sign a document. This is possible thanks to the cerficate associated to the identity in the wallet of the user is going to perform the signature. The profile field of the Signature object specifies the modality of signature is going to be performed, and can be:

  • PADES :
    • allows to exclusively sign a pdf file with the signature directly affixed into the document;
  • CADES :
    • allows to sign different types of documents; the signature is not "physically" into the document but the signature and the file are placed together in an envelope instead, making thus a .p7m extension.

Consistently to the other objects, the Signature, as well, has a status, which is helpful to understand if the signature has been performed already or not, if it is expired or it is errored due to a miskate during the creation of the digital signature transaction or the performing of the signature itself.

  • attributes
  • idstringuuid

    The uuid code that identifies the Signature

  • signerstringany

    The user that have to sign the digital signature transaction

  • signer_groupstringany

    The group which the signer belongs. This field is used in the scenario of a digital signature transaction that has multiple signatures to be performed, where the signers belongs to the same group. Let's think to the group "teachers" of a school. Thus is possible to add the signer_group "teachers" as signers of the digital signature transaction without worrying about who really belong to that group

  • signature_ticketstringurl

    This is the url where a signature tray is predisposed for a specific signer that have to sign a specific digital signature transaction

  • automaticboolean

    If true indicates that the signer is an automatic one, thus the signature procedure will be different from a regular signer

  • decline_urlstringurl

    This is the url to decline a digital signature transaction

  • description_htmlstringhtml

    This is a html description to attach with the Signature

  • statusstring

    The status of the Signature. As the digital signature transaction is created the status of the Signature is waiting, if everything is legit than the status changes to pending, otherwise to error. Once the Signature is made the status changes to performed. If the DST expires before the Signature is performed then the status changes to expired

    • waiting
    • pending
    • performed
    • expired
    • error
  • display_namestringany

    This is the name will be displayed on the signature tray associated to the Signature has to be performed. Usually is the full name of the user is going to sign

  • profilestring

    The profile field of the Signature object specifies the modality of signature is going to be performed, and can be:

    • PADES : allows to exclusively sign a pdf file with the signature directly affixed into the document;
    • CADES : allows to sign different types of documents; the signature is not "physically" into the document but the signature and the file are placed together in an envelope instead, making thus a .p7m extension.
    • pades-bes
    • pades-t
    • cades-bes
    • cades-t
  • reasonstringany

    The reason of the Signature, or rather a motivational description associated to the Signature

  • descriptionstringmarkdown

    This is a simple description to attach with the Signature

  • declinableboolean

    If true the signer is able to decline the Signature if he wants to

  • urlbackstringurl

    The url for the redirection from Signature tray when the digital signature transaction is completed or annulled

  • whereobject

    Where will be allocated the Signature on the document. This field is made of two parameters, defined as follows

    • pageinteger

      As can be guessed this is the page where to allocate the Signature

    • positionany

      This is the exact position in the choosen page where to attach the Signature. Multiple unit of measurement are provided. The format is the following: "rect: 50mm, 100mm, 200mm, 150mm"

  • constraintsobject

    Particular constraints for the Signature. For example constraints about the firs tname or last name of the certificate associated with the identity is going to sign. The way to use this field is through the django lookups, for example:

    • "certificate__subject_givenName__iexact=JOHN"

Sign a DST with an automatic signer

This API allows to sign a Digital Signature Transaction with an automatic signer certificate.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • signature-idpath parameterstring

    The signature-id is the uuid code that identifies a signature that has to be performed into a digital signature transaction. It is usually used in the API endpoints to perform, decline or cancel a digital signature transaction

  • passwordstring

    This is the password to enable the automatic signature. Every automatic signer has its own password, to provide as body during the performance of an automatic signature

POST

/{organization-id}/signatures/{signature-id}/perform

Click to copy
curl -L -X POST \
  https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/perform \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "password": "bit4idtest"
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/perform");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "password": "bit4idtest"
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "password": "bit4idtest"
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/perform")
  .post(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/perform'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "password": "bit4idtest"
}
r = requests.post(
    url,
    json=payload,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "password": "bit4idtest"
  }
}

Create a channel

This API allows to create a channel in order to dispose, by another API, the scheduling of a signature. These two APIs are used to integrate SigningToday into another application.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • dst-idpath parameterstring

    The dst-id is the uuid code that identifies a digital signature transaction. It is used as a path parameter to filter the requested operation to the specified dst

POST

/{organization-id}/channels/{dst-id}

Click to copy
curl -L -X POST \
  https://sandbox.signingtoday.com/api/v1/api-demo/channels/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4 \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/channels/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/channels/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .post()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/channels/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.post(
    url,
    headers=headers)
print(r.json())
201

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "sub": "/channels/91099073-905b-437e-b48f-f21c0e7f4723",
    "pub": "/channels/54747aa4-39c4-4ae4-8f0a-b0f41eb0d7d4"
  }
}

Perform a Signature

This API allows to integrate SigningToday into another application. Through this endpoint it is possible to schedule a signature into engine.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • signature-idpath parameterstring

    The signature-id is the uuid code that identifies a signature that has to be performed into a digital signature transaction. It is usually used in the API endpoints to perform, decline or cancel a digital signature transaction

  • identity-idpath parameterstring

    The identity-id is the uuid code that identifies an identity in the wallet of an user. It is, as well, used to restrict the requested operation to the scope of that identity

  • channel_substring

    The channel sub

  • channel_pubstring

    The channel pub

POST

/{organization-id}/signatures/{signature-id}/perform/{identity-id}

Click to copy
curl -L -X POST \
  https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/perform/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4 \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "channel_sub": "/channels/91099073-905b-437e-b48f-f21c0e7f4723",
    "channel_pub": "/channels/54747aa4-39c4-4ae4-8f0a-b0f41eb0d7d4"
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/perform/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "channel_sub": "/channels/91099073-905b-437e-b48f-f21c0e7f4723",
    "channel_pub": "/channels/54747aa4-39c4-4ae4-8f0a-b0f41eb0d7d4"
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "channel_sub": "/channels/91099073-905b-437e-b48f-f21c0e7f4723",
    "channel_pub": "/channels/54747aa4-39c4-4ae4-8f0a-b0f41eb0d7d4"
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/perform/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .post(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/perform/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "channel_sub": "/channels/91099073-905b-437e-b48f-f21c0e7f4723",
    "channel_pub": "/channels/54747aa4-39c4-4ae4-8f0a-b0f41eb0d7d4"
}
r = requests.post(
    url,
    json=payload,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "profile": "pades-bes",
    "provider_id": "sys_provider",
    "position": "rect: 50, 100, 200, 150",
    "group": 0,
    "certificate": "",
    "title": "Signature Transaction Demo",
    "dst": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "signing_time": null,
    "reason": "For approval",
    "channel": {
      "sub": "/channels/91099073-905b-437e-b48f-f21c0e7f4723",
      "pub": "/channels/54747aa4-39c4-4ae4-8f0a-b0f41eb0d7d4"
    },
    "signature_text": "[{\"format\": [\"Signed by {subject[commonName]}\", \"{subject[C]}\", \"{subject[L]}\", \"{subject[S]}\", \"{subject[OU]}\", \"{subject[O]}\", \"{subject[E]}\"]}]",
    "signature": "787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5",
    "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png",
    "pades_subfilter": null,
    "document": "/docs/dsts/94794c07-d16e-4791-a507-0549225538b5/0",
    "page": 1,
    "identity": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4"
  }
}

Perform a Signature with session

This API allows to perform one or more signatures within the same session. This way is possible, in the scenario of a simple signature for example, to perform multiple signatures using the same one time password.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • signature-idpath parameterstring

    The signature-id is the uuid code that identifies a signature that has to be performed into a digital signature transaction. It is usually used in the API endpoints to perform, decline or cancel a digital signature transaction

  • identity_idstring

    The uuid code that identifies the Identity

  • session_idstring

    This is the id of the session is going to use in order the perform the signature or the signatures

POST

/{organization-id}/signatures/{signature-id}/session-perform

Click to copy
curl -L -X POST \
  https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/session-perform \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "identity_id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "session_id": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d"
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/session-perform");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "identity_id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "session_id": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d"
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "identity_id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "session_id": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d"
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/session-perform")
  .post(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/session-perform'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "identity_id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "session_id": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d"
}
r = requests.post(
    url,
    json=payload,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "identity_id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "session_id": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d"
  }
}

Decline a Digital Signature Transaction

This API allows to decline the Signature of a digital signature transaction providing a reason.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • signature-idpath parameterstring

    The signature-id is the uuid code that identifies a signature that has to be performed into a digital signature transaction. It is usually used in the API endpoints to perform, decline or cancel a digital signature transaction

  • reasonstring

    This is the actual reason for the annulment of the Signature, to be provided in the body of the request

POST

/{organization-id}/signatures/{signature-id}/decline

Click to copy
curl -L -X POST \
  https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/decline \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "reason": "Reason for the annulment"
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/decline");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "reason": "Reason for the annulment"
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "reason": "Reason for the annulment"
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/decline")
  .post(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/decline'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "reason": "Reason for the annulment"
}
r = requests.post(
    url,
    json=payload,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "documents": [
      {
        "document_uri": "https://signing.today/sample/document-uri",
        "document_uri_options": {},
        "document": "https://signing.today/sample/get-document",
        "display_name": "Work Contract",
        "groups": [
          [
            {
              "id": "787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5",
              "signer": "jdo",
              "signer_group": null,
              "signature_ticket": "https://sandbox.signingtoday.com/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/signature",
              "automatic": false,
              "decline_url": "/api/v1/bit4id/signatures/787dc132-b3f0-11e9-a1a3-2a2ae2dbcce5/decline",
              "description_html": "my-description",
              "status": "performed",
              "display_name": "John",
              "profile": "pades-bes",
              "reason": "For approval",
              "description": "*my-description*",
              "declinable": true,
              "urlback": "https://signing.today/sample/home",
              "where": {
                "page": 1,
                "position": "rect: 50, 100, 200, 150"
              },
              "constraints": {}
            }
          ]
        ],
        "preview": "/pdfr/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/0/{page}.png?w={width}&h={height}"
      }
    ],
    "created_by": "jdo@bit4id",
    "status": "performed",
    "created": "2019-11-24T12:24:17.430Z",
    "reason": null,
    "title": "Signature Transaction Demo",
    "not_after": "2019-09-19T19:00:18.016304Z",
    "urlback": "https://signing.today/sample/home",
    "template_name": "Template-1"
  }
}

The Token model

The Token is an object that contains the information about the authorizations, thanks to which is possible to setup the authorization to use in every HTTP request or the authorization to send the webhook notifications either the authorization for the fetching of documents.

  • attributes
  • idstringuuid

    The uuid code that identifies the Token

  • valuestringany

    This is the actual value of the Token, usually in a uuid format

  • userstringany

    The user whom is associated the Token

  • webhooksobject

    SigningToday supports webhooks for the update of digital signature transactions and identities status. You can choose if to use or not webhooks and if you want to receive updates about digital signature transactions and/or identities. You can configurate it on application token level, in the webhook field

    • identityurl

      The url where to receive notifications about identity status

    • dsturl

      The url where to receive notifications about digital signature transaction status

  • http_optionsobject

    Through this field it is possible to add some custom options to the HTTP request

    • headersobject

      Key-Value pairs that identifies headers to add to the HTTP request

    • auth_usernamestring

      The username for the HTTP basic authentication

    • auth_passwordstring

      The password for the HTTP basic authentication

    • auth_modestring

      The mode of the authentication

    • client_keyPEM

      The SSL client key

    • client_certPEM

      the SSL client certificate

  • labelstringstring

    The label assigned to the Token, that is like the name is associated to it

  • created_bystringany

    The user created the Token - user_name@organization-id -

Enumerate the tokens of an user

This API allows to enumerate all the tokens of an user.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • user-idpath parameterstring

    The user-id is the uuid code that identifies a user of an organization. It is used as a path parameter to restrict the requested operation to the scope of that user

  • pagequery parameter

    Restricts the search to the chosen page

  • countquery parameter

    Sets the number of users per page to display

GET

/{organization-id}/users/{user-id}/tokens

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/tokens \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/tokens");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/tokens")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4/tokens'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "pagination": {
    "count": 2,
    "next": "next_page@signing.today",
    "previous": "previous_page@signing.today",
    "pages": 20,
    "page": 2
  },
  "meta": {
    "code": 200
  },
  "data": [
    {
      "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "value": "8df173c3bcd4274715491fc196705da8",
      "user": "jdo",
      "webhooks": {
        "identity": "https://host-name/identity",
        "dst": "https://host-name/dst"
      },
      "http_options": {
        "headers": {
          "Content-Type": "application/json"
        },
        "auth_username": "jdo",
        "auth_password": "Bit-4-Id",
        "auth_mode": "basic",
        "client_key": "MIIEowIBAAKCAQEAvpnaPKLIKdvx98KW68lz8pGaRRcYersNGqPjpifMVjjE8LuC oXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWXSxiTrW99HBfAl1MDQyWcukoE b9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p1NCvw+6B/aAN9l1G2pQXgRdY C/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYBaKjqetwwv6DFk/GRdOSEd/6b W+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6DauZkChSRyc/Whvurx6o85D6qpz ywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwIDAQABAoIBAFml8cD9a5pMqlW3 f9btTQz1sRL4Fvp7CmHSXhvjsjeHwhHckEe0ObkWTRsgkTsm1XLu5W8IITnhn0+1 iNr+78eB+rRGngdAXh8diOdkEy+8/Cee8tFI3jyutKdRlxMbwiKsouVviumoq3fx OGQYwQ0Z2l/PvCwy/Y82ffq3ysC5gAJsbBYsCrg14bQo44ulrELe4SDWs5HCjKYb EI2b8cOMucqZSOtxg9niLN/je2bo/I2HGSawibgcOdBms8k6TvsSrZMr3kJ5O6J+ 77LGwKH37brVgbVYvbq6nWPL0xLG7dUv+7LWEo5qQaPy6aXb/zbckqLqu6/EjOVe ydG5JQECgYEA9kKfTZD/WEVAreA0dzfeJRu8vlnwoagL7cJaoDxqXos4mcr5mPDT kbWgFkLFFH/AyUnPBlK6BcJp1XK67B13ETUa3i9Q5t1WuZEobiKKBLFm9DDQJt43 uKZWJxBKFGSvFrYPtGZst719mZVcPct2CzPjEgN3Hlpt6fyw3eOrnoECgYEAxiOu jwXCOmuGaB7+OW2tR0PGEzbvVlEGdkAJ6TC/HoKM1A8r2u4hLTEJJCrLLTfw++4I ddHE2dLeR4Q7O58SfLphwgPmLDezN7WRLGr7Vyfuv7VmaHjGuC3Gv9agnhWDlA2Q gBG9/R9oVfL0Dc7CgJgLeUtItCYC31bGT3yhV0MCgYEA4k3DG4L+RN4PXDpHvK9I pA1jXAJHEifeHnaW1d3vWkbSkvJmgVf+9U5VeV+OwRHN1qzPZV4suRI6M/8lK8rA Gr4UnM4aqK4K/qkY4G05LKrik9Ev2CgqSLQDRA7CJQ+Jn3Nb50qg6hFnFPafN+J7 7juWln08wFYV4Atpdd+9XQECgYBxizkZFL+9IqkfOcONvWAzGo+Dq1N0L3J4iTIk w56CKWXyj88d4qB4eUU3yJ4uB4S9miaW/eLEwKZIbWpUPFAn0db7i6h3ZmP5ZL8Q qS3nQCb9DULmU2/tU641eRUKAmIoka1g9sndKAZuWo+o6fdkIb1RgObk9XNn8R4r psv+aQKBgB+CIcExR30vycv5bnZN9EFlIXNKaeMJUrYCXcRQNvrnUIUBvAO8+jAe CdLygS5RtgOLZib0IVErqWsP3EI1ACGuLts0vQ9GFLQGaN1SaMS40C9kvns1mlDu LhIhYpJ8UsCVt5snWo2N+M+6ANh5tpWdQnEK6zILh4tRbuzaiHgb",
        "client_cert": "MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa RRcYersNGqPjpifMVjjE8LuCoXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWX SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p 1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0 +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1 fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY cbTV5RDkrlaYwm5yqlTIglvCv7o="
      },
      "label": "Signing Today Token",
      "created_by": "jdo@bit4id"
    }
  ]
}

Enumerate the tokens of an organization

This API allows to enumerate the tokens of an organization.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • where_userquery parameter

    Returns the tokens of the specified user, searched by its id

  • where_labelquery parameter

    Returns the tokens with the specified label

  • countquery parameter

    Sets the number of tokens per page to display

  • pagequery parameter

    Restricts the search to chosen page

GET

/{organization-id}/tokens

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/tokens \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/tokens");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/tokens")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/tokens'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "pagination": {
    "count": 2,
    "next": "next_page@signing.today",
    "previous": "previous_page@signing.today",
    "pages": 20,
    "page": 2
  },
  "meta": {
    "code": 200
  },
  "data": [
    {
      "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "value": "8df173c3bcd4274715491fc196705da8",
      "user": "jdo",
      "webhooks": {
        "identity": "https://host-name/identity",
        "dst": "https://host-name/dst"
      },
      "http_options": {
        "headers": {},
        "auth_username": "jdo",
        "auth_password": "Bit-4-Id",
        "auth_mode": "basic",
        "client_key": "MIIEowIBAAKCAQEAvpnaPKLIKdvx98KW68lz8pGaRRcYersNGqPjpifMVjjE8LuC oXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWXSxiTrW99HBfAl1MDQyWcukoE b9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p1NCvw+6B/aAN9l1G2pQXgRdY C/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYBaKjqetwwv6DFk/GRdOSEd/6b W+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6DauZkChSRyc/Whvurx6o85D6qpz ywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwIDAQABAoIBAFml8cD9a5pMqlW3 f9btTQz1sRL4Fvp7CmHSXhvjsjeHwhHckEe0ObkWTRsgkTsm1XLu5W8IITnhn0+1 iNr+78eB+rRGngdAXh8diOdkEy+8/Cee8tFI3jyutKdRlxMbwiKsouVviumoq3fx OGQYwQ0Z2l/PvCwy/Y82ffq3ysC5gAJsbBYsCrg14bQo44ulrELe4SDWs5HCjKYb EI2b8cOMucqZSOtxg9niLN/je2bo/I2HGSawibgcOdBms8k6TvsSrZMr3kJ5O6J+ 77LGwKH37brVgbVYvbq6nWPL0xLG7dUv+7LWEo5qQaPy6aXb/zbckqLqu6/EjOVe ydG5JQECgYEA9kKfTZD/WEVAreA0dzfeJRu8vlnwoagL7cJaoDxqXos4mcr5mPDT kbWgFkLFFH/AyUnPBlK6BcJp1XK67B13ETUa3i9Q5t1WuZEobiKKBLFm9DDQJt43 uKZWJxBKFGSvFrYPtGZst719mZVcPct2CzPjEgN3Hlpt6fyw3eOrnoECgYEAxiOu jwXCOmuGaB7+OW2tR0PGEzbvVlEGdkAJ6TC/HoKM1A8r2u4hLTEJJCrLLTfw++4I ddHE2dLeR4Q7O58SfLphwgPmLDezN7WRLGr7Vyfuv7VmaHjGuC3Gv9agnhWDlA2Q gBG9/R9oVfL0Dc7CgJgLeUtItCYC31bGT3yhV0MCgYEA4k3DG4L+RN4PXDpHvK9I pA1jXAJHEifeHnaW1d3vWkbSkvJmgVf+9U5VeV+OwRHN1qzPZV4suRI6M/8lK8rA Gr4UnM4aqK4K/qkY4G05LKrik9Ev2CgqSLQDRA7CJQ+Jn3Nb50qg6hFnFPafN+J7 7juWln08wFYV4Atpdd+9XQECgYBxizkZFL+9IqkfOcONvWAzGo+Dq1N0L3J4iTIk w56CKWXyj88d4qB4eUU3yJ4uB4S9miaW/eLEwKZIbWpUPFAn0db7i6h3ZmP5ZL8Q qS3nQCb9DULmU2/tU641eRUKAmIoka1g9sndKAZuWo+o6fdkIb1RgObk9XNn8R4r psv+aQKBgB+CIcExR30vycv5bnZN9EFlIXNKaeMJUrYCXcRQNvrnUIUBvAO8+jAe CdLygS5RtgOLZib0IVErqWsP3EI1ACGuLts0vQ9GFLQGaN1SaMS40C9kvns1mlDu LhIhYpJ8UsCVt5snWo2N+M+6ANh5tpWdQnEK6zILh4tRbuzaiHgb",
        "client_cert": "MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa RRcYersNGqPjpifMVjjE8LuCoXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWX SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p 1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0 +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1 fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY cbTV5RDkrlaYwm5yqlTIglvCv7o="
      },
      "label": "Signing Today Token",
      "created_by": "jdo@bit4id"
    }
  ]
}

Create an application token

This API allows to create an application token.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • userstring

    The user whom the Token is to be associated

  • labelstring

    The label assigned to the Token, that is like the name is associated to it

  • webhooksobject

    SigningToday supports webhooks for the update of digital signature transactions and identities status. You can choose if to use or not webhooks and if you want to receive updates about digital signature transactions and/or identities. You can configurate it on application token level, in the webhook field

    • identityurl

      The url where to receive notifications about identity status

    • dsturl

      The url where to receive notifications about digital signature transaction status

  • http_optionsobject

    Through this field it is possible to add some custom options to the HTTP request

    • headersobject

      Key-Value pairs that identifies headers to add to the HTTP request

    • auth_usernamestring

      The username for the HTTP basic authentication

    • auth_passwordstring

      The password for the HTTP basic authentication

    • auth_modestring

      The mode of the authentication

    • client_keyPEM

      The SSL client key

    • client_certPEM

      the SSL client certificate

POST

/{organization-id}/tokens

Click to copy
curl -L -X POST \
  https://sandbox.signingtoday.com/api/v1/api-demo/tokens \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "user": "jdo",
    "label": null,
    "webhooks": {
        "identity": "https://host-name/identity",
        "dst": "https://host-name/dst"
    },
    "http_options": {
        "headers": {
            "Content-Type": "application/json"
        },
        "auth_username": "jdo",
        "auth_password": "Bit-4-Id",
        "auth_mode": "basic",
        "client_key": "MIIEowIBAAKCAQEAvpnaPKLIKdvx98KW68lz8pGaRRcYersNGqPjpifMVjjE8LuC oXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWXSxiTrW99HBfAl1MDQyWcukoE b9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p1NCvw+6B/aAN9l1G2pQXgRdY C/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYBaKjqetwwv6DFk/GRdOSEd/6b W+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6DauZkChSRyc/Whvurx6o85D6qpz ywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwIDAQABAoIBAFml8cD9a5pMqlW3 f9btTQz1sRL4Fvp7CmHSXhvjsjeHwhHckEe0ObkWTRsgkTsm1XLu5W8IITnhn0+1 iNr+78eB+rRGngdAXh8diOdkEy+8/Cee8tFI3jyutKdRlxMbwiKsouVviumoq3fx OGQYwQ0Z2l/PvCwy/Y82ffq3ysC5gAJsbBYsCrg14bQo44ulrELe4SDWs5HCjKYb EI2b8cOMucqZSOtxg9niLN/je2bo/I2HGSawibgcOdBms8k6TvsSrZMr3kJ5O6J+ 77LGwKH37brVgbVYvbq6nWPL0xLG7dUv+7LWEo5qQaPy6aXb/zbckqLqu6/EjOVe ydG5JQECgYEA9kKfTZD/WEVAreA0dzfeJRu8vlnwoagL7cJaoDxqXos4mcr5mPDT kbWgFkLFFH/AyUnPBlK6BcJp1XK67B13ETUa3i9Q5t1WuZEobiKKBLFm9DDQJt43 uKZWJxBKFGSvFrYPtGZst719mZVcPct2CzPjEgN3Hlpt6fyw3eOrnoECgYEAxiOu jwXCOmuGaB7+OW2tR0PGEzbvVlEGdkAJ6TC/HoKM1A8r2u4hLTEJJCrLLTfw++4I ddHE2dLeR4Q7O58SfLphwgPmLDezN7WRLGr7Vyfuv7VmaHjGuC3Gv9agnhWDlA2Q gBG9/R9oVfL0Dc7CgJgLeUtItCYC31bGT3yhV0MCgYEA4k3DG4L+RN4PXDpHvK9I pA1jXAJHEifeHnaW1d3vWkbSkvJmgVf+9U5VeV+OwRHN1qzPZV4suRI6M/8lK8rA Gr4UnM4aqK4K/qkY4G05LKrik9Ev2CgqSLQDRA7CJQ+Jn3Nb50qg6hFnFPafN+J7 7juWln08wFYV4Atpdd+9XQECgYBxizkZFL+9IqkfOcONvWAzGo+Dq1N0L3J4iTIk w56CKWXyj88d4qB4eUU3yJ4uB4S9miaW/eLEwKZIbWpUPFAn0db7i6h3ZmP5ZL8Q qS3nQCb9DULmU2/tU641eRUKAmIoka1g9sndKAZuWo+o6fdkIb1RgObk9XNn8R4r psv+aQKBgB+CIcExR30vycv5bnZN9EFlIXNKaeMJUrYCXcRQNvrnUIUBvAO8+jAe CdLygS5RtgOLZib0IVErqWsP3EI1ACGuLts0vQ9GFLQGaN1SaMS40C9kvns1mlDu LhIhYpJ8UsCVt5snWo2N+M+6ANh5tpWdQnEK6zILh4tRbuzaiHgb",
        "client_cert": "MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa RRcYersNGqPjpifMVjjE8LuCoXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWX SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p 1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0 +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1 fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY cbTV5RDkrlaYwm5yqlTIglvCv7o="
    }
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/tokens");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "user": "jdo",
    "label": null,
    "webhooks": {
        "identity": "https://host-name/identity",
        "dst": "https://host-name/dst"
    },
    "http_options": {
        "headers": {},
        "auth_username": "jdo",
        "auth_password": "Bit-4-Id",
        "auth_mode": "basic",
        "client_key": "MIIEowIBAAKCAQEAvpnaPKLIKdvx98KW68lz8pGaRRcYersNGqPjpifMVjjE8LuC oXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWXSxiTrW99HBfAl1MDQyWcukoE b9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p1NCvw+6B/aAN9l1G2pQXgRdY C/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYBaKjqetwwv6DFk/GRdOSEd/6b W+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6DauZkChSRyc/Whvurx6o85D6qpz ywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwIDAQABAoIBAFml8cD9a5pMqlW3 f9btTQz1sRL4Fvp7CmHSXhvjsjeHwhHckEe0ObkWTRsgkTsm1XLu5W8IITnhn0+1 iNr+78eB+rRGngdAXh8diOdkEy+8/Cee8tFI3jyutKdRlxMbwiKsouVviumoq3fx OGQYwQ0Z2l/PvCwy/Y82ffq3ysC5gAJsbBYsCrg14bQo44ulrELe4SDWs5HCjKYb EI2b8cOMucqZSOtxg9niLN/je2bo/I2HGSawibgcOdBms8k6TvsSrZMr3kJ5O6J+ 77LGwKH37brVgbVYvbq6nWPL0xLG7dUv+7LWEo5qQaPy6aXb/zbckqLqu6/EjOVe ydG5JQECgYEA9kKfTZD/WEVAreA0dzfeJRu8vlnwoagL7cJaoDxqXos4mcr5mPDT kbWgFkLFFH/AyUnPBlK6BcJp1XK67B13ETUa3i9Q5t1WuZEobiKKBLFm9DDQJt43 uKZWJxBKFGSvFrYPtGZst719mZVcPct2CzPjEgN3Hlpt6fyw3eOrnoECgYEAxiOu jwXCOmuGaB7+OW2tR0PGEzbvVlEGdkAJ6TC/HoKM1A8r2u4hLTEJJCrLLTfw++4I ddHE2dLeR4Q7O58SfLphwgPmLDezN7WRLGr7Vyfuv7VmaHjGuC3Gv9agnhWDlA2Q gBG9/R9oVfL0Dc7CgJgLeUtItCYC31bGT3yhV0MCgYEA4k3DG4L+RN4PXDpHvK9I pA1jXAJHEifeHnaW1d3vWkbSkvJmgVf+9U5VeV+OwRHN1qzPZV4suRI6M/8lK8rA Gr4UnM4aqK4K/qkY4G05LKrik9Ev2CgqSLQDRA7CJQ+Jn3Nb50qg6hFnFPafN+J7 7juWln08wFYV4Atpdd+9XQECgYBxizkZFL+9IqkfOcONvWAzGo+Dq1N0L3J4iTIk w56CKWXyj88d4qB4eUU3yJ4uB4S9miaW/eLEwKZIbWpUPFAn0db7i6h3ZmP5ZL8Q qS3nQCb9DULmU2/tU641eRUKAmIoka1g9sndKAZuWo+o6fdkIb1RgObk9XNn8R4r psv+aQKBgB+CIcExR30vycv5bnZN9EFlIXNKaeMJUrYCXcRQNvrnUIUBvAO8+jAe CdLygS5RtgOLZib0IVErqWsP3EI1ACGuLts0vQ9GFLQGaN1SaMS40C9kvns1mlDu LhIhYpJ8UsCVt5snWo2N+M+6ANh5tpWdQnEK6zILh4tRbuzaiHgb",
        "client_cert": "MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa RRcYersNGqPjpifMVjjE8LuCoXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWX SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p 1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0 +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1 fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY cbTV5RDkrlaYwm5yqlTIglvCv7o="
    }
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "user": "jdo",
    "label": null,
    "webhooks": {
        "identity": "https://host-name/identity",
        "dst": "https://host-name/dst"
    },
    "http_options": {
        "headers": {},
        "auth_username": "jdo",
        "auth_password": "Bit-4-Id",
        "auth_mode": "basic",
        "client_key": "MIIEowIBAAKCAQEAvpnaPKLIKdvx98KW68lz8pGaRRcYersNGqPjpifMVjjE8LuC oXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWXSxiTrW99HBfAl1MDQyWcukoE b9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p1NCvw+6B/aAN9l1G2pQXgRdY C/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYBaKjqetwwv6DFk/GRdOSEd/6b W+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6DauZkChSRyc/Whvurx6o85D6qpz ywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwIDAQABAoIBAFml8cD9a5pMqlW3 f9btTQz1sRL4Fvp7CmHSXhvjsjeHwhHckEe0ObkWTRsgkTsm1XLu5W8IITnhn0+1 iNr+78eB+rRGngdAXh8diOdkEy+8/Cee8tFI3jyutKdRlxMbwiKsouVviumoq3fx OGQYwQ0Z2l/PvCwy/Y82ffq3ysC5gAJsbBYsCrg14bQo44ulrELe4SDWs5HCjKYb EI2b8cOMucqZSOtxg9niLN/je2bo/I2HGSawibgcOdBms8k6TvsSrZMr3kJ5O6J+ 77LGwKH37brVgbVYvbq6nWPL0xLG7dUv+7LWEo5qQaPy6aXb/zbckqLqu6/EjOVe ydG5JQECgYEA9kKfTZD/WEVAreA0dzfeJRu8vlnwoagL7cJaoDxqXos4mcr5mPDT kbWgFkLFFH/AyUnPBlK6BcJp1XK67B13ETUa3i9Q5t1WuZEobiKKBLFm9DDQJt43 uKZWJxBKFGSvFrYPtGZst719mZVcPct2CzPjEgN3Hlpt6fyw3eOrnoECgYEAxiOu jwXCOmuGaB7+OW2tR0PGEzbvVlEGdkAJ6TC/HoKM1A8r2u4hLTEJJCrLLTfw++4I ddHE2dLeR4Q7O58SfLphwgPmLDezN7WRLGr7Vyfuv7VmaHjGuC3Gv9agnhWDlA2Q gBG9/R9oVfL0Dc7CgJgLeUtItCYC31bGT3yhV0MCgYEA4k3DG4L+RN4PXDpHvK9I pA1jXAJHEifeHnaW1d3vWkbSkvJmgVf+9U5VeV+OwRHN1qzPZV4suRI6M/8lK8rA Gr4UnM4aqK4K/qkY4G05LKrik9Ev2CgqSLQDRA7CJQ+Jn3Nb50qg6hFnFPafN+J7 7juWln08wFYV4Atpdd+9XQECgYBxizkZFL+9IqkfOcONvWAzGo+Dq1N0L3J4iTIk w56CKWXyj88d4qB4eUU3yJ4uB4S9miaW/eLEwKZIbWpUPFAn0db7i6h3ZmP5ZL8Q qS3nQCb9DULmU2/tU641eRUKAmIoka1g9sndKAZuWo+o6fdkIb1RgObk9XNn8R4r psv+aQKBgB+CIcExR30vycv5bnZN9EFlIXNKaeMJUrYCXcRQNvrnUIUBvAO8+jAe CdLygS5RtgOLZib0IVErqWsP3EI1ACGuLts0vQ9GFLQGaN1SaMS40C9kvns1mlDu LhIhYpJ8UsCVt5snWo2N+M+6ANh5tpWdQnEK6zILh4tRbuzaiHgb",
        "client_cert": "MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa RRcYersNGqPjpifMVjjE8LuCoXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWX SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p 1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0 +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1 fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY cbTV5RDkrlaYwm5yqlTIglvCv7o="
    }
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/tokens")
  .post(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/tokens'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "user": "jdo",
    "label": null,
    "webhooks": {
        "identity": "https://host-name/identity",
        "dst": "https://host-name/dst"
    },
    "http_options": {
        "headers": {},
        "auth_username": "jdo",
        "auth_password": "Bit-4-Id",
        "auth_mode": "basic",
        "client_key": "MIIEowIBAAKCAQEAvpnaPKLIKdvx98KW68lz8pGaRRcYersNGqPjpifMVjjE8LuC oXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWXSxiTrW99HBfAl1MDQyWcukoE b9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p1NCvw+6B/aAN9l1G2pQXgRdY C/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYBaKjqetwwv6DFk/GRdOSEd/6b W+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6DauZkChSRyc/Whvurx6o85D6qpz ywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwIDAQABAoIBAFml8cD9a5pMqlW3 f9btTQz1sRL4Fvp7CmHSXhvjsjeHwhHckEe0ObkWTRsgkTsm1XLu5W8IITnhn0+1 iNr+78eB+rRGngdAXh8diOdkEy+8/Cee8tFI3jyutKdRlxMbwiKsouVviumoq3fx OGQYwQ0Z2l/PvCwy/Y82ffq3ysC5gAJsbBYsCrg14bQo44ulrELe4SDWs5HCjKYb EI2b8cOMucqZSOtxg9niLN/je2bo/I2HGSawibgcOdBms8k6TvsSrZMr3kJ5O6J+ 77LGwKH37brVgbVYvbq6nWPL0xLG7dUv+7LWEo5qQaPy6aXb/zbckqLqu6/EjOVe ydG5JQECgYEA9kKfTZD/WEVAreA0dzfeJRu8vlnwoagL7cJaoDxqXos4mcr5mPDT kbWgFkLFFH/AyUnPBlK6BcJp1XK67B13ETUa3i9Q5t1WuZEobiKKBLFm9DDQJt43 uKZWJxBKFGSvFrYPtGZst719mZVcPct2CzPjEgN3Hlpt6fyw3eOrnoECgYEAxiOu jwXCOmuGaB7+OW2tR0PGEzbvVlEGdkAJ6TC/HoKM1A8r2u4hLTEJJCrLLTfw++4I ddHE2dLeR4Q7O58SfLphwgPmLDezN7WRLGr7Vyfuv7VmaHjGuC3Gv9agnhWDlA2Q gBG9/R9oVfL0Dc7CgJgLeUtItCYC31bGT3yhV0MCgYEA4k3DG4L+RN4PXDpHvK9I pA1jXAJHEifeHnaW1d3vWkbSkvJmgVf+9U5VeV+OwRHN1qzPZV4suRI6M/8lK8rA Gr4UnM4aqK4K/qkY4G05LKrik9Ev2CgqSLQDRA7CJQ+Jn3Nb50qg6hFnFPafN+J7 7juWln08wFYV4Atpdd+9XQECgYBxizkZFL+9IqkfOcONvWAzGo+Dq1N0L3J4iTIk w56CKWXyj88d4qB4eUU3yJ4uB4S9miaW/eLEwKZIbWpUPFAn0db7i6h3ZmP5ZL8Q qS3nQCb9DULmU2/tU641eRUKAmIoka1g9sndKAZuWo+o6fdkIb1RgObk9XNn8R4r psv+aQKBgB+CIcExR30vycv5bnZN9EFlIXNKaeMJUrYCXcRQNvrnUIUBvAO8+jAe CdLygS5RtgOLZib0IVErqWsP3EI1ACGuLts0vQ9GFLQGaN1SaMS40C9kvns1mlDu LhIhYpJ8UsCVt5snWo2N+M+6ANh5tpWdQnEK6zILh4tRbuzaiHgb",
        "client_cert": "MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa RRcYersNGqPjpifMVjjE8LuCoXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWX SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p 1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0 +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1 fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY cbTV5RDkrlaYwm5yqlTIglvCv7o="
    }
}
r = requests.post(
    url,
    json=payload,
    headers=headers)
print(r.json())
201

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "value": "8df173c3bcd4274715491fc196705da8",
    "user": "jdo",
    "webhooks": {
      "identity": "https://host-name/identity",
      "dst": "https://host-name/dst"
    },
    "http_options": {
      "headers": {},
      "auth_username": "jdo",
      "auth_password": "Bit-4-Id",
      "auth_mode": "basic",
      "client_key": "MIIEowIBAAKCAQEAvpnaPKLIKdvx98KW68lz8pGaRRcYersNGqPjpifMVjjE8LuC oXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWXSxiTrW99HBfAl1MDQyWcukoE b9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p1NCvw+6B/aAN9l1G2pQXgRdY C/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYBaKjqetwwv6DFk/GRdOSEd/6b W+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6DauZkChSRyc/Whvurx6o85D6qpz ywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwIDAQABAoIBAFml8cD9a5pMqlW3 f9btTQz1sRL4Fvp7CmHSXhvjsjeHwhHckEe0ObkWTRsgkTsm1XLu5W8IITnhn0+1 iNr+78eB+rRGngdAXh8diOdkEy+8/Cee8tFI3jyutKdRlxMbwiKsouVviumoq3fx OGQYwQ0Z2l/PvCwy/Y82ffq3ysC5gAJsbBYsCrg14bQo44ulrELe4SDWs5HCjKYb EI2b8cOMucqZSOtxg9niLN/je2bo/I2HGSawibgcOdBms8k6TvsSrZMr3kJ5O6J+ 77LGwKH37brVgbVYvbq6nWPL0xLG7dUv+7LWEo5qQaPy6aXb/zbckqLqu6/EjOVe ydG5JQECgYEA9kKfTZD/WEVAreA0dzfeJRu8vlnwoagL7cJaoDxqXos4mcr5mPDT kbWgFkLFFH/AyUnPBlK6BcJp1XK67B13ETUa3i9Q5t1WuZEobiKKBLFm9DDQJt43 uKZWJxBKFGSvFrYPtGZst719mZVcPct2CzPjEgN3Hlpt6fyw3eOrnoECgYEAxiOu jwXCOmuGaB7+OW2tR0PGEzbvVlEGdkAJ6TC/HoKM1A8r2u4hLTEJJCrLLTfw++4I ddHE2dLeR4Q7O58SfLphwgPmLDezN7WRLGr7Vyfuv7VmaHjGuC3Gv9agnhWDlA2Q gBG9/R9oVfL0Dc7CgJgLeUtItCYC31bGT3yhV0MCgYEA4k3DG4L+RN4PXDpHvK9I pA1jXAJHEifeHnaW1d3vWkbSkvJmgVf+9U5VeV+OwRHN1qzPZV4suRI6M/8lK8rA Gr4UnM4aqK4K/qkY4G05LKrik9Ev2CgqSLQDRA7CJQ+Jn3Nb50qg6hFnFPafN+J7 7juWln08wFYV4Atpdd+9XQECgYBxizkZFL+9IqkfOcONvWAzGo+Dq1N0L3J4iTIk w56CKWXyj88d4qB4eUU3yJ4uB4S9miaW/eLEwKZIbWpUPFAn0db7i6h3ZmP5ZL8Q qS3nQCb9DULmU2/tU641eRUKAmIoka1g9sndKAZuWo+o6fdkIb1RgObk9XNn8R4r psv+aQKBgB+CIcExR30vycv5bnZN9EFlIXNKaeMJUrYCXcRQNvrnUIUBvAO8+jAe CdLygS5RtgOLZib0IVErqWsP3EI1ACGuLts0vQ9GFLQGaN1SaMS40C9kvns1mlDu LhIhYpJ8UsCVt5snWo2N+M+6ANh5tpWdQnEK6zILh4tRbuzaiHgb",
      "client_cert": "MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa RRcYersNGqPjpifMVjjE8LuCoXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWX SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p 1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0 +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1 fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY cbTV5RDkrlaYwm5yqlTIglvCv7o="
    },
    "label": "Signing Today Token",
    "created_by": "jdo@bit4id"
  }
}

Get information about a token

This API allows to get information about a token.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • token-idpath parameterstring

    The token-id is the uuid code that identifies a token. It is, as well, used to restrict the requested operation to the scope of that token

GET

/{organization-id}/tokens/{token-id}

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/tokens/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4 \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/tokens/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/tokens/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/tokens/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "value": "8df173c3bcd4274715491fc196705da8",
    "user": "jdo",
    "webhooks": {
      "identity": "https://host-name/identity",
      "dst": "https://host-name/dst"
    },
    "http_options": {
      "headers": {},
      "auth_username": "jdo",
      "auth_password": "Bit-4-Id",
      "auth_mode": "basic",
      "client_key": "MIIEowIBAAKCAQEAvpnaPKLIKdvx98KW68lz8pGaRRcYersNGqPjpifMVjjE8LuC oXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWXSxiTrW99HBfAl1MDQyWcukoE b9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p1NCvw+6B/aAN9l1G2pQXgRdY C/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYBaKjqetwwv6DFk/GRdOSEd/6b W+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6DauZkChSRyc/Whvurx6o85D6qpz ywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwIDAQABAoIBAFml8cD9a5pMqlW3 f9btTQz1sRL4Fvp7CmHSXhvjsjeHwhHckEe0ObkWTRsgkTsm1XLu5W8IITnhn0+1 iNr+78eB+rRGngdAXh8diOdkEy+8/Cee8tFI3jyutKdRlxMbwiKsouVviumoq3fx OGQYwQ0Z2l/PvCwy/Y82ffq3ysC5gAJsbBYsCrg14bQo44ulrELe4SDWs5HCjKYb EI2b8cOMucqZSOtxg9niLN/je2bo/I2HGSawibgcOdBms8k6TvsSrZMr3kJ5O6J+ 77LGwKH37brVgbVYvbq6nWPL0xLG7dUv+7LWEo5qQaPy6aXb/zbckqLqu6/EjOVe ydG5JQECgYEA9kKfTZD/WEVAreA0dzfeJRu8vlnwoagL7cJaoDxqXos4mcr5mPDT kbWgFkLFFH/AyUnPBlK6BcJp1XK67B13ETUa3i9Q5t1WuZEobiKKBLFm9DDQJt43 uKZWJxBKFGSvFrYPtGZst719mZVcPct2CzPjEgN3Hlpt6fyw3eOrnoECgYEAxiOu jwXCOmuGaB7+OW2tR0PGEzbvVlEGdkAJ6TC/HoKM1A8r2u4hLTEJJCrLLTfw++4I ddHE2dLeR4Q7O58SfLphwgPmLDezN7WRLGr7Vyfuv7VmaHjGuC3Gv9agnhWDlA2Q gBG9/R9oVfL0Dc7CgJgLeUtItCYC31bGT3yhV0MCgYEA4k3DG4L+RN4PXDpHvK9I pA1jXAJHEifeHnaW1d3vWkbSkvJmgVf+9U5VeV+OwRHN1qzPZV4suRI6M/8lK8rA Gr4UnM4aqK4K/qkY4G05LKrik9Ev2CgqSLQDRA7CJQ+Jn3Nb50qg6hFnFPafN+J7 7juWln08wFYV4Atpdd+9XQECgYBxizkZFL+9IqkfOcONvWAzGo+Dq1N0L3J4iTIk w56CKWXyj88d4qB4eUU3yJ4uB4S9miaW/eLEwKZIbWpUPFAn0db7i6h3ZmP5ZL8Q qS3nQCb9DULmU2/tU641eRUKAmIoka1g9sndKAZuWo+o6fdkIb1RgObk9XNn8R4r psv+aQKBgB+CIcExR30vycv5bnZN9EFlIXNKaeMJUrYCXcRQNvrnUIUBvAO8+jAe CdLygS5RtgOLZib0IVErqWsP3EI1ACGuLts0vQ9GFLQGaN1SaMS40C9kvns1mlDu LhIhYpJ8UsCVt5snWo2N+M+6ANh5tpWdQnEK6zILh4tRbuzaiHgb",
      "client_cert": "MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa RRcYersNGqPjpifMVjjE8LuCoXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWX SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p 1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0 +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1 fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY cbTV5RDkrlaYwm5yqlTIglvCv7o="
    },
    "label": "Signing Today Token",
    "created_by": "jdo@bit4id"
  }
}

Update the properties of a token

This API allows to update the properties of a token.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • token-idpath parameterstring

    The token-id is the uuid code that identifies a token. It is, as well, used to restrict the requested operation to the scope of that token

  • labelstring

    The label assigned to the Token, that is like the name is associated to it

  • webhooksobject

    SigningToday supports webhooks for the update of digital signature transactions and identities status. You can choose if to use or not webhooks and if you want to receive updates about digital signature transactions and/or identities. You can configurate it on application token level, in the webhook field

    • identityurl

      The url where to receive notifications about identity status

    • dsturl

      The url where to receive notifications about digital signature transaction status

  • http_optionsobject

    Through this field it is possible to add some custom options to the HTTP request

    • headersobject

      Key-Value pairs that identifies headers to add to the HTTP request

    • auth_usernamestring

      The username for the HTTP basic authentication

    • auth_passwordstring

      The password for the HTTP basic authentication

    • auth_modestring

      The mode of the authentication

    • client_keyPEM

      The SSL client key

    • client_certPEM

      the SSL client certificate

PUT

/{organization-id}/tokens/{token-id}

Click to copy
curl -L -X PUT \
  https://sandbox.signingtoday.com/api/v1/api-demo/tokens/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4 \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "label": "Signing Today Token",
    "webhooks": {
        "identity": "https://host-name/identity",
        "dst": "https://host-name/dst"
    },
    "http_options": {
        "headers": {
            "Content-Type": "application/json"
        },
        "auth_username": "jdo",
        "auth_password": "Bit-4-Id",
        "auth_mode": "basic",
        "client_key": "MIIEowIBAAKCAQEAvpnaPKLIKdvx98KW68lz8pGaRRcYersNGqPjpifMVjjE8LuC oXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWXSxiTrW99HBfAl1MDQyWcukoE b9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p1NCvw+6B/aAN9l1G2pQXgRdY C/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYBaKjqetwwv6DFk/GRdOSEd/6b W+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6DauZkChSRyc/Whvurx6o85D6qpz ywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwIDAQABAoIBAFml8cD9a5pMqlW3 f9btTQz1sRL4Fvp7CmHSXhvjsjeHwhHckEe0ObkWTRsgkTsm1XLu5W8IITnhn0+1 iNr+78eB+rRGngdAXh8diOdkEy+8/Cee8tFI3jyutKdRlxMbwiKsouVviumoq3fx OGQYwQ0Z2l/PvCwy/Y82ffq3ysC5gAJsbBYsCrg14bQo44ulrELe4SDWs5HCjKYb EI2b8cOMucqZSOtxg9niLN/je2bo/I2HGSawibgcOdBms8k6TvsSrZMr3kJ5O6J+ 77LGwKH37brVgbVYvbq6nWPL0xLG7dUv+7LWEo5qQaPy6aXb/zbckqLqu6/EjOVe ydG5JQECgYEA9kKfTZD/WEVAreA0dzfeJRu8vlnwoagL7cJaoDxqXos4mcr5mPDT kbWgFkLFFH/AyUnPBlK6BcJp1XK67B13ETUa3i9Q5t1WuZEobiKKBLFm9DDQJt43 uKZWJxBKFGSvFrYPtGZst719mZVcPct2CzPjEgN3Hlpt6fyw3eOrnoECgYEAxiOu jwXCOmuGaB7+OW2tR0PGEzbvVlEGdkAJ6TC/HoKM1A8r2u4hLTEJJCrLLTfw++4I ddHE2dLeR4Q7O58SfLphwgPmLDezN7WRLGr7Vyfuv7VmaHjGuC3Gv9agnhWDlA2Q gBG9/R9oVfL0Dc7CgJgLeUtItCYC31bGT3yhV0MCgYEA4k3DG4L+RN4PXDpHvK9I pA1jXAJHEifeHnaW1d3vWkbSkvJmgVf+9U5VeV+OwRHN1qzPZV4suRI6M/8lK8rA Gr4UnM4aqK4K/qkY4G05LKrik9Ev2CgqSLQDRA7CJQ+Jn3Nb50qg6hFnFPafN+J7 7juWln08wFYV4Atpdd+9XQECgYBxizkZFL+9IqkfOcONvWAzGo+Dq1N0L3J4iTIk w56CKWXyj88d4qB4eUU3yJ4uB4S9miaW/eLEwKZIbWpUPFAn0db7i6h3ZmP5ZL8Q qS3nQCb9DULmU2/tU641eRUKAmIoka1g9sndKAZuWo+o6fdkIb1RgObk9XNn8R4r psv+aQKBgB+CIcExR30vycv5bnZN9EFlIXNKaeMJUrYCXcRQNvrnUIUBvAO8+jAe CdLygS5RtgOLZib0IVErqWsP3EI1ACGuLts0vQ9GFLQGaN1SaMS40C9kvns1mlDu LhIhYpJ8UsCVt5snWo2N+M+6ANh5tpWdQnEK6zILh4tRbuzaiHgb",
        "client_cert": "MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa RRcYersNGqPjpifMVjjE8LuCoXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWX SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p 1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0 +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1 fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY cbTV5RDkrlaYwm5yqlTIglvCv7o="
    }
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/tokens/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "label": "Signing Today Token",
    "webhooks": {
        "identity": "https://host-name/identity",
        "dst": "https://host-name/dst"
    },
    "http_options": {
        "headers": {},
        "auth_username": "jdo",
        "auth_password": "Bit-4-Id",
        "auth_mode": "basic",
        "client_key": "MIIEowIBAAKCAQEAvpnaPKLIKdvx98KW68lz8pGaRRcYersNGqPjpifMVjjE8LuC oXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWXSxiTrW99HBfAl1MDQyWcukoE b9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p1NCvw+6B/aAN9l1G2pQXgRdY C/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYBaKjqetwwv6DFk/GRdOSEd/6b W+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6DauZkChSRyc/Whvurx6o85D6qpz ywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwIDAQABAoIBAFml8cD9a5pMqlW3 f9btTQz1sRL4Fvp7CmHSXhvjsjeHwhHckEe0ObkWTRsgkTsm1XLu5W8IITnhn0+1 iNr+78eB+rRGngdAXh8diOdkEy+8/Cee8tFI3jyutKdRlxMbwiKsouVviumoq3fx OGQYwQ0Z2l/PvCwy/Y82ffq3ysC5gAJsbBYsCrg14bQo44ulrELe4SDWs5HCjKYb EI2b8cOMucqZSOtxg9niLN/je2bo/I2HGSawibgcOdBms8k6TvsSrZMr3kJ5O6J+ 77LGwKH37brVgbVYvbq6nWPL0xLG7dUv+7LWEo5qQaPy6aXb/zbckqLqu6/EjOVe ydG5JQECgYEA9kKfTZD/WEVAreA0dzfeJRu8vlnwoagL7cJaoDxqXos4mcr5mPDT kbWgFkLFFH/AyUnPBlK6BcJp1XK67B13ETUa3i9Q5t1WuZEobiKKBLFm9DDQJt43 uKZWJxBKFGSvFrYPtGZst719mZVcPct2CzPjEgN3Hlpt6fyw3eOrnoECgYEAxiOu jwXCOmuGaB7+OW2tR0PGEzbvVlEGdkAJ6TC/HoKM1A8r2u4hLTEJJCrLLTfw++4I ddHE2dLeR4Q7O58SfLphwgPmLDezN7WRLGr7Vyfuv7VmaHjGuC3Gv9agnhWDlA2Q gBG9/R9oVfL0Dc7CgJgLeUtItCYC31bGT3yhV0MCgYEA4k3DG4L+RN4PXDpHvK9I pA1jXAJHEifeHnaW1d3vWkbSkvJmgVf+9U5VeV+OwRHN1qzPZV4suRI6M/8lK8rA Gr4UnM4aqK4K/qkY4G05LKrik9Ev2CgqSLQDRA7CJQ+Jn3Nb50qg6hFnFPafN+J7 7juWln08wFYV4Atpdd+9XQECgYBxizkZFL+9IqkfOcONvWAzGo+Dq1N0L3J4iTIk w56CKWXyj88d4qB4eUU3yJ4uB4S9miaW/eLEwKZIbWpUPFAn0db7i6h3ZmP5ZL8Q qS3nQCb9DULmU2/tU641eRUKAmIoka1g9sndKAZuWo+o6fdkIb1RgObk9XNn8R4r psv+aQKBgB+CIcExR30vycv5bnZN9EFlIXNKaeMJUrYCXcRQNvrnUIUBvAO8+jAe CdLygS5RtgOLZib0IVErqWsP3EI1ACGuLts0vQ9GFLQGaN1SaMS40C9kvns1mlDu LhIhYpJ8UsCVt5snWo2N+M+6ANh5tpWdQnEK6zILh4tRbuzaiHgb",
        "client_cert": "MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa RRcYersNGqPjpifMVjjE8LuCoXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWX SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p 1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0 +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1 fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY cbTV5RDkrlaYwm5yqlTIglvCv7o="
    }
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "label": "Signing Today Token",
    "webhooks": {
        "identity": "https://host-name/identity",
        "dst": "https://host-name/dst"
    },
    "http_options": {
        "headers": {},
        "auth_username": "jdo",
        "auth_password": "Bit-4-Id",
        "auth_mode": "basic",
        "client_key": "MIIEowIBAAKCAQEAvpnaPKLIKdvx98KW68lz8pGaRRcYersNGqPjpifMVjjE8LuC oXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWXSxiTrW99HBfAl1MDQyWcukoE b9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p1NCvw+6B/aAN9l1G2pQXgRdY C/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYBaKjqetwwv6DFk/GRdOSEd/6b W+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6DauZkChSRyc/Whvurx6o85D6qpz ywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwIDAQABAoIBAFml8cD9a5pMqlW3 f9btTQz1sRL4Fvp7CmHSXhvjsjeHwhHckEe0ObkWTRsgkTsm1XLu5W8IITnhn0+1 iNr+78eB+rRGngdAXh8diOdkEy+8/Cee8tFI3jyutKdRlxMbwiKsouVviumoq3fx OGQYwQ0Z2l/PvCwy/Y82ffq3ysC5gAJsbBYsCrg14bQo44ulrELe4SDWs5HCjKYb EI2b8cOMucqZSOtxg9niLN/je2bo/I2HGSawibgcOdBms8k6TvsSrZMr3kJ5O6J+ 77LGwKH37brVgbVYvbq6nWPL0xLG7dUv+7LWEo5qQaPy6aXb/zbckqLqu6/EjOVe ydG5JQECgYEA9kKfTZD/WEVAreA0dzfeJRu8vlnwoagL7cJaoDxqXos4mcr5mPDT kbWgFkLFFH/AyUnPBlK6BcJp1XK67B13ETUa3i9Q5t1WuZEobiKKBLFm9DDQJt43 uKZWJxBKFGSvFrYPtGZst719mZVcPct2CzPjEgN3Hlpt6fyw3eOrnoECgYEAxiOu jwXCOmuGaB7+OW2tR0PGEzbvVlEGdkAJ6TC/HoKM1A8r2u4hLTEJJCrLLTfw++4I ddHE2dLeR4Q7O58SfLphwgPmLDezN7WRLGr7Vyfuv7VmaHjGuC3Gv9agnhWDlA2Q gBG9/R9oVfL0Dc7CgJgLeUtItCYC31bGT3yhV0MCgYEA4k3DG4L+RN4PXDpHvK9I pA1jXAJHEifeHnaW1d3vWkbSkvJmgVf+9U5VeV+OwRHN1qzPZV4suRI6M/8lK8rA Gr4UnM4aqK4K/qkY4G05LKrik9Ev2CgqSLQDRA7CJQ+Jn3Nb50qg6hFnFPafN+J7 7juWln08wFYV4Atpdd+9XQECgYBxizkZFL+9IqkfOcONvWAzGo+Dq1N0L3J4iTIk w56CKWXyj88d4qB4eUU3yJ4uB4S9miaW/eLEwKZIbWpUPFAn0db7i6h3ZmP5ZL8Q qS3nQCb9DULmU2/tU641eRUKAmIoka1g9sndKAZuWo+o6fdkIb1RgObk9XNn8R4r psv+aQKBgB+CIcExR30vycv5bnZN9EFlIXNKaeMJUrYCXcRQNvrnUIUBvAO8+jAe CdLygS5RtgOLZib0IVErqWsP3EI1ACGuLts0vQ9GFLQGaN1SaMS40C9kvns1mlDu LhIhYpJ8UsCVt5snWo2N+M+6ANh5tpWdQnEK6zILh4tRbuzaiHgb",
        "client_cert": "MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa RRcYersNGqPjpifMVjjE8LuCoXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWX SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p 1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0 +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1 fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY cbTV5RDkrlaYwm5yqlTIglvCv7o="
    }
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/tokens/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .put(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/tokens/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "label": "Signing Today Token",
    "webhooks": {
        "identity": "https://host-name/identity",
        "dst": "https://host-name/dst"
    },
    "http_options": {
        "headers": {},
        "auth_username": "jdo",
        "auth_password": "Bit-4-Id",
        "auth_mode": "basic",
        "client_key": "MIIEowIBAAKCAQEAvpnaPKLIKdvx98KW68lz8pGaRRcYersNGqPjpifMVjjE8LuC oXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWXSxiTrW99HBfAl1MDQyWcukoE b9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p1NCvw+6B/aAN9l1G2pQXgRdY C/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYBaKjqetwwv6DFk/GRdOSEd/6b W+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6DauZkChSRyc/Whvurx6o85D6qpz ywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwIDAQABAoIBAFml8cD9a5pMqlW3 f9btTQz1sRL4Fvp7CmHSXhvjsjeHwhHckEe0ObkWTRsgkTsm1XLu5W8IITnhn0+1 iNr+78eB+rRGngdAXh8diOdkEy+8/Cee8tFI3jyutKdRlxMbwiKsouVviumoq3fx OGQYwQ0Z2l/PvCwy/Y82ffq3ysC5gAJsbBYsCrg14bQo44ulrELe4SDWs5HCjKYb EI2b8cOMucqZSOtxg9niLN/je2bo/I2HGSawibgcOdBms8k6TvsSrZMr3kJ5O6J+ 77LGwKH37brVgbVYvbq6nWPL0xLG7dUv+7LWEo5qQaPy6aXb/zbckqLqu6/EjOVe ydG5JQECgYEA9kKfTZD/WEVAreA0dzfeJRu8vlnwoagL7cJaoDxqXos4mcr5mPDT kbWgFkLFFH/AyUnPBlK6BcJp1XK67B13ETUa3i9Q5t1WuZEobiKKBLFm9DDQJt43 uKZWJxBKFGSvFrYPtGZst719mZVcPct2CzPjEgN3Hlpt6fyw3eOrnoECgYEAxiOu jwXCOmuGaB7+OW2tR0PGEzbvVlEGdkAJ6TC/HoKM1A8r2u4hLTEJJCrLLTfw++4I ddHE2dLeR4Q7O58SfLphwgPmLDezN7WRLGr7Vyfuv7VmaHjGuC3Gv9agnhWDlA2Q gBG9/R9oVfL0Dc7CgJgLeUtItCYC31bGT3yhV0MCgYEA4k3DG4L+RN4PXDpHvK9I pA1jXAJHEifeHnaW1d3vWkbSkvJmgVf+9U5VeV+OwRHN1qzPZV4suRI6M/8lK8rA Gr4UnM4aqK4K/qkY4G05LKrik9Ev2CgqSLQDRA7CJQ+Jn3Nb50qg6hFnFPafN+J7 7juWln08wFYV4Atpdd+9XQECgYBxizkZFL+9IqkfOcONvWAzGo+Dq1N0L3J4iTIk w56CKWXyj88d4qB4eUU3yJ4uB4S9miaW/eLEwKZIbWpUPFAn0db7i6h3ZmP5ZL8Q qS3nQCb9DULmU2/tU641eRUKAmIoka1g9sndKAZuWo+o6fdkIb1RgObk9XNn8R4r psv+aQKBgB+CIcExR30vycv5bnZN9EFlIXNKaeMJUrYCXcRQNvrnUIUBvAO8+jAe CdLygS5RtgOLZib0IVErqWsP3EI1ACGuLts0vQ9GFLQGaN1SaMS40C9kvns1mlDu LhIhYpJ8UsCVt5snWo2N+M+6ANh5tpWdQnEK6zILh4tRbuzaiHgb",
        "client_cert": "MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa RRcYersNGqPjpifMVjjE8LuCoXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWX SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p 1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0 +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1 fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY cbTV5RDkrlaYwm5yqlTIglvCv7o="
    }
}
r = requests.put(
    url,
    json=payload,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "value": "8df173c3bcd4274715491fc196705da8",
    "user": "jdo",
    "webhooks": {
      "identity": "https://host-name/identity",
      "dst": "https://host-name/dst"
    },
    "http_options": {
      "headers": {},
      "auth_username": "jdo",
      "auth_password": "Bit-4-Id",
      "auth_mode": "basic",
      "client_key": "MIIEowIBAAKCAQEAvpnaPKLIKdvx98KW68lz8pGaRRcYersNGqPjpifMVjjE8LuC oXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWXSxiTrW99HBfAl1MDQyWcukoE b9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p1NCvw+6B/aAN9l1G2pQXgRdY C/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYBaKjqetwwv6DFk/GRdOSEd/6b W+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6DauZkChSRyc/Whvurx6o85D6qpz ywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwIDAQABAoIBAFml8cD9a5pMqlW3 f9btTQz1sRL4Fvp7CmHSXhvjsjeHwhHckEe0ObkWTRsgkTsm1XLu5W8IITnhn0+1 iNr+78eB+rRGngdAXh8diOdkEy+8/Cee8tFI3jyutKdRlxMbwiKsouVviumoq3fx OGQYwQ0Z2l/PvCwy/Y82ffq3ysC5gAJsbBYsCrg14bQo44ulrELe4SDWs5HCjKYb EI2b8cOMucqZSOtxg9niLN/je2bo/I2HGSawibgcOdBms8k6TvsSrZMr3kJ5O6J+ 77LGwKH37brVgbVYvbq6nWPL0xLG7dUv+7LWEo5qQaPy6aXb/zbckqLqu6/EjOVe ydG5JQECgYEA9kKfTZD/WEVAreA0dzfeJRu8vlnwoagL7cJaoDxqXos4mcr5mPDT kbWgFkLFFH/AyUnPBlK6BcJp1XK67B13ETUa3i9Q5t1WuZEobiKKBLFm9DDQJt43 uKZWJxBKFGSvFrYPtGZst719mZVcPct2CzPjEgN3Hlpt6fyw3eOrnoECgYEAxiOu jwXCOmuGaB7+OW2tR0PGEzbvVlEGdkAJ6TC/HoKM1A8r2u4hLTEJJCrLLTfw++4I ddHE2dLeR4Q7O58SfLphwgPmLDezN7WRLGr7Vyfuv7VmaHjGuC3Gv9agnhWDlA2Q gBG9/R9oVfL0Dc7CgJgLeUtItCYC31bGT3yhV0MCgYEA4k3DG4L+RN4PXDpHvK9I pA1jXAJHEifeHnaW1d3vWkbSkvJmgVf+9U5VeV+OwRHN1qzPZV4suRI6M/8lK8rA Gr4UnM4aqK4K/qkY4G05LKrik9Ev2CgqSLQDRA7CJQ+Jn3Nb50qg6hFnFPafN+J7 7juWln08wFYV4Atpdd+9XQECgYBxizkZFL+9IqkfOcONvWAzGo+Dq1N0L3J4iTIk w56CKWXyj88d4qB4eUU3yJ4uB4S9miaW/eLEwKZIbWpUPFAn0db7i6h3ZmP5ZL8Q qS3nQCb9DULmU2/tU641eRUKAmIoka1g9sndKAZuWo+o6fdkIb1RgObk9XNn8R4r psv+aQKBgB+CIcExR30vycv5bnZN9EFlIXNKaeMJUrYCXcRQNvrnUIUBvAO8+jAe CdLygS5RtgOLZib0IVErqWsP3EI1ACGuLts0vQ9GFLQGaN1SaMS40C9kvns1mlDu LhIhYpJ8UsCVt5snWo2N+M+6ANh5tpWdQnEK6zILh4tRbuzaiHgb",
      "client_cert": "MIID0DCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJGUjET MBEGA1UECAwKU29tZS1TdGF0ZTEOMAwGA1UEBwwFUGFyaXMxDTALBgNVBAoMBERp bWkxDTALBgNVBAsMBE5TQlUxEDAOBgNVBAMMB0RpbWkgQ0ExGzAZBgkqhkiG9w0B CQEWDGRpbWlAZGltaS5mcjAeFw0xNDAxMjgyMDM2NTVaFw0yNDAxMjYyMDM2NTVa MFsxCzAJBgNVBAYTAkZSMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC3d3dy5kaW1pLmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvpnaPKLIKdvx98KW68lz8pGa RRcYersNGqPjpifMVjjE8LuCoXgPU0HePnNTUjpShBnynKCvrtWhN+haKbSp+QWX SxiTrW99HBfAl1MDQyWcukoEb9Cw6INctVUN4iRvkn9T8E6q174RbcnwA/7yTc7p 1NCvw+6B/aAN9l1G2pQXgRdYC/+G6o1IZEHtWhqzE97nY5QKNuUVD0V09dc5CDYB aKjqetwwv6DFk/GRdOSEd/6bW+20z0qSHpa3YNW6qSp+x5pyYmDrzRIR03os6Dau ZkChSRyc/Whvurx6o85D6qpzywo8xwNaLZHxTQPgcIA5su9ZIytv9LH2E+lSwwID AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+tugFtyN+cXe1wxUqeA7X+yS3bgw HwYDVR0jBBgwFoAUhMwqkbBrGp87HxfvwgPnlGgVR64wDQYJKoZIhvcNAQEFBQAD ggEBAIEEmqqhEzeXZ4CKhE5UM9vCKzkj5Iv9TFs/a9CcQuepzplt7YVmevBFNOc0 +1ZyR4tXgi4+5MHGzhYCIVvHo4hKqYm+J+o5mwQInf1qoAHuO7CLD3WNa1sKcVUV vepIxc/1aHZrG+dPeEHt0MdFfOw13YdUc2FH6AqEdcEL4aV5PXq2eYR8hR4zKbc1 fBtuqUsvA8NWSIyzQ16fyGve+ANf6vXvUizyvwDrPRv/kfvLNa3ZPnLMMxU98Mvh PXy3PkB8++6U4Y3vdk2Ni2WYYlIls8yqbM4327IKmkDc2TimS8u60CT47mKU7aDY cbTV5RDkrlaYwm5yqlTIglvCv7o="
    },
    "label": "Signing Today Token",
    "created_by": "jdo@bit4id"
  }
}

Delete a token of the organization

This API allows to delete a token of the organization.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • token-idpath parameterstring

    The token-id is the uuid code that identifies a token. It is, as well, used to restrict the requested operation to the scope of that token

DELETE

/{organization-id}/tokens/{token-id}

Click to copy
curl -L -X DELETE \
  https://sandbox.signingtoday.com/api/v1/api-demo/tokens/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4 \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/tokens/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/tokens/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .delete(null)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/tokens/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.delete(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": null
}

The User model

The User object is one of the components of the organization, which can sign digital signature transactions through one of the identities it got in the its wallet. Some of the most specific fields of this object are "automatic", "rao" and "owner". They are boolean values. The first one indicates if the User can sign dsts into an automatic way, without passing through the signature tray. The rao field allows the User to enroll identities for the users of its organization. At last the owner field means that the token associated to the organization belongs to it and thus this particular User has administrative permissions.

  • attributes
  • idstringuuid

    The uuid code that identifies the User

  • statusstringany

    The status of the User

  • typestringany

    The type field identifies the permissions the User have

  • emailstringemail

    The email associated to the User

  • first_namestringany

    First name of the User

  • last_namestringany

    Last name of the User

  • created_bystringany

    This field shows who created the User - user_name@organization-id. It may be a SigningToday system User as well

  • automaticboolean

    If true indicates that the User is an automatic one, thus the signature procedure will be different from a regular signer

  • ownerboolean

    The owner field gives to the User administrative permissions

  • raoboolean

    The rao field identifies a RAO User, the one can associate identities to the other users

  • walletarray

    The wallet of an User identifies its portfolio of identities

    • iduuid

      The uuid code that identifies the Identity

    • certificatePEM

      The X.509 certificate in PEM format of the Identity

    • not_afterdateTime

      Deadline of the Identity, expressed in ISO format

    • statusany

      Identity status which can be one of the following. When an identity request is send, the identity is created and the status is pending until the provider dont'approve the request. Then status of the identity changes to active. If for some reason an error occurs during the process, or after that, the status will be error

    • nexturl

      The next step to complete the activation procedure

    • actionsobject

      The object that identifies the urls to sign, to send a one time password or to update the certificate

    • providerany

      The name of the provider that issued the certificate for the Identity

    • labelany

      The label is an arbitrary name is possible to associate to an idenity. Doing so allows to distinguish different identities issued from the same provider during the performance of the signature in the signature tray

    • signature_appearance_uriurl

      This is the url to the image that will be impressed on the document after the performance of the signature

    • provider_iduuid

      provider_id is the univocal name of the provider that issued the identity

    • provider_typeany

      Type of the provider. The most usual type is cloud

    • provider_dataobject

      Data of the provider that issued the certificate, it is variable from provider to provider

    • provider_imageurl

      This is the logo of the provider that issued the identity

    • send_otp_urlurl

      The url to send a one time password to the user which the identity is associated

    • sign_urlurl

      The url to sign a document of a digital signature transaction

    • has_been_importedboolean

      If the Identity has been imported from another pre-existing Identity the has_been_imported field is set to true

Enumerate the users of an organization

This API allows to enumerate the users of an organization.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • where_membership_idquery parameter

    Returns the users that have the specified id

  • where_emailquery parameter

    Returns the users that have the specified email

  • where_last_namequery parameter

    Returns the users that have the specified last name

  • where_first_namequery parameter

    Returns the users that have the specified first name

  • pagequery parameter

    Restricts the search to the chosen page

  • countquery parameter

    Sets the number of users per page to display

GET

/{organization-id}/users

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/users \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/users");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/users")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/users'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "pagination": {
    "count": 2,
    "next": "next_page@signing.today",
    "previous": "previous_page@signing.today",
    "pages": 20,
    "page": 2
  },
  "meta": {
    "code": 200
  },
  "data": [
    {
      "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
      "status": "enabled",
      "type": "Basic user account",
      "email": "jdo@example.com",
      "first_name": "John",
      "last_name": "Doe",
      "created_by": "system",
      "automatic": false,
      "owner": true,
      "rao": true,
      "wallet": [
        {
          "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
          "certificate": "",
          "not_after": "2021-10-17T07:26Z",
          "status": "active",
          "next": "next activity to complete ",
          "actions": {
            "send_otp": "https://signing.today/sample/provider/get-one-time-pass",
            "update_certificate": "https://signing.today/sample/provider/update-certificate",
            "sign": "https://signing.today/sample/provider/sign-document"
          },
          "provider": "System Sample Provider",
          "label": "Identity Label",
          "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png",
          "provider_id": "sys_provider",
          "provider_type": "provider type",
          "provider_data": {},
          "provider_image": "https://my-org/image",
          "send_otp_url": "https://signing.today/sample/send-otp",
          "sign_url": "https://signing.today/sample/sign-document",
          "has_been_imported": false
        }
      ]
    }
  ]
}

Create a user of the organization

This API allows to create a new user of the organization.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • idstring

    Uuid code that identifies the User

  • emailstring

    The email associated to the User

  • first_namestring

    First name of the User

  • last_namestring

    Last name of the User

  • created_bystring

    The user created the User (user_name@organization-id). It may be a user of the system as well.

  • automaticboolean

    True means the User is an automatic signer

  • ownerboolean

    The owner field gives to the User administrative permissions

  • raoboolean

    The rao field identifies a RAO User

POST

/{organization-id}/users

Click to copy
curl -L -X POST \
  https://sandbox.signingtoday.com/api/v1/api-demo/users \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "email": "jdo@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "created_by": "system",
    "automatic": false,
    "owner": true,
    "rao": true
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/users");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "email": "jdo@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "created_by": "system",
    "automatic": false,
    "owner": true,
    "rao": true
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "email": "jdo@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "created_by": "system",
    "automatic": false,
    "owner": true,
    "rao": true
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/users")
  .post(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/users'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "email": "jdo@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "created_by": "system",
    "automatic": false,
    "owner": true,
    "rao": true
}
r = requests.post(
    url,
    json=payload,
    headers=headers)
print(r.json())
201

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "status": "enabled",
    "type": "Basic user account",
    "email": "jdo@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "created_by": "system",
    "automatic": false,
    "owner": true,
    "rao": true,
    "wallet": [
      {
        "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
        "certificate": "",
        "not_after": "2021-10-17T07:26Z",
        "status": "active",
        "next": "next activity to complete ",
        "actions": {
          "send_otp": "https://signing.today/sample/provider/get-one-time-pass",
          "update_certificate": "https://signing.today/sample/provider/update-certificate",
          "sign": "https://signing.today/sample/provider/sign-document"
        },
        "provider": "System Sample Provider",
        "label": "Identity Label",
        "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png",
        "provider_id": "sys_provider",
        "provider_type": "provider type",
        "provider_data": {},
        "provider_image": "https://my-org/image",
        "send_otp_url": "https://signing.today/sample/send-otp",
        "sign_url": "https://signing.today/sample/sign-document",
        "has_been_imported": false
      }
    ]
  }
}

Get information about an user

This API allows to get information about an user.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • user-idpath parameterstring

    The user-id is the uuid code that identifies a user of an organization. It is used as a path parameter to restrict the requested operation to the scope of that user

GET

/{organization-id}/users/{user-id}

Click to copy
curl -L -X GET \
  https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4 \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .get()
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4'
headers = {
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
r = requests.get(
    url,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "status": "enabled",
    "type": "Basic user account",
    "email": "jdo@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "created_by": "system",
    "automatic": false,
    "owner": true,
    "rao": true,
    "wallet": [
      {
        "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
        "certificate": "",
        "not_after": "2021-10-17T07:26Z",
        "status": "active",
        "next": "next activity to complete ",
        "actions": {
          "send_otp": "https://signing.today/sample/provider/get-one-time-pass",
          "update_certificate": "https://signing.today/sample/provider/update-certificate",
          "sign": "https://signing.today/sample/provider/sign-document"
        },
        "provider": "System Sample Provider",
        "label": "Identity Label",
        "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png",
        "provider_id": "sys_provider",
        "provider_type": "provider type",
        "provider_data": {},
        "provider_image": "https://my-org/image",
        "send_otp_url": "https://signing.today/sample/send-otp",
        "sign_url": "https://signing.today/sample/sign-document",
        "has_been_imported": false
      }
    ]
  }
}

Edit one or more user properties

This API allows to edit one or more user properties.

  • parameters
  • organization-idpath parameterstring

    The organization-id represents an organization that is included in the SigninToday application, also know as slug and it is used as a path parameter to restrict the asked functionality to the specified organization

  • user-idpath parameterstring

    The user-id is the uuid code that identifies a user of an organization. It is used as a path parameter to restrict the requested operation to the scope of that user

  • first_namestring

    First name of the User

  • last_namestring

    Last name of the User

  • emailstring

    The email associated to the User

  • automaticboolean

    True means the User is an automatic signer

  • raoboolean

    The rao field identifies a RAO User

PUT

/{organization-id}/users/{user-id}

Click to copy
curl -L -X PUT \
  https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4 \
  -H 'Authorization: Token 0a3d15e82b144e75a70991b7b655741d' \
  -H 'Content-Type: application/json' \
  -d '{
    "first_name": "John",
    "last_name": "Doe",
    "email": "jdo@example.com",
    "automatic": false,
    "rao": true
}'
var client = new RestClient("https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{
    "first_name": "John",
    "last_name": "Doe",
    "email": "jdo@example.com",
    "automatic": false,
    "rao": true
}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
    "first_name": "John",
    "last_name": "Doe",
    "email": "jdo@example.com",
    "automatic": false,
    "rao": true
}");
  .url("https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4")
  .put(body)
  .addHeader("Authorization", "Token 0a3d15e82b144e75a70991b7b655741d")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
import requests
url = 'https://sandbox.signingtoday.com/api/v1/api-demo/users/737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Token 0a3d15e82b144e75a70991b7b655741d'
}
payload = {
    "first_name": "John",
    "last_name": "Doe",
    "email": "jdo@example.com",
    "automatic": false,
    "rao": true
}
r = requests.put(
    url,
    json=payload,
    headers=headers)
print(r.json())
200

Response

{
  "meta": {
    "code": 200
  },
  "data": {
    "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
    "status": "enabled",
    "type": "Basic user account",
    "email": "jdo@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "created_by": "system",
    "automatic": false,
    "owner": true,
    "rao": true,
    "wallet": [
      {
        "id": "737dc132-a3f0-11e9-a2a3-2a2ae2dbcce4",
        "certificate": "",
        "not_after": "2021-10-17T07:26Z",
        "status": "active",
        "next": "next activity to complete ",
        "actions": {
          "send_otp": "https://signing.today/sample/provider/get-one-time-pass",
          "update_certificate": "https://signing.today/sample/provider/update-certificate",
          "sign": "https://signing.today/sample/provider/sign-document"
        },
        "provider": "System Sample Provider",
        "label": "Identity Label",
        "signature_appearance_uri": "https://upload.mysite.com/signature_appearance.png",
        "provider_id": "sys_provider",
        "provider_type": "provider type",
        "provider_data": {},
        "provider_image": "https://my-org/image",
        "send_otp_url": "https://signing.today/sample/send-otp",
        "sign_url": "https://signing.today/sample/sign-document",
        "has_been_imported": false
      }
    ]
  }
}