2016 REST v6 Release Notes

Last update: Jun 13, 2024.

data-slots=header, text
Tip
For non-developer product feature and UI changes, refer to this link

The 2016 (to present) REST v6 Acrobat Sign APIs release introduces numerous enhancements and features. To help developers migrate from older API versions to Version 6, we have tabulated the v6 APIs against their closest counterparts in previous versions in the API Change Log. In the change log, we have documented enhancements, features, and any changes from the prior version. In addition to the information compiled here, refer to the Acrobat Sign API Reference for a quick reference for the Acrobat Sign APIs. This page lists all our APIs in a easily discoverable format, and lets you try them out without having to write any code!

data-slots=header, text
Note
v5 and SOAP-based apps will continue to function, but all versions prior to v6 are deprecated.

REST API Enhancements

Pagination Support

Existing Acrobat Sign APIs return the entire list of resources (agreements, widgets, or library documents) that a user has in a GET call. For some users with a large number of transactions this resource list becomes too big for consumption. The v6 APIs have introduced pagination support to all these resources with a client-configurable page size. This will be especially useful to our mobile clients and integrations who are constrained by their consumption capacity. This sample shows pagination in a request and response:

Sample Request

GET https://api.na1.echosign.com:443/api/rest/v6/agreements?pageSize=50

Sample Response

{
    "userAgreementList": [{
        "displayDate": "2017-04-17T06:07:19-07:00",
        "displayUserSetInfos": [
            {
                "displayUserSetMemberInfos": [
                    {
                        "company": "Adobe",
                        "email": "adobe.sign.user@adobe.com",
                        "fullName": "AdobeSign User"
                    }
                ]
            }
        ],
        "esign": true,
        "agreementId": "3AAABLblqZhDqIcUs4nFgivebIUdzuZyBrjO_VP_hHDhkrGhXxKuQ5Hi7C07vRbNzxP9TdTdRHzHdQLDsPJrjfXEuKe7jjEAl",
        "latestVersionId": "3AAABLblqZhACieamyoCl7qNWZTaU3WaoY3a9BL7-09sosH88HyRFfGmYc91jpQk-LXLVGlgEudioxgPlCprAScifamX16-QD",
        "name": "SampleAgreement",
        "status": "SIGNED"
    },
        {...},
        .
        .
        .],
    "page": {
        "nextCursor": "qJXXj2UAUX1X9rTSqoUOlkhsdo*"
    }
}

The subsequent GET /resources calls would just need to add nextCursor as query param in the URL for fetching the next set of resources.

Sample Request

GET https://api.na1.echosign.com:443/api/rest/v6/agreements?pageSize=50&cursor=qJXXj2UAUX1X9rTSqoUOUOlkhsdo*

Constant IDs

Our Partners and Integrators have requested that the identifiers remain constant in the lifetime of a resource. This is because they tend to store these resource IDs and do a match later, which can break with ID changes. The v6 APIs address this by ensuring that IDs stay constant through time and across all API callers for a given resource. This will enable clients to build their own metadata associated with an Acrobat Sign resource ID.

Identifiers are forward-compatible: older identifiers will continue working in v6 Sign APIs. However, new identifiers generated through v6 APIs will only be compatible with Acrobat Sign v6 or any higher version.

ETag support

Polling on a resource is a common operation; for instance, in the case of agreements, where a client application is attempting to check the latest status. The v6 REST APIs significantly optimize this by adding support for an ETag, which will only fetch the full body response if the resource has been modified. This saves the client from loading the same response as well as its unnecessary parsing.

In addition, this also helps to resolve conflicts in the case of concurrent update operations by only allowing the updates with the ETag of the latest version of the resource in their request header (If-match). This example explains the functioning of ETags in detail:

Sample GET Operation (ETag in Request Header)

URI : GET https://api.na1.echosign.com:443/api/rest/v6/agreements/CBJCHBCAABAAQonMXhG-V6w-rheRViZNFGxmCgEEf3k0

