The changes between REST API v5 and v6 require bigger changes of the API client implementations, as this version switch addressed many known disadvantages of the v3-v5 API versions. This migration guide should give an overview on how to migrate from API v5 to API v6. As there are no big changes between v4 and v5, this guide will also be helpful for integrations that are still on API v4. For those for projects that are still using API v3 or v4, we recommend to migrate to v5 first following the v3 to v5 guide, and then migrate in a 2nd step from v5 to v6 using this guide.
...
Info |
---|
API v5 will remain part of the product beyond the announced removal of v3, while REST API v6 is already available. For existing integrations, staying on API v5 is ok as long as no new features of v6 are required, but our recommendation is to start early to migrate to API v6 even in consideration of the effort, to be prepared for the situation when you need a new functionality that is available on API v6 only. |
Info | ||
---|---|---|
| ||
Please keep using API v5 if you are using one of this features listed below:
|
Table of Contents |
---|
Conceptual Changes
- The former option to use insecure organizationTokens (after they had been explicitely enabled on organization level) has been removed.
Authentication - All namings in the API, on method level and inside the models, have been reviewed (and most of them have been changed)
because we think consistent and simple wording helps to speed up the learning courve of the API users- In API v6, we are calling elements as it is common in workflow context
- We improved to get a consistent naming within the API
- In consideration of clean-code principles, we tried to use "positive-wording" for boolean properties as much as possible
- Where applicable, the naming of elements in the API is in sync with the naming in the eSignAnyWhere Web UI (in English language)
- We reviewed all default-values
because with reasonable defaulting many elements don't need to be specified by the user of the API - We removed historic relicts that come from technical architecture (e.g. „workstepConfiguration“)
because API users shouldn't burn time by understanding internal concepts of our platform - The API is no longer using „abstract types“ and the DiscriminatorType element in the API, but include the full structure in the method's model directly now
because we wanted to focus on compatibility with various REST API code generators - We are using only the verbs GET and POST; and strictly avoid using PUT, PATCH, DELETE and other HTTP verbs
again for simplicity, but also to avoid issues with some coding platforms and infrastructure configurations where customers reported issues in the past. - Clear rule for parameters in API calls:
- in GET calls, the parameters are part of the URI path.
- in POST calls, there are NO parameters in the URI path; all parameters are in the HTTP request body.
- Clear rules on datatype formats, e.g.:
- Dates consistently following RFC 3339 Internet Date/Time Format "full-date" type
e.g. 2022-11-25 - Timestamps consistently following RFC 3339 Internet Date/Time Format "date-time" type
e.g. 2022-11-25T09:11:12Z. Mind that a timezone information is mandatory, and Z can be used for "Zulu Time" (i.e. UTC+0) - Color values always as an html colorcode string (#rrggbb), e.g. #ff0000 for red
- Dates consistently following RFC 3339 Internet Date/Time Format "full-date" type
For the more detailled view on changes, where we are referring to old naming and the new replacement, we use following notation in this document:
- Old terminology is formatted in bold-italic
- New terminology is formatted in bold.
Global Naming Changes
We take into account that the words "whitelist" and "blacklist" can be perceived as offensive and hurtful words. It has never been our intention to imply discriminatory or other-valued meanings in the use of these terminologies beyond the purely technical interpretation of including or excluding a subset of parameters from larger sets. We have changed our terminology to "allowlist" and "blocklist" to reflect the worldwide discussion of these terms over the past two years, or are now using descriptive namings for an inclusion lists such as in the ActionCallbackSelection.
In an eSignAnyWhere Envelope, we are now using the term "activity" instead of "recipient". The term "recipient" didn't work gracefully for situations where the "recipient" was just a background service activity such as an "automatic signing" or "automatic sealing" activity. We follow the terminology borrowed from the Business Process Modelling Notation (BPMN), as we consider an envelope as being processed in a signature workflow.
To emphasize the global aspect of the solution, we have adapted terminologies so that they are suitable for worldwide use. One example is the division of the name into the firstName and lastName, which is not common in every region of the world. Based on common recommendations, we are now using the terms givenName and surname.
Envelope Status Enumeration
The envelope status values have been reviewed, and status values are now aligned with the status value shown in the WebUI.
...
...
Warning |
---|
Important information: If you have been utilizing the API v5 to create envelopes and are planning to retrieve theses envelopes using API calls from v6, it is crucial to be aware of potential compatibility issues. Due to changes and updates between API versions, certain calls made from v6 may result in errors related to invalid API version ("InvalidEnvelopeApiVersion") when attempting to retrieve envelopes created with API v5. A possible solution is to continue using the v5 calls to retrieve the envelopes created via v5 if one of the following API calls is needed to retrieve the envelope/template or draft. See following affected api call:
|
Info | ||
---|---|---|
| ||
Please keep using API v5 if you are using one of this features listed below:
Already implemented: See also eSignAnyWhere Release News for more detail.
|
Table of Contents |
---|
Conceptual Changes
- The former option to use insecure organizationTokens (after they had been explicitely enabled on organization level) has been removed.
Authentication - All namings in the API, on method level and inside the models, have been reviewed (and most of them have been changed)
because we think consistent and simple wording helps to speed up the learning courve of the API users- In API v6, we are calling elements as it is common in workflow context
- We improved to get a consistent naming within the API
- In consideration of clean-code principles, we tried to use "positive-wording" for boolean properties as much as possible
- Where applicable, the naming of elements in the API is in sync with the naming in the eSignAnyWhere Web UI (in English language)
- We reviewed all default-values
because with reasonable defaulting many elements don't need to be specified by the user of the API - We removed historic relicts that come from technical architecture (e.g. „workstepConfiguration“)
because API users shouldn't burn time by understanding internal concepts of our platform - The API is no longer using „abstract types“ and the DiscriminatorType element in the API, but include the full structure in the method's model directly now
because we wanted to focus on compatibility with various REST API code generators - We are using only the verbs GET and POST; and strictly avoid using PUT, PATCH, DELETE and other HTTP verbs
again for simplicity, but also to avoid issues with some coding platforms and infrastructure configurations where customers reported issues in the past. - Clear rule for parameters in API calls:
- in GET calls, the parameters are part of the URI path.
- in POST calls, there are NO parameters in the URI path; all parameters are in the HTTP request body.
- Clear rules on datatype formats, e.g.:
- Dates consistently following RFC 3339 Internet Date/Time Format "full-date" type
e.g. 2022-11-25 - Timestamps consistently following RFC 3339 Internet Date/Time Format "date-time" type
e.g. 2022-11-25T09:11:12Z. Mind that a timezone information is mandatory, and Z can be used for "Zulu Time" (i.e. UTC+0) - Color values always as an html colorcode string (#rrggbb), e.g. #ff0000 for red
- Dates consistently following RFC 3339 Internet Date/Time Format "full-date" type
For the more detailled view on changes, where we are referring to old naming and the new replacement, we use following notation in this document:
- Old terminology is formatted in bold-italic
- New terminology is formatted in bold.
Global Naming Changes
We take into account that the words "whitelist" and "blacklist" can be perceived as offensive and hurtful words. It has never been our intention to imply discriminatory or other-valued meanings in the use of these terminologies beyond the purely technical interpretation of including or excluding a subset of parameters from larger sets. We have changed our terminology to "allowlist" and "blocklist" to reflect the worldwide discussion of these terms over the past two years, or are now using descriptive namings for an inclusion lists such as in the ActionCallbackSelection.
In an eSignAnyWhere Envelope, we are now using the term "activity" instead of "recipient". The term "recipient" didn't work gracefully for situations where the "recipient" was just a background service activity such as an "automatic signing" or "automatic sealing" activity. We follow the terminology borrowed from the Business Process Modelling Notation (BPMN), as we consider an envelope as being processed in a signature workflow.
To emphasize the global aspect of the solution, we have adapted terminologies so that they are suitable for worldwide use. One example is the division of the name into the firstName and lastName, which is not common in every region of the world. Based on common recommendations, we are now using the terms givenName and surname.
Envelope Status Enumeration
The envelope status values have been reviewed, and status values are now aligned with the status value shown in the WebUI.
API v1-v5 | API v6 | |||
---|---|---|---|---|
Status Values envelope/get | Status Value envelope/find | Status Value envelope/get | Status Value envelope/find | Comment |
Started | Active | Active | Active | |
InProgress | ||||
ActionRequired | ActionRequired | ActionRequired is a status interpretation (derived from "Active") in context of the current user who calls envelope/find. | ||
WaitingForOthers | WaitingForOthers | WaitingForOthers is a status interpretation (derived from "Active") in context of the current user who calls envelope/find. | ||
Completed | Completed | Completed | Completed | |
CompletedWithWarnings | ||||
Canceled | Canceled | Canceled | Canceled | |
Rejected | Rejected | Rejected | Rejected | |
(ExpiringSoon) | ExpiringSoon | Active | ExpiringSoon | ExpiringSoon was defined in the v5 model of envelope/get, but actually not used. |
Expired | Expired | Expired | Expired | |
BulkCompleted | (n/a) | (n/a) | (n/a) | Separated to API methods in "/envelopebulk" route |
BulkPartlyCompleted | (n/a) | (n/a) | (n/a) | Separated to API methods in "/envelopebulk" route |
Draft | Draft | (n/a) | (n/a) | Separated to API methods in "/draft" route |
Template | Template | (n/a) | (n/a) | Separated to API methods in "/template" route |
Disposable Certificate Enumeration
Please see the following changes referring to the identification types and the document types for disposable certificate:
Identification type
API v5 | API v6 |
---|---|
None | None |
FOREIGN_TAX_CODE | ForeignTaxCode |
PERSONAL_NUMBER | PersonalNumber |
PASSPORT | Passport |
NATIONAL_IDENTITY_CARD | NationalIdentityCard |
ITALIAN_TAX_CODE | ItalianTaxCode |
NO_SERIAL_NUMBER | NoSerialNumber |
DRIVING_LICENSE | DrivingLicense |
RESIDENCE_PERMIT | ResidencePermit |
RESIDENCE_PERMIT_TEMP | TemporaryResidencePermit |
EMBASSY_DOCUMENT | EmbassyDocument |
Document type
API v5 | API v6 |
---|---|
CI | IdentityCard |
PA | DriverLicense |
PASS | Passport |
RP | ResidencePermit |
CIE | NationalElectronicIdentityCard |
RT | TemporaryResidencePermit |
DC | EmbassyDocument |
PD* | |
ID* | |
PN* | |
AT* |
*Not supported with api v6 and UI - but still available with older api versions than api v6.
Complexity Reduction
Structural Changes for Bulk Sending via API & for managing parent envelopes resulting from bulk-sending
...
The functionality of both methods
POST /v5/envelope/:envelopeId/restart
- GET /v5/envelope/:envelopeId/restart/{expirationInDays} (where the verb GET was misleading)
...
Instead of POST /v4/team, the method which allows changing the entire team configuration of an organization is now called POST v6/team/replace. The additional path component allows to introduce other POST methods on team level in the future.
Templates
The method GET /v5/envelope/{templateId}/copyFromTemplate was replaced by 2 methods: First of all use POST /v6/template/createdraft to create a new draft based on the template, and in a 2nd step use POST /v6/draft/send to make the draft an envelope.
User Management
Just a small renaming applied for /v5/userById/{userId}. Its new name is GET /v6/user/{userId}.
The functionality of GET /v5/userByEmail/{email} (which is similar to the old but deprecated GET /v5/user/{email} ) is now covered by the POST /v6/user/find methodthe entire team configuration of an organization is now called POST v6/team/replace. The additional path component allows to introduce other POST methods on team level in the future.
Templates
The method GET /v5/envelope/{templateId}/copyFromTemplate was replaced by 2 methods: First of all use POST /v6/template/createdraft to create a new draft based on the template, and in a 2nd step use POST /v6/draft/send to make the draft an envelope.
System
To check the eSignAnyWhere version, also often used to perform a system availability check, the method GET /v4/version was moved into a group of "system" related methods and therefore changed to GET /v6/system/version
...
Instead of the API v5 "DocumentOptions" in the Steps element, document visibility is now managed in the "VisibilityOptions" of the Activity. The structure is very similar, but as mentioned above, the DocumentNumber now references to a defined number which is set in the Documents array instead of an implicit numbering based on array position.
Overview
Comparison
Figure | Detailed description |
---|---|
|
...