Sample code for 30+ languages & platforms
PureBasic

DocuSign List Envelope Documents

See more DocuSign Examples

Retrieve a list of all documents within a specific envelope.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttp.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example assumes the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Implements the following HTTP request:
    ; GET /restapi/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents

    ; Adds the "Authorization: Bearer eyJ0eXAi.....UE8Kl_V8KroQ" header.
    jsonToken.i = CkJsonObject::ckCreate()
    If jsonToken.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Load a previously obtained OAuth2 access token.
    success = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/docusign.json")
    If success = 0
        Debug CkJsonObject::ckLastErrorText(jsonToken)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(jsonToken)
        ProcedureReturn
    EndIf

    CkHttp::setCkAuthToken(http, CkJsonObject::ckStringOf(jsonToken,"access_token"))

    ; Use your account ID and a valid envelopeId here:
    CkHttp::ckSetUrlVar(http,"accountId","7f3f65ed-5e87-418d-94c1-92499ddc8252")
    CkHttp::ckSetUrlVar(http,"envelopeId","90d7e40a-b4bd-4ccd-bf38-c80e37954a13")

    sbResponseBody.i = CkStringBuilder::ckCreate()
    If sbResponseBody.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckQuickGetSb(http,"https://demo.docusign.net/restapi/v2.1/accounts/{$accountId}/envelopes/{$envelopeId}/documents",sbResponseBody)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(jsonToken)
        CkStringBuilder::ckDispose(sbResponseBody)
        ProcedureReturn
    EndIf

    jResp.i = CkJsonObject::ckCreate()
    If jResp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoadSb(jResp,sbResponseBody)
    CkJsonObject::setCkEmitCompact(jResp, 0)

    Debug "Response Body:"
    Debug CkJsonObject::ckEmit(jResp)

    respStatusCode.i = CkHttp::ckLastStatus(http)
    Debug "Response Status Code = " + Str(respStatusCode)
    If respStatusCode >= 400
        Debug "Response Header:"
        Debug CkHttp::ckLastHeader(http)
        Debug "Failed."
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(jsonToken)
        CkStringBuilder::ckDispose(sbResponseBody)
        CkJsonObject::ckDispose(jResp)
        ProcedureReturn
    EndIf

    ; Sample JSON response:
    ; (Sample code for parsing the JSON response is shown below)

    ; {
    ;   "envelopeId": "90d7e40a-b4bd-4ccd-bf38-c80e37954a13",
    ;   "envelopeDocuments": [
    ;     {
    ;       "documentId": "1",
    ;       "documentIdGuid": "ca1d3cc6-9bc3-48d6-a5d8-a85d9acdcde1",
    ;       "name": "helloWorld.pdf",
    ;       "type": "content",
    ;       "uri": "/envelopes/90d7e40a-b4bd-4ccd-bf38-c80e37954a13/documents/1",
    ;       "order": "1",
    ;       "pages": [
    ;         {
    ;           "pageId": "fbf93a36-6b60-484d-94bd-ee3c08c0a546",
    ;           "sequence": "1",
    ;           "height": "842",
    ;           "width": "595",
    ;           "dpi": "72"
    ;         }
    ;       ],
    ;       "availableDocumentTypes": [
    ;         {
    ;           "type": "electronic",
    ;           "isDefault": "true"
    ;         }
    ;       ],
    ;       "display": "inline",
    ;       "includeInDownload": "true",
    ;       "signerMustAcknowledge": "no_interaction",
    ;       "templateRequired": "false",
    ;       "authoritativeCopy": "false"
    ;     },
    ;     {
    ;       "documentId": "certificate",
    ;       "documentIdGuid": "7479a5de-8d91-44a2-bc33-b76a9ba0f6e2",
    ;       "name": "Summary",
    ;       "type": "summary",
    ;       "uri": "/envelopes/90d7e40a-b4bd-4ccd-bf38-c80e37954a13/documents/certificate",
    ;       "order": "999",
    ;       "availableDocumentTypes": [
    ;         {
    ;           "type": "electronic",
    ;           "isDefault": "true"
    ;         }
    ;       ],
    ;       "display": "inline",
    ;       "includeInDownload": "true",
    ;       "signerMustAcknowledge": "no_interaction",
    ;       "templateRequired": "false",
    ;       "authoritativeCopy": "false"
    ;     }
    ;   ]
    ; }

    ; Sample code for parsing the JSON response...
    ; Use the following online tool to generate parsing code from sample JSON:
    ; Generate Parsing Code from JSON

    documentId.s
    documentIdGuid.s
    name.s
    v_type.s
    uri.s
    order.s
    display.s
    includeInDownload.s
    signerMustAcknowledge.s
    templateRequired.s
    authoritativeCopy.s
    j.i
    count_j.i
    pageId.s
    sequence.s
    height.s
    width.s
    dpi.s
    isDefault.s

    envelopeId.s = CkJsonObject::ckStringOf(jResp,"envelopeId")
    i.i = 0
    count_i.i = CkJsonObject::ckSizeOfArray(jResp,"envelopeDocuments")
    While i < count_i
        CkJsonObject::setCkI(jResp, i)
        documentId = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].documentId")
        documentIdGuid = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].documentIdGuid")
        name = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].name")
        v_type = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].type")
        uri = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].uri")
        order = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].order")
        display = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].display")
        includeInDownload = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].includeInDownload")
        signerMustAcknowledge = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].signerMustAcknowledge")
        templateRequired = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].templateRequired")
        authoritativeCopy = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].authoritativeCopy")
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"envelopeDocuments[i].pages")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            pageId = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].pages[j].pageId")
            sequence = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].pages[j].sequence")
            height = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].pages[j].height")
            width = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].pages[j].width")
            dpi = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].pages[j].dpi")
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"envelopeDocuments[i].availableDocumentTypes")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            v_type = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].availableDocumentTypes[j].type")
            isDefault = CkJsonObject::ckStringOf(jResp,"envelopeDocuments[i].availableDocumentTypes[j].isDefault")
            j = j + 1
        Wend
        i = i + 1
    Wend


    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(jsonToken)
    CkStringBuilder::ckDispose(sbResponseBody)
    CkJsonObject::ckDispose(jResp)


    ProcedureReturn
EndProcedure