Chilkat Online Tools

Foxpro / New FreshBooks / Delete Bill

Back to Collection Items

LOCAL loHttp
LOCAL lnSuccess
LOCAL loJson
LOCAL loSbRequestBody
LOCAL loResp
LOCAL loSbResponseBody
LOCAL loJResp
LOCAL lnRespStatusCode
LOCAL lcAmountAmount
LOCAL lcAmountCode
LOCAL lcCategory
LOCAL lnCategoryid
LOCAL lcCategoryCreated_at
LOCAL lnCategoryId
LOCAL lnIs_cogs
LOCAL lnIs_editable
LOCAL lcParentid
LOCAL lcCategoryUpdated_at
LOCAL lnCategoryVis_state
LOCAL lcDescription
LOCAL lnId
LOCAL lnList_index
LOCAL lcQuantity
LOCAL lcTax_amount1
LOCAL lcTax_amount2
LOCAL lcTax_authorityid1
LOCAL lcTax_authorityid2
LOCAL lcTax_name1
LOCAL lcTax_name2
LOCAL lcTax_percent1
LOCAL lcTax_percent2
LOCAL lcTotal_amountAmount
LOCAL lcTotal_amountCode
LOCAL lcUnit_costAmount
LOCAL lcUnit_costCode
LOCAL lcAmount
LOCAL lcCode
LOCAL lcAttachment
LOCAL lcBill_number
LOCAL lcCreated_at
LOCAL lcCurrency_code
LOCAL lcDue_date
LOCAL lnDue_offset_days
LOCAL lnId
LOCAL lcIssue_date
LOCAL lcLanguage
LOCAL lcOutstandingAmount
LOCAL lcOutstandingCode
LOCAL lcOverall_category
LOCAL lcOverall_description
LOCAL lcPaidAmount
LOCAL lcPaidCode
LOCAL lcStatus
LOCAL lcTax_amountAmount
LOCAL lcTax_amountCode
LOCAL lcTotal_amountAmount
LOCAL lcTotal_amountCode
LOCAL lcUpdated_at
LOCAL lnVis_state
LOCAL i
LOCAL lnCount_i

* 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.

* {
*   "bill": {
*     "vis_state": 1
*   }
* }

loJson = CreateObject('Chilkat_9_5_0.JsonObject')
loJson.UpdateInt("bill.vis_state",1)

* Adds the "Authorization: Bearer <access_token>" header.
loHttp.AuthToken = "<access_token>"

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

loResp = loHttp.PTextSb("PUT","https://api.freshbooks.com/accounting/account/{{accountId}}/bills/bills/{{billId}}",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": {
*       "bill": {
*         "amount": {
*           "amount": "5.00",
*           "code": "CAD"
*         },
*         "attachment": null,
*         "bill_number": null,
*         "bill_payments": [
*         ],
*         "created_at": "2020-10-07 21:33:27",
*         "currency_code": "CAD",
*         "due_date": "2020-11-06",
*         "due_offset_days": 30,
*         "id": 3,
*         "issue_date": "2020-10-07",
*         "language": "en",
*         "lines": [
*           {
*             "amount": {
*               "amount": "5.00",
*               "code": "CAD"
*             },
*             "category": {
*               "category": "Advertising",
*               "categoryid": 65688,
*               "created_at": "2016-11-17 14:22:35",
*               "id": 65688,
*               "is_cogs": true,
*               "is_editable": false,
*               "parentid": null,
*               "updated_at": "2020-08-14 12:52:33",
*               "vis_state": 0
*             },
*             "description": "Food",
*             "id": 5,
*             "list_index": 1,
*             "quantity": "1",
*             "tax_amount1": null,
*             "tax_amount2": null,
*             "tax_authorityid1": null,
*             "tax_authorityid2": null,
*             "tax_name1": null,
*             "tax_name2": null,
*             "tax_percent1": null,
*             "tax_percent2": null,
*             "total_amount": {
*               "amount": "5.00",
*               "code": "CAD"
*             },
*             "unit_cost": {
*               "amount": "5.00",
*               "code": "CAD"
*             }
*           },
*           {
*             "amount": {
*               "amount": "0.00",
*               "code": "CAD"
*             },
*             "category": {
*               "category": "Advertising",
*               "categoryid": 65688,
*               "created_at": "2016-11-17 14:22:35",
*               "id": 65688,
*               "is_cogs": true,
*               "is_editable": false,
*               "parentid": null,
*               "updated_at": "2020-08-14 12:52:33",
*               "vis_state": 0
*             },
*             "description": null,
*             "id": 7,
*             "list_index": 2,
*             "quantity": "1",
*             "tax_amount1": null,
*             "tax_amount2": null,
*             "tax_authorityid1": null,
*             "tax_authorityid2": null,
*             "tax_name1": null,
*             "tax_name2": null,
*             "tax_percent1": null,
*             "tax_percent2": null,
*             "total_amount": {
*               "amount": "0.00",
*               "code": "CAD"
*             },
*             "unit_cost": {
*               "amount": "0.00",
*               "code": "CAD"
*             }
*           }
*         ],
*         "outstanding": {
*           "amount": "5.00",
*           "code": "CAD"
*         },
*         "overall_category": "Advertising",
*         "overall_description": "Food",
*         "paid": {
*           "amount": "0.00",
*           "code": "CAD"
*         },
*         "status": "unpaid",
*         "tax_amount": {
*           "amount": "0.00",
*           "code": "CAD"
*         },
*         "total_amount": {
*           "amount": "5.00",
*           "code": "CAD"
*         },
*         "updated_at": "2020-10-09 15:41:35",
*         "vis_state": 1
*       }
*     }
*   }
* }

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

