Fetching the templates of e-sign documents

  1. Start the Python shell and configure its session.

    The following variables should be available now:

    >>> base_url  # the base URL of the API
    'https://eu2-cloud.acronis.com/api/notary/v2'
    >>> auth  # the 'Authorization' header value with the access token
    {'Authorization': 'Bearer 8770b34b74f9e4d9424eff50c38182bb4ae7f5596582ae61900b1b6a23e3ec58'}
    
  2. Send a GET request to the /templates endpoint:

    >>> response = requests.get(f'{base_url}/templates', headers=auth)
    
  3. Check the status code of the response:

    >>> response.status_code
    200
    

    Status code 200 means that the request was successful.

    A different status code means that an error has occurred. For the details, refer to “Status and error codes”.

    Also, the response body contains the templates key containing an array of e-sign document templates formatted as a JSON text. When converted to an object, it will look as follows:

    >>> pprint.pprint(response.json())
    {'paging': {'cursors': {}},
    'templates': [{'created_at': '2021-04-15T07:09:22.426923Z',
                    'document_count': 0,
                    'file_id': '0a67df08-56a5-4a9a-96ce-fa2d91e87ae1',
                    'file_name': 'file_name.pdf',
                    'id': '84c8eab4-59b9-4873-bc44-92615c2f7713',
                    'name': 'template_name',
                    'updated_at': '2021-04-15T07:09:22.426923Z'},
                {'created_at': '2021-04-15T07:09:29.148799Z',
                    'document_count': 0,
                    'file_id': '99fb3a13-2545-4dd0-bb67-5c5b19c77b9e',
                    'file_name': 'file_name.pdf',
                    'id': '3922edc2-d70d-4d5d-9789-5d739a6e7bdc',
                    'name': 'template_name',
                    'updated_at': '2021-04-15T07:09:29.148799Z'}]}
    
  4. Convert the JSON text, that the response body contains, to an object, and then fetch the list of e-sign documents’ templates from the response:

    >>> document_templates = response.json()['templates']
    

Full code example

 1#!/usr/bin/env python3
 2
 3import requests  # Will be used for sending requests to the API.
 4import hashlib   # Will be used for calculating hash values.
 5import os.path   # Will be used for path-related operations.
 6import pprint    # Will be used for formatting the output of JSON objects received in API responses.
 7import json      # Will be used for converting dictionaries into JSON text
 8
 9# Define variables named "LOGIN" and "PASSWORD" and then assign them with your account credentials
10LOGIN = '<your login>'        # Change login here
11PASSWORD = '<your password>'  # Change password here
12
13# Define a variable named "cloud_url" and then assign it with the URL of the cloud platform
14cloud_url = 'https://cloud.acronis.com'
15
16# Fetch the URL of the data center where your account is located by sending a GET request to the "/api/1/accounts" endpoint
17response = requests.get(
18    f'{cloud_url}/api/1/accounts',
19    params={'login': LOGIN}
20)
21response.raise_for_status()
22
23# Convert the JSON text that the response body contains to a dictionary and store the data center URL
24# in a variable that will be used in further requests
25server_url = response.json()['server_url']
26
27# Define a variable named "account_creds", and then assign the username and password to this variable
28account_creds = {
29    'username': LOGIN,
30    'password': PASSWORD
31}
32
33# Generate a token by sending a POST request to the "/api/2/idp/token" with your account credentials to the cloud platform
34response = requests.post(
35    f'{server_url}/api/2/idp/token',
36    headers={'Content-Type': 'application/x-www-form-urlencoded'},
37    data={'grant_type': 'password', **account_creds}
38)
39response.raise_for_status()
40
41# Convert the JSON text that the response body contains to a dictionary and then assign it to a variable named "token_info"
42token_info = response.json()
43
44# Define a variable named "auth" and then assign it with a dictionary with "Authorization" key containing
45# token string formatted as "Bearer <access_token>"
46auth = {
47    'Authorization': 'Bearer ' + token_info['access_token']
48}
49
50# Define a variable named "base_url", and then assign the API base URL using the data center URL
51# to this variable
52base_url = f'{server_url}/api/notary/v2'
53
54# Fetch the information about all e-sign document templates by sending a GET request to the "/templates" endpoint
55response = requests.get(f'{base_url}/templates', headers=auth)
56response.raise_for_status()
57
58# Convert the JSON text that the response body contains to a dictionary and fetch a list of e-sign documents' templates
59document_templates = response.json()['templates']