Sample code for 30+ languages & platforms
Tcl

DocuSign List Folders

See more DocuSign Examples

Retrieves a list of the folders for the account, including the folder hierarchy. You can specify type kinds of folders to return with the include query parameter.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set http [new_CkHttp]

# Implements the following HTTP request:
# GET /restapi/v2.1/accounts/{accountId}/folders

# Adds the "Authorization: Bearer eyJ0eXAi.....UE8Kl_V8KroQ" header.
set jsonToken [new_CkJsonObject]

# Load a previously obtained OAuth2 access token.
set success [CkJsonObject_LoadFile $jsonToken "qa_data/tokens/docusign.json"]
if {$success == 0} then {
    puts [CkJsonObject_lastErrorText $jsonToken]
    delete_CkHttp $http
    delete_CkJsonObject $jsonToken
    exit
}

CkHttp_put_AuthToken $http [CkJsonObject_stringOf $jsonToken "access_token"]

# Use your account ID here:
CkHttp_SetUrlVar $http "accountId" "7f3f65ed-5e87-418d-94c1-92499ddc8252"

set sbResponseBody [new_CkStringBuilder]

set success [CkHttp_QuickGetSb $http "https://demo.docusign.net/restapi/v2.1/accounts/{$accountId}/folders" $sbResponseBody]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkJsonObject $jsonToken
    delete_CkStringBuilder $sbResponseBody
    exit
}

set jResp [new_CkJsonObject]

CkJsonObject_LoadSb $jResp $sbResponseBody
CkJsonObject_put_EmitCompact $jResp 0

puts "Response Body:"
puts [CkJsonObject_emit $jResp]

set respStatusCode [CkHttp_get_LastStatus $http]
puts "Response Status Code = $respStatusCode"
if {$respStatusCode >= 400} then {
    puts "Response Header:"
    puts [CkHttp_lastHeader $http]
    puts "Failed."
    delete_CkHttp $http
    delete_CkJsonObject $jsonToken
    delete_CkStringBuilder $sbResponseBody
    delete_CkJsonObject $jResp
    exit
}

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

# {
#   "resultSetSize": "4",
#   "startPosition": "0",
#   "endPosition": "3",
#   "totalSetSize": "4",
#   "folders": [
#     {
#       "name": "Draft",
#       "type": "draft",
#       "owner": {
#         "userName": "Joe Sample",
#         "userId": "14602117-2430-4582-8a49-ba8766302272",
#         "email": "admin@chilkatsoft.com"
#       },
#       "folderId": "f0bc5174-610d-4d80-80d7-91037843ccdb",
#       "uri": "/folders/f0bc5174-610d-4d80-80d7-91037843ccdb",
#       "itemCount": "0",
#       "subFolderCount": "0",
#       "hasSubFolders": "false"
#     },
#     {
#       "name": "Inbox",
#       "type": "inbox",
#       "owner": {
#         "userName": "Joe Sample",
#         "userId": "14602117-2430-4582-8a49-ba8766302272",
#         "email": "admin@chilkatsoft.com"
#       },
#       "folderId": "06c97346-f7b4-46fd-a204-038287d655ec",
#       "uri": "/folders/06c97346-f7b4-46fd-a204-038287d655ec",
#       "itemCount": "1",
#       "subFolderCount": "0",
#       "hasSubFolders": "false"
#     },
#     {
#       "name": "Deleted Items",
#       "type": "recyclebin",
#       "owner": {
#         "userName": "Joe Sample",
#         "userId": "14602117-2430-4582-8a49-ba8766302272",
#         "email": "admin@chilkatsoft.com"
#       },
#       "folderId": "6df0919e-b152-49fc-a4c9-9b430a29d4f5",
#       "uri": "/folders/6df0919e-b152-49fc-a4c9-9b430a29d4f5",
#       "itemCount": "0",
#       "subFolderCount": "0",
#       "hasSubFolders": "false"
#     },
#     {
#       "name": "Sent Items",
#       "type": "sentitems",
#       "owner": {
#         "userName": "Joe Sample",
#         "userId": "14602117-2430-4582-8a49-ba8766302272",
#         "email": "admin@chilkatsoft.com"
#       },
#       "folderId": "456f3c76-b265-4453-a024-c39b1a5cb387",
#       "uri": "/folders/456f3c76-b265-4453-a024-c39b1a5cb387",
#       "itemCount": "1",
#       "subFolderCount": "0",
#       "hasSubFolders": "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

set resultSetSize [CkJsonObject_stringOf $jResp "resultSetSize"]
set startPosition [CkJsonObject_stringOf $jResp "startPosition"]
set endPosition [CkJsonObject_stringOf $jResp "endPosition"]
set totalSetSize [CkJsonObject_stringOf $jResp "totalSetSize"]
set i 0
set count_i [CkJsonObject_SizeOfArray $jResp "folders"]
while {$i < $count_i} {
    CkJsonObject_put_I $jResp $i
    set name [CkJsonObject_stringOf $jResp "folders[i].name"]
    set v_type [CkJsonObject_stringOf $jResp "folders[i].type"]
    set ownerUserName [CkJsonObject_stringOf $jResp "folders[i].owner.userName"]
    set ownerUserId [CkJsonObject_stringOf $jResp "folders[i].owner.userId"]
    set ownerEmail [CkJsonObject_stringOf $jResp "folders[i].owner.email"]
    set folderId [CkJsonObject_stringOf $jResp "folders[i].folderId"]
    set uri [CkJsonObject_stringOf $jResp "folders[i].uri"]
    set itemCount [CkJsonObject_stringOf $jResp "folders[i].itemCount"]
    set subFolderCount [CkJsonObject_stringOf $jResp "folders[i].subFolderCount"]
    set hasSubFolders [CkJsonObject_stringOf $jResp "folders[i].hasSubFolders"]
    set i [expr $i + 1]
}

delete_CkHttp $http
delete_CkJsonObject $jsonToken
delete_CkStringBuilder $sbResponseBody
delete_CkJsonObject $jResp