Skip to content
Open
19 changes: 16 additions & 3 deletions certified-connectors/DocuSignDemo/apiDefinition.swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -2336,6 +2336,14 @@
"type": "string",
"required": false
},
{
"name": "search_text",
"in": "query",
"description": "Enter one keyword to find matches in envelope subjects, recipients, and custom fields.",
"required": false,
"x-ms-summary": "Search word",
"type": "string"
},
{
"name": "envelopeStatus",
"x-ms-summary": "Envelope status",
Expand Down Expand Up @@ -2898,10 +2906,10 @@
{
"name": "accountId",
"in": "path",
"description": "Account id",
"description": "Enter or select an account ID.",
"x-ms-visibility": "important",
"required": true,
"x-ms-summary": "Account",
"x-ms-summary": "Account ID",
"x-ms-test-value": "insert account id",
"x-ms-dynamic-values": {
"operationId": "GetLoginAccounts",
Expand Down Expand Up @@ -7186,7 +7194,12 @@
"notary-session-terminated",
"notary-session-signer-locked",
"notary-session-signer-unlocked",
"notary-session-authentication-failed"
"notary-session-authentication-failed",
"agreement-created",
"agreement-updated",
"agreement-deleted",
"agreement-reviewed-completed",
"agreement-extracted-reviewed"
]
},
"x-ms-visibility": "important"
Expand Down
120 changes: 78 additions & 42 deletions certified-connectors/DocuSignDemo/script.csx
Original file line number Diff line number Diff line change
Expand Up @@ -1415,7 +1415,7 @@ public class Script : ScriptBase
response["schema"]["properties"]["Build Number"] = new JObject
{
["type"] = "string",
["x-ms-summary"] = "DS1009.0.2"
["x-ms-summary"] = "DS1009.0.3"
};
}

