Chilkat Online Tools

Xojo / 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
    System.DebugLog(http.LastErrorText)
    Return
End If

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

System.DebugLog("Response Body:")
System.DebugLog(jResp.Emit())

Dim respStatusCode As Int32
respStatusCode = http.LastStatus
System.DebugLog("Response Status Code = " + Str(respStatusCode))
If (respStatusCode >= 400) Then
    System.DebugLog("Response Header:")
    System.DebugLog(http.LastHeader)
    System.DebugLog("Failed.")
    Return
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 Int32
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 Int32
Dim ext_archive As Int32
Dim fname As String
Dim id As Int32
Dim invoiced As Boolean
Dim language As String
Dim lname As String
Dim notes As String
Dim organization As String
Dim ownerid As Int32
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 Int32
Dim status As Int32
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 Int32

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

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