Headers : Authorization: Bearer <access-token>
          Accept: */*
          Accept-Encoding: gzip, deflate, br
          Accept-Language: en-US,en
          If-None-Match: CBJCHBCAABAA-mdO9PI7WFmHNkXFUIEYIOYGrnM3vVK_

The above request will result in a 304(Resource Not Modified) HTTP response if the ETag provided in the If-None-Match header represents the latest version of the resource. Otherwise, the response body will include the queried resource in the usual format, along with an ETag representing the fetched version of the resource in the response header.

The response header below represents the second scenario, in which the resource has been modified prior to the request (notice the ETag as one of the headers).

Response Header

Date: Mon, 12 Feb 2018 09:45:24 GMT
Server: Apache
ETag: D27e5290dc3a748068e42a59f4dfc6f6b1d5eaba1
Content-Length: 661
  ...
Keep-Alive: timeout=15, max=200
Connection: Keep-Alive
Content-Type: application/json;charset=UTF-8

Update or delete operations will have a similar workflow. The clients are required to provide the ETag of the resource version that they want to update in the If-Match request header. The update will only be successful if the ETag in the request header represents the latest version of the resource on the server. Otherwise, this will result in a 412 (Precondition Failed) response. In this example, we are trying to update the status of the agreement fetched above:

Sample PUT Operation (ETag In Request Header)

URI : PUT  https://api.na1.echosign.com:443/api/rest/v6/agreements/CBJCHBCAABAAQonMXhG-V6w-rheRViZNFGxmCgEEf3k0/status

Headers : Authorization: Bearer <access-token>
          Accept: */*
          Accept-Encoding: gzip, deflate, br
          Accept-Language: en-US,en
          If-Match: CBJCHBCAABAA-mdO9PI7WFmHNkXFUIEYIOYGrnM3vVK_

The response below indicates that we are trying to update an older version (observe the ETag in the request) of this resource. Along with this response body, the response header contains the HTTP status code 412(Precondition Failed).

Sample PUT Operation (ETag In Request Header)

{
  "code": "RESOURCE_MODIFIED",
  "message": "Resource is already modified with newer version"
}

The ETag value required to be passed in any PUT or DELETE API can be obtained from a corresponding GET operation on the same entity. The table below mentions these modification (PUT or DELETE) APIs along with the corresponding GET APIs that provides the ETag value for these modification requests.

Update/Deletion API
Corresponding GET endpoint
PUT /agreements/{agreementId}
GET /agreements/{agreementId}
POST /agreements/{agreementId}/formFields
GET /agreements/{agreementId}/formFields
PUT /agreements/{agreementId}/formFields
GET /agreements/{agreementId}/formFields
PUT /agreements/{agreementId}/formFields/mergeInfo
GET /agreements/{agreementId}/formFields/mergeInfo
PUT /agreements/{agreementId}/members/participantSets/{participantSetId}
GET /agreements/{agreementId}/members/participantSets/{participantSetId}
PUT /agreements/{agreementId}/state
GET /agreements/{agreementId}
DELETE /agreements/{agreementId}/documents
GET /agreements/{agreementId}/documents
PUT /libraryDocuments/{libraryDocumentId}
GET /libraryDocuments/{libraryDocumentId}
PUT /libraryDocuments/{libraryDocumentId}/state
GET /libraryDocuments/{libraryDocumentId}
PUT /widgets/{widgetId}
GET /widgets/{widgetId}
PUT /widgets/{widgetId}/state
GET /widgets/{widgetId}
PUT /megaSigns/{megaSignId}/state
GET /megaSigns/{megaSignId}
DELETE /users/{userId}/signatures/{signatureId}
GET /users/{userId}/signatures/{signatureId}
PUT /webhooks/{webhookId}
GET /webhooks/{webhookId}
PUT /webhooks/{webhookId}/state
GET /webhooks/{webhookId}
DELETE /webhooks/{webhookId}
GET /webhooks/{webhookId}

GET, PUT, POST consistency