Expand Down Expand Up @@ -4713,6 +4713,8 @@ private void RenameSpecificKeys(JObject jObject, Dictionary<string, string> keyM

query["status"] = string.IsNullOrEmpty(query.Get("envelopeStatus")) ?
null : envelopeStatusMapping[query.Get("envelopeStatus")];
query["search_text"] = string.IsNullOrEmpty(query.Get("search_text")) ?
null : query.Get("search_text");
query["folder_ids"] = string.IsNullOrEmpty(query.Get("folder_ids")) ?
null : folderIDMapping[query.Get("folder_ids").ToString()];
query["order_by"] = string.IsNullOrEmpty(query.Get("order_by")) ?
Expand Down Expand Up @@ -5034,15 +5036,56 @@ private void RenameSpecificKeys(JObject jObject, Dictionary<string, string> keyM
private string GetPartnerIntegrationsBaseUri()
{
var host = this.Context.Request.RequestUri.Host.ToLower();
var shard = GetShard(host);
var pIBaseUri = host.Contains("demo") ?
"https://demo.services.docusign.net/partner-integrations/v1.0"
$"https://{shard}services.demo.docusign.net/partner-integrations/v1.0"
: host.Contains("stage") ?
"https://services.stage.docusign.net/partner-integrations/v1.0"
: "https://services.docusign.net/partner-integrations/v1.0";
$"https://{shard}services.stage.docusign.net/partner-integrations/v1.0"
: $"https://{shard}services.docusign.net/partner-integrations/v1.0";

return pIBaseUri;
}

private string GetShard(string host)
{
if(host.EndsWith(".mil"))
{
return "";
}
var site = host.Split('.')[0];
switch (site)
{
case "stage":
case "demo":
case "na2":
case "na4":
return "s1.us.";

case "na1":
case "na3":
case "www":
return "s2.us.";

case "caprod":
case "ca":
return "s1.ca.";

case "euprod":
case "eu":
return "s1.eu.";

case "auprod":
case "au":
return "s1.au.";

case "jp1":
return "s1.jp.";

default:
return "";
}
}

private JObject TriggerMaestroWorkflowTransformation(JObject body)
{
this.Context.Request.Headers.Add("DocuSign-Maestro-Workflow-Origin", "PowerAutomate");
Expand Down Expand Up @@ -6793,7 +6836,7 @@ private void RenameSpecificKeys(JObject jObject, Dictionary<string, string> keyM
{
itemProperties.Add(propertyName, new JObject());
var type = (string)item["type"];
itemProperties[propertyName]["type"] = type == "Float" ? "number" : type.ToLower();
itemProperties[propertyName]["type"] = type == "Float" ? "number" : type == "Email" ? "string" : type.ToLower();
}
}
var newBody = new JObject
Expand Down Expand Up @@ -7354,47 +7397,40 @@ private void RenameSpecificKeys(JObject jObject, Dictionary<string, string> keyM
{"customFieldName", customFieldName},
{"customFieldValue", customFieldValue}
};

foreach (var filter in envelopeFilterMap.Keys)
filteredEnvelopes = new JArray(envelopes.Where(envelope =>
{
if (envelopeFilterMap[filter] != null)
// Check recipient filters
if ((envelopeFilterMap["recipientName"] != null || envelopeFilterMap["recipientEmailId"] != null))
{
switch (filter)
{
case "recipientName":
case "recipientEmailId":
filteredEnvelopes = new JArray(envelopes.Where(envelope =>
envelope["recipients"]?.ToString().ToLower().Contains(envelopeFilterMap[filter].ToString().ToLower()) ?? false));
break;
case "envelopeTitle":
filteredEnvelopes = new JArray(envelopes.Where(envelope =>
envelope["emailSubject"]?.ToString().ToLower().Contains(envelopeFilterMap[filter].ToString().ToLower()) ?? false));
break;
case "customFieldName":
case "customFieldValue":
filteredEnvelopes = new JArray(envelopes.Where(envelope =>
{
var customFields = envelope["customFields"] as JToken;
return customFields?.ToString().ToLower().Contains(envelopeFilterMap[filter].ToString().ToLower()) ?? false;
}));
break;
default:
break;
}
var recipientsStr = envelope["recipients"]?.ToString().ToLower() ?? "";
if (envelopeFilterMap["recipientName"] != null && !recipientsStr.Contains(envelopeFilterMap["recipientName"].ToString().ToLower()))
return false;
if (envelopeFilterMap["recipientEmailId"] != null && !recipientsStr.Contains(envelopeFilterMap["recipientEmailId"].ToString().ToLower()))
return false;
}

if (filteredEnvelopes.Count > 0)
{
envelopes.Clear();
envelopes = new JArray(filteredEnvelopes);
filteredEnvelopes.Clear();
}
else
{
envelopes.Clear();
break;
}
// Check envelope title filter
if (envelopeFilterMap["envelopeTitle"] != null)
{
var subject = envelope["emailSubject"]?.ToString().ToLower() ?? "";
if (!subject.Contains(envelopeFilterMap["envelopeTitle"].ToString().ToLower()))
return false;
}
}

// Check custom field filters
if (envelopeFilterMap["customFieldName"] != null || envelopeFilterMap["customFieldValue"] != null)
{
var customFieldsStr = envelope["customFields"]?.ToString().ToLower() ?? "";
if (envelopeFilterMap["customFieldName"] != null && !customFieldsStr.Contains(envelopeFilterMap["customFieldName"].ToString().ToLower()))
return false;
if (envelopeFilterMap["customFieldValue"] != null && !customFieldsStr.Contains(envelopeFilterMap["customFieldValue"].ToString().ToLower()))
return false;
}

return true;
}));

envelopes = filteredEnvelopes;

filteredEnvelopesDetails = this.Context.OperationId.Contains("SalesCopilot") ?
GetFilteredEnvelopeDetailsForSalesCopilot(envelopes) :
Expand Down