我试图通过Docusign Esignature REST API填充一个文档字段,但遇到了一些问题。我从一个带有PO #字段的模板创建了一个信封:
我可以通过对/restapi/v2.1/accounts/#######/envelopes/466077c7-#######/documents/1/tabs:进行GET调用来查看此字段
validationPattern :
validationMessage :
shared : false
requireInitialOnSharedChange : false
requireAll : false
value :
required : true
locked : false
concealValueOnDocument : false
disableAutoSize : false
maxLength : 10
tabLabel : PO #
font : lucidaconsole
fontColor : black
fontSize : size9
localePolicy :
documentId : 1
recipientId : 0287bf0a-2951-4902-b63d-2f438d70a64a
pageNumber : 1
xPosition : 383
yPosition : 61
width : 166
height : 20
tabId : fd51de92-1ccb-4343-81bf-7fd2dbb9ae57
templateRequired : false
tabType : number
如果我在GUI的字段中手动输入一个值,然后退出而不发出叹息,它会反映在同一调用中的value字段中。但是,当我尝试通过API对/restapi/v2.1/accounts/######/envelopes/466077c7-######/documents/1/tabs进行PUT调用来更新字段值时,有效负载设置为:
{
"tabs": {
"numberTabs": [{
"tabLabel": "PO #",
"value": "123123123123"
}]
}
}
它失败了,并显示了一个我不理解的相当模糊的错误消息:
{"errorCode":"UNSPECIFIED_ERROR","message":"Value cannot be null.\r\nParameter name: source"}
在API引用中,没有名为"source“的字段,因此我不知道如何实现此功能。我试着在我的JSON中用几种不同的方式来引用这个字段--通过标签,guid等等,但是似乎都不起作用。我的语法有问题吗?
发布于 2020-04-24 00:29:10
在DocuSign eSignature元素的层次结构中,信封包含文档和收件人,并且标签必须与文档和收件人关联。因此,有两个不同的终结点可用于更新制表符的值,但它们的工作方式不同。您尝试使用的是Envelopes::UpdateDocumentTabs方法,而您应该使用的是Envelope::UpdateTabs方法。前一种方法主要用于document markup等较新的功能,在这种功能中,即使文档处于锁定状态(即当前打开进行签名),也可以对其进行修改,而后一种方法是集成更新信封选项卡内容的正确方法。
发布于 2020-04-11 19:38:46
DocuSign的eSignature API使用的是PUT
,而不是PATCH
。
所以问题在于,当您使用PUT
方法时,您正在为给定的文档或收件人更新信封选项卡的所有。如果现有选项卡不在PUT调用的请求对象中,则将它们设置为null。这就是导致错误的原因。
因此,我使用的解决方案是首先对信封收件人的所有选项卡进行list,然后根据需要更新数据结构,然后对更新后的选项卡结构执行update (put)操作。
在这个答案中,我使用了EnvelopeRecipientTabs资源。您的示例使用了EnvelopeDocumentTabs资源。这应该可以正常工作,但请注意,来自get
的响应数据结构与put
的请求数据结构不同,是。因此,您需要根据需要修改数据结构。
对于EnvelopeRecipientTabs资源,来自get
的响应数据结构与put
的请求数据结构相同,因此我相信需要的代码更少。此外,在DocuSign对象模型中,选项卡属于收件人。它们出现在文档中,但它们属于收件人。
https://stackoverflow.com/questions/61125048
复制