Chilkat Online Tools

VB6 / New FreshBooks / List Estimates

Back to Collection Items

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

Dim http As New ChilkatHttp
Dim success As Long

' Adds the "Authorization: Bearer <access_token>" header.
http.AuthToken = "<access_token>"
http.SetRequestHeader "Content-Type","application/json"

Dim sbResponseBody As New ChilkatStringBuilder
success = http.QuickGetSb("https://api.freshbooks.com/accounting/account/{{accountId}}/estimates/estimates",sbResponseBody)
If (success = 0) Then
    Debug.Print http.LastErrorText
    Exit Sub
End If

Dim jResp As New ChilkatJsonObject
success = jResp.LoadSb(sbResponseBody)
jResp.EmitCompact = 0

Debug.Print "Response Body:"
Debug.Print jResp.Emit()

Dim respStatusCode As Long
respStatusCode = http.LastStatus
Debug.Print "Response Status Code = " & respStatusCode
If (respStatusCode >= 400) Then
    Debug.Print "Response Header:"
    Debug.Print http.LastHeader
    Debug.Print "Failed."
    Exit Sub
End If

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

' {
'   "response": {
'     "result": {
'       "estimates": [
'         {
'           "accepted": false,
'           "accounting_systemid": "wkMd2g",
'           "address": "",
'           "amount": {
'             "amount": "17628.00",
'             "code": "USD"
'           },
'           "city": "",
'           "code": "",
'           "country": "Canada",
'           "create_date": "2019-04-18",
'           "created_at": "2019-04-18 09:42:52",
'           "currency_code": "USD",
'           "current_organization": "first company",
'           "customerid": 31006,
'           "description": "it's a computer hardware version 1",
'           "discount_total": {
'             "amount": "0.00",
'             "code": "USD"
'           },
'           "discount_value": "0",
'           "display_status": "draft",
'           "estimate_number": "0000001",
'           "estimateid": 1706,
'           "ext_archive": 0,
'           "fname": "Client",
'           "id": 1706,
'           "invoiced": false,
'           "language": "en",
'           "lname": "one",
'           "notes": "This is an estimate for the computer",
'           "organization": "first company",
'           "ownerid": 1,
'           "po_number": null,
'           "province": "",
'           "reply_status": null,
'           "require_client_signature": false,
'           "rich_proposal": false,
'           "sentid": 1,
'           "status": 1,
'           "street": "",
'           "street2": "",
'           "template": "clean-grouped",
'           "terms": "50% deposit upon acceptance, 50% on delivery of the computers.",
'           "ui_status": "draft",
'           "updated": "2019-04-18 09:42:52",
'           "vat_name": null,
'           "vat_number": "",
'           "vis_state": 0
'         }
'       ],
'       "page": 1,
'       "pages": 1,
'       "per_page": 15,
'       "total": 1
'     }
'   }
' }

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

Dim accepted As Long
Dim accounting_systemid As String
Dim address As String
Dim Amount As String
Dim Code As String
Dim city As String
Dim code As String
Dim country As String
Dim create_date As String
Dim created_at As String
Dim currency_code As String
Dim current_organization As String
Dim customerid As Long
Dim description As String
Dim discount_totalAmount As String
Dim discount_totalCode As String
Dim discount_value As String
Dim display_status As String
Dim estimate_number As String
Dim estimateid As Long
Dim ext_archive As Long
Dim fname As String
Dim id As Long
Dim invoiced As Long
Dim language As String
Dim lname As String
Dim notes As String
Dim organization As String
Dim ownerid As Long
Dim po_number As String
Dim province As String
Dim reply_status As String
Dim require_client_signature As Long
Dim rich_proposal As Long
Dim sentid As Long
Dim status As Long
Dim street As String
Dim street2 As String
Dim template As String
Dim terms As String
Dim ui_status As String
Dim updated As String
Dim vat_name As String
Dim vat_number As String
Dim vis_state As Long

