Установить значение документа с помощью REST API - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь заполнить поле документа через REST API Docusign Esignature, и у меня возникли некоторые проблемы. Я создал конверт из шаблона, который имеет поле PO #:

enter image description here

Я могу увидеть это поле, вызвав вызов GET для / restapi / v2 .1 / accounts / ####### / envelopes / 466077c7 - ####### / documents / 1 / tabs:

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 и выход без вздоха отражается в поле значения в том же вызове. Но когда я пытаюсь обновить значение поля через API, сделав вызов PUT /restapi/v2.1/accounts/######/envelopes/466077c7-######/documents/1/tabs с полезная нагрузка установлена ​​на:

{
            "tabs": {
                "numberTabs": [{
                    "tabLabel": "PO #",
                    "value": "123123123123"
                }]
            }
}

Сбой с довольно расплывчатым сообщением об ошибке, которое я не понимаю:

{"errorCode":"UNSPECIFIED_ERROR","message":"Value cannot be null.\r\nParameter name: source"}

Если посмотреть на ссылку API, нет поля с именем "source" «Так что я не знаю, как заставить это работать. Я пытался ссылаться на поле несколькими различными способами в моем JSON - по метке guid et c, но, похоже, ничего не работает. Что-то не так с моим синтаксисом?

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

В иерархии элементов DocuSign eSignature конверты содержат документы и получателей, а вкладки должны быть связаны с обоими. Следовательно, есть две разные конечные точки, которые можно использовать для обновления значения вкладок, но они не работают одинаково. Вы пытались использовать метод Envelopes :: UpdateDocumentTabs , тогда как вы должны были использовать метод Envelope :: UpdateTabs . Первый метод используется главным образом для более новых возможностей, таких как разметка документа , где документ может быть изменен даже в заблокированном состоянии (то есть в настоящее время открыт для подписания), тогда как последний является правильным способом интеграции для обновления содержимого вкладки конвертов.

0 голосов
/ 11 апреля 2020

API eSignature компании DocuSign использует PUT, а не PATCH.

Итак, проблема в том, что при использовании метода PUT вы обновляете все вкладок конверта для данного документа или получателя. И вы устанавливаете существующие вкладки в null, если они не находятся в объекте запроса вашего PUT-вызова. Это и является причиной ошибки.

Поэтому я использую решение: сначала список всех вкладок получателя конверта, затем обновите структуру данных по мере необходимости, затем update (put) обновленная структура вкладок.

В этом ответе я использую ресурс EnvelopeRecipientTabs. В вашем примере используется ресурс EnvelopeDocumentTabs. Это должно работать нормально, но обратите внимание, что структура данных ответа из get равна , а не такая же, как структура данных запроса для put. Таким образом, вам потребуется изменить структуру данных по мере необходимости.

С ресурсом EnvelopeRecipientTabs структура данных ответа из get такая же, как структура данных запроса для put, поэтому я считаю, требуется меньше кода. Кроме того, в объектной модели DocuSign вкладки принадлежат получателям. Они появляются в документах, но принадлежат получателям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...