Download OpenAPI specification:Download
This API expose all the functionnalities for the eZmax and eZsign applications.
We publish everything related to our API on github at this location: https://github.com/eZmaxinc. You'll find git repos for the specification, documentation, SDKs and samples.
Documentation, SDKs and samples are provided in english only for easier maintenance, but we also have french speaking integrators that can help you out.
Most of our SDKs provide language specific documentation, but you'll find more details on this page about the general use of the API. Both the SDK's specific document (if you choose to use a SDK) and this documentation can be used in complementarity.
If you find any mistake or omission in the documentation, please notify us. We'll quickly fix the issue.
We highly recommend to schedule an online meeting with your technical team and an eZmax integrator. During this meeting, we go through requirements, business logic, configuration, api key generation, and we go through the list of functions you might need to implement to achieve your goals. Make sure you take this opportunity to speed up your integration project.
If you need help understanding how to use this API, don't waste too much time searching in it. Contact support-api@ezmax.ca, we're here to help. We are developpers so we know programmers don't like to waste time in documentation. If you don't find what you need in the documentation, let us know, we'll improve it and put you rapidly up on track.
We highly believe in open standards and open source. We have adopted the Open API vision where all of the functionnalities of our applications are accessible with open source definition files. We use our own public API's to build our interfaces so you can do pretty much everything we can do. Open API has a rich toolset from editor, generators, mock servers, validators, etc. Learn more at OpenAPI Initiative
If you need our Open API Spec file to use in your toolset, here is a direct link to it: ezmax.v1.0.json
We provide SDKs for customers. They are generated using OpenAPI Generator, we encourage customers to use them as we also provide samples for them. You can choose to build your own implementation manually or can use any compatible OpenAPI 3.0 generator like OpenAPI Generator, Swagger Codegen or any commercial generators.
We try to make it as easy as possible for you to use our SDKs so we publish packages on NPM and Composer. If you don't find your favorite language supported or it we could make your like easier by automating package distribution, let us know !
When you send your API requests, you'll need to send them in the proper region and proper environment where your customer data are stored. Based on your requirements (proximity and legislation), we will create your environment in one of our supported region's.
The general format of the URL where to send requests is: https://{sInfrastructureenvironmenttypeDescription}.api.appcluster01.sInfrastructureregionCode}.ezmax.com/rest/
Where "{sInfrastructureenvironmenttypeDescription}" and "{sInfrastructureregionCode}" need to be replaced with one of the values in the table below.
Our SDKs have a default value of "prod" and "ca-central-1". You will need to call "setHost" to change the default value if needed.
Note: You should always use "prod" for the environment unless otherwise instructed by eZmax's support.
sInfrastructureenvironmenttypeDescription | Description |
---|---|
prod | Production |
stg | Staging |
qa | Quality Assurance |
dev | Development |
sInfrastructureregionCode | Description |
---|---|
af-south-1 | Africa (Cape Town) |
ap-east-1 | Asia Pacific (Hong Kong) |
ap-northeast-1 | Asia Pacific (Tokyo) |
ap-northeast-2 | Asia Pacific (Seoul) |
ap-northeast-3 | Asia Pacific (Osaka-Local) |
ap-south-1 | Asia Pacific (Mumbai) |
ap-southeast-1 | Asia Pacific (Singapore) |
ap-southeast-2 | Asia Pacific (Sydney) |
ca-central-1 | Canada (Central) |
eu-central-1 | Europe (Frankfurt) |
eu-north-1 | Europe (Stockholm) |
eu-south-1 | Europe (Milan) |
eu-west-1 | Europe (Ireland) |
eu-west-2 | Europe (London) |
eu-west-3 | Europe (Paris) |
sa-east-1 | South America (São Paulo) |
us-east-1 | US East (N. Virginia) |
us-east-2 | US East (Ohio) |
us-west-1 | US West (N. California) |
us-west-2 | US West (Oregon) |
Some of the functions needs to be called on the global infrastructure instead of the regional servers. These functions are all located in the Global section of the documentation.
The general format of the URL where to send requests is: https://{sInfrastructureenvironmenttypeDescription}.api.global.ezmax.com/
Where "{sInfrastructureenvironmenttypeDescription}" needs to be replaced with one of the values in the table below.
Our SDKs have a default value of "prod". You will need to call "setHost" to change the default value if needed.
Note: You should always use "prod" for the environment unless otherwise instructed by eZmax's support.
sInfrastructureenvironmenttypeDescription | Description |
---|---|
prod | Production |
stg | Staging |
qa | Quality Assurance |
dev | Development |
Except for a few functions that do not require authorization, most of the functions require an API key that is sent in the request headers. The header name is "Authorization".
There are 4 types of API Key that can be used to make requests to the API.
API type key which is static and not session based. It can be generated from the admin console. This is the most common type of authentication for "server to server" kind of integration. Never use this in a web based (client) application as the key could be leaked. This type of key begins with the letter A.
Delegated type key which has an expiration time. It is commonly used in mobile or web application where you cannot use an API type key that could be leaked. The application would query a server part that will generate a Delegated type key using an API type key. The Delegated type key could now be used by the mobile or web page application without leaking the API type key. This type of key begins with the letter D.
User type key which are session based and can be retrieved after a successful authentication. This type of key is reserved to specific situations where the other types of key are not desirable. This type of key begins with the letter U.
Special type key which are for special cases where other types of keys cannot be used. This type of key is reserved to specific situations. This type of key begins with the letter S.
Each API key can be restricted to specific IP addresse(s). This is an optional but recommended security feature you should put in place if all your requests will be coming from a specific range. You can configure the allowed ranges from the eZmax administration console.
Each API Key can be configured to have specific permission(s) so we highly recommend to use the "Least privileges" principle. For example, instead of allowing all permissions to an API Key, you should perhaps create an API Keys each for each of your application having just the specific permissions needed. You can configure the API Key's permission in eZmax's administration console.
Request Signing is a process of signing the request with a Secret that is not transmitted over the Wire. The signing process improves security in case your API Key is leaked or during a MITM attack (Man in the Middle). It will also prevent request manipulation or replay attack. Since all requests must use https these kinds of attacks are hard to conduct but sometimes customers might not be aware their underlying library does not verify SSL Certs validity or that their application can disclose their API key if it's not well secured. It takes a bit of effort to sign requests but it's highly recommended to do so.
Mandatory requirements of signing varies by used key type. For API type keys (most common type), you can configure if signing is mandatory or not in eZmax's administration console. Delegated, User and Special type keys must sign requests otherwise requests will fail.
To apply a signature to your request you will need to send 3 additional HTTP Headers to the request:
Ezmax-Date Is the date/time when you send the request. It needs to be a ISO 8601 formatted date/time. It's a format that supports timezones so you can either use your local timezone of GMT. Be aware certain implementation adds milliseconds to the formatted date which won't be accepted by the API (ex: Javascript's toISOString function).
There is a tolerance of ±5 minutes clock skew between the date/time you specify and the server's time so make sure your time is correct. Usage of a NTP server is recommended. Compute the date/time as close as possible to the actual sending of the request. For example, don't set the current time at the beginning of a long running script that sends 50 requests to the server with the same time/date as you might receive errors related to clock skew.
Examples:
Ezmax-Fingerprint Is a fingerprint (aka hash) representing the request you are sending. Any alteration in any part of the request would produce a different fingerprint. The hash is computed using SHA256. Most programming languages offer an implementation of SHA256. To make sure your implementation is producing expected values, try to hash the value "foo", it should produce the value "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae".
To compute the Fingerprint, you'll need to concatenate the Method, the URL, the Body, the API Key and the Date. All these values will need to be separated by a line Feed caracter (\n). Make sure your Method is Uppercase (Shoud be "GET", not "Get" or "get"). Make sure your URL Scheme and Host or the URL are lowercase (Should be "https://www.example.com", not "HTTPS://WWW.EXAMPLE.COM"). Also make sure the the URI part of the URL is properly URL encoded (Should be "/Path%20with%20Spaces/?Key=Value%20with%20Spaces", not "/Path with Spaces/?Key=Value with Spaces". If the Body is empty (ex: GET request don't have a body), use an empty string.
Once the SHA256 hash is computed, prefix it with "v1=" which is future proofing version identifier.
Here is an example implementation in PHP:
public static function getFingerprintV1 ($sAuthorization, $dtDate, $sMethod, $sURL, $sBody = '') {
$sContentToHash = "$sMethod\n$sURL\n$sBody\n$sAuthorization\n$dtDate";
return 'v1='.hash('sha256', $sContentToHash);
}
Here are two examples of what a GET and POST requests Fingerprints could look like. You can validate if your algorithm work by using these sample values and comparing them to the expected values. In the example below the litteral "\n" should be replaced with a linefeed character.
GET\n
https://prod.api.appcluster01.ca-central-1.ezmax.com/rest/1/object/activesession/getCurrent\n
\n
ThisIsMyAuthorizationKey\n
2000-12-31T23:59:59Z
Expected result for Ezmax-Fingerprint (GET): v1=8f6f3ed75edb6e2cbe777b4fda5cab1a6adaebadc758780eb82c3d49934f354a
POST\n
https://prod.api.global.ezmax.com/1/module/sspr/sendUsernames\n
{"pksCustomerCode": "demo","fkiLanguageID": "2","eUserTypeSSPR": "Native","sEmailAddress": "example@domain.com"}\n
ThisIsMyAuthorizationKey\n
2000-12-31T23:59:59Z
Expected result for Ezmax-Fingerprint (POST): v1=6dbdbc26437f1216f9cd0068a4fc35c272a062b1f638c7557d497ebbf3702ded
Ezmax-Signature Is the actual signature proving the request was generated by the key owner using its secret. The signature is computed using HMAC and SHA256. Don't confuse SHA256 (aka SHA2-256) and SHA3-256, these are 2 distinct algorithms. Most programming languages offer an implementation of HMAC with SHA256. To make sure your implementation is producing expected values, try to hash the value "foo" with the key "bar", it should produce the value "147933218aaabc0b8b10a2b3a5c34684c8d94341bcf10a4736dc7270f7741851".
To compute the Signature, you'll need to concatenate the Ezmax-Fingerprint, the API Key and the Ezmax-Date. The 3 values are concatenated WITHOUT separators. Then calculate the HMAC using SHA256 using your Secret as the key.
Once the HMAC-SHA256 hash is computed, prefix it with "v1=" which is future proofing version identifier.
Here is an example implementation in PHP:
public static function getSignatureV1 ($sAuthorization, $dtDate, $sFingerprint, $sSecret) {
$sContentToSign = "$sFingerprint$sAuthorization$dtDate";
return 'v1='.hash_hmac('sha256', $sContentToSign, $sSecret);
}
Here are two examples of what the GET and POST requests Signature would be. You can validate if your algorithm work by using these sample values and comparing them to the expected values. For the below examples, we have used the same API Key, Fingerprint and Date as in the Fingerprint section above. The only new variable is the Secret which is "ThisIsTheSecretAssociatedToTheAuthorizationKey" for this example.
v1=8f6f3ed75edb6e2cbe777b4fda5cab1a6adaebadc758780eb82c3d49934f354aThisIsMyAuthorizationKey2000-12-31T23:59:59Z
Expected result for Ezmax-Signature (GET): v1=3a95fde64d27527745bcb0dd91be8caf7917c6778197e22d1d56c87245f979f5
v1=6dbdbc26437f1216f9cd0068a4fc35c272a062b1f638c7557d497ebbf3702dedThisIsMyAuthorizationKey2000-12-31T23:59:59Z
Expected result for Ezmax-Signature (POST): v1=71e05f01eaab704ec76a078a9a5c49abe9d5a490786e43b86156d281acda7cba
The whole process was detailed above but here is summary of what your http headers should look like to sign these example requests considering the following common variables:
Variable | Example value |
---|---|
Date | 2000-12-31T23:59:59Z |
Authorization | ThisIsMyAuthorizationKey |
Secret | ThisIsTheSecretAssociatedToTheAuthorizationKey |
For a GET request to https://prod.api.appcluster01.ca-central-1.ezmax.com/rest/1/object/activesession/getCurrent:
Authorization: ThisIsMyAuthorizationKey
Ezmax-Date: 2000-12-31T23:59:59Z
Ezmax-Fingerprint: v1=8f6f3ed75edb6e2cbe777b4fda5cab1a6adaebadc758780eb82c3d49934f354a
Ezmax-Signature: v1=3a95fde64d27527745bcb0dd91be8caf7917c6778197e22d1d56c87245f979f5
For a POST request to https://prod.api.global.ezmax.com/1/module/sspr/sendUsernames with this body content = '{"pksCustomerCode": "demo","fkiLanguageID": "2","eUserTypeSSPR": "Native","sEmailAddress": "example@domain.com"}' :
Authorization: ThisIsMyAuthorizationKey
Ezmax-Date: 2000-12-31T23:59:59Z
Ezmax-Fingerprint: v1=6dbdbc26437f1216f9cd0068a4fc35c272a062b1f638c7557d497ebbf3702ded
Ezmax-Signature: v1=71e05f01eaab704ec76a078a9a5c49abe9d5a490786e43b86156d281acda7cba
We use standard HTTP Status Codes to return details about completed function calls.
You should always validate the HTTP response's status code before trying to read the content of the body. Our SDKs do this automatically. In each of the documented function, we document only the function's specific return code to facilitate the reading of the documentation. Even if a generic return code is not documented at the function's level, it could be returned by the API.
HTTP Status Code | Meaning | Detail |
---|---|---|
200 | OK | The request completed successfully and valid data was returned in the body |
201 | Created | The request completed successfully. Some elements were created and details about the created items was returned in the body |
204 | No Content | The request completed successfully. There was no need to return any data in the body |
403 | Forbidden | The request is not allowed to be executed. Look for detail about the error in the body |
404 | Not Found | The request failed. The element on which you were trying to work does not exists. Look for detail about the error in the body |
422 | Unprocessable entity | The request was syntactically valid but failed because of an interdependance condition. Look for detail about the error in the body |
HTTP Status Code | Meaning | Detail |
---|---|---|
400 | Bad Request | The request does not meet specifications. For example: an invalid type for a variable, a value that does not pass validation or a protocol violation. Look for details about the error in the response's body |
401 | Unauthorized | The API Key is either not present, expired, invalid or inactive. It could also mean you are calling the API from an unauthorized IP address |
403 | Forbidden | The Provided API Key is valid, but it is not allowed to execute the request. Verify the Key's permissions |
404 | Not Found | Your request was sent to a URL that does not exist. Make sure you are calling the proper version number of the function and look for typos in the URL |
405 | Method Not Allowed | The URL is valid, but the Method is not allowed. For example, have you call a GET while the function expects a POST ? |
429 | Too Many Requests | Too many requests were received from your API Key/IP address. Make sure to optimize your requests or ask for a limit increase. For example, make a single request to create 100 objects instead of calling 100 requests each creating a single objet |
500 | Internal Server Error | This should never happen. There is either a temporary problem that should resolve quickly or an error you should report to technical support. |
503 | Service Unavailable | This should never happen. There is either a temporary problem that should resolve quickly or an error you should report to technical support |
These codes can only be generated for User type API Key. The API, Delegated and Special types keys will never return such codes. (See Authorization section for more information). Most users should not be concerned with these status codes.
HTTP Status Code | Meaning | Detail |
---|---|---|
350 | Authentication required | User must authenticate because session is invalid |
351 | Phone Validation required | (2FA) User needs to complete a Voice Call or SMS challenge |
352 | Question Validation required | (2FA) User needs to complete a question/answer challenge |
353 | Clause Acceptance required | User need to accept electronic signature terms and conditions |
354 | Computer Validation required | User's computer is not authorized |
355 | Password Change required | User must change it's password |
356 | Native Application Version Check | The user is not running the latest version of the native application |
These codes will be considered as a succesful delivery when they are returned by your webpage during a Webhook delivery.
HTTP Status Code | Meaning | Detail |
---|---|---|
202 | Accepted | The request has been received but not yet acted upon. It is intended for cases where another process or server handles the request, or for batch processing. |
204 | No Content | The request completed successfully. There was no need to return any data in the body |
When the API returns an HTTP status code in the range 400-599, a JSON object will be returned with 2 properties:
We highly suggest you use eErrorCode to do any error validation logic in your code or to create your own error message for your users. sErrorMessage has more detail for a human to read, but is intended for the developper and is always returned in english.
Here is the complete list of eErrorCode you could receive for each HTTP status code and examples of situations where they could be returned.
eErrorCode | Examples |
---|---|
BADREQUEST | Unserializable JSON, invalid parameter, invalid signature, invalid fingerprint |
BADREQUEST_CLOCKSKEW | The time on the client computer is wrong |
eErrorCode | Examples |
---|---|
UNAUTHORIZED_BADAUTH | Invalid credentials during Authentication |
UNAUTHORIZED_REQUEST | The request is invalid (bad ip source, signature, invalid api key) |
eErrorCode | Examples |
---|---|
FORBIDDEN | Generic Forbidden |
FORBIDDEN_CONFIGURATION | A configured setting prevent access to the element |
FORBIDDEN_MODULE | Module is not activated |
FORBIDDEN_NOACCESS | Not allowed to access the element |
FORBIDDEN_PERMISSION | Missing a permission to access the route |
FORBIDDEN_SUBSCRIPTION | No subscription, for example to eZsign |
eErrorCode | Examples |
---|---|
NOTFOUND | Generic not found |
NOTFOUND_OBJECT | Object does not exist in database |
NOTFOUND_ROUTE | The route does not exist (url, API version) |
eErrorCode | Examples |
---|---|
METHODNOTALLOWED | The route is valid but the method is not allowed ex: POST on a GET only route |
eErrorCode | Examples |
---|---|
UNPROCESSABLEENTITY_CANNOTDELETE | The element cannot be deleted |
UNPROCESSABLEENTITY_NOTHINGTODO | The request was valid, but no action was necessary |
UNPROCESSABLEENTITY_NOTREADY | The element is not in a state that allows the action (Sending a document without signature, downloading an unsigned document) |
UNPROCESSABLEENTITY_PDF_INCOMPATIBLE | The pdf document cannot be signed |
UNPROCESSABLEENTITY_PDF_PASSWORD | The pdf document contains a password and cannot be signed |
UNPROCESSABLEENTITY_PDF_XFA | The pdf document contains XFA form and cannot be signed |
UNPROCESSABLEENTITY_TEMPLATE_MISMATCH | The number of pages between the document and the template do not match |
eErrorCode | Examples |
---|---|
ERROR_INTERNAL | Unhandled error on server |
A Webhook (also called a web callback or HTTP push API) is a way for your application to be notified of an event in real time.
For example, if you send a contract for signing and need to be notified as soon as it get signed.
You could program a loop to query the document status every 5 minutes for many days until you receive a response saying the document is signed. This is a bad approach as it will waste a lot of resources everytime you make a call to the API for no reason.
A better approach would be to configure a webhook in the eZmax's administration console to watch for a specific event. In this exemple, the event to monitor is "DocumentCompleted" from the module "Ezsign". This way, as soon as the document gets signed, a request will be made to YOUR server to let you know about the event that just happened.
When you configure eZmax to notify you of events, you must provide your server's URL and a fallback email address. The URL provided must use HTTPS for security reasons.
Look for purple indicators with the word "EVENT" throughout the documentation to see currently available Webhooks events you can subscribe to. If you have a need for an event that is not available, please send a feature request to technical support.
In eZmax's administration module, you'll find a "Test" button that you can use as many time as you need to test your server code easily with a sample event.
eZmax will attempt to deliver the event to your server instantly but will retry many times if your server does not respond successfully for some reason (see schedule below). After all attempts are exhausted, the event will be forwarded to the configured fallback email in the same format as the webhook. The email body will contain the JSON request in the same format as the webhook. This way, you'll be able to send the request to your server using Postman, Curl or similar tool.
This is the approximate retry schedule. Since there is a 30 seconds timeout on each try, there could be a cumulative overhead up to 3½ minutes.
Minutes after previous step | Minutes after event | Method |
---|---|---|
N/A | 0 | HTTPS |
1 | 1 | HTTPS |
5 | 6 | HTTPS |
15 | 21 | HTTPS |
15 | 36 | HTTPS |
15 | 51 | HTTPS |
15 | 66 | HTTPS |
0 | 66 |
If you don't receive the event on the first attempt, there will be debugging information about each previous attempt in the body of the event. You'll be able to see the timestamp of each previous attempt and the return code returned by your server or a timeout indication if your server hasn't replied.
All notable changes to this project will be documented in this section.
Version numbers are using MAJOR.MINOR.PATCH numbering format for example 1.2.23
MAJOR will be incremented only if there is an incompatible breaking change. New distinct documentation and specification files will be published.
MINOR will be incremented only if a function becomes deprecated or deleted (after being deprecated in a previous version)
PATCH will be incremented everytime changes and additions are released.
You can always safely update to newer PATCH version if you stay in the same MAJOR.MINOR prefix.
You can safely update to a newer MINOR version as long as you don't jump more than a version at a time. For example, let say there is a function named "foo" in version 1.0.23. We might deprecate this function in version 1.1.1 but you can continue using it. We might decide to remove it in version 1.2.1 so then you would have a breaking change if you try to update to version 1.2.1 without having fixed the issue with your deprecated "foo" function.
For each version, there will be the list of changes:
(CsharpSDK) Hyphens in Class Name
(AxiosSDK) Published to NPM
Retrieve the customer's specific server endpoint where to send requests. This will help locate the proper region (ie: sInfrastructureregionCode) and the proper environment (ie: sInfrastructureenvironmenttypeDescription) where the customer's data is stored.
pksCustomerCode required | string The customer code assigned to your account |
sInfrastructureproductCode | string Enum: "appcluster01" "ezsignuser" The infrastructure product Code If undefined, "appcluster01" is assumed |
{
}
This endpoint authenticates a user.
eSessionType required | string Value: "ezsignuser" |
pksCustomerCode required | string (Field-pksCustomerCode) [ 2 .. 6 ] characters The customer code assigned to your account |
sEmailAddress | string (Field-sEmailAddress) The email address. |
sUserLoginname | string (Field-sUserLoginname) The Login name of the User. |
sPassword | string (Field-sPassword) A Password. Must meet complexity requirements |
sPasswordEncrypted | string (Field-sPasswordEncrypted) A Password encrypted and encoded in Base64 Must meet complexity requirements |
{- "pksCustomerCode": "demo",
- "sEmailAddress": "example@domain.com",
- "sUserLoginname": "JohnDoe",
- "sPassword": "Qwerty1234!",
- "sPasswordEncrypted": "VGhpcyBpcyBhbiBlbmNyeXB0ZWQgcGFzc3dvcmQ="
}
{- "mPayload": {
- "sAuthorization": "string",
- "sSecret": "string"
}, - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
Sspr module contains actions related to the Self Service Password Reset portal.
There is an option in the admin interface to disable the portal if you don't want your users to be able to reset their own password.
HTTP Status Code | eErrorCode | Detail |
---|---|---|
200 | OK | The request completed successfully and valid data was returned in the body |
201 | Created | The request completed successfully. Some elements were created and details about the created items |
This endpoint returns an email with the username(s) matching the email address provided in case of forgotten username
pksCustomerCode required | string (Field-pksCustomerCode) [ 2 .. 6 ] characters The customer code assigned to your account | ||||||
fkiLanguageID required | integer (Field-pkiLanguageID) [ 1 .. 2 ] The unique ID of the Language. Valid values:
| ||||||
eUserTypeSSPR required | string (Field-eUserTypeSSPR) Enum: "EzsignUser" "Native" The user type of the User for SSPR | ||||||
sEmailAddress required | string (Field-sEmailAddress) The email address. |
{- "pksCustomerCode": "demo",
- "fkiLanguageID": 2,
- "eUserTypeSSPR": "Native",
- "sEmailAddress": "example@domain.com"
}
{- "sErrorMessage": "string",
- "eErrorCode": "string"
}
This endpoint sends an email with a link to unlock the user account.
sEmailAddress must be set if eUserTypeSSPR = EzsignUser
sUserLoginname must be set if eUserTypeSSPR = Native
pksCustomerCode required | string (Field-pksCustomerCode) [ 2 .. 6 ] characters The customer code assigned to your account | ||||||
fkiLanguageID required | integer (Field-pkiLanguageID) [ 1 .. 2 ] The unique ID of the Language. Valid values:
| ||||||
eUserTypeSSPR required | string (Field-eUserTypeSSPR) Enum: "EzsignUser" "Native" The user type of the User for SSPR | ||||||
sEmailAddress | string (Field-sEmailAddress) The email address. | ||||||
sUserLoginname | string (Field-sUserLoginname) The Login name of the User. |
{- "pksCustomerCode": "demo",
- "fkiLanguageID": 2,
- "eUserTypeSSPR": "Native",
- "sEmailAddress": "example@domain.com",
- "sUserLoginname": "JohnDoe"
}
{- "sErrorMessage": "string",
- "eErrorCode": "string"
}
This endpoint unlocks the user account.
sEmailAddress must be set if eUserTypeSSPR = EzsignUser
sUserLoginname must be set if eUserTypeSSPR = Native
pksCustomerCode required | string (Field-pksCustomerCode) [ 2 .. 6 ] characters The customer code assigned to your account | ||||||
fkiLanguageID required | integer (Field-pkiLanguageID) [ 1 .. 2 ] The unique ID of the Language. Valid values:
| ||||||
eUserTypeSSPR required | string (Field-eUserTypeSSPR) Enum: "EzsignUser" "Native" The user type of the User for SSPR | ||||||
sEmailAddress | string (Field-sEmailAddress) The email address. | ||||||
sUserLoginname | string (Field-sUserLoginname) The Login name of the User. | ||||||
binUserSSPRtoken required | string (Field-binUserSSPRtoken) Hex Encoded Secret SSPR token |
{- "pksCustomerCode": "demo",
- "fkiLanguageID": 2,
- "eUserTypeSSPR": "Native",
- "sEmailAddress": "example@domain.com",
- "sUserLoginname": "JohnDoe",
- "binUserSSPRtoken": "012345678901234567890123456789012345678901234567890123456789abcd"
}
{- "sErrorMessage": "string",
- "eErrorCode": "string"
}
This endpoint resets the user's password.
sEmailAddress must be set if eUserTypeSSPR = EzsignUser
sUserLoginname must be set if eUserTypeSSPR = Native
pksCustomerCode required | string (Field-pksCustomerCode) [ 2 .. 6 ] characters The customer code assigned to your account | ||||||
fkiLanguageID required | integer (Field-pkiLanguageID) [ 1 .. 2 ] The unique ID of the Language. Valid values:
| ||||||
eUserTypeSSPR required | string (Field-eUserTypeSSPR) Enum: "EzsignUser" "Native" The user type of the User for SSPR | ||||||
sEmailAddress | string (Field-sEmailAddress) The email address. | ||||||
sUserLoginname | string (Field-sUserLoginname) The Login name of the User. | ||||||
binUserSSPRtoken required | string (Field-binUserSSPRtoken) Hex Encoded Secret SSPR token | ||||||
sPassword required | string (Field-sPassword) A Password. Must meet complexity requirements |
{- "pksCustomerCode": "demo",
- "fkiLanguageID": 2,
- "eUserTypeSSPR": "Native",
- "sEmailAddress": "example@domain.com",
- "sUserLoginname": "JohnDoe",
- "binUserSSPRtoken": "012345678901234567890123456789012345678901234567890123456789abcd",
- "sPassword": "Qwerty1234!"
}
{- "sErrorMessage": "string",
- "eErrorCode": "string"
}
This endpoint validates if a Token is valid and not expired.
sEmailAddress must be set if eUserTypeSSPR = EzsignUser
sUserLoginname must be set if eUserTypeSSPR = Native
pksCustomerCode required | string (Field-pksCustomerCode) [ 2 .. 6 ] characters The customer code assigned to your account | ||||||
fkiLanguageID required | integer (Field-pkiLanguageID) [ 1 .. 2 ] The unique ID of the Language. Valid values:
| ||||||
eUserTypeSSPR required | string (Field-eUserTypeSSPR) Enum: "EzsignUser" "Native" The user type of the User for SSPR | ||||||
sEmailAddress | string (Field-sEmailAddress) The email address. | ||||||
sUserLoginname | string (Field-sUserLoginname) The Login name of the User. | ||||||
binUserSSPRtoken required | string (Field-binUserSSPRtoken) Hex Encoded Secret SSPR token |
{- "pksCustomerCode": "demo",
- "fkiLanguageID": 2,
- "eUserTypeSSPR": "Native",
- "sEmailAddress": "example@domain.com",
- "sUserLoginname": "JohnDoe",
- "binUserSSPRtoken": "012345678901234567890123456789012345678901234567890123456789abcd"
}
{- "sErrorMessage": "string",
- "eErrorCode": "string"
}
This endpoint sends an email with a link to reset the user's password.
sEmailAddress must be set if eUserTypeSSPR = EzsignUser
sUserLoginname must be set if eUserTypeSSPR = Native
pksCustomerCode required | string (Field-pksCustomerCode) [ 2 .. 6 ] characters The customer code assigned to your account | ||||||
fkiLanguageID required | integer (Field-pkiLanguageID) [ 1 .. 2 ] The unique ID of the Language. Valid values:
| ||||||
eUserTypeSSPR required | string (Field-eUserTypeSSPR) Enum: "EzsignUser" "Native" The user type of the User for SSPR | ||||||
sEmailAddress | string (Field-sEmailAddress) The email address. | ||||||
sUserLoginname | string (Field-sUserLoginname) The Login name of the User. |
{- "pksCustomerCode": "demo",
- "fkiLanguageID": 2,
- "eUserTypeSSPR": "Native",
- "sEmailAddress": "example@domain.com",
- "sUserLoginname": "JohnDoe"
}
{- "sErrorMessage": "string",
- "eErrorCode": "string"
}
The endpoint allows to initiate the creation or a user of type Ezsignuser.
The user will be created only once the email verification process will be completed
fkiLanguageID required | integer (Field-pkiLanguageID) [ 1 .. 2 ] The unique ID of the Language. Valid values:
| ||||||
sUserFirstname required | string (Field-sUserFirstname) The First name of the user | ||||||
sUserLastname required | string (Field-sUserLastname) The Last name of the user | ||||||
sEmailAddress required | string (Field-sEmailAddress) The email address. | ||||||
sPhoneRegion required | string (Field-sPhoneRegion) The region of the phone number. (For a North America Number only) The region is the "514" section in this sample phone number: (514) 990-1516 x123 | ||||||
sPhoneExchange required | string (Field-sPhoneExchange) The exchange of the phone number. (For a North America Number only) The exchange is the "990" section in this sample phone number: (514) 990-1516 x123 | ||||||
sPhoneNumber required | string (Field-sPhoneNumber) The number of the phone number. (For a North America Number only) The number is the "1516" section in this sample phone number: (514) 990-1516 x123 | ||||||
sPhoneExtension | string (Field-sPhoneExtension) The extension of the phone number. The extension is the "123" section in this sample phone number: (514) 990-1516 x123. It can also be used with international phone numbers |
[- {
- "fkiLanguageID": 2,
- "sUserFirstname": "John",
- "sUserLastname": "Doe",
- "sEmailAddress": "example@domain.com",
- "sPhoneRegion": "514",
- "sPhoneExchange": "990",
- "sPhoneNumber": "1516",
- "sPhoneExtension": "123"
}
]
{- "mPayload": {
- "a_sEmailAddressSuccess": [
- "someone@example.com",
- "someone2@example.com"
], - "a_sEmailAddressFailure": [
- "UserAlreadyExists@example.com"
]
}, - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
Retrieve the details about the current activesession
{- "mPayload": {
- "sCustomerCode": "string",
- "eActivesessionSessiontype": "Normal",
- "fkiLanguageID": 2,
- "sCompanyNameX": "string",
- "sDepartmentNameX": "string",
- "a_RegisteredModules": [
- "string"
], - "a_Permissions": [
- 0
], - "fkiUserID": 70,
- "fkiApikeyID": 99
}, - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
The endpoint allows to create one or many elements at once.
The array can contain simple (Just the object) or compound (The object and its child) objects.
Creating compound elements allows to reduce the multiple requests to create all child objects.
object (apikey-Request) An Apikey Object | |
object (schemas) An Apikey Object and children to create a complete structure |
[- {
- "objApikey": {
- "fkiUserID": 70,
- "objApikeyDescription": {
- "sApikeyDescription1": "Projet X",
- "sApikeyDescription2": "Project X"
}
}, - "objApikeyCompound": {
- "fkiUserID": 70,
- "objApikeyDescription": {
- "sApikeyDescription1": "Projet X",
- "sApikeyDescription2": "Project X"
}
}
}
]
{- "mPayload": {
- "a_objApikey": [
- {
- "objApikeyDescription": {
- "sApikeyDescription1": "Projet X",
- "sApikeyDescription2": "Project X"
}, - "sComputedToken": "string",
- "pkiApikeyID": 99,
- "objAudit": {
- "fkiUserIDCreated": 35,
- "fkiUserIDModified": 35,
- "fkiApikeyIDCreated": 1,
- "fkiApikeyIDModified": 1,
- "dtCreatedDate": "2020-12-31 23:59:59",
- "dtModifiedDate": "2020-12-31 23:59:59"
}
}
]
}, - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
This Webhook will be called when the last signature on an Ezsigndocument is made.
required | object (schemas) An Ezsigndocument Object |
required | object (webhook-Response) A webhook object |
required | Array of objects (attempt-Response) An array containing details of previous attempts that were made to deliver the message. The array is empty if it's the first attempt. |
{- "objEzsigndocument": {
- "fkiEzsignfolderID": 33,
- "dtEzsigndocumentDuedate": "2020-12-31 23:59:59",
- "fkiLanguageID": 2,
- "sEzsigndocumentName": "Contract #123",
- "pkiEzsigndocumentID": 97,
- "eEzsigndocumentStep": "Completed",
- "dtEzsigndocumentFirstsend": "2020-12-31 23:59:59",
- "dtEzsigndocumentLastsend": "2020-12-31 23:59:59",
- "iEzsigndocumentOrder": 1,
- "iEzsigndocumentPagetotal": 4,
- "iEzsigndocumentSignaturesigned": 3,
- "iEzsigndocumentSignaturetotal": 4,
- "sEzsigndocumentMD5initial": "012345678901234567890123456789AB",
- "sEzsigndocumentMD5signed": "012345678901234567890123456789AB",
- "objAudit": {
- "fkiUserIDCreated": 35,
- "fkiUserIDModified": 35,
- "fkiApikeyIDCreated": 1,
- "fkiApikeyIDModified": 1,
- "dtCreatedDate": "2020-12-31 23:59:59",
- "dtModifiedDate": "2020-12-31 23:59:59"
}
}, - "objWebhook": {
- "pkiWebhookID": 0,
- "eWebhookModule": "Ezsign",
- "eWebhookEzsignevent": "DocumentCompleted",
- "pksCustomerCode": "demo",
- "sWebhookUrl": "string",
- "sWebhookEmailfailed": "string",
- "eWebhookManagementevent": "UserCreated"
}, - "a_objAttempt": [
- {
- "dtAttemptStart": "2020-12-31 23:59:59",
- "sAttemptResult": "Success",
- "iAttemptDuration": 1
}
]
}
The endpoint allows to create one or many elements at once.
The array can contain simple (Just the object) or compound (The object and its child) objects.
Creating compound elements allows to reduce the multiple requests to create all child objects.
object (ezsigndocument-Request) An Ezsigndocument Object | |
object (schemas) An Ezsigndocument Object and children to create a complete structure |
[- {
- "objEzsigndocument": {
- "sEzsigndocumentName": "Important contract",
- "sEzsigndocumentFilename": "Important Contract.pdf",
- "fkiLanguageID": 2,
- "eEzsigndocumentSource": "Base64",
- "eEzsigndocumentFormat": "Pdf",
- "sEzsigndocumentBase64": "JVBERi0xLjENCiXCpcKxw6sNCg0KMSAwIG9iag0KICA8PCAvVHlwZSAvQ2F0YWxvZw0KICAgICAvUGFnZXMgMiAwIFINCiAgPj4NCmVuZG9iag0KDQoyIDAgb2JqDQogIDw8IC9UeXBlIC9QYWdlcw0KICAgICAvS2lkcyBbMyAwIFJdDQogICAgIC9Db3VudCAxDQogICAgIC9NZWRpYUJveCBbMCAwIDMwMCAxNDRdDQogID4+DQplbmRvYmoNCg0KMyAwIG9iag0KICA8PCAgL1R5cGUgL1BhZ2UNCiAgICAgIC9QYXJlbnQgMiAwIFINCiAgICAgIC9SZXNvdXJjZXMNCiAgICAgICA8PCAvRm9udA0KICAgICAgICAgICA8PCAvRjENCiAgICAgICAgICAgICAgIDw8IC9UeXBlIC9Gb250DQogICAgICAgICAgICAgICAgICAvU3VidHlwZSAvVHlwZTENCiAgICAgICAgICAgICAgICAgIC9CYXNlRm9udCAvVGltZXMtUm9tYW4NCiAgICAgICAgICAgICAgID4+DQogICAgICAgICAgID4+DQogICAgICAgPj4NCiAgICAgIC9Db250ZW50cyA0IDAgUg0KICA+Pg0KZW5kb2JqDQoNCjQgMCBvYmoNCiAgPDwgL0xlbmd0aCA1NSA+Pg0Kc3RyZWFtDQogIEJUDQogICAgL0YxIDE4IFRmDQogICAgMCAwIFRkDQogICAgKEhlbGxvIFdvcmxkKSBUag0KICBFVA0KZW5kc3RyZWFtDQplbmRvYmoNCg0KeHJlZg0KMCA1DQowMDAwMDAwMDAwIDY1NTM1IGYgDQowMDAwMDAwMDE4IDAwMDAwIG4gDQowMDAwMDAwMDc3IDAwMDAwIG4gDQowMDAwMDAwMTc4IDAwMDAwIG4gDQowMDAwMDAwNDU3IDAwMDAwIG4gDQp0cmFpbGVyDQogIDw8ICAvUm9vdCAxIDAgUg0KICAgICAgL1NpemUgNQ0KICA+Pg0Kc3RhcnR4cmVmDQo1NjUNCiUlRU9G",
- "fkiEzsignfolderID": 1,
- "dtEzsigndocumentDuedate": "2020-12-31 23:59:59"
}, - "objEzsigndocumentCompound": {
- "sEzsigndocumentName": "Important contract",
- "sEzsigndocumentFilename": "Important Contract.pdf",
- "fkiEzsignfolderID": 1,
- "dtEzsigndocumentDuedate": "2020-12-31 23:59:59",
- "fkiLanguageID": 2
}
}
]
{- "mPayload": {
- "a_pkiEzsigndocumentID": [
- 95,
- 96
]
}, - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
This endpoint returns URLs to different files that can be downloaded during the signing process.
These links will expire after 5 minutes so the download of the file should be made soon after retrieving the link.
pkiEzsigndocumentID required | integer The unique ID of the Ezsigndocument |
eDocumentType required | string Enum: "Initial" "Signed" "Proof" "Proofdocument" The type of document to retrieve.
|
{- "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
This endpoint applies a predefined template to the ezsign document. This allows to automatically apply all the form and signature fields on a document in a single step.
The document must not already have fields otherwise an error will be returned.
pkiEzsigndocumentID required | integer The unique ID of the Ezsigndocument |
fkiEzsigntemplateID required | integer (Field-pkiEzsigntemplateID) The unique ID of the Ezsigndocument |
a_sEzsigntemplatesigner required | Array of strings (Field-sEzsigntemplatesigner) |
a_pkiEzsignfoldersignerassociationID required | Array of integers (Field-pkiEzsignfoldersignerassociationID) |
{- "fkiEzsigntemplateID": 36,
- "a_sEzsigntemplatesigner": [
- "John"
], - "a_pkiEzsignfoldersignerassociationID": [
- 20
]
}
{- "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsigndocumentID required | integer The unique ID of the Ezsigndocument |
{- "mPayload": {
- "fkiEzsignfolderID": 33,
- "dtEzsigndocumentDuedate": "2020-12-31 23:59:59",
- "fkiLanguageID": 2,
- "sEzsigndocumentName": "Contract #123",
- "pkiEzsigndocumentID": 97,
- "eEzsigndocumentStep": "Completed",
- "dtEzsigndocumentFirstsend": "2020-12-31 23:59:59",
- "dtEzsigndocumentLastsend": "2020-12-31 23:59:59",
- "iEzsigndocumentOrder": 1,
- "iEzsigndocumentPagetotal": 4,
- "iEzsigndocumentSignaturesigned": 3,
- "iEzsigndocumentSignaturetotal": 4,
- "sEzsigndocumentMD5initial": "012345678901234567890123456789AB",
- "sEzsigndocumentMD5signed": "012345678901234567890123456789AB",
- "objAudit": {
- "fkiUserIDCreated": 35,
- "fkiUserIDModified": 35,
- "fkiApikeyIDCreated": 1,
- "fkiApikeyIDModified": 1,
- "dtCreatedDate": "2020-12-31 23:59:59",
- "dtModifiedDate": "2020-12-31 23:59:59"
}
}, - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsigndocumentID required | integer The unique ID of the Ezsigndocument |
{- "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsigndocumentID required | integer The unique ID of the Ezsigndocument |
a_sWords required | Array of strings |
{- "a_sWords": [
- "Your word 1",
- "Your word 2",
- "Your word 3"
]
}
{- "mPayload": {
- "a_sWords": [
- {
- "iPage": 1,
- "iX": 70,
- "iY": 0
}, - {
- "iPage": 2,
- "iX": 20,
- "iY": 40
}
], - "Your Word 1": [
- {
- "iPage": 1,
- "iX": 70,
- "iY": 0
}, - {
- "iPage": 2,
- "iX": 20,
- "iY": 40
}
], - "Your Word 2": [
- {
- "iPage": 2,
- "iX": 20,
- "iY": 40
}
], - "Your Word 3": [ ]
}, - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsigndocumentID required | integer The unique ID of the Ezsigndocument |
{- "sErrorMessage": "string",
- "eErrorCode": "string"
}
pkiEzsigndocumentID required | integer The unique ID of the Ezsigndocument |
{- "sErrorMessage": "string",
- "eErrorCode": "string"
}
Ezsignfolder contains detail about the container containing signers, documents to sign, etc. Sometimes referred as "Envelopes" in competitor products
This Webhook will be called when the last signature on the last Ezsigndocument from the folder is made.
required | object (ezsignfolder-Response) An Ezsignfolder Object |
required | object (webhook-Response) A webhook object |
required | Array of objects (attempt-Response) An array containing details of previous attempts that were made to deliver the message. The array is empty if it's the first attempt. |
{- "objEzsignfolder": {
- "fkiEzsignfoldertypeID": 5,
- "fkiEzsigntsarequirementID": 92,
- "sEzsignfolderDescription": "Test eZsign Folder",
- "tEzsignfolderNote": "An extra notes we can add to the ezsign folder",
- "eEzsignfolderSendreminderfrequency": "None",
- "pkiEzsignfolderID": 33,
- "dtEzsignfolderSentdate": "2020-12-31 23:59:59",
- "eEzsignfolderStep": "Completed",
- "dtEzsignfolderClose": "2020-12-31 23:59:59",
- "objAudit": {
- "fkiUserIDCreated": 35,
- "fkiUserIDModified": 35,
- "fkiApikeyIDCreated": 1,
- "fkiApikeyIDModified": 1,
- "dtCreatedDate": "2020-12-31 23:59:59",
- "dtModifiedDate": "2020-12-31 23:59:59"
}
}, - "objWebhook": {
- "pkiWebhookID": 0,
- "eWebhookModule": "Ezsign",
- "eWebhookEzsignevent": "DocumentCompleted",
- "pksCustomerCode": "demo",
- "sWebhookUrl": "string",
- "sWebhookEmailfailed": "string",
- "eWebhookManagementevent": "UserCreated"
}, - "a_objAttempt": [
- {
- "dtAttemptStart": "2020-12-31 23:59:59",
- "sAttemptResult": "Success",
- "iAttemptDuration": 1
}
]
}
The endpoint allows to create one or many elements at once.
The array can contain simple (Just the object) or compound (The object and its child) objects.
Creating compound elements allows to reduce the multiple requests to create all child objects.
object (ezsignfolder-Request) An Ezsignfolder Object | |
object (schemas) An Ezsignfolder Object and children to create a complete structure |
[- {
- "objEzsignfolder": {
- "fkiEzsignfoldertypeID": 1,
- "sEzsignfolderDescription": "Test eZsign Folder",
- "tEzsignfolderNote": "An extra notes we can add to the ezsign folder",
- "fkiEzsigntsarequirementID": 1,
- "eEzsignfolderSendreminderfrequency": "Daily"
}, - "objEzsignfolderCompound": {
- "fkiEzsignfoldertypeID": 1,
- "sEzsignfolderDescription": "Test eZsign Folder",
- "tEzsignfolderNote": "An extra notes we can add to the ezsign folder",
- "fkiEzsigntsarequirementID": 1,
- "eEzsignfolderSendreminderfrequency": "Daily"
}
}
]
{- "mPayload": {
- "a_pkiEzsignfolderID": [
- 95,
- 96
]
}, - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsignfolderID required | integer The unique ID of the Ezsignfolder |
tExtraMessage required | string A custom text message that will be added to the email sent to signatories inviting them to sign. You can send an empty string and only the generic message will be sent. |
"Hi John,\n\nThis is the document I need you to sign.\n\nCould you sign it before monday please.\n\nBest Regards.\n\nMary"
{- "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsignfolderID required | integer The unique ID of the Ezsignfolder |
{- "mPayload": {
- "fkiEzsignfoldertypeID": 5,
- "fkiEzsigntsarequirementID": 92,
- "sEzsignfolderDescription": "Test eZsign Folder",
- "tEzsignfolderNote": "An extra notes we can add to the ezsign folder",
- "eEzsignfolderSendreminderfrequency": "None",
- "pkiEzsignfolderID": 33,
- "dtEzsignfolderSentdate": "2020-12-31 23:59:59",
- "eEzsignfolderStep": "Completed",
- "dtEzsignfolderClose": "2020-12-31 23:59:59",
- "objAudit": {
- "fkiUserIDCreated": 35,
- "fkiUserIDModified": 35,
- "fkiApikeyIDCreated": 1,
- "fkiApikeyIDModified": 1,
- "dtCreatedDate": "2020-12-31 23:59:59",
- "dtModifiedDate": "2020-12-31 23:59:59"
}
}, - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsignfolderID required | integer The unique ID of the Ezsignfolder |
{- "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsignfolderID required | integer The unique ID of the Ezsignfolder |
{- "sErrorMessage": "string",
- "eErrorCode": "string"
}
Ezsignfoldersignerassociation contains detail about the signers that will be invited to sign the documents. Signers can be users from the system or persons outside of the system.
The endpoint allows to create one or many elements at once.
The array can contain simple (Just the object) or compound (The object and its child) objects.
Creating compound elements allows to reduce the multiple requests to create all child objects.
object (ezsignfoldersignerassociation-Request) An Ezsignfoldersignerassociation Object | |
object (schemas) An Ezsignfoldersignerassociation Object and children to create a complete structure |
[- {
- "objEzsignfoldersignerassociation": {
- "fkiUserID": 48,
- "fkiEzsignfolderID": 85
}, - "objEzsignfoldersignerassociationCompound": {
- "objEzsignsigner": {
- "objContact": {
- "sContactFirstname": "John",
- "sContactLastname": "Doe",
- "fkiLanguageID": 1,
- "sEmailAddress": "johh.doe@domain.com",
- "sPhoneNumber": "5149901516",
- "sPhoneNumberCell": "5149901516"
}, - "fkiTaxassignmentID": 1,
- "fkiSecretquestionID": 5,
- "eEzsignsignerLogintype": "PasswordQuestion",
- "sEzsignsignerSecretanswer": "This Is My Secret Answer"
}, - "fkiUserID": 48,
- "fkiEzsignfolderID": 85
}
}
]
{- "mPayload": {
- "a_pkiEzsignfoldersignerassociationID": [
- 95,
- 96
]
}, - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
This endpoint returns a Login Url that can be used in a browser or embedded in an I-Frame to allow in person signing.
The signer Login type must be configured as In-Person.
pkiEzsignfoldersignerassociationID required | integer The unique ID of the Ezsignfoldersignerassociation |
{- "mPayload": {
- "sLoginUrl": "string"
}, - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsignfoldersignerassociationID required | integer The unique ID of the Ezsignfoldersignerassociation |
{- "mPayload": { },
- "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsignfoldersignerassociationID required | integer The unique ID of the Ezsignfoldersignerassociation |
{- "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsignfoldersignerassociationID required | integer The unique ID of the Ezsignfoldersignerassociation |
{- "sErrorMessage": "string",
- "eErrorCode": "string"
}
Ezsignsignature contains detail about a specific signature block on a page of a Ezsigndocument
The endpoint allows to create one or many elements at once.
The array can contain simple (Just the object) or compound (The object and its child) objects.
Creating compound elements allows to reduce the multiple requests to create all child objects.
object (ezsignsignature-Request) An Ezsignsignature Object | |
object (schemas) An Ezsignsignature Object and children to create a complete structure |
[- {
- "objEzsignsignature": {
- "fkiEzsignfoldersignerassociationID": 20,
- "iEzsignpagePagenumber": 1,
- "iEzsignsignatureX": "200",
- "iEzsignsignatureY": "300",
- "iEzsignsignatureStep": 1,
- "eEzsignsignatureType": "Name",
- "fkiEzsigndocumentID": 97
}, - "objEzsignsignatureCompound": {
- "fkiEzsignfoldersignerassociationID": 20,
- "iEzsignpagePagenumber": 1,
- "iEzsignsignatureX": "200",
- "iEzsignsignatureY": "300",
- "iEzsignsignatureStep": 1,
- "eEzsignsignatureType": "Name",
- "fkiEzsigndocumentID": 97
}
}
]
{- "mPayload": {
- "a_pkiEzsignsignatureID": [
- 95,
- 96
]
}, - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsignsignatureID required | integer The unique ID of the Ezsignsignature |
{- "mPayload": { },
- "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsignsignatureID required | integer The unique ID of the Ezsignsignature |
{- "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
pkiEzsignsignatureID required | integer The unique ID of the Ezsignsignature |
{- "sErrorMessage": "string",
- "eErrorCode": "string"
}
Franchisebroker contains detail about a brokerage in the franchise administration module
Get the list of Franchisebrokers to be used in a dropdown or autocomplete control.
sSelector required | string Enum: "Active" "All" The type of Franchisebrokers to return |
sQuery | string Allow to filter on the option value |
{- "mPayload": [
- {
- "group": "string",
- "id": "string",
- "option": "string"
}
], - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
Franchiseoffice contains detail about a brokerage's office in the franchise administration module
Get the list of Franchiseoffices to be used in a dropdown or autocomplete control.
sSelector required | string Enum: "Active" "All" The type of Franchiseoffices to return |
sQuery | string Allow to filter on the option value |
{- "mPayload": [
- {
- "group": "string",
- "id": "string",
- "option": "string"
}
], - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
Franchisereferalincome contains detail about a referal income in the franchise administration module
The endpoint allows to create one or many elements at once.
The array can contain simple (Just the object) or compound (The object and its child) objects.
Creating compound elements allows to reduce the multiple requests to create all child objects.
object (franchisereferalincome-Request) An Franchisereferalincome Object | |
object (schemas) A Franchisereferalincome Object and children to create a complete structure |
[- {
- "objFranchisereferalincome": {
- "fkiFranchisebrokerID": 61,
- "fkiFranchisereferalincomeprogramID": 51,
- "fkiPeriodID": 21,
- "dFranchisereferalincomeLoan": "500275.62",
- "dFranchisereferalincomeFranchiseamount": "275.00",
- "dFranchisereferalincomeFranchisoramount": "385.00",
- "dFranchisereferalincomeAgentamount": "800.00",
- "dtFranchisereferalincomeDisbursed": "2020-12-31",
- "tFranchisereferalincomeComment": "This is a comment",
- "fkiFranchiseofficeID": 50,
- "sFranchisereferalincomeRemoteid": "string"
}, - "objFranchisereferalincomeCompound": {
- "objAddress": {
- "fkiAddresstypeID": 1,
- "sAddressCivic": "2540",
- "sAddressStreet": "Daniel-Johnson Blvd.",
- "sAddressSuite": "610",
- "sAddressCity": "Laval",
- "fkiProvinceID": 11,
- "fkiCountryID": 1,
- "sAddressZip": "H7T2S3"
}, - "a_objContact": [
- {
- "objContactinformations": {
- "a_objAddress": [
- {
- "fkiAddresstypeID": 1,
- "sAddressCivic": "2540",
- "sAddressStreet": "Daniel-Johnson Blvd.",
- "sAddressSuite": "610",
- "sAddressCity": "Laval",
- "fkiProvinceID": 11,
- "fkiCountryID": 1,
- "sAddressZip": "H7T2S3"
}
], - "a_objPhone": [
- {
- "fkiPhonetypeID": 1,
- "ePhoneType": "Local",
- "sPhoneRegion": "514",
- "sPhoneExchange": "990",
- "sPhoneNumber": "1516",
- "sPhoneInternational": "442071838750",
- "sPhoneExtension": "123"
}
], - "a_objEmail": [
- {
- "fkiEmailtypeID": 1,
- "sEmailAddress": "example@domain.com"
}
], - "iAddressDefault": 0,
- "iPhoneDefault": 0,
- "iEmailDefault": 0,
- "iWebsiteDefault": 0
}, - "fkiContacttitleID": 2,
- "fkiLanguageID": 2,
- "sContactFirstname": "John",
- "sContactLastname": "Doe",
- "sContactCompany": "eZmax Solutions Inc.",
- "dtContactBirthdate": "1980-01-01"
}
], - "fkiFranchisebrokerID": 61,
- "fkiFranchisereferalincomeprogramID": 51,
- "fkiPeriodID": 21,
- "dFranchisereferalincomeLoan": "500275.62",
- "dFranchisereferalincomeFranchiseamount": "275.00",
- "dFranchisereferalincomeFranchisoramount": "385.00",
- "dFranchisereferalincomeAgentamount": "800.00",
- "dtFranchisereferalincomeDisbursed": "2020-12-31",
- "tFranchisereferalincomeComment": "This is a comment",
- "fkiFranchiseofficeID": 50,
- "sFranchisereferalincomeRemoteid": "string"
}
}
]
{- "mPayload": {
- "a_pkiFranchisereferalincomeID": [
- 95,
- 96
]
}, - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
Get the list of Periods to be used in a dropdown or autocomplete control.
sSelector required | string Enum: "ActiveNormal" "ActiveNormalAndEndOfYear" "AllNormal" "AllNormalAndEndOfYear" The types of Periods to return |
sQuery | string Allow to filter on the option value |
{- "mPayload": [
- {
- "group": "string",
- "id": "string",
- "option": "string"
}
], - "objDebugPayload": {
- "iVersionMin": 1,
- "iVersionMax": 2,
- "a_RequiredPermissions": [
- 45,
- 61
]
}, - "objDebug": {
- "sMemoryUsage": "11,923MB",
- "sRunTime": "0.6084s",
- "iSQLSelects": 3,
- "iSQLQueries": 6,
- "a_objQuery": [
- {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}, - {
- "sQuery": "SELECT * FROM table",
- "fDuration": 0.0001
}
]
}
}
This Webhook will be called when a user is created in the system.
required | object (user-Response) A User Object |
required | object (webhook-Response) A webhook object |
required | Array of objects (attempt-Response) An array containing details of previous attempts that were made to deliver the message. The array is empty if it's the first attempt. |
{- "objUser": {
- "pkiUserID": 70,
- "fkiLanguageID": 2,
- "eUserType": "RewardDistributorServer",
- "sUserFirstname": "John",
- "sUserLastname": "Doe",
- "sUserLoginname": "JohnDoe",
- "objAudit": {
- "fkiUserIDCreated": 35,
- "fkiUserIDModified": 35,
- "fkiApikeyIDCreated": 1,
- "fkiApikeyIDModified": 1,
- "dtCreatedDate": "2020-12-31 23:59:59",
- "dtModifiedDate": "2020-12-31 23:59:59"
}
}, - "objWebhook": {
- "pkiWebhookID": 0,
- "eWebhookModule": "Ezsign",
- "eWebhookEzsignevent": "DocumentCompleted",
- "pksCustomerCode": "demo",
- "sWebhookUrl": "string",
- "sWebhookEmailfailed": "string",
- "eWebhookManagementevent": "UserCreated"
}, - "a_objAttempt": [
- {
- "dtAttemptStart": "2020-12-31 23:59:59",
- "sAttemptResult": "Success",
- "iAttemptDuration": 1
}
]
}