Chilkat Online Tools

Foxpro / New FreshBooks / Update Expense

Back to Collection Items

LOCAL loHttp
LOCAL lnSuccess
LOCAL loJson
LOCAL loSbRequestBody
LOCAL loResp
LOCAL loSbResponseBody
LOCAL loJResp
LOCAL lnRespStatusCode
LOCAL lcAccount_name
LOCAL lcAccountid
LOCAL lcAccounting_systemid
LOCAL lcAmount
LOCAL lcCode
LOCAL lcBackground_jobid
LOCAL lcBank_name
LOCAL lnCategoryid
LOCAL lnClientid
LOCAL lnCompounded_tax
LOCAL lcDate
LOCAL lnExpenseid
LOCAL lnExt_invoiceid
LOCAL lnExt_systemid
LOCAL lnFrom_bulk_import
LOCAL lnHas_receipt
LOCAL lnId
LOCAL lnInclude_receipt
LOCAL lcInvoiceid
LOCAL lnIs_cogs
LOCAL lnIsduplicate
LOCAL lcMarkup_percent
LOCAL lcNotes
LOCAL lcProfileid
LOCAL lnProjectid
LOCAL lnStaffid
LOCAL lnStatus
LOCAL lcTaxAmount1Amount
LOCAL lcTaxAmount1Code
LOCAL lcTaxAmount2
LOCAL lcTaxName1
LOCAL lcTaxName2
LOCAL lcTaxPercent1
LOCAL lcTaxPercent2
LOCAL lcTransactionid
LOCAL lcUpdated
LOCAL lcVendor
LOCAL lnVis_state

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

loHttp = CreateObject('Chilkat_9_5_0.Http')

* Use this online tool to generate code from sample JSON: Generate Code to Create JSON

* The following JSON is sent in the request body.

* {
*   "expense": {
*     "vendor": "WestJet"
*   }
* }

loJson = CreateObject('Chilkat_9_5_0.JsonObject')
loJson.UpdateString("expense.vendor","WestJet")

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

loSbRequestBody = CreateObject('Chilkat_9_5_0.StringBuilder')
loJson.EmitSb(loSbRequestBody)