In building the Acrobat Sign v6 APIs, we have enabled more simplicity in the design of client applications by creating consistency across GET, POST, and PUT operations in each API, thereby enabling clients to reuse the same model across these APIs. For reference see the agreement model in the (POST|PUT|GET) /agreements API.

Performance improvements

The creation and update APIs are now asynchronous, which significantly improves their response time. This frees clients from waiting on these operations and they can move on to next steps in their workflow.

Clients should now poll on the status of the newly created resource before certain sub-resource operations, such as documents in the case of agreements. For example, in case of agreement creation, the initial status is DOCUMENTS_NOT_YET_PROCESSED, which is updated to the intended status such as OUT_FOR_SIGNATURE once all the background tasks are successfully completed.

Asynchronous API’s

One of the significant change in v6 API’s has been to make resource intensive operations asynchronous to a larger extent. This reduces waiting/blocking time for clients in most of the scenarios. For example, in v5, workflows such as sending an agreement, creating megasign or a widgets etc. has significantly larger response time than v6. In v6, the API execution time has been improved by making the time intensive processes asynchronous and executing them in the background. Acrobat Sign provides status/error codes in the GET api’s for clients to know the status of these background processes and decide on their next steps accordingly. The clients can poll on these GET api’s or move on to new resource creation/workflow depending on their use case.

Refer the lists below all the asynchronous api’s and their corresponding GET api’s which clients can poll on till polling condition holds true.

Asynchronous API: POST /agreements

GET API To Poll: GET /agreements/{agreementId}

GET Response Body:

{ "status": ""}

GET HTTP Status: 200

Polling Condition On GET: status == DOCUMENTS_NOT_YET_PROCESSED

Asynchronous API: POST /agreements

GET API To Poll: GET /agreements/{agreementId}/signingUrls

GET Response Body:

{
  "code": "AGREEMENT_NOT_SIGNABLE", 
  "message": "The agreement is not currently waiting for anyone to sign it."
}

GET HTTP Status: 404

Polling Condition On GET: status == DOCUMENTS_NOT_YET_PROCESSED

Asynchronous API: PUT /agreements/{agreementId}/state

GET API To Poll: GET /agreements/{agreementId}

GET Response Body:

{ "status": ""}

GET HTTP Status: 200

Polling Condition On GET: status != IN_PROCESS

Asynchronous API: POST /widgets

GET API To Poll: GET /widgets/{widgetId}

GET Response Body:

{ "status": ""}

GET HTTP Status: 200

Polling Condition On GET: status == DOCUMENTS_NOT_YET_PROCESSED

Asynchronous API: PUT /widgets/{widgetId}/state

GET API To Poll:: GET /widgets/{widgetId}

GET Response Body:

{ "status": ""}

GET HTTP Status: 200

Polling Condition On GET: status == DOCUMENTS_NOT_YET_PROCESSED

Asynchronous API: POST /megaSigns

GET API To Poll: GET /megaSigns/{megaSignId}/agreements

GET Response Body:

{
  "megaSignList": "[ … {}, …]",
  "page": "{ ... }"
}

GET HTTP Status: 200

Polling condition on GET: megaSignList.size() != Requested Number of Child Agreements

Hosted Signing

One of the common workflows used by Acrobat Sign clients is to create an agreement and get the corresponding signing url. Since, the agreement creation is asynchronous the clients needs to poll on GET /agreements/{agreementId}/signingUrls for fetching signing url. The sample code below implements this use case.

Polling For Signing Url

var APIConfig = {
    "apiBaseUrl": "<base-uri-for-client>",
    "accessToken": "Bearer <valid-access-token>",
    "transientDocumentId": "<valid-transient-document-id>"
}

