Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,21 @@ All notable changes to this project will be documented in this file.

See [DocuSign Support Center](https://support.docusign.com/en/releasenotes/) for Product Release Notes.

## [v7.0.0rc1] - eSignature API v2.1-26.1.02.00 - 2026-05-05
## [v7.0.0rc1] - eSignature API v2.1-26.1.02.00 - 2026-05-04
### Removed
- Removed the deprecated `listRecipientNamesByEmail` endpoint (`/v2.1/accounts/{accountId}/recipient_names`).

### Added
- **Accounts API**: Template completion-rate methods (`get_completion_rate_for_template`, `get_completion_rate_for_template_owner`).
- **Connect API**: Secret key management methods (`create_connect_secret`, `get_connect_secret`, `delete_connect_secret`).
- **Models**: `SenderCompletionInfo`, `TemplateCompletionInfo`, `TemplateCompletionRateResponse`, `UserCompletionRateResponse`.

### Changed
- Added support for version v2.1-26.1.02.00 of the DocuSign ESignature API.
- Updated the SDK release version to 7.0.0rc1.
- Added query parameters: `include_is_edited` and `link_configuration_id` for document listing methods.

## [v6.1.0] - eSignature API v2.1-26.1.00.00 - 2026-03-05
### Changed
- Added support for version v2.1-26.1.00.00 of the DocuSign ESignature API.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ This client SDK is provided as open source, which enables you to customize its f
<a id="versionInformation"></a>
### Version Information
- **API version**: v2.1
- **Latest SDK version**: 6.1.0
- **Latest SDK version**: 7.0.0rc1

<a id="requirements"></a>
## Requirements
Expand Down
5 changes: 4 additions & 1 deletion docusign_esign/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -442,7 +442,6 @@
from docusign_esign.models.recipient_identity_input_option import RecipientIdentityInputOption
from docusign_esign.models.recipient_identity_phone_number import RecipientIdentityPhoneNumber
from docusign_esign.models.recipient_identity_verification import RecipientIdentityVerification
from docusign_esign.models.recipient_names_response import RecipientNamesResponse
from docusign_esign.models.recipient_option import RecipientOption
from docusign_esign.models.recipient_phone_authentication import RecipientPhoneAuthentication
from docusign_esign.models.recipient_phone_number import RecipientPhoneNumber
Expand All @@ -467,6 +466,7 @@
from docusign_esign.models.seal_sign import SealSign
from docusign_esign.models.seat_discount import SeatDiscount
from docusign_esign.models.sender_company import SenderCompany
from docusign_esign.models.sender_completion_info import SenderCompletionInfo
from docusign_esign.models.sender_email_notifications import SenderEmailNotifications
from docusign_esign.models.sender_name import SenderName
from docusign_esign.models.server_template import ServerTemplate
Expand Down Expand Up @@ -507,6 +507,8 @@
from docusign_esign.models.tabs import Tabs
from docusign_esign.models.template_auto_match import TemplateAutoMatch
from docusign_esign.models.template_auto_match_list import TemplateAutoMatchList
from docusign_esign.models.template_completion_info import TemplateCompletionInfo
from docusign_esign.models.template_completion_rate_response import TemplateCompletionRateResponse
from docusign_esign.models.template_custom_fields import TemplateCustomFields
from docusign_esign.models.template_document_visibility_list import TemplateDocumentVisibilityList
from docusign_esign.models.template_documents_result import TemplateDocumentsResult
Expand Down Expand Up @@ -538,6 +540,7 @@
from docusign_esign.models.user_authorizations_delete_response import UserAuthorizationsDeleteResponse
from docusign_esign.models.user_authorizations_request import UserAuthorizationsRequest
from docusign_esign.models.user_authorizations_response import UserAuthorizationsResponse
from docusign_esign.models.user_completion_rate_response import UserCompletionRateResponse
from docusign_esign.models.user_info import UserInfo
from docusign_esign.models.user_info_list import UserInfoList
from docusign_esign.models.user_information import UserInformation
Expand Down
316 changes: 209 additions & 107 deletions docusign_esign/apis/accounts_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -3741,6 +3741,215 @@ def get_brand_resources_by_content_type_with_http_info(self, account_id, brand_i
_request_timeout=params.get('_request_timeout'),
collection_formats=collection_formats)

def get_completion_rate_for_template(self, account_id, template_id, **kwargs):
"""
Gets completion rate for the template
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please define a `callback` function
to be invoked when receiving the response.
>>> def callback_function(response):
>>> pprint(response)
>>>
>>> thread = api.get_completion_rate_for_template(account_id, template_id, callback=callback_function)

:param callback function: The callback function
for asynchronous request. (optional)
:param str account_id: The external account number (int) or account ID Guid. (required)
:param str template_id: The ID of the template being accessed. (required)
:return: TemplateCompletionRateResponse
If the method is called asynchronously,
returns the request thread.
"""
kwargs['_return_http_data_only'] = True
if kwargs.get('callback'):
return self.get_completion_rate_for_template_with_http_info(account_id, template_id, **kwargs)
else:
(data) = self.get_completion_rate_for_template_with_http_info(account_id, template_id, **kwargs)
return data

def get_completion_rate_for_template_with_http_info(self, account_id, template_id, **kwargs):
"""
Gets completion rate for the template
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please define a `callback` function
to be invoked when receiving the response.
>>> def callback_function(response):
>>> pprint(response)
>>>
>>> thread = api.get_completion_rate_for_template_with_http_info(account_id, template_id, callback=callback_function)

:param callback function: The callback function
for asynchronous request. (optional)
:param str account_id: The external account number (int) or account ID Guid. (required)
:param str template_id: The ID of the template being accessed. (required)
:return: TemplateCompletionRateResponse
If the method is called asynchronously,
returns the request thread.
"""

all_params = ['account_id', 'template_id']
all_params.append('callback')
all_params.append('_return_http_data_only')
all_params.append('_preload_content')
all_params.append('_request_timeout')

params = locals()
for key, val in iteritems(params['kwargs']):
if key not in all_params:
raise TypeError(
"Got an unexpected keyword argument '%s'"
" to method get_completion_rate_for_template" % key
)
params[key] = val
del params['kwargs']
# verify the required parameter 'account_id' is set
if ('account_id' not in params) or (params['account_id'] is None):
raise ValueError("Missing the required parameter `account_id` when calling `get_completion_rate_for_template`")
# verify the required parameter 'template_id' is set
if ('template_id' not in params) or (params['template_id'] is None):
raise ValueError("Missing the required parameter `template_id` when calling `get_completion_rate_for_template`")


collection_formats = {}

resource_path = '/v2.1/accounts/{accountId}/templates/{templateId}/insights/completionRate'.replace('{format}', 'json')
path_params = {}
if 'account_id' in params:
path_params['accountId'] = params['account_id']
if 'template_id' in params:
path_params['templateId'] = params['template_id']

query_params = {}

header_params = {}

form_params = []
local_var_files = {}

body_params = None
# HTTP header `Accept`
header_params['Accept'] = self.api_client.\
select_header_accept(['application/json'])

# Authentication setting
auth_settings = []

return self.api_client.call_api(resource_path, 'GET',
path_params,
query_params,
header_params,
body=body_params,
post_params=form_params,
files=local_var_files,
response_type='TemplateCompletionRateResponse',
auth_settings=auth_settings,
callback=params.get('callback'),
_return_http_data_only=params.get('_return_http_data_only'),
_preload_content=params.get('_preload_content', True),
_request_timeout=params.get('_request_timeout'),
collection_formats=collection_formats)

def get_completion_rate_for_template_owner(self, account_id, **kwargs):
"""
Gets completion rate for the user
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please define a `callback` function
to be invoked when receiving the response.
>>> def callback_function(response):
>>> pprint(response)
>>>
>>> thread = api.get_completion_rate_for_template_owner(account_id, callback=callback_function)

:param callback function: The callback function
for asynchronous request. (optional)
:param str account_id: The external account number (int) or account ID Guid. (required)
:return: UserCompletionRateResponse
If the method is called asynchronously,
returns the request thread.
"""
kwargs['_return_http_data_only'] = True
if kwargs.get('callback'):
return self.get_completion_rate_for_template_owner_with_http_info(account_id, **kwargs)
else:
(data) = self.get_completion_rate_for_template_owner_with_http_info(account_id, **kwargs)
return data

def get_completion_rate_for_template_owner_with_http_info(self, account_id, **kwargs):
"""
Gets completion rate for the user
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please define a `callback` function
to be invoked when receiving the response.
>>> def callback_function(response):
>>> pprint(response)
>>>
>>> thread = api.get_completion_rate_for_template_owner_with_http_info(account_id, callback=callback_function)

:param callback function: The callback function
for asynchronous request. (optional)
:param str account_id: The external account number (int) or account ID Guid. (required)
:return: UserCompletionRateResponse
If the method is called asynchronously,
returns the request thread.
"""

all_params = ['account_id']
all_params.append('callback')
all_params.append('_return_http_data_only')
all_params.append('_preload_content')
all_params.append('_request_timeout')

params = locals()
for key, val in iteritems(params['kwargs']):
if key not in all_params:
raise TypeError(
"Got an unexpected keyword argument '%s'"
" to method get_completion_rate_for_template_owner" % key
)
params[key] = val
del params['kwargs']
# verify the required parameter 'account_id' is set
if ('account_id' not in params) or (params['account_id'] is None):
raise ValueError("Missing the required parameter `account_id` when calling `get_completion_rate_for_template_owner`")


collection_formats = {}

resource_path = '/v2.1/accounts/{accountId}/templates/insights/completionRate'.replace('{format}', 'json')
path_params = {}
if 'account_id' in params:
path_params['accountId'] = params['account_id']

query_params = {}

header_params = {}

form_params = []
local_var_files = {}

body_params = None
# HTTP header `Accept`
header_params['Accept'] = self.api_client.\
select_header_accept(['application/json'])

# Authentication setting
auth_settings = []

return self.api_client.call_api(resource_path, 'GET',
path_params,
query_params,
header_params,
body=body_params,
post_params=form_params,
files=local_var_files,
response_type='UserCompletionRateResponse',
auth_settings=auth_settings,
callback=params.get('callback'),
_return_http_data_only=params.get('_return_http_data_only'),
_preload_content=params.get('_preload_content', True),
_request_timeout=params.get('_request_timeout'),
collection_formats=collection_formats)

def get_consumer_disclosure(self, account_id, lang_code, **kwargs):
"""
Gets the Electronic Record and Signature Disclosure.
Expand Down Expand Up @@ -5662,113 +5871,6 @@ def list_permissions_with_http_info(self, account_id, **kwargs):
_request_timeout=params.get('_request_timeout'),
collection_formats=collection_formats)

def list_recipient_names_by_email(self, account_id, **kwargs):
"""
Gets recipient names associated with an email address.
Retrieves a list of recipients in the specified account that are associated with a email address supplied in the query string.
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please define a `callback` function
to be invoked when receiving the response.
>>> def callback_function(response):
>>> pprint(response)
>>>
>>> thread = api.list_recipient_names_by_email(account_id, callback=callback_function)

:param callback function: The callback function
for asynchronous request. (optional)
:param str account_id: The external account number (int) or account ID Guid. (required)
:param str email: The email address for the user
:return: RecipientNamesResponse
If the method is called asynchronously,
returns the request thread.
"""
kwargs['_return_http_data_only'] = True
if kwargs.get('callback'):
return self.list_recipient_names_by_email_with_http_info(account_id, **kwargs)
else:
(data) = self.list_recipient_names_by_email_with_http_info(account_id, **kwargs)
return data

def list_recipient_names_by_email_with_http_info(self, account_id, **kwargs):
"""
Gets recipient names associated with an email address.
Retrieves a list of recipients in the specified account that are associated with a email address supplied in the query string.
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please define a `callback` function
to be invoked when receiving the response.
>>> def callback_function(response):
>>> pprint(response)
>>>
>>> thread = api.list_recipient_names_by_email_with_http_info(account_id, callback=callback_function)

:param callback function: The callback function
for asynchronous request. (optional)
:param str account_id: The external account number (int) or account ID Guid. (required)
:param str email: The email address for the user
:return: RecipientNamesResponse
If the method is called asynchronously,
returns the request thread.
"""

all_params = ['account_id', 'email']
all_params.append('callback')
all_params.append('_return_http_data_only')
all_params.append('_preload_content')
all_params.append('_request_timeout')

params = locals()
for key, val in iteritems(params['kwargs']):
if key not in all_params:
raise TypeError(
"Got an unexpected keyword argument '%s'"
" to method list_recipient_names_by_email" % key
)
params[key] = val
del params['kwargs']
# verify the required parameter 'account_id' is set
if ('account_id' not in params) or (params['account_id'] is None):
raise ValueError("Missing the required parameter `account_id` when calling `list_recipient_names_by_email`")


collection_formats = {}

resource_path = '/v2.1/accounts/{accountId}/recipient_names'.replace('{format}', 'json')
path_params = {}
if 'account_id' in params:
path_params['accountId'] = params['account_id']

query_params = {}
if 'email' in params:
query_params['email'] = params['email']

header_params = {}

form_params = []
local_var_files = {}

body_params = None
# HTTP header `Accept`
header_params['Accept'] = self.api_client.\
select_header_accept(['application/json'])

# Authentication setting
auth_settings = []

return self.api_client.call_api(resource_path, 'GET',
path_params,
query_params,
header_params,
body=body_params,
post_params=form_params,
files=local_var_files,
response_type='RecipientNamesResponse',
auth_settings=auth_settings,
callback=params.get('callback'),
_return_http_data_only=params.get('_return_http_data_only'),
_preload_content=params.get('_preload_content', True),
_request_timeout=params.get('_request_timeout'),
collection_formats=collection_formats)

def list_settings(self, account_id, **kwargs):
"""
Gets account settings information.
Expand Down
Loading
Loading