diff --git a/app/admin/examples/eg001_create_a_new_user.py b/app/admin/examples/eg001_create_a_new_user.py index 8f2cf1c4..d19d1dd0 100644 --- a/app/admin/examples/eg001_create_a_new_user.py +++ b/app/admin/examples/eg001_create_a_new_user.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_admin import UsersApi, NewUserRequest, NewUserRequestAccountProperties, PermissionProfileRequest, GroupRequest from docusign_esign import AccountsApi, ApiClient, GroupsApi from flask import session @@ -43,7 +44,16 @@ def get_permission_profiles(args): #ds-snippet-start:Admin1Step3 accounts_api = AccountsApi(api_client=api_client) - profiles = accounts_api.list_permissions(account_id=account_id) + (profiles, status, headers) = accounts_api.list_permissions_with_http_info(account_id=account_id) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + profiles_list = profiles.to_dict()["permission_profiles"] #ds-snippet-end:Admin1Step3 return profiles_list @@ -64,7 +74,16 @@ def get_groups(args): #ds-snippet-start:Admin1Step4 groups_api = GroupsApi(api_client) - groups = groups_api.list_groups(account_id=account_id) + (groups, status, headers) = groups_api.list_groups_with_http_info(account_id=account_id) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + groups_dict = groups.to_dict() groups_list = groups_dict["groups"] #ds-snippet-end:Admin1Step4 @@ -127,9 +146,18 @@ def worker(self, args): # Creates a user using a method from the user API #ds-snippet-start:Admin1Step6 - response = user_api.create_user( + (response, status, headers) = user_api.create_user_with_http_info( args["organization_id"], request_body ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin1Step6 + return response diff --git a/app/admin/examples/eg002_create_active_clm_esign_user.py b/app/admin/examples/eg002_create_active_clm_esign_user.py index c984b46d..67cb6cc9 100644 --- a/app/admin/examples/eg002_create_active_clm_esign_user.py +++ b/app/admin/examples/eg002_create_active_clm_esign_user.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_admin import ApiClient, ProductPermissionProfilesApi, DSGroupsApi, UsersApi, NewMultiProductUserAddRequest, ProductPermissionProfileRequest, DSGroupRequest from flask import session, json, request @@ -37,7 +38,19 @@ def get_permission_profiles(args): ) #ds-snippet-start:Admin2Step3 product_permission_profiles_api = ProductPermissionProfilesApi(api_client=api_client) - profiles = product_permission_profiles_api.get_product_permission_profiles(organization_id=org_id, account_id=session["ds_account_id"]) + (profiles, status, headers) = product_permission_profiles_api.get_product_permission_profiles_with_http_info( + organization_id=org_id, + account_id=session["ds_account_id"] + ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + profiles_list = profiles.to_dict()["product_permission_profiles"] #ds-snippet-end:Admin2Step3 return profiles_list @@ -59,8 +72,20 @@ def get_groups(args): #ds-snippet-start:Admin2Step4 ds_groups_api = DSGroupsApi(api_client) - ds_groups = ds_groups_api.get_ds_groups(organization_id=org_id, account_id=session["ds_account_id"]) + (ds_groups, status, headers) = ds_groups_api.get_ds_groups_with_http_info( + organization_id=org_id, + account_id=session["ds_account_id"] + ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin2Step4 + return ds_groups @staticmethod @@ -108,7 +133,19 @@ def worker(self, args): #ds-snippet-start:Admin2Step6 users_api = UsersApi(api_client) - response = users_api.add_or_update_user(organization_id=org_id, account_id=session["ds_account_id"], request=new_user) + (response, status, headers) = users_api.add_or_update_user_with_http_info( + organization_id=org_id, + account_id=session["ds_account_id"], + request=new_user + ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin2Step6 return response.to_dict() diff --git a/app/admin/examples/eg003_bulk_export_user_data.py b/app/admin/examples/eg003_bulk_export_user_data.py index 713c1d14..431c6fb7 100644 --- a/app/admin/examples/eg003_bulk_export_user_data.py +++ b/app/admin/examples/eg003_bulk_export_user_data.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_admin import ApiClient from docusign_admin.apis import BulkExportsApi from flask import session @@ -28,12 +29,20 @@ def worker(cls): # Create a user list export request #ds-snippet-start:Admin3Step3 - response = export_api.create_user_list_export( + (response, status, headers) = export_api.create_user_list_export_with_http_info( organization_id, { "type": "organization_memberships_export" } ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin3Step3 # Save user_list_export_id in a client session @@ -68,10 +77,18 @@ def get_csv_user_list(cls): # Getting the user list export response #ds-snippet-start:Admin3Step4 - response = export_api.get_user_list_export( + (response, status, headers) = export_api.get_user_list_export_with_http_info( organization_id, session['user_list_export_id'] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin3Step4 # Trying to get the user list export id diff --git a/app/admin/examples/eg004_add_users_via_bulk_import.py b/app/admin/examples/eg004_add_users_via_bulk_import.py index a1240696..0364023d 100644 --- a/app/admin/examples/eg004_add_users_via_bulk_import.py +++ b/app/admin/examples/eg004_add_users_via_bulk_import.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from os import path from docusign_admin.apis import BulkImportsApi from flask import session, Response @@ -67,10 +68,18 @@ def worker(self, request): api_client.set_default_header(header_name, header_value) # Returns the response from the create_bulk_import_add_users_request method - response = import_api.create_bulk_import_add_users_request( + (response, status, headers) = import_api.create_bulk_import_add_users_request_with_http_info( organization_id, csv_file_path ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin4Step3 # Save user list import id in a client session @@ -92,7 +101,18 @@ def check_status(): import_api = BulkImportsApi(api_client=api_client) #ds-snippet-start:Admin4Step4 - import_results = import_api.get_bulk_user_import_request(organization_id, session['import_data_id']) + (import_results, status, headers) = import_api.get_bulk_user_import_request_with_http_info( + organization_id, + session['import_data_id'] + ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin4Step4 if import_results.status == "completed": diff --git a/app/admin/examples/eg005_audit_users.py b/app/admin/examples/eg005_audit_users.py index 002edcd7..5475c6fd 100644 --- a/app/admin/examples/eg005_audit_users.py +++ b/app/admin/examples/eg005_audit_users.py @@ -3,7 +3,7 @@ from ...ds_config import DS_CONFIG from app.admin.utils import get_organization_id -import datetime +from datetime import datetime as dt, timezone, timedelta class Eg005AuditUsersController: @staticmethod @@ -37,15 +37,23 @@ def worker(args): #ds-snippet-end:Admin5Step2 #ds-snippet-start:Admin5Step3 - today = datetime.datetime.now() - ten_days_ago = today - (datetime.timedelta(days = 10)) + today = dt.now() + ten_days_ago = today - (timedelta(days = 10)) last_modified_since = ten_days_ago.strftime('%Y-%m-%d') users_api = UsersApi(api_client=api_client) - users = users_api.get_users( + (users, status, headers) = users_api.get_users_with_http_info( organization_id=org_id, account_id=account_id, last_modified_since=last_modified_since) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin5Step3 #ds-snippet-start:Admin5Step4 @@ -59,7 +67,15 @@ def worker(args): #ds-snippet-start:Admin5Step5 profile_list = [] for email in emails: - profile = users_api.get_user_profiles(organization_id=org_id, email=email) + (profile, status, headers) = users_api.get_user_profiles_with_http_info(organization_id=org_id, email=email) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") profile_list.append(profile.to_dict()) results = {"Modified users": profile_list} diff --git a/app/admin/examples/eg006_get_user_profile_by_email.py b/app/admin/examples/eg006_get_user_profile_by_email.py index 8a882992..5ed6ac09 100644 --- a/app/admin/examples/eg006_get_user_profile_by_email.py +++ b/app/admin/examples/eg006_get_user_profile_by_email.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_admin import ApiClient, UsersApi from flask import session, request @@ -39,9 +40,17 @@ def worker(args): #ds-snippet-start:Admin6Step3 users_api = UsersApi(api_client=api_client) - results = users_api.get_user_ds_profiles_by_email( + (results, status, headers) = users_api.get_user_ds_profiles_by_email_with_http_info( organization_id=org_id, email=email) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin6Step3 return results diff --git a/app/admin/examples/eg007_get_user_profile_by_user_id.py b/app/admin/examples/eg007_get_user_profile_by_user_id.py index 380bd069..6100eb73 100644 --- a/app/admin/examples/eg007_get_user_profile_by_user_id.py +++ b/app/admin/examples/eg007_get_user_profile_by_user_id.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_admin import ApiClient, UsersApi from flask import session, request @@ -39,9 +40,17 @@ def worker(args): #ds-snippet-start:Admin7Step3 users_api = UsersApi(api_client=api_client) - results = users_api.get_user_ds_profile( + (results, status, headers) = users_api.get_user_ds_profile_with_http_info( organization_id=org_id, user_id=user_id) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin7Step3 return results diff --git a/app/admin/examples/eg008_update_user_product_permission_profile.py b/app/admin/examples/eg008_update_user_product_permission_profile.py index 8a76a0ce..b370f430 100644 --- a/app/admin/examples/eg008_update_user_product_permission_profile.py +++ b/app/admin/examples/eg008_update_user_product_permission_profile.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_admin import ( ApiClient, ProductPermissionProfilesApi, @@ -33,10 +34,19 @@ def get_permission_profiles(): ) product_permission_profiles_api = ProductPermissionProfilesApi(api_client=api_client) - profiles = product_permission_profiles_api.get_product_permission_profiles( + (profiles, status, headers) = product_permission_profiles_api.get_product_permission_profiles_with_http_info( organization_id=get_organization_id(), account_id=session["ds_account_id"] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + profiles_list = profiles.to_dict()["product_permission_profiles"] return profiles_list @@ -76,11 +86,19 @@ def worker(self, args): #ds-snippet-start:Admin8Step4 product_permission_profiles_api = ProductPermissionProfilesApi(api_client=api_client) - response = product_permission_profiles_api.add_user_product_permission_profiles_by_email( + (response, status, headers) = product_permission_profiles_api.add_user_product_permission_profiles_by_email_with_http_info( organization_id=org_id, account_id=account_id, user_product_permission_profiles_request=user_product_permission_profile_request ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin8Step4 return response.to_dict() diff --git a/app/admin/examples/eg009_delete_user_product_permission_profile.py b/app/admin/examples/eg009_delete_user_product_permission_profile.py index 05b6538f..5016c962 100644 --- a/app/admin/examples/eg009_delete_user_product_permission_profile.py +++ b/app/admin/examples/eg009_delete_user_product_permission_profile.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_admin import ( ApiClient, ProductPermissionProfilesApi, @@ -31,11 +32,20 @@ def get_permission_profiles_by_email(): ) #ds-snippet-start:Admin9Step3 product_permission_profiles_api = ProductPermissionProfilesApi(api_client=api_client) - profiles = product_permission_profiles_api.get_user_product_permission_profiles_by_email( + (profiles, status, headers) = product_permission_profiles_api.get_user_product_permission_profiles_by_email_with_http_info( organization_id=get_organization_id(), account_id=session["ds_account_id"], email=session["clm_email"] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + profiles_list = profiles.to_dict()["product_permission_profiles"] #ds-snippet-end:Admin9Step3 return profiles_list @@ -71,11 +81,19 @@ def worker(self, args): #ds-snippet-start:Admin9Step5 product_permission_profiles_api = ProductPermissionProfilesApi(api_client=api_client) - response = product_permission_profiles_api.remove_user_product_permission( + (response, status, headers) = product_permission_profiles_api.remove_user_product_permission_with_http_info( organization_id=org_id, account_id=account_id, user_product_permission_profiles_request=user_product_profile_delete_request ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin9Step5 return response.to_dict() diff --git a/app/admin/examples/eg010_delete_user_data_from_organization.py b/app/admin/examples/eg010_delete_user_data_from_organization.py index 7da5e8d2..ff04ca9d 100644 --- a/app/admin/examples/eg010_delete_user_data_from_organization.py +++ b/app/admin/examples/eg010_delete_user_data_from_organization.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_admin import ApiClient, UsersApi, OrganizationsApi, IndividualUserDataRedactionRequest, \ MembershipDataRedactionRequest from flask import session, request @@ -40,7 +41,16 @@ def worker(args): #ds-snippet-end:Admin10Step2 users_api = UsersApi(api_client=api_client) - results = users_api.get_user_ds_profiles_by_email(organization_id=org_id, email=email) + (results, status, headers) = users_api.get_user_ds_profiles_by_email_with_http_info(organization_id=org_id, email=email) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + user = results.users[0] #ds-snippet-start:Admin10Step3 @@ -52,7 +62,15 @@ def worker(args): #ds-snippet-end:Admin10Step3 #ds-snippet-start:Admin10Step4 - results = organizations_api.redact_individual_user_data(org_id, user_data_redaction_request) + (results, status, headers) = organizations_api.redact_individual_user_data_with_http_info(org_id, user_data_redaction_request) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin10Step4 return results diff --git a/app/admin/examples/eg011_delete_user_data_from_account.py b/app/admin/examples/eg011_delete_user_data_from_account.py index 40d3f790..e23e19c4 100644 --- a/app/admin/examples/eg011_delete_user_data_from_account.py +++ b/app/admin/examples/eg011_delete_user_data_from_account.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_admin import ApiClient, AccountsApi, IndividualMembershipDataRedactionRequest from flask import session, request @@ -40,7 +41,15 @@ def worker(args): #ds-snippet-end:Admin11Step3 #ds-snippet-start:Admin11Step4 - results = accounts_api.redact_individual_membership_data(account_id, membership_redaction_request) + (results, status, headers) = accounts_api.redact_individual_membership_data_with_http_info(account_id, membership_redaction_request) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin11Step4 return results diff --git a/app/admin/examples/eg012_clone_account.py b/app/admin/examples/eg012_clone_account.py index e2f16247..d73e98f2 100644 --- a/app/admin/examples/eg012_clone_account.py +++ b/app/admin/examples/eg012_clone_account.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_admin import ApiClient, ProvisionAssetGroupApi, AssetGroupAccountClone, \ AssetGroupAccountCloneSourceAccount, AssetGroupAccountCloneTargetAccount, \ AssetGroupAccountCloneTargetAccountAdmin @@ -63,7 +64,15 @@ def worker(args): #ds-snippet-start:Admin12Step5 asset_group_api = ProvisionAssetGroupApi(api_client=api_client) - results = asset_group_api.clone_asset_group_account(args["organization_id"], account_data) + (results, status, headers) = asset_group_api.clone_asset_group_account_with_http_info(args["organization_id"], account_data) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin12Step5 return results @@ -79,7 +88,15 @@ def get_accounts(args): #ds-snippet-start:Admin12Step3 asset_group_api = ProvisionAssetGroupApi(api_client=api_client) - accounts = asset_group_api.get_asset_group_accounts(args["organization_id"], compliant=True) + (accounts, status, headers) = asset_group_api.get_asset_group_accounts_with_http_info(args["organization_id"], compliant=True) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin12Step3 return accounts diff --git a/app/admin/examples/eg013_create_account.py b/app/admin/examples/eg013_create_account.py index c57208fd..639803fc 100644 --- a/app/admin/examples/eg013_create_account.py +++ b/app/admin/examples/eg013_create_account.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_admin import ApiClient, ProvisionAssetGroupApi, SubAccountCreateRequest, \ SubAccountCreateRequestSubAccountCreationSubscription, \ SubAccountCreateRequestSubAccountCreationTargetAccountDetails, \ @@ -67,7 +68,15 @@ def worker(args): #ds-snippet-start:Admin13Step5 asset_group_api = ProvisionAssetGroupApi(api_client=api_client) - results = asset_group_api.create_asset_group_account(args["organization_id"], account_data) + (results, status, headers) = asset_group_api.create_asset_group_account_with_http_info(args["organization_id"], account_data) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin13Step5 return results @@ -83,7 +92,15 @@ def get_organization_plan_items(args): #ds-snippet-start:Admin13Step3 asset_group_api = ProvisionAssetGroupApi(api_client=api_client) - plan_items = asset_group_api.get_organization_plan_items(args["organization_id"]) + (plan_items, status, headers) = asset_group_api.get_organization_plan_items_with_http_info(args["organization_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Admin13Step3 return plan_items diff --git a/app/click/examples/eg001_create_clickwrap.py b/app/click/examples/eg001_create_clickwrap.py index 46d7920e..dfc6b629 100644 --- a/app/click/examples/eg001_create_clickwrap.py +++ b/app/click/examples/eg001_create_clickwrap.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_click import AccountsApi, ClickwrapRequest, DisplaySettings, \ @@ -75,10 +76,18 @@ def worker(args): # Create a clickwrap using SDK #ds-snippet-start:Click1Step4 accounts_api = AccountsApi(api_client) - response = accounts_api.create_clickwrap( + (response, status, headers) = accounts_api.create_clickwrap_with_http_info( clickwrap_request=clickwrap_request, account_id=args["account_id"] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Click1Step4 return response diff --git a/app/click/examples/eg002_activate_clickwrap.py b/app/click/examples/eg002_activate_clickwrap.py index 3eb6e65e..7ad42357 100644 --- a/app/click/examples/eg002_activate_clickwrap.py +++ b/app/click/examples/eg002_activate_clickwrap.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_click import AccountsApi, ClickwrapRequest from flask import session, request import ast @@ -32,10 +33,19 @@ def get_inactive_clickwraps(args): clickwraps = [] for status in args["statuses"]: - response = accounts_api.get_clickwraps( + (response, response_status, headers) = accounts_api.get_clickwraps_with_http_info( account_id=args["account_id"], status=status ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + clickwraps += response.clickwraps return {"clickwraps": clickwraps} @@ -66,12 +76,20 @@ def worker(args): clickwrap = ast.literal_eval(args["clickwrap"]) print(type(clickwrap)) #ds-snippet-start:Click2Step4 - response = accounts_api.update_clickwrap_version( + (response, status, headers) = accounts_api.update_clickwrap_version_with_http_info( account_id=args["account_id"], clickwrap_id=clickwrap["clickwrap_id"], version_id=clickwrap["version_number"], clickwrap_request=clickwrap_request, ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Click2Step4 return response diff --git a/app/click/examples/eg003_create_new_clickwrap_version.py b/app/click/examples/eg003_create_new_clickwrap_version.py index c3ebe4d7..4fe140c6 100644 --- a/app/click/examples/eg003_create_new_clickwrap_version.py +++ b/app/click/examples/eg003_create_new_clickwrap_version.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_click import AccountsApi, ClickwrapRequest, DisplaySettings, \ @@ -78,11 +79,19 @@ def worker(args): # Create a new clickwrap version using SDK #ds-snippet-start:Click3Step4 accounts_api = AccountsApi(api_client) - response = accounts_api.create_clickwrap_version( + (response, status, headers) = accounts_api.create_clickwrap_version_with_http_info( account_id=args["account_id"], clickwrap_id=args["clickwrap_id"], clickwrap_request=clickwrap_request, ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end return response diff --git a/app/click/examples/eg004_list_clickwraps.py b/app/click/examples/eg004_list_clickwraps.py index 2c986bc5..01bb41b2 100644 --- a/app/click/examples/eg004_list_clickwraps.py +++ b/app/click/examples/eg004_list_clickwraps.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_click import AccountsApi, ClickwrapRequest from flask import session @@ -29,9 +30,17 @@ def worker(args): # Get a list of all elastic templates #ds-snippet-start:Click4Step3 accounts_api = AccountsApi(api_client) - response = accounts_api.get_clickwraps( + (response, status, headers) = accounts_api.get_clickwraps_with_http_info( account_id=args["account_id"] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end return response diff --git a/app/click/examples/eg005_clickwrap_responses.py b/app/click/examples/eg005_clickwrap_responses.py index 6809d966..e5b5bb52 100644 --- a/app/click/examples/eg005_clickwrap_responses.py +++ b/app/click/examples/eg005_clickwrap_responses.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_click import AccountsApi from flask import request, session @@ -30,11 +31,19 @@ def worker(args): # Step 2. Get clickwrap responses using SDK #ds-snippet-start:Click5Step3 accounts_api = AccountsApi(api_client) - response = accounts_api.get_clickwrap_agreements( + (response, status, headers) = accounts_api.get_clickwrap_agreements_with_http_info( account_id=args["account_id"], clickwrap_id=args["clickwrap_id"], status="agreed" ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Click5Step3 return response diff --git a/app/click/examples/eg006_embed_clickwrap.py b/app/click/examples/eg006_embed_clickwrap.py index acd5a2e7..40af07df 100644 --- a/app/click/examples/eg006_embed_clickwrap.py +++ b/app/click/examples/eg006_embed_clickwrap.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_click import AccountsApi, UserAgreementRequest from flask import session, request import ast @@ -36,10 +37,18 @@ def get_active_clickwraps(args): # Step 2. Get a list of active clickwraps accounts_api = AccountsApi(api_client) - response = accounts_api.get_clickwraps( + (response, status, headers) = accounts_api.get_clickwraps_with_http_info( account_id=args["account_id"], status="active" ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") return response @@ -74,11 +83,19 @@ def worker(args): accounts_api = AccountsApi(api_client) clickwrap = ast.literal_eval(args["clickwrap"]) print(type(clickwrap)) - response = accounts_api.create_has_agreed( + (response, status, headers) = accounts_api.create_has_agreed_with_http_info( account_id=args["account_id"], clickwrap_id=clickwrap["clickwrap_id"], user_agreement_request=user_agreement_request, ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Click6Step4 return response diff --git a/app/consts.py b/app/consts.py index bf24e8e8..0f08c0e4 100644 --- a/app/consts.py +++ b/app/consts.py @@ -26,6 +26,8 @@ web_form_config_file = "web-form-config.json" +order_form_html_file = "order_form.html" + # Base uri for callback function base_uri_suffix = "/restapi" diff --git a/app/eSignature/examples/eg001_embedded_signing.py b/app/eSignature/examples/eg001_embedded_signing.py index 474f7441..f7905db9 100644 --- a/app/eSignature/examples/eg001_embedded_signing.py +++ b/app/eSignature/examples/eg001_embedded_signing.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import EnvelopesApi, RecipientViewRequest, Document, Signer, EnvelopeDefinition, SignHere, Tabs, \ @@ -51,9 +52,17 @@ def worker(cls, args): api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) envelope_api = EnvelopesApi(api_client) - results = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (data, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) - envelope_id = results.envelope_id + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + + envelope_id = data.envelope_id #ds-snippet-end:eSign1Step3 # 3. Create the Recipient View request object @@ -72,13 +81,21 @@ def worker(cls, args): # Exceptions will be caught by the calling function #ds-snippet-start:eSign1Step5 - results = envelope_api.create_recipient_view( + (data, status, headers) = envelope_api.create_recipient_view_with_http_info( account_id=args["account_id"], envelope_id=envelope_id, recipient_view_request=recipient_view_request ) - return {"envelope_id": envelope_id, "redirect_url": results.url} + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + + return {"envelope_id": envelope_id, "redirect_url": data.url} #ds-snippet-end:eSign1Step5 @classmethod diff --git a/app/eSignature/examples/eg002_signing_via_email.py b/app/eSignature/examples/eg002_signing_via_email.py index 4378975e..6f2dbc58 100644 --- a/app/eSignature/examples/eg002_signing_via_email.py +++ b/app/eSignature/examples/eg002_signing_via_email.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import EnvelopesApi, EnvelopeDefinition, Document, Signer, CarbonCopy, SignHere, Tabs, Recipients @@ -24,9 +25,17 @@ def worker(cls, args, doc_docx_path, doc_pdf_path): # Call Envelopes::create API method # Exceptions will be caught by the calling function envelopes_api = EnvelopesApi(api_client) - results = envelopes_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (data, status, headers) = envelopes_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) - envelope_id = results.envelope_id + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + + envelope_id = data.envelope_id return {"envelope_id": envelope_id} #ds-snippet-end:eSign2Step3 diff --git a/app/eSignature/examples/eg003_list_envelopes.py b/app/eSignature/examples/eg003_list_envelopes.py index 96855006..a9f1ecfb 100644 --- a/app/eSignature/examples/eg003_list_envelopes.py +++ b/app/eSignature/examples/eg003_list_envelopes.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta +from datetime import datetime as dt, timedelta, timezone from docusign_esign import EnvelopesApi from flask import session @@ -36,8 +36,16 @@ def worker(args): # Here we set the from_date to filter envelopes for the last month # Use ISO 8601 date format # 1. Call the envelope status change method to list the envelopes - from_date = (datetime.utcnow() - timedelta(days=30)).strftime('%Y-%m-%d') - results = envelope_api.list_status_changes(account_id=args["account_id"], from_date=from_date) + from_date = (dt.utcnow() - timedelta(days=30)).strftime('%Y-%m-%d') + (data, status, headers) = envelope_api.list_status_changes_with_http_info(account_id=args["account_id"], from_date=from_date) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign3Step2 - return results + return data diff --git a/app/eSignature/examples/eg004_envelope_info.py b/app/eSignature/examples/eg004_envelope_info.py index 4ec0d144..96d3f517 100644 --- a/app/eSignature/examples/eg004_envelope_info.py +++ b/app/eSignature/examples/eg004_envelope_info.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import EnvelopesApi from flask import session @@ -29,6 +30,14 @@ def worker(args): envelope_api = EnvelopesApi(api_client) # Call the envelope get method - results = envelope_api.get_envelope(account_id=args["account_id"], envelope_id=args["envelope_id"]) + (data, status, headers) = envelope_api.get_envelope_with_http_info(account_id=args["account_id"], envelope_id=args["envelope_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign4Step2 - return results + return data diff --git a/app/eSignature/examples/eg005_envelope_recipients.py b/app/eSignature/examples/eg005_envelope_recipients.py index 607a2c7f..d54507a8 100644 --- a/app/eSignature/examples/eg005_envelope_recipients.py +++ b/app/eSignature/examples/eg005_envelope_recipients.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import EnvelopesApi from flask import session @@ -29,7 +30,15 @@ def worker(args): envelope_api = EnvelopesApi(api_client) # Call the envelope recipients list method - results = envelope_api.list_recipients(account_id=args["account_id"], envelope_id=args["envelope_id"]) + (data, status, headers) = envelope_api.list_recipients_with_http_info(account_id=args["account_id"], envelope_id=args["envelope_id"]) - return results + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + + return data #ds-snippet-end:eSign5Step2 diff --git a/app/eSignature/examples/eg006_envelope_docs.py b/app/eSignature/examples/eg006_envelope_docs.py index df2e5000..cd250808 100644 --- a/app/eSignature/examples/eg006_envelope_docs.py +++ b/app/eSignature/examples/eg006_envelope_docs.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import EnvelopesApi from flask import session @@ -30,10 +31,18 @@ def worker(args): #ds-snippet-start:eSign6Step3 envelope_api = EnvelopesApi(api_client) # Call the EnvelopeDocuments::list method - results = envelope_api.list_documents(account_id=args["account_id"], envelope_id=args["envelope_id"]) + (data, status, headers) = envelope_api.list_documents_with_http_info(account_id=args["account_id"], envelope_id=args["envelope_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign6Step3 - return results + return data @staticmethod def save_envelope_documents(results): diff --git a/app/eSignature/examples/eg007_envelope_get_doc.py b/app/eSignature/examples/eg007_envelope_get_doc.py index d2020a61..7bee037b 100644 --- a/app/eSignature/examples/eg007_envelope_get_doc.py +++ b/app/eSignature/examples/eg007_envelope_get_doc.py @@ -1,5 +1,7 @@ +from datetime import datetime as dt, timezone from docusign_esign import EnvelopesApi from flask import request, session +from werkzeug.utils import secure_filename from ...consts import pattern from ...docusign import create_api_client @@ -40,11 +42,19 @@ def worker(args): document_id = args["document_id"] # Call the envelope get method to get the path of the temp file with the documents - temp_file_path = envelope_api.get_document( + (document_bytes, status, headers) = envelope_api.get_document_with_http_info( account_id=args["account_id"], document_id=document_id, envelope_id=args["envelope_id"] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign7Step3 doc_item = next(item for item in args["envelope_documents"]["documents"] if item["document_id"] == document_id) @@ -67,4 +77,7 @@ def worker(args): else: mimetype = "application/octet-stream" - return {"mimetype": mimetype, "doc_name": doc_name, "data": temp_file_path} + # Sanitize the document name before using it as a download filename + doc_name = secure_filename(doc_name) + + return {"mimetype": mimetype, "doc_name": doc_name, "data": document_bytes} diff --git a/app/eSignature/examples/eg008_create_template.py b/app/eSignature/examples/eg008_create_template.py index 143f0bd5..89de3ddb 100644 --- a/app/eSignature/examples/eg008_create_template.py +++ b/app/eSignature/examples/eg008_create_template.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import Document, Signer, CarbonCopy, SignHere, Tabs, Recipients, \ @@ -36,7 +37,16 @@ def worker(cls, args): templates_api = TemplatesApi(api_client) # 1. call Templates::list API method # Exceptions will be caught by the calling function - results = templates_api.list_templates(account_id=args["account_id"], search_text=template_name) + (results, status, headers) = templates_api.list_templates_with_http_info(account_id=args["account_id"], search_text=template_name) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + created_new_template = False if int(results.result_set_size) > 0: @@ -50,8 +60,17 @@ def worker(cls, args): # 2. create the template #ds-snippet-start:eSign8Step3 template_req_object = cls.make_template_req(args["template_args"]) - res = templates_api.create_template(account_id=args["account_id"], envelope_template=template_req_object) + (res, status, headers) = templates_api.create_template_with_http_info(account_id=args["account_id"], envelope_template=template_req_object) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign8Step3 + template_id = res.template_id results_template_name = res.name created_new_template = True diff --git a/app/eSignature/examples/eg009_use_template.py b/app/eSignature/examples/eg009_use_template.py index ea58d34c..f52e1abd 100644 --- a/app/eSignature/examples/eg009_use_template.py +++ b/app/eSignature/examples/eg009_use_template.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import EnvelopesApi, EnvelopeDefinition, TemplateRole from flask import request, session @@ -48,7 +49,16 @@ def worker(cls, args): api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) envelope_api = EnvelopesApi(api_client) - results = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + envelope_id = results.envelope_id return {"envelope_id": envelope_id} #ds-snippet-end:eSign9Step3 diff --git a/app/eSignature/examples/eg011_embedded_sending.py b/app/eSignature/examples/eg011_embedded_sending.py index 9e42084b..c279f296 100644 --- a/app/eSignature/examples/eg011_embedded_sending.py +++ b/app/eSignature/examples/eg011_embedded_sending.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import EnvelopesApi, EnvelopesApi, EnvelopeDefinition, \ @@ -65,12 +66,20 @@ def create_sender_view(cls, args, envelope_id): api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) envelope_api = EnvelopesApi(api_client) - sender_view = envelope_api.create_sender_view( + (sender_view, status, headers) = envelope_api.create_sender_view_with_http_info( account_id=args["account_id"], envelope_id=envelope_id, envelope_view_request=view_request ) + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + # Switch to Recipient and Documents view if requested by the user url = sender_view.url @@ -121,7 +130,17 @@ def create_envelope(cls, args, doc_docx_path, doc_pdf_path): # Call Envelopes::create API method # Exceptions will be caught by the calling function envelopes_api = EnvelopesApi(api_client) - return envelopes_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (envelope, status, headers) = envelopes_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + + return envelope @classmethod def make_envelope(cls, args, doc_docx_path, doc_pdf_path): diff --git a/app/eSignature/examples/eg012_embedded_console.py b/app/eSignature/examples/eg012_embedded_console.py index 8c3ba6f9..1b323ba1 100644 --- a/app/eSignature/examples/eg012_embedded_console.py +++ b/app/eSignature/examples/eg012_embedded_console.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import EnvelopesApi, ConsoleViewRequest from flask import session, url_for, request @@ -44,7 +45,16 @@ def worker(args): api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) envelope_api = EnvelopesApi(api_client) - results = envelope_api.create_console_view(account_id=args["account_id"], console_view_request=view_request) + (results, status, headers) = envelope_api.create_console_view_with_http_info(account_id=args["account_id"], console_view_request=view_request) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + url = results.url #ds-snippet-end:eSign12Step2 return {"redirect_url": url} diff --git a/app/eSignature/examples/eg013_add_doc_to_template.py b/app/eSignature/examples/eg013_add_doc_to_template.py index 0f8e3d2a..41b6d133 100644 --- a/app/eSignature/examples/eg013_add_doc_to_template.py +++ b/app/eSignature/examples/eg013_add_doc_to_template.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from docusign_esign import EnvelopesApi, EnvelopeDefinition, Document, Signer, CarbonCopy, SignHere, Tabs, Recipients, \ CompositeTemplate, InlineTemplate, ServerTemplate, RecipientViewRequest @@ -61,7 +62,16 @@ def worker(cls, args): api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) envelope_api = EnvelopesApi(api_client) - results = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + envelope_id = results.envelope_id #ds-snippet-end:eSign13Step3 @@ -80,12 +90,20 @@ def worker(cls, args): ) # Obtain the recipient_view_url for the embedded signing # Exceptions will be caught by the calling function - results = envelope_api.create_recipient_view( + (results, status, headers) = envelope_api.create_recipient_view_with_http_info( account_id=args["account_id"], envelope_id=envelope_id, recipient_view_request=recipient_view_request ) + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + return {"envelope_id": envelope_id, "redirect_url": results.url} #ds-snippet-end:eSign13Step4 diff --git a/app/eSignature/examples/eg014_collect_payment.py b/app/eSignature/examples/eg014_collect_payment.py index 63b3b4ca..056231f9 100644 --- a/app/eSignature/examples/eg014_collect_payment.py +++ b/app/eSignature/examples/eg014_collect_payment.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import EnvelopesApi, EnvelopeDefinition, Document, Signer, CarbonCopy, SignHere, Tabs, Recipients, \ @@ -54,7 +55,15 @@ def worker(cls, args): api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) envelope_api = EnvelopesApi(api_client) - results = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign14Step4 envelope_id = results.envelope_id diff --git a/app/eSignature/examples/eg015_envelope_tab_data.py b/app/eSignature/examples/eg015_envelope_tab_data.py index 3b830bee..69e219af 100644 --- a/app/eSignature/examples/eg015_envelope_tab_data.py +++ b/app/eSignature/examples/eg015_envelope_tab_data.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import EnvelopesApi from flask import session @@ -27,6 +28,14 @@ def worker(args): #ds-snippet-end:eSign15Step2 #ds-snippet-start:eSign15Step3 envelopes_api = EnvelopesApi(api_client) - results = envelopes_api.get_form_data(account_id=args["account_id"], envelope_id=args["envelope_id"]) + (results, status, headers) = envelopes_api.get_form_data_with_http_info(account_id=args["account_id"], envelope_id=args["envelope_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign15Step3 return results diff --git a/app/eSignature/examples/eg016_set_tab_values.py b/app/eSignature/examples/eg016_set_tab_values.py index 91aecdbb..59511788 100644 --- a/app/eSignature/examples/eg016_set_tab_values.py +++ b/app/eSignature/examples/eg016_set_tab_values.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import EnvelopesApi, EnvelopeDefinition, Document, Signer, SignHere, Tabs, Recipients, \ @@ -56,7 +57,15 @@ def worker(cls, args): #ds-snippet-start:eSign16Step4 envelopes_api = EnvelopesApi(api_client) - results = envelopes_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelopes_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") envelope_id = results.envelope_id #ds-snippet-end:eSign16Step4 @@ -72,12 +81,20 @@ def worker(cls, args): ) # Obtain the recipient view URL for the embedded signing # Exceptions will be caught by the calling function - results = envelopes_api.create_recipient_view( + (results, status, headers) = envelopes_api.create_recipient_view_with_http_info( account_id=args["account_id"], envelope_id=envelope_id, recipient_view_request=recipient_view_request ) + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + return {"envelope_id": envelope_id, "redirect_url": results.url} #ds-snippet-end:eSign16Step5 diff --git a/app/eSignature/examples/eg017_set_template_tab_values.py b/app/eSignature/examples/eg017_set_template_tab_values.py index 03253d92..5ac5306e 100644 --- a/app/eSignature/examples/eg017_set_template_tab_values.py +++ b/app/eSignature/examples/eg017_set_template_tab_values.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import EnvelopesApi, EnvelopeDefinition, RecipientViewRequest, Tabs, TemplateRole, RadioGroup, \ TextCustomField, Text, CustomFields, Checkbox, Radio, List from flask import current_app as app, url_for, request @@ -56,7 +57,15 @@ def worker(cls, args): #ds-snippet-start:eSign17Step5 envelopes_api = EnvelopesApi(api_client) - results = envelopes_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelopes_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") envelope_id = results.envelope_id #ds-snippet-end:eSign17Step5 @@ -73,11 +82,20 @@ def worker(cls, args): ) # Obtain the recipient_view_url for the embedded signing # Exceptions will be caught by the calling function - results = envelopes_api.create_recipient_view( + (results, status, headers) = envelopes_api.create_recipient_view_with_http_info( account_id=args["account_id"], envelope_id=envelope_id, recipient_view_request=recipient_view_request ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + return {"envelope_id": envelope_id, "redirect_url": results.url} #ds-snippet-end:eSign17Step6 diff --git a/app/eSignature/examples/eg018_envelope_custom_field_data.py b/app/eSignature/examples/eg018_envelope_custom_field_data.py index dd7b23c1..b0a865dc 100644 --- a/app/eSignature/examples/eg018_envelope_custom_field_data.py +++ b/app/eSignature/examples/eg018_envelope_custom_field_data.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import EnvelopesApi from flask import session @@ -27,6 +28,15 @@ def worker(args): #ds-snippet-end:eSign18Step2 #ds-snippet-start:eSign18Step3 envelopes_api = EnvelopesApi(api_client) - results = envelopes_api.list_custom_fields(account_id=args["account_id"], envelope_id=args["envelope_id"]) + (results, status, headers) = envelopes_api.list_custom_fields_with_http_info(account_id=args["account_id"], envelope_id=args["envelope_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign18Step3 + return results diff --git a/app/eSignature/examples/eg019_access_code_authentication.py b/app/eSignature/examples/eg019_access_code_authentication.py index 2bda31f4..7767c0a7 100644 --- a/app/eSignature/examples/eg019_access_code_authentication.py +++ b/app/eSignature/examples/eg019_access_code_authentication.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import EnvelopesApi, EnvelopeDefinition, Document, Signer, SignHere, Tabs, Recipients @@ -99,6 +100,15 @@ def worker(args): # Call the eSignature REST API #ds-snippet-start:eSign19Step4 envelope_api = EnvelopesApi(api_client) - results = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + #ds-snippet-end:eSign19Step4 return results diff --git a/app/eSignature/examples/eg020_phone_authentication.py b/app/eSignature/examples/eg020_phone_authentication.py index 5e2af839..a88ebfde 100644 --- a/app/eSignature/examples/eg020_phone_authentication.py +++ b/app/eSignature/examples/eg020_phone_authentication.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import AccountsApi, EnvelopesApi, EnvelopeDefinition, Document, Signer, SignHere, Tabs, Recipients, RecipientIdentityInputOption, RecipientIdentityPhoneNumber @@ -105,7 +106,15 @@ def worker(args): # Call the eSignature REST API #ds-snippet-start:eSign20Step5 envelopes_api = EnvelopesApi(api_client) - results = envelopes_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelopes_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign20Step5 return results @@ -117,7 +126,15 @@ def get_workflow(args): api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) #ds-snippet-start:eSign20Step3 workflow_details = AccountsApi(api_client) - workflow_response = workflow_details.get_account_identity_verification(account_id=args["account_id"]) + (workflow_response, status, headers) = workflow_details.get_account_identity_verification_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") # Check that idv authentication is enabled # Find the workflow ID corresponding to the name "Phone Authentication" diff --git a/app/eSignature/examples/eg022_kba_authentication.py b/app/eSignature/examples/eg022_kba_authentication.py index 29bc68e5..15cfa917 100644 --- a/app/eSignature/examples/eg022_kba_authentication.py +++ b/app/eSignature/examples/eg022_kba_authentication.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import EnvelopesApi, EnvelopeDefinition, Document, Signer, SignHere, Tabs, Recipients @@ -97,6 +98,15 @@ def worker(args): # Call the eSignature REST API #ds-snippet-start:eSign22Step4 envelope_api = EnvelopesApi(api_client) - results = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + #ds-snippet-end:eSign22Step4 return results diff --git a/app/eSignature/examples/eg023_idv_authentication.py b/app/eSignature/examples/eg023_idv_authentication.py index 26390923..e96f6487 100644 --- a/app/eSignature/examples/eg023_idv_authentication.py +++ b/app/eSignature/examples/eg023_idv_authentication.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import AccountsApi, EnvelopesApi, EnvelopeDefinition, Document, Signer, SignHere, Tabs, Recipients @@ -99,7 +100,16 @@ def worker(args): # Call the eSignature REST API #ds-snippet-start:eSign23Step5 envelopes_api = EnvelopesApi(api_client) - results = envelopes_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelopes_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + #ds-snippet-end:eSign23Step5 return results @@ -111,7 +121,15 @@ def get_workflow(args): #ds-snippet-start:eSign23Step3 workflow_details = AccountsApi(api_client) - workflow_response = workflow_details.get_account_identity_verification(account_id=args["account_id"]) + (workflow_response, status, headers) = workflow_details.get_account_identity_verification_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") # Check that idv authentication is enabled if workflow_response.identity_verification: diff --git a/app/eSignature/examples/eg024_permissions_creating.py b/app/eSignature/examples/eg024_permissions_creating.py index 61296042..bd894611 100644 --- a/app/eSignature/examples/eg024_permissions_creating.py +++ b/app/eSignature/examples/eg024_permissions_creating.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import AccountsApi, PermissionProfile from flask import session, request @@ -42,10 +43,18 @@ def worker(args): # Call the eSignature REST API #ds-snippet-start:eSign24Step4 account_api = AccountsApi(api_client) - response = account_api.create_permission_profile( + (response, status, headers) = account_api.create_permission_profile_with_http_info( account_id=args["account_id"], permission_profile=permission_profile ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign24Step4 return response diff --git a/app/eSignature/examples/eg025_permissions_set_user_group.py b/app/eSignature/examples/eg025_permissions_set_user_group.py index e3168137..32c4091a 100644 --- a/app/eSignature/examples/eg025_permissions_set_user_group.py +++ b/app/eSignature/examples/eg025_permissions_set_user_group.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import AccountsApi, Group, GroupInformation, GroupsApi from docusign_esign.client.api_exception import ApiException from flask import session, request @@ -38,8 +39,17 @@ def worker(args): # Call the eSignature REST API #ds-snippet-start:eSign25Step4 - response = group_api.update_groups(account_id=args["account_id"], group_information=group_information) + (response, status, headers) = group_api.update_groups_with_http_info(account_id=args["account_id"], group_information=group_information) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign25Step4 + return response @staticmethod @@ -49,8 +59,25 @@ def get_data(args): try: account_api = AccountsApi(api_client) group_api = GroupsApi(api_client) - permission_profiles = account_api.list_permissions(account_id=args["account_id"]).permission_profiles - groups = group_api.list_groups(account_id=args["account_id"]).groups + (permission_profiles, status, headers) = account_api.list_permissions_with_http_info(account_id=args["account_id"]).permission_profiles + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + + (groups, status, headers) = group_api.list_groups_with_http_info(account_id=args["account_id"]).groups + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") return permission_profiles, groups diff --git a/app/eSignature/examples/eg026_permissions_change_single_setting.py b/app/eSignature/examples/eg026_permissions_change_single_setting.py index 49b2a76b..6a360e71 100644 --- a/app/eSignature/examples/eg026_permissions_change_single_setting.py +++ b/app/eSignature/examples/eg026_permissions_change_single_setting.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import AccountsApi, PermissionProfile from docusign_esign.client.api_exception import ApiException from flask import request, session @@ -39,19 +40,37 @@ def worker(args): settings=args["settings"] ) account_api = AccountsApi(api_client) - previous_settings = account_api.get_permission_profile( + (response, status, headers) = account_api.get_permission_profile_with_http_info( account_id=args["account_id"], permission_profile_id=args["permission_profile_id"] - ).settings.to_dict() + ) + previous_settings = response.settings.to_dict() + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + #ds-snippet-end:eSign26Step3 # Step 4. Call the eSignature REST API #ds-snippet-start:eSign26Step4 - response = account_api.update_permission_profile( + (response, status, headers) = account_api.update_permission_profile( account_id=args["account_id"], permission_profile_id=args["permission_profile_id"], permission_profile=permission_profile ) new_settings = response.settings.to_dict() + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign26Step4 changed_settings = {} @@ -73,7 +92,15 @@ def get_permissions_profiles(args): try: account_api = AccountsApi(api_client) - response = account_api.list_permissions(account_id=args["account_id"]) + (response, status, headers) = account_api.list_permissions_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") return response.permission_profiles diff --git a/app/eSignature/examples/eg027_permissions_delete.py b/app/eSignature/examples/eg027_permissions_delete.py index 879eb84f..2b07c18a 100644 --- a/app/eSignature/examples/eg027_permissions_delete.py +++ b/app/eSignature/examples/eg027_permissions_delete.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import AccountsApi from docusign_esign.client.api_exception import ApiException from flask import session, request @@ -30,9 +31,17 @@ def worker(args): # Step 3. Call the eSignature REST API #ds-snippet-start:eSign27Step3 - account_api.delete_permission_profile( + (response, status, headers) = account_api.delete_permission_profile_with_http_info( account_id=args["account_id"], permission_profile_id=args["permission_profile_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign27Step3 @staticmethod @@ -42,7 +51,15 @@ def get_permissions_profiles(args): try: account_api = AccountsApi(api_client) - response = account_api.list_permissions(account_id=args["account_id"]) + (response, status, headers) = account_api.list_permissions_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") return response.permission_profiles diff --git a/app/eSignature/examples/eg028_brand_creating.py b/app/eSignature/examples/eg028_brand_creating.py index 4be80509..14f108f2 100644 --- a/app/eSignature/examples/eg028_brand_creating.py +++ b/app/eSignature/examples/eg028_brand_creating.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import AccountsApi, Brand from flask import session, request from ...docusign import create_api_client @@ -38,6 +39,15 @@ def worker(args): # Step 4. Call the eSignature REST API #ds-snippet-start:eSign28Step4 account_api = AccountsApi(api_client) - response = account_api.create_brand(account_id=args["account_id"], brand=brand) + (response, status, headers) = account_api.create_brand_with_http_info(account_id=args["account_id"], brand=brand) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign28Step4 + return response \ No newline at end of file diff --git a/app/eSignature/examples/eg029_brands_apply_to_envelope.py b/app/eSignature/examples/eg029_brands_apply_to_envelope.py index bbd3169d..977b8395 100644 --- a/app/eSignature/examples/eg029_brands_apply_to_envelope.py +++ b/app/eSignature/examples/eg029_brands_apply_to_envelope.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import AccountsApi, EnvelopesApi, EnvelopeDefinition, Document, Signer, SignHere, Tabs, Recipients from docusign_esign.client.api_exception import ApiException @@ -50,8 +51,17 @@ def worker(cls, args): envelope_definition = cls.make_envelope(args["envelope_args"]) # Call the eSignature REST API - response = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (response, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign29Step4 + return response #ds-snippet-start:eSign29Step3 @@ -107,7 +117,16 @@ def get_brands(args): api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) try: account_api = AccountsApi(api_client) - response = account_api.list_brands(account_id=args["account_id"]) + (response, status, headers) = account_api.list_brands_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + return response.brands except ApiException as err: return process_error(err) \ No newline at end of file diff --git a/app/eSignature/examples/eg030_brands_apply_to_template.py b/app/eSignature/examples/eg030_brands_apply_to_template.py index e6279b38..c54209ec 100644 --- a/app/eSignature/examples/eg030_brands_apply_to_template.py +++ b/app/eSignature/examples/eg030_brands_apply_to_template.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import EnvelopesApi, EnvelopeDefinition, TemplateRole, AccountsApi, TemplatesApi from docusign_esign.client.api_exception import ApiException from flask import session, request @@ -61,8 +62,17 @@ def worker(cls, args): # Call the eSignature REST API #ds-snippet-start:eSign30Step4 - response = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (response, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign30Step4 + return response @classmethod @@ -108,7 +118,15 @@ def get_data(args): try: """Retrieve all brands using the AccountBrands::List""" account_api = AccountsApi(api_client) - brands = account_api.list_brands(account_id=args["account_id"]).brands + (brands, status, headers) = account_api.list_brands_with_http_info(account_id=args["account_id"]).brands + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") return brands diff --git a/app/eSignature/examples/eg031_bulk_send.py b/app/eSignature/examples/eg031_bulk_send.py index 53da45d2..2f78d82b 100644 --- a/app/eSignature/examples/eg031_bulk_send.py +++ b/app/eSignature/examples/eg031_bulk_send.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import EnvelopesApi, Document, Signer, EnvelopeDefinition, Recipients, \ @@ -69,10 +70,19 @@ def worker(cls, args): #ds-snippet-start:eSign31Step3 bulk_envelopes_api = BulkEnvelopesApi(api_client) bulk_sending_list = cls.create_bulk_sending_list(args["signers"]) - bulk_list = bulk_envelopes_api.create_bulk_send_list( + (bulk_list, status, headers) = bulk_envelopes_api.create_bulk_send_list_with_http_info( account_id=args["account_id"], bulk_sending_list=bulk_sending_list ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + bulk_list_id = bulk_list.list_id #ds-snippet-end:eSign31Step3 @@ -80,7 +90,16 @@ def worker(cls, args): #ds-snippet-start:eSign31Step4 envelope_api = EnvelopesApi(api_client) envelope_definition = cls.make_draft_envelope(args["doc_pdf"]) - envelope = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (envelope, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + envelope_id = envelope.envelope_id #ds-snippet-end:eSign31Step4 @@ -88,28 +107,55 @@ def worker(cls, args): #ds-snippet-start:eSign31Step5 text_custom_fields = TextCustomField(name="mailingListId", required="false", show="false", value=bulk_list_id) custom_fields = CustomFields(list_custom_fields=[], text_custom_fields=[text_custom_fields]) - envelope_api.create_custom_fields( + (response, status, headers) = envelope_api.create_custom_fields_with_http_info( account_id=args["account_id"], envelope_id=envelope_id, custom_fields=custom_fields ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign31Step5 # Initiate bulk send #ds-snippet-start:eSign31Step6 bulk_send_request = BulkSendRequest(envelope_or_template_id=envelope_id) - batch = bulk_envelopes_api.create_bulk_send_request( + (batch, status, headers) = bulk_envelopes_api.create_bulk_send_request_with_http_info( account_id=args["account_id"], bulk_send_list_id=bulk_list_id, bulk_send_request=bulk_send_request ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + batch_id = batch.batch_id #ds-snippet-end:eSign31Step6 # Confirm successful batch send #ds-snippet-start:eSign31Step7 - response = bulk_envelopes_api.get_bulk_send_batch_status(account_id=args["account_id"], - bulk_send_batch_id=batch_id) + (response, status, headers) = bulk_envelopes_api.get_bulk_send_batch_status_with_http_info( + account_id=args["account_id"], + bulk_send_batch_id=batch_id + ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign31Step7 print(response) diff --git a/app/eSignature/examples/eg032_pause_signature_workflow.py b/app/eSignature/examples/eg032_pause_signature_workflow.py index 3dcf53ac..989ec8b3 100644 --- a/app/eSignature/examples/eg032_pause_signature_workflow.py +++ b/app/eSignature/examples/eg032_pause_signature_workflow.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import EnvelopesApi, EnvelopeDefinition, Document, Signer, SignHere, Tabs, Recipients @@ -56,10 +57,18 @@ def worker(cls, args): # Exceptions will be caught by the calling function #ds-snippet-start:eSign32Step4 envelopes_api = EnvelopesApi(api_client) - results = envelopes_api.create_envelope( + (results, status, headers) = envelopes_api.create_envelope_with_http_info( account_id=args["account_id"], envelope_definition=envelope_definition ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign32Step4 return {"paused_envelope_id": results.envelope_id} diff --git a/app/eSignature/examples/eg033_unpause_signature_workflow.py b/app/eSignature/examples/eg033_unpause_signature_workflow.py index 7e5b493e..5992ecdc 100644 --- a/app/eSignature/examples/eg033_unpause_signature_workflow.py +++ b/app/eSignature/examples/eg033_unpause_signature_workflow.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import EnvelopesApi, EnvelopeDefinition from docusign_esign.models import Workflow from flask import session @@ -38,11 +39,20 @@ def worker(cls, args): # Exceptions will be caught by the calling function #ds-snippet-start:eSign33Step4 envelopes_api = EnvelopesApi(api_client) - results = envelopes_api.update( + (results, status, headers) = envelopes_api.update_with_http_info( account_id=args["account_id"], envelope_id=args["envelope_id"], envelope=env, resend_envelope=True ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign33Step4 + return {"envelope_id": results.envelope_id} diff --git a/app/eSignature/examples/eg034_use_conditional_recipients.py b/app/eSignature/examples/eg034_use_conditional_recipients.py index 6da450ab..42652822 100644 --- a/app/eSignature/examples/eg034_use_conditional_recipients.py +++ b/app/eSignature/examples/eg034_use_conditional_recipients.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import ( @@ -65,10 +66,18 @@ def worker(cls, args): # Exceptions will be caught by the calling function #ds-snippet-start:eSign34Step4 envelopes_api = EnvelopesApi(api_client) - results = envelopes_api.create_envelope( + (results, status, headers) = envelopes_api.create_envelope_with_http_info( account_id=args["account_id"], envelope_definition=envelope_definition ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign34Step4 return {"envelope_id": results.envelope_id} diff --git a/app/eSignature/examples/eg035_scheduled_sending.py b/app/eSignature/examples/eg035_scheduled_sending.py index de9af175..1c25acf4 100644 --- a/app/eSignature/examples/eg035_scheduled_sending.py +++ b/app/eSignature/examples/eg035_scheduled_sending.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import ( @@ -33,7 +34,16 @@ def worker(cls, args): #ds-snippet-start:eSign35Step3 api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) envelopes_api = EnvelopesApi(api_client) - results = envelopes_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelopes_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + #ds-snippet-end:eSign35Step3 # Step 3 end diff --git a/app/eSignature/examples/eg036_delayed_routing.py b/app/eSignature/examples/eg036_delayed_routing.py index 7a8fa703..b8148d36 100644 --- a/app/eSignature/examples/eg036_delayed_routing.py +++ b/app/eSignature/examples/eg036_delayed_routing.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import ( @@ -31,7 +32,16 @@ def worker(cls, args): #ds-snippet-start:eSign36Step3 api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) envelopes_api = EnvelopesApi(api_client) - results = envelopes_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelopes_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + #ds-snippet-end:eSign36Step3 envelope_id = results.envelope_id diff --git a/app/eSignature/examples/eg037_sms_delivery.py b/app/eSignature/examples/eg037_sms_delivery.py index f6a536e6..a428f1df 100644 --- a/app/eSignature/examples/eg037_sms_delivery.py +++ b/app/eSignature/examples/eg037_sms_delivery.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import ( @@ -67,7 +68,15 @@ def worker(cls, args): # Call Envelopes::create API method # Exceptions will be caught by the calling function envelopes_api = EnvelopesApi(api_client) - results = envelopes_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelopes_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") envelope_id = results.envelope_id diff --git a/app/eSignature/examples/eg038_responsive_signing.py b/app/eSignature/examples/eg038_responsive_signing.py index 83bb8836..b55a020a 100644 --- a/app/eSignature/examples/eg038_responsive_signing.py +++ b/app/eSignature/examples/eg038_responsive_signing.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from os import path from docusign_esign import ( @@ -14,7 +15,7 @@ ) from flask import session, url_for, request -from ...consts import authentication_method, demo_docs_path, pattern, signer_client_id +from ...consts import authentication_method, demo_docs_path, order_form_html_file, pattern, signer_client_id from ...docusign import create_api_client @@ -35,8 +36,7 @@ def get_args(): "cc_email": cc_email, "cc_name": cc_name, "signer_client_id": signer_client_id, - "ds_return_url": url_for("ds.ds_return", _external=True), - "doc_file": path.join(demo_docs_path, "order_form.html") + "ds_return_url": url_for("ds.ds_return", _external=True) } args = { "account_id": session["ds_account_id"], @@ -64,7 +64,15 @@ def worker(cls, args): api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) envelope_api = EnvelopesApi(api_client) - results = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") envelope_id = results.envelope_id @@ -79,12 +87,20 @@ def worker(cls, args): ) # Obtain the recipient_view_url for the embedded signing # Exceptions will be caught by the calling function - results = envelope_api.create_recipient_view( + (results, status, headers) = envelope_api.create_recipient_view_with_http_info( account_id=args["account_id"], envelope_id=envelope_id, recipient_view_request=recipient_view_request ) + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + return {"envelope_id": envelope_id, "redirect_url": results.url} #ds-snippet-end:eSign38Step3 @@ -196,7 +212,7 @@ def make_envelope(cls, args): @classmethod def get_html_content(cls, args): - with open(args["doc_file"], "r") as file: + with open(path.join(demo_docs_path, order_form_html_file), "r") as file: doc_html = file.read() return doc_html.replace("{signer_name}", args["signer_name"]) \ diff --git a/app/eSignature/examples/eg039_in_person_signer.py b/app/eSignature/examples/eg039_in_person_signer.py index dee7f32c..c2ecd36b 100644 --- a/app/eSignature/examples/eg039_in_person_signer.py +++ b/app/eSignature/examples/eg039_in_person_signer.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import EnvelopesApi, RecipientViewRequest, Document, Signer, EnvelopeDefinition, SignHere, Tabs, \ @@ -51,7 +52,15 @@ def worker(cls, args): api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) envelope_api = EnvelopesApi(api_client) - results = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") envelope_id = results.envelope_id #ds-snippet-end:eSign39Step3 @@ -70,11 +79,20 @@ def worker(cls, args): # Obtain the recipient_view_url for the embedded signing session # Exceptions will be caught by the calling function #ds-snippet-start:eSign39Step5 - results = envelope_api.create_recipient_view( + (results, status, headers) = envelope_api.create_recipient_view_with_http_info( account_id=args["account_id"], envelope_id=envelope_id, recipient_view_request=recipient_view_request ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + return {"envelope_id": envelope_id, "redirect_url": results.url} #ds-snippet-end:eSign39Step5 diff --git a/app/eSignature/examples/eg040_document_visibility.py b/app/eSignature/examples/eg040_document_visibility.py index f940518f..a58ba0ea 100644 --- a/app/eSignature/examples/eg040_document_visibility.py +++ b/app/eSignature/examples/eg040_document_visibility.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from typing import List @@ -66,7 +67,16 @@ def worker(cls, args, doc_docx_path, doc_pdf_path): #ds-snippet-start:eSign40Step4 envelope_api = EnvelopesApi(api_client) - results = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + envelope_id = results.envelope_id #ds-snippet-end:eSign40Step4 return {"envelope_id": envelope_id} diff --git a/app/eSignature/examples/eg041_cfr_embedded_signing.py b/app/eSignature/examples/eg041_cfr_embedded_signing.py index 51bb852e..46d085fd 100644 --- a/app/eSignature/examples/eg041_cfr_embedded_signing.py +++ b/app/eSignature/examples/eg041_cfr_embedded_signing.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import AccountsApi, EnvelopesApi, RecipientViewRequest, Document, Signer, EnvelopeDefinition, SignHere, Tabs, \ @@ -6,6 +7,8 @@ from docusign_esign.client.api_exception import ApiException from flask import session, url_for, request +from app.error_handlers import process_error + from ...consts import authentication_method, demo_docs_path, pattern, signer_client_id from ...docusign import create_api_client from ...ds_config import DS_CONFIG @@ -57,7 +60,15 @@ def worker(cls, args): api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) envelope_api = EnvelopesApi(api_client) - results = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") envelope_id = results.envelope_id #ds-snippet-end:eSign41Step4 @@ -76,11 +87,19 @@ def worker(cls, args): # Obtain the recipient_view_url for the embedded signing # Exceptions will be caught by the calling function #ds-snippet-start:eSign41Step6 - results = envelope_api.create_recipient_view( + (results, status, headers) = envelope_api.create_recipient_view_with_http_info( account_id=args["account_id"], envelope_id=envelope_id, recipient_view_request=recipient_view_request ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign41Step6 return {"envelope_id": envelope_id, "redirect_url": results.url} @@ -156,7 +175,15 @@ def get_workflow(args): api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) workflow_details = AccountsApi(api_client) - workflow_response = workflow_details.get_account_identity_verification(account_id=args["account_id"]) + (workflow_response, status, headers) = workflow_details.get_account_identity_verification_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") # Check that idv authentication is enabled # Find the workflow ID corresponding to the name "Phone Authentication" diff --git a/app/eSignature/examples/eg042_document_generation.py b/app/eSignature/examples/eg042_document_generation.py index 7edd5cf3..25525efa 100644 --- a/app/eSignature/examples/eg042_document_generation.py +++ b/app/eSignature/examples/eg042_document_generation.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from flask import session, request from os import path from docusign_esign import EnvelopesApi, TemplatesApi, EnvelopeDefinition, Document, Signer, SignHere, \ @@ -53,55 +54,114 @@ def worker(cls, args): #ds-snippet-start:eSign42Step2 template_data = cls.make_template() - template = templates_api.create_template(account_id, envelope_template=template_data) + (template, status, headers) = templates_api.create_template_with_http_info(account_id, envelope_template=template_data) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + template_id = template.template_id #ds-snippet-end:eSign42Step2 # Update template document #ds-snippet-start:eSign42Step3 document_id = '1' - templates_api.update_document( + (response, status, headers) = templates_api.update_document_with_http_info( account_id, document_id, template_id, envelope_definition=cls.template_document(envelope_args) ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign42Step3 # Update recipient tabs #ds-snippet-start:eSign42Step4 recipient_id = '1' - templates_api.create_tabs( + (response, status, headers) = templates_api.create_tabs_with_http_info( account_id, recipient_id, template_id, template_tabs=cls.recipient_tabs() ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign42Step4 # Create draft envelope #ds-snippet-start:eSign42Step5 envelope_definition = cls.make_envelope(template_id, envelope_args) - envelope = envelopes_api.create_envelope(account_id, envelope_definition=envelope_definition) + (envelope, status, headers) = envelopes_api.create_envelope_with_http_info(account_id, envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + envelope_id = envelope.envelope_id #ds-snippet-end:eSign42Step5 # Get the document id #ds-snippet-start:eSign42Step6 - doc_gen_form_fields_response = envelopes_api.get_envelope_doc_gen_form_fields(account_id, envelope_id) + (doc_gen_form_fields_response, status, headers) = envelopes_api.get_envelope_doc_gen_form_fields_with_http_info(account_id, envelope_id) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + document_id_guid = doc_gen_form_fields_response.doc_gen_form_fields[0].document_id #ds-snippet-end:eSign42Step6 # Merge the data fields #ds-snippet-start:eSign42Step7 form_fields = cls.form_fields(envelope_args, document_id_guid) - envelopes_api.update_envelope_doc_gen_form_fields( + (response, status, headers) = envelopes_api.update_envelope_doc_gen_form_fields_with_http_info( account_id, envelope_id, doc_gen_form_field_request=form_fields ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign42Step7 # Send the envelope #ds-snippet-start:eSign42Step8 send_envelope_req = Envelope(status="sent") - envelope = envelopes_api.update(account_id, envelope_id, envelope=send_envelope_req) + (envelope, status, headers) = envelopes_api.update_with_http_info(account_id, envelope_id, envelope=send_envelope_req) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign42Step8 return envelope diff --git a/app/eSignature/examples/eg043_shared_access.py b/app/eSignature/examples/eg043_shared_access.py index 66d68f58..3204fe70 100644 --- a/app/eSignature/examples/eg043_shared_access.py +++ b/app/eSignature/examples/eg043_shared_access.py @@ -2,7 +2,7 @@ from docusign_esign import EnvelopesApi, UsersApi, AccountsApi, NewUsersDefinition, UserInformation, \ UserAuthorizationCreateRequest, AuthorizationUser, ApiException -from datetime import datetime, timedelta +from datetime import datetime as dt, timedelta, timezone from ...docusign import create_api_client @@ -19,7 +19,16 @@ def create_agent(cls, args): # check if agent already exists try: - users = users_api.list(args["account_id"], email=args["email"], status="Active") + (users, status, headers) = users_api.list_with_http_info(args["account_id"], email=args["email"], status="Active") + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + if int(users.result_set_size) > 0: return users.users[0] @@ -34,7 +43,16 @@ def create_agent(cls, args): # create new agent #ds-snippet-start:eSign43Step3 - new_users = users_api.create(args["account_id"], new_users_definition=cls.new_users_definition(args)) + (new_users, status, headers) = users_api.create_with_http_info(args["account_id"], new_users_definition=cls.new_users_definition(args)) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + return new_users.new_users[0] #ds-snippet-end:eSign43Step3 @@ -45,22 +63,41 @@ def create_authorization(cls, args): accounts_api = AccountsApi(api_client) # check if authorization with manage permission already exists - authorizations = accounts_api.get_agent_user_authorizations( + (authorizations, status, headers) = accounts_api.get_agent_user_authorizations_with_http_info( args["account_id"], args["agent_user_id"], permissions="manage" ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + if int(authorizations.result_set_size) > 0: return # create authorization - return accounts_api.create_user_authorization( + (authorization, status, headers) = accounts_api.create_user_authorization_with_http_info( args["account_id"], args["user_id"], user_authorization_create_request=cls.user_authorization_request(args) ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign43Step4 + return authorization + #ds-snippet-start:eSign43Step3 @classmethod def new_users_definition(cls, args): @@ -89,6 +126,16 @@ def get_envelopes(cls, args): api_client.set_default_header("X-DocuSign-Act-On-Behalf", args["user_id"]) envelopes_api = EnvelopesApi(api_client) - from_date = (datetime.utcnow() - timedelta(days=10)).isoformat() - return envelopes_api.list_status_changes(account_id=args["account_id"], from_date=from_date) + from_date = (dt.utcnow() - timedelta(days=10)).isoformat() + (envelopes, status, headers) = envelopes_api.list_status_changes_with_http_info(account_id=args["account_id"], from_date=from_date) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + + return envelopes #ds-snippet-end:eSign43Step5 diff --git a/app/eSignature/examples/eg044_focused_view.py b/app/eSignature/examples/eg044_focused_view.py index f65837d6..9b1d09d7 100644 --- a/app/eSignature/examples/eg044_focused_view.py +++ b/app/eSignature/examples/eg044_focused_view.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import EnvelopesApi, RecipientViewRequest, Document, Signer, EnvelopeDefinition, SignHere, Tabs, \ @@ -51,7 +52,15 @@ def worker(cls, args): api_client = create_api_client(base_path=args["base_path"], access_token=args["access_token"]) envelope_api = EnvelopesApi(api_client) - results = envelope_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelope_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") envelope_id = results.envelope_id #ds-snippet-end:eSign44Step3 @@ -74,12 +83,20 @@ def worker(cls, args): # Exceptions will be caught by the calling function #ds-snippet-start:eSign44Step5 - results = envelope_api.create_recipient_view( + (results, status, headers) = envelope_api.create_recipient_view_with_http_info( account_id=args["account_id"], envelope_id=envelope_id, recipient_view_request=recipient_view_request ) + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + return {"envelope_id": envelope_id, "redirect_url": results.url} #ds-snippet-end:eSign44Step5 diff --git a/app/eSignature/examples/eg045_delete_restore_envelope.py b/app/eSignature/examples/eg045_delete_restore_envelope.py index c7def3b6..4d972513 100644 --- a/app/eSignature/examples/eg045_delete_restore_envelope.py +++ b/app/eSignature/examples/eg045_delete_restore_envelope.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_esign import FoldersApi, FoldersRequest from ...docusign import create_api_client @@ -18,8 +19,17 @@ def delete_envelope(args): #ds-snippet-end:eSign45Step3 #ds-snippet-start:eSign45Step4 - results = folders_api.move_envelopes(account_id=args["account_id"], folder_id=args["delete_folder_id"], folders_request=folders_request) + (results, status, headers) = folders_api.move_envelopes_with_http_info(account_id=args["account_id"], folder_id=args["delete_folder_id"], folders_request=folders_request) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign45Step4 + return results @staticmethod @@ -33,8 +43,17 @@ def move_envelope_to_folder(args): from_folder_id=args["from_folder_id"] ) - results = folders_api.move_envelopes(account_id=args["account_id"], folder_id=args["folder_id"], folders_request=folders_request) + (results, status, headers) = folders_api.move_envelopes_with_http_info(account_id=args["account_id"], folder_id=args["folder_id"], folders_request=folders_request) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign45Step6 + return results @staticmethod @@ -43,6 +62,15 @@ def get_folders(args): folders_api = FoldersApi(api_client) #ds-snippet-start:eSign45Step5 - results = folders_api.list(account_id=args["account_id"]) + (results, status, headers) = folders_api.list_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:eSign45Step5 + return results diff --git a/app/eSignature/views/eg007_envelope_get_doc.py b/app/eSignature/views/eg007_envelope_get_doc.py index 48ce12e9..2707d7e0 100644 --- a/app/eSignature/views/eg007_envelope_get_doc.py +++ b/app/eSignature/views/eg007_envelope_get_doc.py @@ -1,5 +1,6 @@ """007: Get an envelope"s document""" +from io import BytesIO from os import path from docusign_esign.client.api_exception import ApiException @@ -39,10 +40,10 @@ def get_envelope_doc(): # 3. Download envelope document from the temp file path return send_file( - results["data"], + BytesIO(results["data"]), mimetype=results["mimetype"], as_attachment=True, - attachment_filename=results["doc_name"] + download_name=results["doc_name"] ) else: return render_template( diff --git a/app/monitor/examples/eg001_get_monitoring_data.py b/app/monitor/examples/eg001_get_monitoring_data.py index 9b9c30e5..b6ddacc0 100644 --- a/app/monitor/examples/eg001_get_monitoring_data.py +++ b/app/monitor/examples/eg001_get_monitoring_data.py @@ -1,6 +1,6 @@ from docusign_monitor import DataSetApi from flask import session -from datetime import datetime, timedelta, timezone +from datetime import datetime as dt, timedelta, timezone from app.monitor.utils import create_monitor_api_client @@ -26,7 +26,7 @@ def worker(args): ) #ds-snippet-end:Monitor1Step2 #ds-snippet-start:Monitor1Step3 - cursor_date = datetime.now(timezone.utc).replace(year=datetime.now(timezone.utc).year - 1) + cursor_date = dt.now(timezone.utc).replace(year=dt.now(timezone.utc).year - 1) dataset_api = DataSetApi(api_client=api_client) cursor_value = cursor_date.strftime('%Y-%m-%dT00:00:00Z') @@ -35,12 +35,21 @@ def worker(args): complete = False while not complete: - cursored_results = dataset_api.get_stream( + (cursored_results, status, headers) = dataset_api.get_stream_with_http_info( data_set_name="monitor", version="2.0", limit=limit, cursor=cursor_value ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + end_cursor = cursored_results.end_cursor if end_cursor == cursor_value: diff --git a/app/notary/examples/eg004_send_with_third_party_notary.py b/app/notary/examples/eg004_send_with_third_party_notary.py index f2c67ad9..3844073b 100644 --- a/app/notary/examples/eg004_send_with_third_party_notary.py +++ b/app/notary/examples/eg004_send_with_third_party_notary.py @@ -1,4 +1,5 @@ import base64 +from datetime import datetime as dt, timezone from os import path from docusign_esign import EnvelopesApi, EnvelopeDefinition, Document, Signer, Notary, SignHere, Tabs, Recipients, \ @@ -26,7 +27,16 @@ def worker(cls, args): #ds-snippet-end:Notary4Step2 #ds-snippet-start:Notary4Step4 - results = envelopes_api.create_envelope(account_id=args["account_id"], envelope_definition=envelope_definition) + (results, status, headers) = envelopes_api.create_envelope_with_http_info(account_id=args["account_id"], envelope_definition=envelope_definition) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + #ds-snippet-end:Notary4Step4 envelope_id = results.envelope_id diff --git a/app/rooms/examples/eg001_create_room_with_data.py b/app/rooms/examples/eg001_create_room_with_data.py index 6164092c..375bc2d4 100644 --- a/app/rooms/examples/eg001_create_room_with_data.py +++ b/app/rooms/examples/eg001_create_room_with_data.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_rooms import RoomsApi, RolesApi, RoomForCreate, FieldDataForCreate from flask import session, request @@ -31,7 +32,16 @@ def worker(args): # Step 2. Get Default Admin role id roles_api = RolesApi(api_client) - roles = roles_api.get_roles(account_id=args["account_id"]) + (roles, status, headers) = roles_api.get_roles_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + role_id = [role.role_id for role in roles.roles if role.is_default_for_admin][0] # Step 3. Create RoomForCreate object @@ -57,9 +67,18 @@ def worker(args): # Step 4. Post the room using SDK #ds-snippet-start:Rooms1Step4 rooms_api = RoomsApi(api_client) - response = rooms_api.create_room( + (response, status, headers) = rooms_api.create_room_with_http_info( body=room, account_id=args["account_id"] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Rooms2Step4 + return response diff --git a/app/rooms/examples/eg002_create_room_with_template.py b/app/rooms/examples/eg002_create_room_with_template.py index 6b97c986..989cc750 100644 --- a/app/rooms/examples/eg002_create_room_with_template.py +++ b/app/rooms/examples/eg002_create_room_with_template.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_rooms import FieldDataForCreate, RolesApi, RoomsApi, RoomForCreate, RoomTemplatesApi from flask import session, request @@ -27,8 +28,17 @@ def get_templates(args): # Step 2. Get room templates #ds-snippet-start:Rooms2Step3 room_templates_api = RoomTemplatesApi(api_client) - templates = room_templates_api.get_room_templates(account_id=args["account_id"]) + (templates, status, headers) = room_templates_api.get_room_templates_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Rooms2Step3 + return templates.room_templates @staticmethod @@ -47,7 +57,16 @@ def worker(args): # Step 2. Get Default Admin role id #ds-snippet-start:Rooms2Step4 roles_api = RolesApi(api_client) - roles = roles_api.get_roles(account_id=args["account_id"]) + (roles, status, headers) = roles_api.get_roles_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + role_id = [role.role_id for role in roles.roles if role.is_default_for_admin][0] # Step 3. Create RoomForCreate object @@ -69,9 +88,18 @@ def worker(args): # Step 4. Create the room using a POST API call. #ds-snippet-start:Rooms2Step5 rooms_api = RoomsApi(api_client) - response = rooms_api.create_room( + (response, status, headers) = rooms_api.create_room_with_http_info( body=room, account_id=args["account_id"], ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Rooms2Step5 + return response diff --git a/app/rooms/examples/eg003_export_data_from_room.py b/app/rooms/examples/eg003_export_data_from_room.py index dd9184af..a2efd88b 100644 --- a/app/rooms/examples/eg003_export_data_from_room.py +++ b/app/rooms/examples/eg003_export_data_from_room.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_rooms import RoomsApi from flask import session, request @@ -27,7 +28,16 @@ def get_rooms(args): # Step 2. Get room templates rooms_api = RoomsApi(api_client) - rooms = rooms_api.get_rooms(account_id=args["account_id"]) + (rooms, status, headers) = rooms_api.get_rooms_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + return rooms.rooms @staticmethod @@ -42,9 +52,18 @@ def worker(args): # Step 2. Get room field data using SDK #ds-snippet-start:Rooms3Step3 rooms_api = RoomsApi(api_client) - response = rooms_api.get_room_field_data( + (response, status, headers) = rooms_api.get_room_field_data_with_http_info( room_id=args['room_id'], account_id=args["account_id"] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Rooms3Step3 + return response diff --git a/app/rooms/examples/eg004_add_forms_to_room.py b/app/rooms/examples/eg004_add_forms_to_room.py index d14d5980..cfabcb31 100644 --- a/app/rooms/examples/eg004_add_forms_to_room.py +++ b/app/rooms/examples/eg004_add_forms_to_room.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_rooms import FormForAdd, FormLibrariesApi, RoomsApi from flask import session, request @@ -28,7 +29,16 @@ def get_rooms(args): # Step 2. Get rooms rooms_api = RoomsApi(api_client) - rooms = rooms_api.get_rooms(account_id=args["account_id"]) + (rooms, status, headers) = rooms_api.get_rooms_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + return rooms.rooms @staticmethod @@ -44,16 +54,34 @@ def get_forms(args): # Step 2. Get first form library id #ds-snippet-start:Rooms4Step3 form_libraries_api = FormLibrariesApi(api_client) - form_libraries = form_libraries_api.get_form_libraries(account_id=args["account_id"]) + (form_libraries, status, headers) = form_libraries_api.get_form_libraries_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + first_form_library_id = form_libraries.forms_library_summaries[10].forms_library_id #ds-snippet-end:Rooms4Step3 # Step 3. Get forms #ds-snippet-start:Rooms4Step2 - form_library_forms = form_libraries_api.get_form_library_forms( + (form_library_forms, status, headers) = form_libraries_api.get_form_library_forms_with_http_info( form_library_id=first_form_library_id, account_id=args["account_id"] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + #ds-snippet-end:Rooms4Step3 return form_library_forms.forms @@ -69,10 +97,19 @@ def worker(args): # Step 2. Add the form to the room #ds-snippet-start:Rooms4Step4 rooms_api = RoomsApi(api_client) - response = rooms_api.add_form_to_room( + (response, status, headers) = rooms_api.add_form_to_room_with_http_info( room_id=args['room_id'], body=FormForAdd(form_id=args['form_id']), account_id=args["account_id"] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Rooms4Step4 + return response \ No newline at end of file diff --git a/app/rooms/examples/eg005_get_rooms_with_filters.py b/app/rooms/examples/eg005_get_rooms_with_filters.py index 9b0aab32..fb5b307f 100644 --- a/app/rooms/examples/eg005_get_rooms_with_filters.py +++ b/app/rooms/examples/eg005_get_rooms_with_filters.py @@ -1,5 +1,5 @@ from docusign_rooms import RoomsApi -from datetime import datetime +from datetime import datetime as dt, timezone from flask import session, request from ..utils import create_rooms_api_client @@ -30,7 +30,16 @@ def get_rooms(args): # Step 2. Get room templates #ds-snippet-start:Rooms5Step4 rooms_api = RoomsApi(api_client) - rooms = rooms_api.get_rooms(account_id=args["account_id"]) + (rooms, status, headers) = rooms_api.get_rooms_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + #ds-snippet-end:Rooms5Step4 return rooms.rooms @@ -45,11 +54,20 @@ def worker(args): # Step 2. Get room field data using SDK rooms_api = RoomsApi(api_client) - response = rooms_api.get_rooms( + (response, status, headers) = rooms_api.get_rooms_with_http_info( account_id=args["account_id"], #ds-snippet-start:Rooms5Step3 - field_data_changed_start_date=datetime.strptime(args['start_date'], "%Y-%m-%d"), - field_data_changed_end_date=datetime.strptime(args['end_date'], "%Y-%m-%d"), + field_data_changed_start_date=dt.strptime(args['start_date'], "%Y-%m-%d"), + field_data_changed_end_date=dt.strptime(args['end_date'], "%Y-%m-%d"), #ds-snippet-end:Rooms5Step3 ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + return response diff --git a/app/rooms/examples/eg006_create_external_form_fill_session.py b/app/rooms/examples/eg006_create_external_form_fill_session.py index 572e943c..f1cdbb9c 100644 --- a/app/rooms/examples/eg006_create_external_form_fill_session.py +++ b/app/rooms/examples/eg006_create_external_form_fill_session.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_rooms import ( ExternalFormFillSessionsApi, ExternalFormFillSessionForCreate, @@ -32,7 +33,16 @@ def get_rooms(args): # Get rooms rooms_api = RoomsApi(api_client) - rooms = rooms_api.get_rooms(account_id=args["account_id"]) + (rooms, status, headers) = rooms_api.get_rooms_with_http_info(account_id=args["account_id"]) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + return rooms.rooms @staticmethod @@ -46,10 +56,19 @@ def get_room(args): # Get room by id rooms_api = RoomsApi(api_client) - room = rooms_api.get_room( + (room, status, headers) = rooms_api.get_room_with_http_info( room_id=args["room_id"], account_id=args["account_id"] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + return room @staticmethod @@ -64,11 +83,19 @@ def get_forms(args): # Get room documents rooms_api = RoomsApi(api_client) - room_documents = rooms_api.get_documents( + (room_documents, status, headers) = rooms_api.get_documents_with_http_info( room_id=args["room_id"], account_id=args["account_id"] ) + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + # Get room forms room_forms = [ form for form in room_documents.documents @@ -98,9 +125,18 @@ def worker(args): # Create an external form fill session #ds-snippet-start:Rooms6Step4 form_fill_session_api = ExternalFormFillSessionsApi(api_client) - results = form_fill_session_api.create_external_form_fill_session( + (results, status, headers) = form_fill_session_api.create_external_form_fill_session_with_http_info( body=request_body, account_id=args["account_id"] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Rooms6Step4 + return results diff --git a/app/rooms/examples/eg007_create_form_group.py b/app/rooms/examples/eg007_create_form_group.py index 36e31e3a..77f1dceb 100644 --- a/app/rooms/examples/eg007_create_form_group.py +++ b/app/rooms/examples/eg007_create_form_group.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_rooms import FormGroupForCreate, FormGroupsApi from flask import session, request @@ -31,9 +32,17 @@ def worker(args): # Post the form object using SDK #ds-snippet-start:Rooms7Step4 form_groups_api = FormGroupsApi(api_client) - response = form_groups_api.create_form_group( + (response, status, headers) = form_groups_api.create_form_group_with_http_info( body=form, account_id=args["account_id"] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Rooms7Step4 return response \ No newline at end of file diff --git a/app/rooms/examples/eg008_grant_office_access_to_form_group.py b/app/rooms/examples/eg008_grant_office_access_to_form_group.py index c1cc89ba..aa6dd54e 100644 --- a/app/rooms/examples/eg008_grant_office_access_to_form_group.py +++ b/app/rooms/examples/eg008_grant_office_access_to_form_group.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_rooms import ( FormGroupsApi, FormGroupSummaryList, @@ -32,7 +33,15 @@ def get_form_groups(args): # GET Form Groups via FormGroupsAPI #ds-snippet-start:Rooms8Step4 form_groups_api = FormGroupsApi(api_client) - response = form_groups_api.get_form_groups(account_id=args["account_id"]) # type: FormGroupSummaryList + (response, status, headers) = form_groups_api.get_form_groups_with_http_info(account_id=args["account_id"]) # type: FormGroupSummaryList + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") return response.form_groups #ds-snippet-end:Rooms8Step4 @@ -52,7 +61,15 @@ def get_offices(args): # GET offices via OfficesAPI #ds-snippet-start:Rooms8Step3 offices_api = OfficesApi(api_client=api_client) - response = offices_api.get_offices(account_id=args["account_id"]) # type: OfficeSummaryList + (response, status, headers) = offices_api.get_offices_with_http_info(account_id=args["account_id"]) # type: OfficeSummaryList + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") return response.office_summaries #ds-snippet-end:Rooms8Step3 @@ -70,8 +87,16 @@ def worker(args): #ds-snippet-start:Rooms8Step5 form_groups_api = FormGroupsApi(api_client) - form_groups_api.grant_office_access_to_form_group( + (response, status, headers) = form_groups_api.grant_office_access_to_form_group_with_http_info( form_group_id=args["form_group_id"], office_id=args["office_id"], account_id=args["account_id"] ) + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Rooms8Step5 diff --git a/app/rooms/examples/eg009_assign_form_to_form_group.py b/app/rooms/examples/eg009_assign_form_to_form_group.py index de969ea9..517337bc 100644 --- a/app/rooms/examples/eg009_assign_form_to_form_group.py +++ b/app/rooms/examples/eg009_assign_form_to_form_group.py @@ -1,3 +1,4 @@ +from datetime import datetime as dt, timezone from docusign_rooms import ( FormGroupsApi, FormGroupSummaryList, @@ -35,10 +36,19 @@ def get_form_groups(args): #ds-snippet-start:Rooms9Step4 form_groups_api = FormGroupsApi(api_client) - response = form_groups_api.get_form_groups( + (response, status, headers) = form_groups_api.get_form_groups_with_http_info( account_id=args["account_id"] ) # type: FormGroupSummaryList + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Rooms9Step4 + return response.form_groups @staticmethod @@ -54,16 +64,32 @@ def get_forms(args): #ds-snippet-start:Rooms9Step3 form_libraries_api = FormLibrariesApi(api_client) - form_libraries = form_libraries_api.get_form_libraries( + (form_libraries, status, headers) = form_libraries_api.get_form_libraries_with_http_info( account_id=args["account_id"] ) + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") + first_form_library_id = form_libraries.forms_library_summaries[0].forms_library_id # Get forms - form_library_forms = form_libraries_api.get_form_library_forms( + (form_library_forms, status, headers) = form_libraries_api.get_form_library_forms_with_http_info( form_library_id=first_form_library_id, account_id=args["account_id"] ) # type: FormSummaryList + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Rooms9Step3 return form_library_forms.forms @@ -92,10 +118,18 @@ def worker(args): # Assign form to a form group via FormGroups API #ds-snippet-start:Rooms9Step6 - response = form_groups_api.assign_form_group_form( + (response, status, headers) = form_groups_api.assign_form_group_form_with_http_info( form_group_id=args["form_group_id"], account_id=args["account_id"], body=form_group_to_assign ) # type: FormGroupFormToAssign + + remaining = headers.get("X-RateLimit-Remaining") + reset = headers.get("X-RateLimit-Reset") + + if remaining is not None and reset is not None: + reset_date = dt.fromtimestamp(int(reset), tz=timezone.utc) + print(f"API calls remaining: {remaining}") + print(f"Next Reset: {reset_date}") #ds-snippet-end:Rooms9Step6 return response