function getSigningUrlForAsyncAgreementCreation() {

    var getSigningUrl = function(agreementId) {
        var apiUrl = APIConfig.apiBaseUrl + "/api/rest/v6/agreements/" + agreementId + "/signingUrls";
        jQuery.ajax({
            url: apiUrl,
            type: "GET",
            beforeSend: function(xhr) {
                xhr.setRequestHeader('Authorization', APIConfig.accessToken);
            },
            success: function(result, status, request) {
                // API execution is successful, the signing url is present in result
            },
            error: function(result, status, request) {
                // If error occurs with HTTP status 404 and error code is AGREEMENT_NOT_SIGNABLE the background processes in agreement creation has not completed.
                // Re attempt API after polling time period.
                if(status === 404 && result.code == "AGREEMENT_NOT_SIGNABLE") {
                    window.setTimeout(function() {
                        getSigningUrl(agreementId);
                    }, 500);
                }
                // In all other cases, there is a genuine failure in retrieving signing url. Parse error code and message for more detail.
            }
        });
    }

    var createAgreementAsynchronously = function() {

        var agreementCreationRequest = {
            "fileInfos": [{
                "transientDocumentId": APIConfig.transientDocumentId
            }],
            "name": "Asynchronous Agreement",
            "participantSetsInfo": [{
                "memberInfos": [{
                    "email": "<signer-email>"
                }],
                "order": 1,
                "role": "SIGNER"
            }],
            "signatureType": "ESIGN",
            "state": "IN_PROCESS"
        }

        agreementCreationRequest = JSON.stringify(agreementCreationRequest);

        jQuery.ajax({
            url: APIConfig.apiBaseUrl + "/api/rest/v6/agreements",
            type: "POST",
            beforeSend: function(xhr) {
                xhr.setRequestHeader('Authorization', APIConfig.accessToken);

            },
            contentType: "application/json",
            data: agreementCreationRequest,
            success: function(result, status, request) {
                // Call GET /agreements/{agreementId}/signingUrls api after 500ms
                window.setTimeout(function() {
                    getSigningUrl(result.id);
                }, 500);
            }
        });
    }

    createAgreementAsynchronously();
}

getSigningUrlForAsyncAgreementCreation();

Simple Agreement Creation

Some operations on a newly created agreement like downloading agreement document are not allowed until all the background processes in creating agreement is completed. The GET /agreements/{agreementId} API provides the status of the agreement on which the client can poll before performing such operations. Refer the sample code below for more details.

Polling For Signing URL

var APIConfig = {
    "apiBaseUrl": "<base-uri-for-client>",
    "accessToken": "Bearer <valid-access-token>",
    "transientDocumentId": "<valid-transient-document-id>"
}

function getAgreementInfoForAsyncAgreementCreation() {
    var getAgreementInfo = function(agreementId) {
        var apiUrl = APIConfig.apiBaseUrl + "/api/rest/v6/agreements/" + agreementId;
        jQuery.ajax({
            url: apiUrl,
            type: "GET",
            beforeSend: function(xhr) {
                xhr.setRequestHeader('Authorization', APIConfig.accessToken);
            },
            success: function(result, status, request) {
                /**
                Parse API result for agreement status. If the agreement status is DOCUMENTS_NOT_YET_PROCESSED then, all the background processed in agreement creation is not complete yet.
                */
                if(result.status == "DOCUMENTS_NOT_YET_PROCESSED") {
                    window.setTimeout(function() {
                        getAgreementInfo(agreementId);
                    }, 500);
                }
                else {
                    // All the background tasks in agreement creation is completed.
                }
            },
            error: function() {
                // API execution failed.
            }
        });
    }

    var createAgreementAsynchronously = function() {
        var agreementCreationRequest = {
            "fileInfos": [{
                "transientDocumentId": APIConfig.transientDocumentId
            }],
            "name": "Asynchronous Agreement",
            "participantSetsInfo": [{
                "memberInfos": [{
                    "email": "<signer-email>"
                }],
                "order": 1,
                "role": "SIGNER"
            }],
            "signatureType": "ESIGN",
            "state": "IN_PROCESS"
        }

        agreementCreationRequest = JSON.stringify(agreementCreationRequest);

        jQuery.ajax({
            url: APIConfig.apiBaseUrl + "/api/rest/v6/agreements",
            type: "POST",
            beforeSend: function(xhr) {
                xhr.setRequestHeader('Authorization', APIConfig.accessToken);

            },
            contentType: "application/json",
            data: agreementCreationRequest,
            success: function(result, status, request) {
                // Call GET /agreements/{agreementId} api after 500ms
                window.setTimeout(function() {
                    getAgreementInfo(result.id);
                }, 500);
            }
        });
    }

    createAgreementAsynchronously();
}
 getAgreementInfoForAsyncAgreementCreation();