lcAmount = loJResp.StringOf("response.result.bill.amount.amount")
lcCode = loJResp.StringOf("response.result.bill.amount.code")
lcAttachment = loJResp.StringOf("response.result.bill.attachment")
lcBill_number = loJResp.StringOf("response.result.bill.bill_number")
lcCreated_at = loJResp.StringOf("response.result.bill.created_at")
lcCurrency_code = loJResp.StringOf("response.result.bill.currency_code")
lcDue_date = loJResp.StringOf("response.result.bill.due_date")
lnDue_offset_days = loJResp.IntOf("response.result.bill.due_offset_days")
lnId = loJResp.IntOf("response.result.bill.id")
lcIssue_date = loJResp.StringOf("response.result.bill.issue_date")
lcLanguage = loJResp.StringOf("response.result.bill.language")
lcOutstandingAmount = loJResp.StringOf("response.result.bill.outstanding.amount")
lcOutstandingCode = loJResp.StringOf("response.result.bill.outstanding.code")
lcOverall_category = loJResp.StringOf("response.result.bill.overall_category")
lcOverall_description = loJResp.StringOf("response.result.bill.overall_description")
lcPaidAmount = loJResp.StringOf("response.result.bill.paid.amount")
lcPaidCode = loJResp.StringOf("response.result.bill.paid.code")
lcStatus = loJResp.StringOf("response.result.bill.status")
lcTax_amountAmount = loJResp.StringOf("response.result.bill.tax_amount.amount")
lcTax_amountCode = loJResp.StringOf("response.result.bill.tax_amount.code")
lcTotal_amountAmount = loJResp.StringOf("response.result.bill.total_amount.amount")
lcTotal_amountCode = loJResp.StringOf("response.result.bill.total_amount.code")
lcUpdated_at = loJResp.StringOf("response.result.bill.updated_at")
lnVis_state = loJResp.IntOf("response.result.bill.vis_state")
i = 0
lnCount_i = loJResp.SizeOfArray("response.result.bill.bill_payments")
DO WHILE i < lnCount_i
    loJResp.I = i
    i = i + 1
ENDDO
i = 0
lnCount_i = loJResp.SizeOfArray("response.result.bill.lines")
DO WHILE i < lnCount_i
    loJResp.I = i
    lcAmountAmount = loJResp.StringOf("response.result.bill.lines[i].amount.amount")
    lcAmountCode = loJResp.StringOf("response.result.bill.lines[i].amount.code")
    lcCategory = loJResp.StringOf("response.result.bill.lines[i].category.category")
    lnCategoryid = loJResp.IntOf("response.result.bill.lines[i].category.categoryid")
    lcCategoryCreated_at = loJResp.StringOf("response.result.bill.lines[i].category.created_at")
    lnCategoryId = loJResp.IntOf("response.result.bill.lines[i].category.id")
    lnIs_cogs = loJResp.BoolOf("response.result.bill.lines[i].category.is_cogs")
    lnIs_editable = loJResp.BoolOf("response.result.bill.lines[i].category.is_editable")
    lcParentid = loJResp.StringOf("response.result.bill.lines[i].category.parentid")
    lcCategoryUpdated_at = loJResp.StringOf("response.result.bill.lines[i].category.updated_at")
    lnCategoryVis_state = loJResp.IntOf("response.result.bill.lines[i].category.vis_state")
    lcDescription = loJResp.StringOf("response.result.bill.lines[i].description")
    lnId = loJResp.IntOf("response.result.bill.lines[i].id")
    lnList_index = loJResp.IntOf("response.result.bill.lines[i].list_index")
    lcQuantity = loJResp.StringOf("response.result.bill.lines[i].quantity")
    lcTax_amount1 = loJResp.StringOf("response.result.bill.lines[i].tax_amount1")
    lcTax_amount2 = loJResp.StringOf("response.result.bill.lines[i].tax_amount2")
    lcTax_authorityid1 = loJResp.StringOf("response.result.bill.lines[i].tax_authorityid1")
    lcTax_authorityid2 = loJResp.StringOf("response.result.bill.lines[i].tax_authorityid2")
    lcTax_name1 = loJResp.StringOf("response.result.bill.lines[i].tax_name1")
    lcTax_name2 = loJResp.StringOf("response.result.bill.lines[i].tax_name2")
    lcTax_percent1 = loJResp.StringOf("response.result.bill.lines[i].tax_percent1")
    lcTax_percent2 = loJResp.StringOf("response.result.bill.lines[i].tax_percent2")
    lcTotal_amountAmount = loJResp.StringOf("response.result.bill.lines[i].total_amount.amount")
    lcTotal_amountCode = loJResp.StringOf("response.result.bill.lines[i].total_amount.code")
    lcUnit_costAmount = loJResp.StringOf("response.result.bill.lines[i].unit_cost.amount")
    lcUnit_costCode = loJResp.StringOf("response.result.bill.lines[i].unit_cost.code")
    i = i + 1
