agent: | Auto Exec |
What is an "Expert"? How do we create our own expert?
Add credentials for various integrations
Managing workspaces and access control
DagKnows Architecture Overview
Setting up SSO via Azure AD for Dagknows
Enable "Auto Exec" and "Send Execution Result to LLM" in "Adjust Settings" if desired
(Optionally) Add ubuntu user to docker group and refresh group membership
Deployment of an EKS Cluster with Worker Nodes in AWS
Adding, Deleting, Listing DagKnows Proxy credentials or key-value pairs
Comprehensive AWS Security and Compliance Evaluation Workflow (SOC2 Super Runbook)
AWS EKS Version Update 1.29 to 1.30 via terraform
Instruction to allow WinRM connection
MSP Usecase: User Onboarding Azure + M365
Post a message to a Slack channel
How to debug a kafka cluster and kafka topics?
Open VPN Troubleshooting (Powershell)
Execute a simple task on the proxy
Assign the proxy role to a user
Create roles to access credentials in proxy
Install OpenVPN client on Windows laptop
Setup Kubernetes kubectl and Minikube on Ubuntu 22.04 LTS
Install Prometheus and Grafana on the minikube cluster on EC2 instance in the monitoring namespace
update the EKS versions in different clusters
AI agent session 2024-09-12T09:36:14-07:00 by Sarang Dharmapurikar
Parse EDN content and give a JSON out
Check whether a user is there on Azure AD and if the user account status is enabled
Get the input parameters of a Jenkins pipeline
Docusign Integration Tasks
- 1TQJOFofUtebQnuyU0v0DCreating a Docusign app for provisioning api credentials
1
Creating a Docusign app for provisioning api credentials
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.- Go to Docusign Admin Console
- Go to Integrations >>> Apps and Keys
- Click on Add App and Integration Key
- Give App Name, Create Secret Key, Create an RSA key pair for authentication or upload your own public key.
- Give a redirect URI for one time consent to generate access tokens for authentication. App creation is finished here.
- Note the Integration key, user ID, Private key contents and auth server (auth_server = "account-d.docusign.com") [for demo accounts] to be used for creating an access token.
- After generating the token, Use Account Base URI, API Account ID and account token to do tasks programmatically.
inputsoutputs1 - 2Hil5wJO1V30bXlnUemfuGenerate Access Token for Docusign Integration App
2
Generate Access Token for Docusign Integration App
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.Create a JWT-based access token to authenticate and interact with the DocuSign API.
inputsoutputsimport requests import time import jwt # Configuration # To be received from the Input Parameters # integration_key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" #docusign application key # user_id = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" # API User ID from DocuSign auth_server = "account-d.docusign.com" # Use "account-d.docusign.com" for demo developer accounts # private_key = """-----BEGIN RSA PRIVATE KEY----- # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX # -----END RSA PRIVATE KEY-----""" # Create JWT token current_time = int(time.time()) payload = { "iss": integration_key, "sub": user_id, "aud": auth_server, "iat": current_time, # Issued at time "exp": current_time + 3600, # Token expiration (1 hour) "scope": "signature impersonation" } jwt_token = jwt.encode(payload, private_key, algorithm="RS256") # Request access token url = f"https://{auth_server}/oauth/token" headers = {"Content-Type": "application/x-www-form-urlencoded"} body = { "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer", "assertion": jwt_token } response = requests.post(url, headers=headers, data=body) # Handle the response if response.status_code == 200: access_token = response.json()["access_token"] print("Access Token:", access_token) else: print("Error:", response.json())copied2 - 3xqOFCPY9UZtwsx3XSrBUCheck status of a Docusign envelope
3
Check status of a Docusign envelope
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.Retrieve the current status (e.g., completed, sent, or voided) of a specific DocuSign envelope.
inputsoutputsimport requests from requests.exceptions import RequestException # Configuration base_url = "https://demo.docusign.net/restapi" # For production, use https://www.docusign.net/restapi def check_envelope_status(): # API endpoint url = f"{base_url}/v2.1/accounts/{account_id}/envelopes/{envelope_id}" # Request headers headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json", } try: # Send GET request to fetch envelope status response = requests.get(url, headers=headers) # Check HTTP response status if response.status_code == 200: # Parse and display envelope status envelope_status = response.json() print(f"Envelope ID: {envelope_status.get('envelopeId')}") print(f"Status: {envelope_status.get('status')}") print(f"Sender: {envelope_status.get('emailSubject')}") print(f"Created: {envelope_status.get('createdDateTime')}") print(f"Sent: {envelope_status.get('sentDateTime')}") print(f"Completed: {envelope_status.get('completedDateTime')}") elif response.status_code == 401: print( "Error: Unauthorized. Please check your access token or account permissions." ) elif response.status_code == 404: print("Error: Envelope not found. Ensure the envelope ID is correct.") elif response.status_code == 400: print( f"Error: Bad request. Please check the request payload. Details: {response.text}" ) elif response.status_code == 403: print( "Error: Forbidden. Ensure you have appropriate permissions for this operation." ) elif response.status_code == 429: print( "Error: Too many requests. You are being rate-limited. Try again later." ) else: print(f"Unexpected Error: {response.status_code} - {response.text}") except RequestException as e: print(f"Network Error: Unable to fetch envelope status. Details: {e}") except KeyError as e: print( f"Error: Missing expected data in the response. Could not retrieve {e}." ) except Exception as e: print(f"An unexpected error occurred: {e}") def main(): try: if not access_token: raise ValueError( "Access Token is missing. Please generate a valid token." ) if not account_id: raise ValueError("Account ID is missing. Please provide a valid account ID.") if not envelope_id: raise ValueError("Envelope ID is missing. Please provide a valid envelope ID.") check_envelope_status() except ValueError as ve: print(f"Configuration Error: {ve}") except Exception as e: print(f"Initialization Error: {e}") main()copied3 - 4OyNZsjzqOdYfhVKUhzrFList All Docusign Templates
4
List All Docusign Templates
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.Fetch and display a list of all templates available in the specified DocuSign account.
inputsoutputsimport requests # Configuration base_url = "https://demo.docusign.net/restapi" # For production, use https://www.docusign.net/restapi # Endpoint to list templates url = f"{base_url}/v2.1/accounts/{account_id}/templates" # Headers with the access token headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } # Make the API call response = requests.get(url, headers=headers) # Handle the response if response.status_code == 200: templates = response.json() envelope_templates = templates.get("envelopeTemplates", []) if envelope_templates: print("Templates List:") for template in envelope_templates: print(f"ID: {template['templateId']}, Name: {template['name']}") else: print("No templates found in the account.") else: print("Error:", response.json())copied4 - 5cs90ipfzFCN0HowZk0ACList All Docusign Envelopes/Documents for the past 7 days
5
List All Docusign Envelopes/Documents for the past 7 days
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.Retrieve and display a list of envelopes/documents created in the last 7 days.
inputsoutputsimport requests from datetime import datetime, timedelta # Configuration base_url = "https://demo.docusign.net/restapi" # For production, use https://www.docusign.net/restapi # List documents in your account for the past 7 days def list_documents(): # Calculate the start date (7 days ago) and end date (current date) seven_days_ago = (datetime.now() - timedelta(days=7)).strftime("%Y-%m-%dT%H:%M:%SZ") today = datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ") url = f"{base_url}/v2.1/accounts/{account_id}/envelopes" headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json", } params = { "status": "completed", # Retrieve only completed envelopes "from_date": seven_days_ago, # Start date (7 days ago) "to_date": today, # End date (current date) } response = requests.get(url, headers=headers, params=params) if response.status_code == 200: envelopes = response.json().get("envelopes", []) if envelopes: print("List of envelopes/documents in your account for the past 7 days:") for envelope in envelopes: print(f"Envelope ID: {envelope['envelopeId']}") print(f"Document Name: {envelope.get('emailSubject', 'N/A')}") print(f"Status: {envelope['status']}") print(f"Created Date: {envelope['createdDateTime']}") print("-" * 30) else: print("No envelopes/documents found for the past 7 days.") else: print(f"Error retrieving documents: {response.status_code} - {response.text}") # Call the function to list documents list_documents()copied5 - 6mIfMgahGGCZrH8HSQ82uFetch a Docusign template by ID
6
Fetch a Docusign template by ID
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.Retrieve details of a specific DocuSign template using its unique template ID.
inputsoutputsimport requests # Configuration base_url = "https://demo.docusign.net/restapi" # For production, use https://www.docusign.net/restapi # Endpoint to fetch a template url = f"{base_url}/v2.1/accounts/{account_id}/templates/{template_id}" # Headers with the access token headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } # Make the API call response = requests.get(url, headers=headers) # Handle the response if response.status_code == 200: template = response.json() print("Template Details:") print(f"Name: {template['name']}") print(f"ID: {template['templateId']}") print(f"Description: {template.get('description', 'No description')}") print(f"Shared: {template.get('shared', 'No info')}") elif response.status_code == 404: print(f"Template with ID '{template_id}' not found. Please check the template ID and try again.") else: print("An error occurred while fetching the template:") print(f"Status Code: {response.status_code}") print("Response:", response.json())copied6 - 7WzRtEtj6kMkrmoQx5EtkSend a Docusign Envelope for signing to a recipient using a template
7
Send a Docusign Envelope for signing to a recipient using a template
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.Send a document for electronic signature by utilizing a predefined template and recipient details.
inputsoutputsimport requests from requests.exceptions import RequestException # Configuration base_url = "https://demo.docusign.net/restapi" # For production, use https://www.docusign.net/restapi def send_envelope_from_template(): # API endpoint url = f"{base_url}/v2.1/accounts/{account_id}/envelopes" # Request headers headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json", } # Envelope definition body = { "templateId": template_id, "status": "sent", # "created" to save as draft, "sent" to send immediately "templateRoles": [ { "roleName": "signer", # Role name defined in the template "name": recipient_name, "email": recipient_email, "routingOrder": "1", } ], "emailSubject": "Please sign the Consulting Contract", "emailBlurb": "Hi, Please review and sign the consulting contract template.", } try: # Send the envelope response = requests.post(url, headers=headers, json=body) # Check for HTTP response status if response.status_code == 201: envelope_id = response.json().get("envelopeId") print(f"Envelope sent successfully! Envelope ID: {envelope_id}") elif response.status_code == 401: print( "Error: Unauthorized. Please check your access token or account permissions." ) elif response.status_code == 404: print( "Error: Resource not found. Ensure your account ID, template ID, or URL is correct." ) elif response.status_code == 400: print( f"Error: Bad request. Please check the request payload. Details: {response.text}" ) elif response.status_code == 403: print( "Error: Forbidden. Ensure you have appropriate permissions for this operation." ) elif response.status_code == 429: print( "Error: Too many requests. You are being rate-limited. Try again later." ) else: print(f"Unexpected Error: {response.status_code} - {response.text}") except RequestException as e: print(f"Network Error: Unable to send the envelope. Details: {e}") except KeyError: print( "Error: Unexpected response format. Could not retrieve envelope ID. Please verify your API response." ) except Exception as e: print(f"An unexpected error occurred: {e}") def main(): try: if not access_token: raise ValueError( "Access Token is missing. Please generate a valid token." ) if not account_id: raise ValueError("Account ID is missing. Please provide a valid account ID.") if not template_id: raise ValueError("Template ID is missing. Please provide a valid template ID.") send_envelope_from_template() except ValueError as ve: print(f"Configuration Error: {ve}") except Exception as e: print(f"Initialization Error: {e}") main()copied7