Polling Frequency

The polling frequency can vary from clients to clients depending on their use case. Clients using large files in agreement creation are expected to keep time between subsequent polling calls more compared to the scenarios where the agreement files uploaded are small. The table below can be referred as a general guideline by clients to determine their polling frequency.

File Size
Polling Time Period
< 100KB
500 ms
> 100KB and < 2 MB
1s
> 2MB
2s

Authorization header

The Acrobat Sign API accepts an authorization token in the access-token header; however, from v6 onwards we will be migrating to the standard Authorization header. The Authorization header will hold the user’s authorization token in this format:

Authorization: Bearer <access-token>

Clients can continue using their older access token, but in the authorization header using this format.

New Features

Agreement sharing

This feature enables users associated with an agreement to share the agreement at any point of time through Acrobat Sign APIs. This feature brings the agreement sharing capability in Acrobat Sign web app and Acrobat Sign APIs at par. The POST /agreements/{agreementId}/members/share API exposes the agreement sharing feature.

Authoring APIs

The authoring APIs are a set of APIs that allow a user to author the documents of an agreement before sending them out. The authoring operation here refers to creating, editing or placing form fields along with their configurations (assignee, conditions, data type, and more) in the agreement documents. The v6 APIs have these capabilities and a client can now leverage these APIs to create their own agreement authoring experience. The table below lists the APIs in this set along with the functionality that they provide.

Authoring API
Functionality
POST /agreements/{agreementId}/formFields
Adds forms to an agreement from the given template. The response would contain the information of all the newly added form fields.
GET /agreements/{agreementId}/formFields
Retrieves all the form fields present in an agreement.
PUT /agreements/{agreementId}/formFields
Updates and configures (e.g., location, default value, background, etc.) the present form fields in the agreement documents.

Document visibility

The new document visibility feature allows senders to control the exposure of agreement documents for specific participants through APIs. This empowers clients to hide from participants those parts of agreements that are irrelevant to them. The agreement creation request below hides the second document of the agreement from the first participant.

Document Visibility Example

{
    "fileInfos": [{
            "transientDocumentId": "<first-transient-document>"
        },
        {
            "transientDocumentId": "<second-transient-document>"
        }
    ],
    "name": "Custom Agreement",
    "participantSetsInfo": [{
            "memberInfos": [{
                "email": "firstSigner@adobe.com"
            }],
            "name": "First Signer",
            "visiblePages": [
                "0", "1"
            ],
            "order": 1,
            "role": "SIGNER"
        },
        {
            "memberInfos": [{
                "email": "secondSigner@adobe.com"
            }],
            "name": "Second Signer",
            "visiblePages": [
                "0", "1", "2"
            ],
            "role": "SIGNER",
            "order": "2"
        }
    ],
    "signatureType": "ESIGN",
    "state": "IN_PROCESS"
}

Draft

The v6 APIs provides the capability for an incremental creation of a resource by introducing the concept of “DRAFT”. The incremental creation of any resource is really helpful, especially when it is constituted of many complex components. Draft is a temporary or primitive stage of the final intended resource that can be updated in steps to create the final resource.

This example illustrates a stepwise creation of an agreement:

Step 1: POST /agreements to create an initial draft

{
    "fileInfos": [{
        "transientDocumentId": "<a-valid-transient-resource-id>"
    }],
    "name": "Draft",
    "signatureType": "ESIGN",
    "state": "DRAFT"
}

The step above creates a draft. Notice that we have not assigned any participant to this agreement yet.

Step 2: PUT /agreements/{agreementId} to complete this draft

