Skip to content

Commit 5d1f609

Browse files
authored
feat: Add redirect_url and declined_redirect_url fields to Sign Request (#752)
Closes: SDK-2358
1 parent bc65e15 commit 5d1f609

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

boxsdk/client/client.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1505,7 +1505,9 @@ def create_sign_request(
15051505
email_message: Optional[Iterable] = None,
15061506
email_subject: Optional[str] = None,
15071507
external_id: Optional[str] = None,
1508-
is_document_preparation_needed: Optional[bool] = None
1508+
is_document_preparation_needed: Optional[bool] = None,
1509+
redirect_url: Optional[str] = None,
1510+
declined_redirect_url: Optional[str] = None,
15091511
) -> dict:
15101512
"""
15111513
Used to create a new sign request.
@@ -1537,6 +1539,11 @@ def create_sign_request(
15371539
This can be used to reference an ID in an external system that the sign request is related to.
15381540
:param is_document_preparation_needed:
15391541
Indicates if the sender should receive a prepare_url in the response to complete document preparation via UI.
1542+
:param redirect_url:
1543+
The URL that a signer will be redirected to after signing a document.
1544+
If no declined redirect URL is specified, this URL will be used for decline actions as well.
1545+
:param declined_redirect_url:
1546+
The URL that a signer will be redirected to after declining to sign a document.
15401547
:returns:
15411548
A dictionary representing a created SignRequest
15421549
"""
@@ -1567,7 +1574,10 @@ def create_sign_request(
15671574
body['external_id'] = external_id
15681575
if is_document_preparation_needed:
15691576
body['is_document_preparation_needed'] = is_document_preparation_needed
1570-
1577+
if redirect_url:
1578+
body['redirect_url'] = redirect_url
1579+
if declined_redirect_url:
1580+
body['declined_redirect_url'] = declined_redirect_url
15711581
box_response = self._session.post(url, data=json.dumps(body))
15721582
response = box_response.json()
15731583
return self.translator.translate(

test/unit/client/test_client.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1551,6 +1551,8 @@ def mock_sign_request_response():
15511551
'email_subject': 'Sign Request from Acme',
15521552
'external_id': '123',
15531553
'is_document_preparation_needed': 'true',
1554+
'redirect_url': 'https://www.box.com/accepted',
1555+
'declined_redirect_url': 'https://www.box.com/declined',
15541556
'parent_folder': {
15551557
'id': '12345',
15561558
'type': 'folder',
@@ -1666,7 +1668,8 @@ def test_get_sign_requests(mock_client, mock_box_session, mock_sign_request_resp
16661668

16671669
def test_create_sign_request(mock_client, mock_box_session, mock_sign_request_response):
16681670
expected_url = f'{API.BASE_API_URL}/sign_requests'
1669-
1671+
redirect_url = 'https://www.box.com/accepted'
1672+
declined_redirect_url = 'https://www.box.com/declined'
16701673
source_file = {
16711674
'id': '12345',
16721675
'type': 'file'
@@ -1695,18 +1698,23 @@ def test_create_sign_request(mock_client, mock_box_session, mock_sign_request_re
16951698
{
16961699
'id': parent_folder_id,
16971700
'type': 'folder'
1698-
}
1701+
},
1702+
'redirect_url': redirect_url,
1703+
'declined_redirect_url': declined_redirect_url,
16991704
})
17001705
mock_box_session.post.return_value.json.return_value = mock_sign_request_response
17011706

17021707
new_sign_request = mock_client.create_sign_request(
1703-
files, signers, parent_folder_id)
1708+
files, signers, parent_folder_id,
1709+
redirect_url=redirect_url, declined_redirect_url=declined_redirect_url)
17041710

17051711
mock_box_session.post.assert_called_once_with(expected_url, data=data)
17061712
assert isinstance(new_sign_request, SignRequest)
17071713
assert new_sign_request['source_files'][0]['id'] == source_file['id']
17081714
assert new_sign_request['signers'][0]['email'] == signer['email']
17091715
assert new_sign_request['parent_folder']['id'] == parent_folder_id
1716+
assert new_sign_request['redirect_url'] == redirect_url
1717+
assert new_sign_request['declined_redirect_url'] == declined_redirect_url
17101718

17111719

17121720
def test_file_request(mock_client):

test/unit/object/test_sign_request.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ def mock_sign_request_response():
1818
'email_subject': 'Sign Request from Acme',
1919
'external_id': '123',
2020
'is_document_preparation_needed': 'true',
21+
'redirect_url': 'https://www.box.com/accepted',
22+
'declined_redirect_url': 'https://www.box.com/declined',
2123
'parent_folder': {
2224
'id': '12345',
2325
'type': 'folder',

0 commit comments

Comments
 (0)