使用新的DocuSign C#Client取消信封

时间:2016-07-01 16:51:15

标签: c# docusignapi

我正在尝试使用DocuSign C# Client(DocuSign.eSign)的更新版本使现有信封无效。

信封处于已发送状态,尚未完成或无效。

目前我有以下代码:

EnvelopesApi envelopesApi = new EnvelopesApi();

Envelope envelope = envelopesApi.GetEnvelope(accountId, envelopeId);           
envelope.Status = "voided";
envelope.VoidedReason = "This envelope was voided by " + currentUserName;

// create the recipient view (aka signing URL)
var updateSummary = envelopesApi.Update(accountId, envelopeId, envelope);

return updateSummary;

当调用此代码时,它会因ApiException和以下ErrorContent而失败:

{
  "errorCode": "INVALID_REQUEST_PARAMETER",
  "message": "The request contained at least one invalid parameter. Value for 'purgeState' must be 'documents_queued' or 'documents_and_metadata_queued'."
}

消息是“请求包含至少一个无效参数.'purgeState'的值必须是'documents_queued'或'documents_and_metadata_queued'”,但根据文档,我不需要提供那些参数如果状态是“无效的”,我有一个无效的理由。

有没有办法使用DocuSign C#Client取消信封?

3 个答案:

答案 0 :(得分:5)

问题似乎是在加载信封并将其传递给API调用时,envelope.PurgeState设置为“未清除”。因此,即使我没有明确设置PurgeState,它也认为我尝试使用无效参数执行清除操作。

我能够通过显式取消设置envelope.PurgeState:

来解决这个问题
envelope.Status = "voided";
envelope.VoidedReason = "This envelope was voided by " + currentUserName;
envelope.PurgeState = null;

答案 1 :(得分:1)

我知道这是一个老问题,但我想补充一点,您不需要调用API来获取原始信封对象,只需设置所需的属性并发送更新调用。

    public EnvelopeUpdateSummary VoidRequest(string envelopeId, string message)
    {
        var envelope = new Envelope()
        {
            Status = "voided",
            VoidedReason = message
        };

        var updateSummary = EnvelopesApi.Update(AccountId, envelopeId, envelope);
        return updateSummary;
    }

您可以查看文档:{​​{3}}

答案 2 :(得分:0)

您不能使处于终端状态的信封无效(即已完成或无效),您是否可以确认您试图取消的信封的状态?