{
    "fileInfos": [{
        "transientDocumentId": "<a-valid-transient-resource-id>"
    }],
    "name": "Agreement",
    "participantSetsInfo": [{
        "memberInfos": [{
            "email": "signer@adobe.com"
        }],
        "role": "SIGNER",
        "order": "1"
    }],
    "signatureType": "ESIGN",
    "state": "DRAFT"
}

Notice the addition of a participant and an update in the name field. This step can be iterated any number of times until we have all the data needed to create the agreement.

The next step finalizes the draft into an agreement.

Step 3: PUT /agreements/{agreementId}/state to complete this draft

{
  "state": "IN_PROCESS"
}

Notes management

The v6 Acrobat Sign APIs has endpoints to manage notes in an agreement. Clients can add notes to an agreement and retrieve them using these API’s. The table below lists all these APIs and their operation.

Notes API
Functionality
GET /agreements/{agreementId}/me/note
Retrieves the latest note on an agreement for the user.
PUT /agreements/{agreementId}/me/note
Updates the latest note associated with an agreement.
GET /libraryDocuments/{libraryDocumentId}/me/note
Retrieves the latest note on a library template for the user.
PUT /libraryDocuments/{libraryDocumentId}/me/note
Updates the latest note of a library document for the API user.
GET /widgets/{widgetId}/me/note
Retrieves the latest note of a widget for the API user.
PUT /widgets/{widgetId}/me/note
Updates the latest note of a widget for the API user.

Reminders

The reminder APIs in v6 enable clients to create reminders for any participant at any time before their action on the agreement. The capability to list all reminders on an agreement is also availaible in v6. These capabilities will significantly improve clients’ experience of handling reminders for agreements. The table below lists all the endpoints in this set:

Authoring API
Functionality
POST /agreements/{agreementId}/reminders
Sets reminders for a list of participants.
GET /agreements/{agreementId}/reminders
Retrieves all the reminders set on an agreement.

Resource views

There are a number of views associated with a resource. For example, an agreement may have an authoring view, agreement documents view, signing page view, or a manage page view with the agreement selected. The availaibility of all these views depends on both the state of the resource and also the relationship of the user with the resource. To access and customize these resource views, the v6 Acrobat Sign API includes this endpoint to list all such views in their desired configuration:

Sample request/response:

Request - POST /agreements/{agreementId}/views

{
    "names": "DOCUMENT",
    "commonViewConfiguration": {
        "autoLoginUser": false,
        "noChrome": true,
        "locale": "en"
    }
}

Response - POST /agreements/{agreementId}/views

[
    {
        "name": "DOCUMENT",
        "url": "https://secure.echosign.com/account/agreements?aid=CBJCHBCAABAA0RVdUCYoR5kU9vh4-b4qHhYW_1r10hKw&pid=CBJCHBCAABAAH-F0jK3mHa53G7gr0SiftgdqE-jjwNVq&noChrome=true",
        "embeddedCode": "<script type='text/javascript' language='JavaScript' src='https://secure.echosign.com/embed/account/agreements?aid=CBJCHBCAABAA0RVdUCYoR5kU9vh4-b4qHhYW_1r10hKw&pid=CBJCHBCAABAAH-F0jK3mHa53G7gr0SiftgdqE-jjwNVq&noChrome=true'></script>"
    }
]

Resource visibility

The agreement visibility feature enables a client to control which resources are included in the response body of the enumeration/reource listing APIs like GET /agreements. This helps users to hide all resources from their view that they don’t want to focus on. The PUT /resource/{resourceId}/me/visibility API exposes this functionality, wherein a resource can be an agreement, widget, template or megasign in Acrobat Sign.

Suppress email

The suppress email feature, in a broader sense, enables us to specify which emails participants receive while sending out the agreement. This feature is exposed through our agreement creation API, POST /agreements. Here is a sample request that allows only agreement initiation emails to be sent to the participants:

POST /agreements with email configuration