ENDDO

RELEASE loHttp
RELEASE loJson
RELEASE loSbRequestBody
RELEASE loSbResponseBody
RELEASE loJResp

Curl Command

curl -X PUT
	-H "Authorization: Bearer <access_token>"
	-d '{
    "bill": {
        "vis_state": 1
    }
}'
https://api.freshbooks.com/accounting/account/{{accountId}}/bills/bills/{{billId}}

Postman Collection Item JSON

{
  "name": "Delete Bill",
  "request": {
    "method": "PUT",
    "header": [
    ],
    "body": {
      "mode": "raw",
      "raw": "{\n    \"bill\": {\n        \"vis_state\": 1\n    }\n}",
      "options": {
        "raw": {
          "language": "json"
        }
      }
    },
    "url": {
      "raw": "https://api.freshbooks.com/accounting/account/{{accountId}}/bills/bills/{{billId}}",
      "protocol": "https",
      "host": [
        "api",
        "freshbooks",
        "com"
      ],
      "path": [
        "accounting",
        "account",
        "{{accountId}}",
        "bills",
        "bills",
        "{{billId}}"
      ]
    }
  },
  "response": [
    {
      "name": "Delete Bill",
      "originalRequest": {
        "method": "PUT",
        "header": [
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n    \"bill\": {\n        \"vis_state\": 1\n    }\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "https://api.freshbooks.com/accounting/account/{{accountId}}/bills/bills/{{billId}}",
          "protocol": "https",
          "host": [
            "api",
            "freshbooks",
            "com"
          ],
          "path": [
            "accounting",
            "account",
            "{{accountId}}",
            "bills",
            "bills",
            "{{billId}}"
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Server",
          "value": "nginx"
        },
        {
          "key": "Date",
          "value": "Fri, 09 Oct 2020 15:41:35 GMT"
        },
        {
          "key": "Content-Type",
          "value": "application/json"
        },
        {
          "key": "Vary",
          "value": "Accept-Encoding"
        },
        {
          "key": "X-NewRelic-App-Data",
          "value": "PxQBWV5TCBABVlVSAwEOVlcTGhE1AwE2QgNWEVlbQFtcCxYnRA9QFg1ZWU4DFVdfRgFPCkNFR0gGWFpfEVwBC1wOGk4IFAQcAFEJUQRSA1pVAwZTUlYJAgdIVVQbEwRfUAMGBgRUWlAIUwBQXAAWHlUEVRJUPA=="
        },
        {
          "key": "X-Frame-Options",
          "value": "SAMEORIGIN"
        },
        {
          "key": "X-XSS-Protection",
          "value": "1; mode=block"
        },
        {
          "key": "X-Content-Type-Options",
          "value": "nosniff"
        },
        {
          "key": "Content-Security-Policy",
          "value": "default-src 'self'"
        },
        {
          "key": "X-Content-Security-Policy",
          "value": "default-src 'self'"
        },
        {
          "key": "Strict-Transport-Security",
          "value": "max-age=31556926; includeSubDomains; preload"
        },
        {
          "key": "Referrer-Policy",
          "value": "strict-origin-when-cross-origin"
        },
        {
          "key": "X-RateLimit-Limit",
          "value": "600"
        },
        {
          "key": "X-RateLimit-Remaining",
          "value": "599"
        },
        {
          "key": "X-RateLimit-Reset",
          "value": "1602258156"
        },
        {
          "key": "Retry-After",
          "value": "60"
        },
        {
          "key": "Access-Control-Allow-Origin",
          "value": "*"
        },
        {
          "key": "Content-Encoding",
          "value": "gzip"
        },
        {
          "key": "Via",
          "value": "1.1 google"
        },
        {
          "key": "Alt-Svc",
          "value": "h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\""
        },
        {
          "key": "Transfer-Encoding",
          "value": "chunked"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"response\": {\n        \"result\": {\n            \"bill\": {\n                \"amount\": {\n                    \"amount\": \"5.00\",\n                    \"code\": \"CAD\"\n                },\n                \"attachment\": null,\n                \"bill_number\": null,\n                \"bill_payments\": [],\n                \"created_at\": \"2020-10-07 21:33:27\",\n                \"currency_code\": \"CAD\",\n                \"due_date\": \"2020-11-06\",\n                \"due_offset_days\": 30,\n                \"id\": 3,\n                \"issue_date\": \"2020-10-07\",\n                \"language\": \"en\",\n                \"lines\": [\n                    {\n                        \"amount\": {\n                            \"amount\": \"5.00\",\n                            \"code\": \"CAD\"\n                        },\n                        \"category\": {\n                            \"category\": \"Advertising\",\n                            \"categoryid\": 65688,\n                            \"created_at\": \"2016-11-17 14:22:35\",\n                            \"id\": 65688,\n                            \"is_cogs\": true,\n                            \"is_editable\": false,\n                            \"parentid\": null,\n                            \"updated_at\": \"2020-08-14 12:52:33\",\n                            \"vis_state\": 0\n                        },\n                        \"description\": \"Food\",\n                        \"id\": 5,\n                        \"list_index\": 1,\n                        \"quantity\": \"1\",\n                        \"tax_amount1\": null,\n                        \"tax_amount2\": null,\n                        \"tax_authorityid1\": null,\n                        \"tax_authorityid2\": null,\n                        \"tax_name1\": null,\n                        \"tax_name2\": null,\n                        \"tax_percent1\": null,\n                        \"tax_percent2\": null,\n                        \"total_amount\": {\n                            \"amount\": \"5.00\",\n                            \"code\": \"CAD\"\n                        },\n                        \"unit_cost\": {\n                            \"amount\": \"5.00\",\n                            \"code\": \"CAD\"\n                        }\n                    },\n                    {\n                        \"amount\": {\n                            \"amount\": \"0.00\",\n                            \"code\": \"CAD\"\n                        },\n                        \"category\": {\n                            \"category\": \"Advertising\",\n                            \"categoryid\": 65688,\n                            \"created_at\": \"2016-11-17 14:22:35\",\n                            \"id\": 65688,\n                            \"is_cogs\": true,\n                            \"is_editable\": false,\n                            \"parentid\": null,\n                            \"updated_at\": \"2020-08-14 12:52:33\",\n                            \"vis_state\": 0\n                        },\n                        \"description\": null,\n                        \"id\": 7,\n                        \"list_index\": 2,\n                        \"quantity\": \"1\",\n                        \"tax_amount1\": null,\n                        \"tax_amount2\": null,\n                        \"tax_authorityid1\": null,\n                        \"tax_authorityid2\": null,\n                        \"tax_name1\": null,\n                        \"tax_name2\": null,\n                        \"tax_percent1\": null,\n                        \"tax_percent2\": null,\n                        \"total_amount\": {\n                            \"amount\": \"0.00\",\n                            \"code\": \"CAD\"\n                        },\n                        \"unit_cost\": {\n                            \"amount\": \"0.00\",\n                            \"code\": \"CAD\"\n                        }\n                    }\n                ],\n                \"outstanding\": {\n                    \"amount\": \"5.00\",\n                    \"code\": \"CAD\"\n                },\n                \"overall_category\": \"Advertising\",\n                \"overall_description\": \"Food\",\n                \"paid\": {\n                    \"amount\": \"0.00\",\n                    \"code\": \"CAD\"\n                },\n                \"status\": \"unpaid\",\n                \"tax_amount\": {\n                    \"amount\": \"0.00\",\n                    \"code\": \"CAD\"\n                },\n                \"total_amount\": {\n                    \"amount\": \"5.00\",\n                    \"code\": \"CAD\"\n                },\n                \"updated_at\": \"2020-10-09 15:41:35\",\n                \"vis_state\": 1\n            }\n        }\n    }\n}"
    }
  ]
}