Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.

...

Please keep using API v5 if you are using one of this features listed below:

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.

For new customers, and also for new projects at existing customers, we strongly recommend to start with REST API v6.

Info
titleCurrently Non-Supported Functionality


  • The mode SequenceOnlyRequiredTasks was removed from APIv6. A sender can still decide between NoSequenceEnforced and SequenceEnforced, and based on our experience SequenceEnforced can be used for those scenarios where SequenceOnlyRequiredTasks was used in some cases. We did this change to reduce complexity for integrators, and may decide in a future release if SequenceOnlyRequiredTasks needs to be added again.
  • Support for Swisscom Automatic Signatures / Swisscom Organization Certificates will be added in a later release.
  • Support for modifying SMS-OTP message (language and content) will be added in a later release.
  • Support for document links to bookmarks (i.e. within one document, or from one document to another). Only hyperlink areas to WWW resources are supported.
  • Some functionality formerly possible to be set via eSAW API in undocumented data structures, just interpreted in SIGNificant app, Kiosk etc but not available in SAW Viewer, are not contained in APIv6 models. Please check for such functionality, in case you used it before, already before starting to migrate to APIv6. This functionality will be added to APIv6 in a later product version, if it is considered as important product functionality. In case such functionality will be added to APIv6, then it will be available also in eSAW envelope creator and SAW Viewer.
  • User Management - there is currently no /user/* endpoint in API v6. For user management, keep using API v5, until we add new user management methods to API v6 in a future product version
  • OverrideHolderInCaseOfMismatch  was removed from APIv6
  • GeneralPolicies were removed from APIv6. Only the general policies via UI can be changed. All others are set as default (Envelope structure)
  • ViewerPreferences were removed from APIv6. Only configurable in the customization.zip:
    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:

    • Draft/GetElements
    • Envelope/Get
    • Envelope/GetConfiguration
    • Envelope/GetElements
    • Template/GetElements


    Info
    titleCurrently Non-Supported Functionality

    Please keep using API v5 if you are using one of this features listed below:

    • The mode SequenceOnlyRequiredTasks was removed from APIv6. A sender can still decide between NoSequenceEnforced and SequenceEnforced, and based on our experience SequenceEnforced can be used for those scenarios where SequenceOnlyRequiredTasks was used in some cases. We did this change to reduce complexity for integrators, and may decide in a future release if SequenceOnlyRequiredTasks needs to be added again.
    • Support for Swisscom Automatic Signatures / Swisscom Organization Certificates will be added in a later release.
    • Support for document links to bookmarks (i.e. within one document, or from one document to another). Only hyperlink areas to WWW resources are supported.
    • Some functionality formerly possible to be set via eSAW API in undocumented data structures, e.g. parameters just interpreted in SIGNificant app, Kiosk etc but not available in SAW Viewer, are not contained in APIv6 models. Please check for such functionality, in case you used it before, already before starting to migrate to APIv6. This functionality will be added to APIv6 in a later product version, if it is considered as important product functionality. In case such functionality will be added to APIv6, then it will be available also in eSAW envelope creator and SAW Viewer.
    • User Management - there is currently no /user/* endpoint in API v6. For user management, keep using API v5, until we add new user management methods to API v6 in a future product version
    • OverrideHolderInCaseOfMismatch  was removed from APIv6
    • ViewerPreferences were removed from APIv6. Only configurable in the customization.zip: SignAnyWhere Viewer - Customization#ViewerPreferences 
    • SignatureRenderingLayout was removed from APIv6. It is therefore not possible to add the layout to the signature field.

    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

    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.

    ...

    • Signing certification via thumbprint was removed from APIv6. But please note that it is possible to add a custom sealing certificate via UI as well as via API - Custom Sealing Certificate
    • The parameter "AttachSignedDocumentsToEnvelopeLog" was removed from APIv6 and therefore it is not possible to add signed documents to audit trail.

    Already implemented:

    See also eSignAnyWhere Release News for more detail.

    • GeneralPolicies were added to the UI as well as for the API v6 with version 23.49
    • Support for modifying SMS-OTP message (language and content) was added with version 23.49


    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


    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-v5API v6
     Status Values
    envelope/get
    Status Value
    envelope/find
    Status Value
    envelope/get
    Status Value
    envelope/find
    Comment
    StartedActiveActive

    Active
    InProgress


    ActionRequiredActionRequiredActionRequired is a status interpretation (derived from "Active") in context of the current user who calls envelope/find.
    WaitingForOthersWaitingForOthersWaitingForOthers is a status interpretation (derived from "Active") in context of the current user who calls envelope/find.
    CompletedCompletedCompletedCompleted
    CompletedWithWarnings
    CanceledCanceledCanceledCanceled
    RejectedRejectedRejectedRejected
    (ExpiringSoon)ExpiringSoonActiveExpiringSoonExpiringSoon was defined in the v5 model of envelope/get, but actually not used.
    ExpiredExpiredExpiredExpired
    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
    DraftDraft(n/a)(n/a)Separated to API methods in "/draft" route
    TemplateTemplate(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 v5API v6
    NoneNone
    FOREIGN_TAX_CODEForeignTaxCode
    PERSONAL_NUMBER

    PersonalNumber

    PASSPORTPassport
    NATIONAL_IDENTITY_CARDNationalIdentityCard
    ITALIAN_TAX_CODEItalianTaxCode
    NO_SERIAL_NUMBERNoSerialNumber
    DRIVING_LICENSEDrivingLicense
    RESIDENCE_PERMITResidencePermit
    RESIDENCE_PERMIT_TEMPTemporaryResidencePermit
    EMBASSY_DOCUMENTEmbassyDocument

    Document type

    API v5API v6
    CIIdentityCard
    PADriverLicense
    PASS

    Passport

    RPResidencePermit
    CIENationalElectronicIdentityCard
    RTTemporaryResidencePermit
    DCEmbassyDocument
    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

    Image RemovedEnvelope StructureImage Added

    Comparison

    FigureDetailed description

    Image RemovedComparisonImage Added

    • Reminders are now configurable in the section "ReminderConfiguration" instead of directly in the envelope description
      • Additionally following reminder configurations can be set:
        • Enabled
        • FirstReminderInDays
        • ReminderResendIntervalInDays
        • BeforeExpirationInDays
    • Expiration can be be configured in the section "ExpirationConfiguration" instead of directly in the envelope description
      • Additionally following expiration settings are available:
        • ExpirationInSecondsAfterSending
        • ExpirationDate
    • Callback configurations can be set in the "CallbackConfiguration" section
      • Please note the following:
        • All available callbacks can be disabled or enabled
    • Email configurations can be found in the section "EmailConfiguration"
    • The section "Steps" which included the workstep configuration, authentication methods etc. was renamed to "Activities"

    ...