{
    "fileInfos": [{
        "transientDocumentId": "<a-valid-transient-resource-id>"
    }],

    "name": "Sample Agreement with email config",

    "participantSetsInfo": [{
        "memberInfos": [{
            "email": "signer@adobe.com"
        }],
        "role": "SIGNER",
        "order": "1"
    }],

    "emailOption": {
        "sendTarget": {
            "initEmails": "ALL",
            "inFlightEmails": "NONE",
            "completionEmails": "NONE"
        }
    },

    "signatureType": "ESIGN",
    "status": "IN_PROCESS"
}

Webhooks

Callbacks in Acrobat Sign are now handled through webhooks. A webhook is essentially a web service designed to listen for and respond to POST requests. When you create a webhook and register it with Acrobat Sign, Acrobat Sign’s Webhook Subscription Service will notify your webhook of any relevant event by sending a POST request via HTTPS containing a JSON object with the details of the event. Your webhook then passes those details on to your application for handling. The service operates on a push model: your app doesn’t have to poll for events at all—those events are automatically sent to your webhook as they happen, with virtually no delay, so your app is instantaneously, automatically updated with any changes.

API Change Log

Acrobat Sign version 6 includes many changes to the API model.

New APIs

GET /agreements/{agreementId}/me/note

GET /agreements/{agreementId}/members

GET /agreements/{agreementId}/members/participantSets/{participantSetId}

GET /agreements/{agreementId}/reminders

GET /libraryDocuments/{libraryDocumentId}/me/note

GET /megaSigns/{megaSignId}/childAgreementsInfo/{childAgreementsInfoFileId}

GET /megaSigns/{megaSignId}/events

GET /users/{userId}/groups

POST /agreements/{agreementId}/formFields

POST /agreements/{agreementId}/members/share

POST /agreements/{agreementId}/views

POST /libraryDocuments/{libraryDocumentId}/views

POST /megaSigns/{megaSignId}/views

POST /users/{userId}/views

POST /widgets/{widgetId}/views

PUT /agreements/{agreementId}

PUT /agreements/{agreementId}/formFields

PUT /agreements/{agreementId}/me/visibility

PUT /agreements/{agreementId}/members/participantSets/{participantSetId}

  1. Allows replacing a specific participant in the set instead of choosing between either replacing all participants or no one.
  2. Allows sender to replace participants who are not the current signer as well.

PUT /agreements/{agreementId}/state

PUT /libraryDocuments/{libraryDocumentId}

PUT /libraryDocuments/{libraryDocumentId}/me/visibility

PUT /libraryDocuments/{libraryDocumentId}/state

PUT /megaSigns/{megaSignId}/state

PUT /users/{userId}/groups

PUT /widgets/{widgetId}/state

Updated APIs

GET /baseUris

GET /agreements

GET /agreements/{agreementId}

Includes audit reports for draft creation.

Uses participantId instead of participantEmail as a filter.

GET /agreements/{agreementId}/documents

GET /agreements/{agreementId}/documents/imageUrls

GET /agreements/{agreementId}/documents/{documentId}/imageUrls

GET /libraryDocuments

GET /libraryDocuments/{libraryDocumentId}

GET /libraryDocuments/{libraryDocumentId}/documents

A base64 encoding option is available for the generated PDF.

Minor restructuring in the response.

GET /users

GET /users/{userId}

The model is consistent with the POST and PUT operations.

POST /agreements

POST /agreements/{agreementId}/members/participantSets/{participantSetId}/delegatedParticipantSets

POST /agreements/{agreementId}/reminders

Was: POST /reminders

POST /libraryDocuments

POST /transientDocuments

POST /widgets

Enables a participant to reject an agreement.

PUT /agreements/{agreementId}/state

Was: PUT /agreements/{agreementId}/status

PUT /users/{userId} Updating the group of the user is now handled via the PUT /users/{userId}/groups API.

PUT /users/{userId}/state This is functionally the same as before, but the API structure is revamped to make it consistent with other state transition APIs in v6.

Removed APIs

DELETE /agreements/{agreementId}

GET /agreements/{agreementId}/documents/{documentId}/url

© Copyright 2022, Adobe Inc.. Last update: Jun 13, 2025.