Dim Page As Long
Page = jResp.IntOf("response.result.page")
Dim Pages As Long
Pages = jResp.IntOf("response.result.pages")
Dim Per_page As Long
Per_page = jResp.IntOf("response.result.per_page")
Dim Total As Long
Total = jResp.IntOf("response.result.total")
Dim i As Long
i = 0
Dim count_i As Long
count_i = jResp.SizeOfArray("response.result.estimates")
Do While i < count_i
    jResp.I = i
    accepted = jResp.BoolOf("response.result.estimates[i].accepted")
    accounting_systemid = jResp.StringOf("response.result.estimates[i].accounting_systemid")
    address = jResp.StringOf("response.result.estimates[i].address")
    Amount = jResp.StringOf("response.result.estimates[i].amount.amount")
    Code = jResp.StringOf("response.result.estimates[i].amount.code")
    city = jResp.StringOf("response.result.estimates[i].city")
    code = jResp.StringOf("response.result.estimates[i].code")
    country = jResp.StringOf("response.result.estimates[i].country")
    create_date = jResp.StringOf("response.result.estimates[i].create_date")
    created_at = jResp.StringOf("response.result.estimates[i].created_at")
    currency_code = jResp.StringOf("response.result.estimates[i].currency_code")
    current_organization = jResp.StringOf("response.result.estimates[i].current_organization")
    customerid = jResp.IntOf("response.result.estimates[i].customerid")
    description = jResp.StringOf("response.result.estimates[i].description")
    discount_totalAmount = jResp.StringOf("response.result.estimates[i].discount_total.amount")
    discount_totalCode = jResp.StringOf("response.result.estimates[i].discount_total.code")
    discount_value = jResp.StringOf("response.result.estimates[i].discount_value")
    display_status = jResp.StringOf("response.result.estimates[i].display_status")
    estimate_number = jResp.StringOf("response.result.estimates[i].estimate_number")
    estimateid = jResp.IntOf("response.result.estimates[i].estimateid")
    ext_archive = jResp.IntOf("response.result.estimates[i].ext_archive")
    fname = jResp.StringOf("response.result.estimates[i].fname")
    id = jResp.IntOf("response.result.estimates[i].id")
    invoiced = jResp.BoolOf("response.result.estimates[i].invoiced")
    language = jResp.StringOf("response.result.estimates[i].language")
    lname = jResp.StringOf("response.result.estimates[i].lname")
    notes = jResp.StringOf("response.result.estimates[i].notes")
    organization = jResp.StringOf("response.result.estimates[i].organization")
    ownerid = jResp.IntOf("response.result.estimates[i].ownerid")
    po_number = jResp.StringOf("response.result.estimates[i].po_number")
    province = jResp.StringOf("response.result.estimates[i].province")
    reply_status = jResp.StringOf("response.result.estimates[i].reply_status")
    require_client_signature = jResp.BoolOf("response.result.estimates[i].require_client_signature")
    rich_proposal = jResp.BoolOf("response.result.estimates[i].rich_proposal")
    sentid = jResp.IntOf("response.result.estimates[i].sentid")
    status = jResp.IntOf("response.result.estimates[i].status")
    street = jResp.StringOf("response.result.estimates[i].street")
    street2 = jResp.StringOf("response.result.estimates[i].street2")
    template = jResp.StringOf("response.result.estimates[i].template")
    terms = jResp.StringOf("response.result.estimates[i].terms")
    ui_status = jResp.StringOf("response.result.estimates[i].ui_status")
    updated = jResp.StringOf("response.result.estimates[i].updated")
    vat_name = jResp.StringOf("response.result.estimates[i].vat_name")
    vat_number = jResp.StringOf("response.result.estimates[i].vat_number")
    vis_state = jResp.IntOf("response.result.estimates[i].vis_state")
    i = i + 1
Loop

Curl Command

curl -X GET
	-H "Authorization: Bearer <access_token>"
	-H "Content-Type: application/json"
https://api.freshbooks.com/accounting/account/{{accountId}}/estimates/estimates

Postman Collection Item JSON