loResp = loHttp.PTextSb("PUT","https://api.freshbooks.com/accounting/account/{{accountId}}/expenses/expenses/{{expenseId}}",loSbRequestBody,"utf-8","application/json",0,0)
IF (loHttp.LastMethodSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loJson
    RELEASE loSbRequestBody
    CANCEL
ENDIF

loSbResponseBody = CreateObject('Chilkat_9_5_0.StringBuilder')
loResp.GetBodySb(loSbResponseBody)

loJResp = CreateObject('Chilkat_9_5_0.JsonObject')
loJResp.LoadSb(loSbResponseBody)
loJResp.EmitCompact = 0

? "Response Body:"
? loJResp.Emit()

lnRespStatusCode = loResp.StatusCode
? "Response Status Code = " + STR(lnRespStatusCode)
IF (lnRespStatusCode >= 400) THEN
    ? "Response Header:"
    ? loResp.Header
    ? "Failed."
    RELEASE loResp
    RELEASE loHttp
    RELEASE loJson
    RELEASE loSbRequestBody
    RELEASE loSbResponseBody
    RELEASE loJResp
    CANCEL
ENDIF

RELEASE loResp

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

* {
*   "response": {
*     "result": {
*       "expense": {
*         "account_name": "",
*         "accountid": null,
*         "accounting_systemid": "wkMd2g",
*         "amount": {
*           "amount": "79.73",
*           "code": "USD"
*         },
*         "background_jobid": null,
*         "bank_name": "",
*         "categoryid": 2003174,
*         "clientid": 0,
*         "compounded_tax": false,
*         "date": "2019-04-24",
*         "expenseid": 1825568,
*         "ext_invoiceid": 0,
*         "ext_systemid": 0,
*         "from_bulk_import": false,
*         "has_receipt": true,
*         "id": 1825568,
*         "include_receipt": false,
*         "invoiceid": null,
*         "is_cogs": false,
*         "isduplicate": true,
*         "markup_percent": "0",
*         "notes": "Purchased Gasoline for deliveries",
*         "profileid": null,
*         "projectid": 0,
*         "staffid": 1,
*         "status": 0,
*         "taxAmount1": {
*           "amount": "9.17",
*           "code": "USD"
*         },
*         "taxAmount2": null,
*         "taxName1": "other tax",
*         "taxName2": null,
*         "taxPercent1": "13",
*         "taxPercent2": null,
*         "transactionid": null,
*         "updated": "2019-05-08 16:03:24",
*         "vendor": "WestJet",
*         "vis_state": 0
*       }
*     }
*   }
* }

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

lcAccount_name = loJResp.StringOf("response.result.expense.account_name")
lcAccountid = loJResp.StringOf("response.result.expense.accountid")
lcAccounting_systemid = loJResp.StringOf("response.result.expense.accounting_systemid")
lcAmount = loJResp.StringOf("response.result.expense.amount.amount")
lcCode = loJResp.StringOf("response.result.expense.amount.code")
lcBackground_jobid = loJResp.StringOf("response.result.expense.background_jobid")
lcBank_name = loJResp.StringOf("response.result.expense.bank_name")
lnCategoryid = loJResp.IntOf("response.result.expense.categoryid")
lnClientid = loJResp.IntOf("response.result.expense.clientid")
lnCompounded_tax = loJResp.BoolOf("response.result.expense.compounded_tax")
lcDate = loJResp.StringOf("response.result.expense.date")
lnExpenseid = loJResp.IntOf("response.result.expense.expenseid")
lnExt_invoiceid = loJResp.IntOf("response.result.expense.ext_invoiceid")
lnExt_systemid = loJResp.IntOf("response.result.expense.ext_systemid")
lnFrom_bulk_import = loJResp.BoolOf("response.result.expense.from_bulk_import")
lnHas_receipt = loJResp.BoolOf("response.result.expense.has_receipt")
lnId = loJResp.IntOf("response.result.expense.id")
lnInclude_receipt = loJResp.BoolOf("response.result.expense.include_receipt")
lcInvoiceid = loJResp.StringOf("response.result.expense.invoiceid")
lnIs_cogs = loJResp.BoolOf("response.result.expense.is_cogs")
lnIsduplicate = loJResp.BoolOf("response.result.expense.isduplicate")
lcMarkup_percent = loJResp.StringOf("response.result.expense.markup_percent")
lcNotes = loJResp.StringOf("response.result.expense.notes")
lcProfileid = loJResp.StringOf("response.result.expense.profileid")
lnProjectid = loJResp.IntOf("response.result.expense.projectid")
lnStaffid = loJResp.IntOf("response.result.expense.staffid")
lnStatus = loJResp.IntOf("response.result.expense.status")
lcTaxAmount1Amount = loJResp.StringOf("response.result.expense.taxAmount1.amount")
lcTaxAmount1Code = loJResp.StringOf("response.result.expense.taxAmount1.code")
lcTaxAmount2 = loJResp.StringOf("response.result.expense.taxAmount2")
lcTaxName1 = loJResp.StringOf("response.result.expense.taxName1")
lcTaxName2 = loJResp.StringOf("response.result.expense.taxName2")
lcTaxPercent1 = loJResp.StringOf("response.result.expense.taxPercent1")
lcTaxPercent2 = loJResp.StringOf("response.result.expense.taxPercent2")
lcTransactionid = loJResp.StringOf("response.result.expense.transactionid")
lcUpdated = loJResp.StringOf("response.result.expense.updated")
lcVendor = loJResp.StringOf("response.result.expense.vendor")
lnVis_state = loJResp.IntOf("response.result.expense.vis_state")

RELEASE loHttp
RELEASE loJson
RELEASE loSbRequestBody
RELEASE loSbResponseBody
RELEASE loJResp

Curl Command

curl -X PUT
	-H "Authorization: Bearer <access_token>"
	-H "Content-Type: application/json"
	-d '{
  "expense": {
    "vendor": "WestJet"
  }
}'
https://api.freshbooks.com/accounting/account/{{accountId}}/expenses/expenses/{{expenseId}}

Postman Collection Item JSON

