Chilkat Online Tools

VB.NET / 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 Chilkat.Http
Dim success As Boolean

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

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


Dim jResp As New Chilkat.JsonObject
jResp.LoadSb(sbResponseBody)
jResp.EmitCompact = False

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

Dim respStatusCode As Integer = http.LastStatus
Debug.WriteLine("Response Status Code = " & respStatusCode)
If (respStatusCode >= 400) Then
    Debug.WriteLine("Response Header:")
    Debug.WriteLine(http.LastHeader)
    Debug.WriteLine("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 Boolean
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 Integer
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 Integer
Dim ext_archive As Integer
Dim fname As String
Dim id As Integer
Dim invoiced As Boolean
Dim language As String
Dim lname As String
Dim notes As String
Dim organization As String
Dim ownerid As Integer
Dim po_number As String
Dim province As String
Dim reply_status As String
Dim require_client_signature As Boolean
Dim rich_proposal As Boolean
Dim sentid As Integer
Dim status As Integer
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 Integer

Dim Page As Integer = jResp.IntOf("response.result.page")
Dim Pages As Integer = jResp.IntOf("response.result.pages")
Dim Per_page As Integer = jResp.IntOf("response.result.per_page")
Dim Total As Integer = jResp.IntOf("response.result.total")
Dim i As Integer = 0
Dim count_i As Integer = jResp.SizeOfArray("response.result.estimates")
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
End While

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}"
    }
  ]
}