{
  "name": "List Estimates",
  "event": [
    {
      "listen": "test",
      "script": {
        "exec": [
          "let jsonData = JSON.parse(responseBody); ",
          "pm.environment.set(\"estimateId\", jsonData.response.result.estimates[0].id)"
        ],
        "type": "text/javascript"
      }
    }
  ],
  "request": {
    "method": "GET",
    "header": [
      {
        "key": "Content-Type",
        "value": "application/json",
        "type": "text"
      }
    ],
    "url": {
      "raw": "https://api.freshbooks.com/accounting/account/{{accountId}}/estimates/estimates",
      "protocol": "https",
      "host": [
        "api",
        "freshbooks",
        "com"
      ],
      "path": [
        "accounting",
        "account",
        "{{accountId}}",
        "estimates",
        "estimates"
      ],
      "query": [
        {
          "key": "include[]",
          "value": "audit_logs\t",
          "description": "Show estimate view/send history\n",
          "disabled": true
        },
        {
          "key": "include[]",
          "value": "comments",
          "description": "Comments made on estimate\n",
          "disabled": true
        },
        {
          "key": "include[]",
          "value": "contacts",
          "description": "List of client contacts\n",
          "disabled": true
        },
        {
          "key": "include[]",
          "value": "lines",
          "description": "Estimate lines\n",
          "disabled": true
        },
        {
          "key": "include[]",
          "value": "owner",
          "description": "Owner info\n",
          "disabled": true
        },
        {
          "key": "include[]",
          "value": "presentation",
          "description": "Presentation type\n",
          "disabled": true
        },
        {
          "key": "include[]",
          "value": "project",
          "description": "Projects",
          "disabled": true
        },
        {
          "key": "include[]",
          "value": "invoices",
          "description": "Invoices",
          "disabled": true
        },
        {
          "key": "include[]",
          "value": "system",
          "description": "Estimate owner's system\n",
          "disabled": true
        }
      ]
    },
    "description": "Get an entire list of estimates that exist within your account."
  },
  "response": [
    {
      "name": "List Estimates",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          }
        ],
        "url": {
          "raw": "https://api.freshbooks.com/accounting/account/{{accountId}}/estimates/estimates",
          "protocol": "https",
          "host": [
            "api",
            "freshbooks",
            "com"
          ],
          "path": [
            "accounting",
            "account",
            "{{accountId}}",
            "estimates",
            "estimates"
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Server",
          "value": "nginx"
        },
        {
          "key": "Content-Type",
          "value": "application/json"
        },
        {
          "key": "X-NewRelic-App-Data",
          "value": "PxQBWV5TCBABVlVSAwEOVlcTGhE1AwE2QgNWEVlbQFtcCxYnRA9QFg1ZWU4DFVdfRgFPCkNFR0gBQkJaDwcXB0NYXRFMUVlTRwBKQx1RH1JKBwRQU1sMAgZTVVoHBQFeUwQaHlNKQVoDB11RWl0HB1ADXABVVgFASFBWDRUGZQ=="
        },
        {
          "key": "Access-Control-Allow-Origin",
          "value": "*"
        },
        {
          "key": "Expires",
          "value": "Tue, 24 Apr 2018 17:56:51 GMT"
        },
        {
          "key": "Cache-Control",
          "value": "no-cache"
        },
        {
          "key": "Content-Encoding",
          "value": "gzip"
        },
        {
          "key": "Via",
          "value": "1.1 google"
        },
        {
          "key": "Via",
          "value": "1.1 varnish"
        },
        {
          "key": "Transfer-Encoding",
          "value": "chunked"
        },
        {
          "key": "Accept-Ranges",
          "value": "bytes"
        },
        {
          "key": "Date",
          "value": "Wed, 24 Apr 2019 17:56:51 GMT"
        },
        {
          "key": "Connection",
          "value": "keep-alive"
        },
        {
          "key": "X-Served-By",
          "value": "cache-mdw17369-MDW"
        },
        {
          "key": "X-Cache",
          "value": "MISS"
        },
        {
          "key": "X-Cache-Hits",
          "value": "0"
        },
        {
          "key": "Vary",
          "value": "Accept-Encoding"
        },
        {
          "key": "Country",
          "value": "CA"
        },
        {
          "key": "Strict-Transport-Security",
          "value": "max-age=31536000; includeSubDomains; preload"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"response\": {\n        \"result\": {\n            \"estimates\": [\n                {\n                    \"accepted\": false,\n                    \"accounting_systemid\": \"wkMd2g\",\n                    \"address\": \"\",\n                    \"amount\": {\n                        \"amount\": \"17628.00\",\n                        \"code\": \"USD\"\n                    },\n                    \"city\": \"\",\n                    \"code\": \"\",\n                    \"country\": \"Canada\",\n                    \"create_date\": \"2019-04-18\",\n                    \"created_at\": \"2019-04-18 09:42:52\",\n                    \"currency_code\": \"USD\",\n                    \"current_organization\": \"first company\",\n                    \"customerid\": 31006,\n                    \"description\": \"it's a computer hardware version 1\",\n                    \"discount_total\": {\n                        \"amount\": \"0.00\",\n                        \"code\": \"USD\"\n                    },\n                    \"discount_value\": \"0\",\n                    \"display_status\": \"draft\",\n                    \"estimate_number\": \"0000001\",\n                    \"estimateid\": 1706,\n                    \"ext_archive\": 0,\n                    \"fname\": \"Client\",\n                    \"id\": 1706,\n                    \"invoiced\": false,\n                    \"language\": \"en\",\n                    \"lname\": \"one\",\n                    \"notes\": \"This is an estimate for the computer\",\n                    \"organization\": \"first company\",\n                    \"ownerid\": 1,\n                    \"po_number\": null,\n                    \"province\": \"\",\n                    \"reply_status\": null,\n                    \"require_client_signature\": false,\n                    \"rich_proposal\": false,\n                    \"sentid\": 1,\n                    \"status\": 1,\n                    \"street\": \"\",\n                    \"street2\": \"\",\n                    \"template\": \"clean-grouped\",\n                    \"terms\": \"50% deposit upon acceptance, 50% on delivery of the computers.\",\n                    \"ui_status\": \"draft\",\n                    \"updated\": \"2019-04-18 09:42:52\",\n                    \"vat_name\": null,\n                    \"vat_number\": \"\",\n                    \"vis_state\": 0\n                }\n            ],\n            \"page\": 1,\n            \"pages\": 1,\n            \"per_page\": 15,\n            \"total\": 1\n        }\n    }\n}"
    }
  ]
}