{
  "name": "Update Expense",
  "request": {
    "method": "PUT",
    "header": [
      {
        "key": "Content-Type",
        "name": "Content-Type",
        "type": "text",
        "value": "application/json"
      }
    ],
    "body": {
      "mode": "raw",
      "raw": "{\n  \"expense\": {\n    \"vendor\": \"WestJet\"\n  }\n}"
    },
    "url": {
      "raw": "https://api.freshbooks.com/accounting/account/{{accountId}}/expenses/expenses/{{expenseId}}",
      "protocol": "https",
      "host": [
        "api",
        "freshbooks",
        "com"
      ],
      "path": [
        "accounting",
        "account",
        "{{accountId}}",
        "expenses",
        "expenses",
        "{{expenseId}}"
      ]
    }
  },
  "response": [
    {
      "name": "Update Expense",
      "originalRequest": {
        "method": "PUT",
        "header": [
          {
            "key": "Content-Type",
            "name": "Content-Type",
            "type": "text",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"expense\": {\n    \"vendor\": \"WestJet\"\n  }\n}"
        },
        "url": {
          "raw": "https://api.freshbooks.com/accounting/account/{{accountId}}/expenses/expenses/{{expenseId}}",
          "protocol": "https",
          "host": [
            "api",
            "freshbooks",
            "com"
          ],
          "path": [
            "accounting",
            "account",
            "{{accountId}}",
            "expenses",
            "expenses",
            "{{expenseId}}"
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Server",
          "value": "nginx"
        },
        {
          "key": "Content-Type",
          "value": "application/json"
        },
        {
          "key": "X-NewRelic-App-Data",
          "value": "PxQBWV5TCBABVlVSAwEOVlcTGhE1AwE2QgNWEVlbQFtcCxYnRA9QFg1ZWU4DFVdfRgFPCkNFR0gBSUZWDBUGEQoHQBJdVkdXEUkJTQFPAVRRDwZYUFsNAAZXVlQOBARKUAcaEVJWUAEHUwtUXl0GUAdSCAcTTVUDCEVSPA=="
        },
        {
          "key": "X-RateLimit-Limit",
          "value": "20"
        },
        {
          "key": "X-RateLimit-Remaining",
          "value": "0"
        },
        {
          "key": "X-RateLimit-Reset",
          "value": "1557345847"
        },
        {
          "key": "Retry-After",
          "value": "42"
        },
        {
          "key": "Access-Control-Allow-Origin",
          "value": "*"
        },
        {
          "key": "Expires",
          "value": "Tue, 08 May 2018 20:03:24 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, 08 May 2019 20:03:24 GMT"
        },
        {
          "key": "Connection",
          "value": "keep-alive"
        },
        {
          "key": "X-Served-By",
          "value": "cache-mdw17361-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            \"expense\": {\n                \"account_name\": \"\",\n                \"accountid\": null,\n                \"accounting_systemid\": \"wkMd2g\",\n                \"amount\": {\n                    \"amount\": \"79.73\",\n                    \"code\": \"USD\"\n                },\n                \"background_jobid\": null,\n                \"bank_name\": \"\",\n                \"categoryid\": 2003174,\n                \"clientid\": 0,\n                \"compounded_tax\": false,\n                \"date\": \"2019-04-24\",\n                \"expenseid\": 1825568,\n                \"ext_invoiceid\": 0,\n                \"ext_systemid\": 0,\n                \"from_bulk_import\": false,\n                \"has_receipt\": true,\n                \"id\": 1825568,\n                \"include_receipt\": false,\n                \"invoiceid\": null,\n                \"is_cogs\": false,\n                \"isduplicate\": true,\n                \"markup_percent\": \"0\",\n                \"notes\": \"Purchased Gasoline for deliveries\",\n                \"profileid\": null,\n                \"projectid\": 0,\n                \"staffid\": 1,\n                \"status\": 0,\n                \"taxAmount1\": {\n                    \"amount\": \"9.17\",\n                    \"code\": \"USD\"\n                },\n                \"taxAmount2\": null,\n                \"taxName1\": \"other tax\",\n                \"taxName2\": null,\n                \"taxPercent1\": \"13\",\n                \"taxPercent2\": null,\n                \"transactionid\": null,\n                \"updated\": \"2019-05-08 16:03:24\",\n                \"vendor\": \"WestJet\",\n                \"vis_state\": 0\n            }\n        }\n    }\n}"
    }
  ]
}