GET Invoices

The code below is a complete working example of an API call to Fullbay to query invoices. 

Notes:

It requires an SHA1 hash, we use the Kellerman suite to do that. 

Related Articles

... and you 'll find more on the ApisAndWebhooks Menu

There are several pieces needed to do this. The main code:

Function GetInvoice(dtToday As Date, dtStart As Date, dtEnd As Date, ShopKey As String, strIPAddress As String) As Boolean
       Try
 
           'initialize
           Dim oKE As New KellermanEncryption
           Dim strToken As String = ""
           Dim strStringToHash As String = ""
           Dim strUrl As String
           Dim oRequest As System.Net.HttpWebRequest
           Dim oResponse As System.Net.WebResponse = Nothing
           Dim oPostStream As System.IO.Stream = Nothing
 
           'create the string that we're going to hash
           strStringToHash = String.Format("{0}{1:yyyy-MM-dd}{2}", ShopKey, Now, strIPAddress)
           'call the Kellerman code and hash the string
           strToken = oKE.SHA1Encrypt(strStringToHash).ToLower
 
           'form the url that we'll use to call the API
           strUrl = String.Format("https://app.fullbay.com/services/getInvoices.php?key={0}&token={1}&startDate={2:yyyy-MM-dd}&endDate={3:yyyy-MM-dd}", ShopKey, strToken, dtStart, dtEnd)
 
           'security code
           System.Net.ServicePointManager.Expect100Continue = True
           System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
 
           ' Create the web request
           oRequest = DirectCast(System.Net.WebRequest.Create(strUrl), System.Net.HttpWebRequest)
           oRequest.Method = "GET"
           oRequest.Accept = "application/json"
           oRequest.ContentType = "application/json"
 
           ' Get the response
           oResponse = DirectCast(oRequest.GetResponse(), System.Net.WebResponse)
 
           ''convert the response to a Stream
           Dim oStream As System.IO.Stream = oResponse.GetResponseStream()
           ''convert the Stream to a StreamReader
           Dim oStreamReader As New System.IO.StreamReader(oStream)
           ''read the response into a String
           Dim strResponse As String = oStreamReader.ReadToEnd
 
           Dim oSerializer As New DataContractJsonSerializer(GetType(Rootobject))
           Dim ms = New MemoryStream(Encoding.Unicode.GetBytes(strResponse))
           Dim oDeSerJSON As Rootobject = DirectCast(oSerializer.ReadObject(ms), Rootobject)
 
           Return True
       Catch ex As Exception
           ErrorHandler.globalErrorHandler(ex, False)
           Return False
       End Try
   End Function

The Kellerman code:

Imports KellermanSoftware.NetEncryptionLibrary
 
Public Class KellermanEncryption
    Function SHA1Encrypt(strTextToEncrypt) As String
        Try
            Dim encryption As New Encryption("MyUserID", "MyKey")
 
            Dim results As String = encryption.HashStringHex(HashProvider.SHA1, strTextToEncrypt)
 
            Return results
 
        Catch ex As Exception
            Throw ex
        End Try
 
        Return ""
    End Function
End Class

The classes that the JSON is deserialized into. This is kind of verbose, so I put it last:

Imports System.Runtime.Serialization
 
<DataContract> Public Class Rootobject
    <DataMember> Public Property status As String
    <DataMember> Public Property resultCount As Integer
    <DataMember> Public Property resultSet As Resultset()
End Class
 
<DataContract> Public Class Resultset
    <DataMember> Public Property primaryKey As String
    <DataMember> Public Property exported As String
    <DataMember> Public Property invoiceDate As String
    <DataMember> Public Property dueDate As String
    <DataMember> Public Property invoiceNumber As String
    <DataMember> Public Property customerTitle As String
    <DataMember> Public Property customerBillingEmployee As String
    <DataMember> Public Property customerBillingEmail As String
    <DataMember> Public Property customerBillingAddress As String
    <DataMember> Public Property Customer As Customer
    <DataMember> Public Property shopTitle As String
    <DataMember> Public Property shopEmail As String
    <DataMember> Public Property shopPhysicalAddress As String
    <DataMember> Public Property miscChargeTotal As String
    <DataMember> Public Property serviceCallTotal As String
    <DataMember> Public Property mileageTotal As String
    <DataMember> Public Property mileageCostTotal As String
    <DataMember> Public Property partsTotal As String
    <DataMember> Public Property laborHoursTotal As String
    <DataMember> Public Property laborTotal As String
    <DataMember> Public Property suppliesTotal As String
    <DataMember> Public Property subTotal As String
    <DataMember> Public Property TaxInformation As Taxinformation
    <DataMember> Public Property taxTitle As String
    <DataMember> Public Property taxRate As String
    <DataMember> Public Property taxTotal As String
    <DataMember> Public Property total As String
    <DataMember> Public Property balance As String
    <DataMember> Public Property quickBooksId As String
    <DataMember> Public Property promiseToPayDate As String
    <DataMember> Public Property createdByTechnician As String
    <DataMember> Public Property created As String
    <DataMember> Public Property ServiceOrder As Serviceorder
End Class
 
<DataContract> Public Class Customer
    <DataMember> Public Property customerId As Integer
    <DataMember> Public Property title As String
    <DataMember> Public Property externalId As String
    <DataMember> Public Property mainPhone As String
    <DataMember> Public Property secondaryPhone As String
End Class
 
<DataContract> Public Class Taxinformation
    <DataMember> Public Property taxTitle As String
    <DataMember> Public Property taxRate As String
    <DataMember> Public Property taxTotal As String
    <DataMember> Public Property TaxLineInformation As Taxlineinformation()
End Class
 
<DataContract> Public Class Taxlineinformation
    <DataMember> Public Property taxTitle As String
    <DataMember> Public Property taxRate As String
    <DataMember> Public Property taxTotal As String
End Class
 
<DataContract> Public Class Serviceorder
    <DataMember> Public Property primaryKey As String
    <DataMember> Public Property repairOrderNumber As String
    <DataMember> Public Property technician As String
    <DataMember> Public Property partsManager As String
    <DataMember> Public Property customerAuthorizedOnHoursOnly As String
    <DataMember> Public Property Customer As Customer1
    <DataMember> Public Property Unit As Unit
    <DataMember> Public Property description As String
    <DataMember> Public Property submitterContact As String
    <DataMember> Public Property submitterContactEmail As String
    <DataMember> Public Property submitterContactPhone As String
    <DataMember> Public Property submitterContactCellPhone As String
    <DataMember> Public Property authorizerContact As String
    <DataMember> Public Property authorizerContactEmail As String
    <DataMember> Public Property authorizerContactPhone As String
    <DataMember> Public Property authorizerContactCellPhone As String
    <DataMember> Public Property billingCustomer As String
    <DataMember> Public Property BillingAddress As Billingaddress
    <DataMember> Public Property RemitToAddress As Remittoaddress
    <DataMember> Public Property ShipToAddress As Shiptoaddress
    <DataMember> Public Property unitAccessMethod As String
    <DataMember> Public Property unitAvailableDateTime As String
    <DataMember> Public Property unitMustBeAccessedAtAvailableDateTime As String
    <DataMember> Public Property unitReturnDateTime As Object
    <DataMember> Public Property unitReturnAsap As String
    <DataMember> Public Property UnitPickUpAddress As Unitpickupaddress
    <DataMember> Public Property locationInformation As String
    <DataMember> Public Property authorizationNumber As String
    <DataMember> Public Property poNumber As String
    <DataMember> Public Property partsPoNumber As String
    <DataMember> Public Property hot As String
    <DataMember> Public Property followInUseSchedule As String
    <DataMember> Public Property unscheduled As String
    <DataMember> Public Property customerThreshold As String
    <DataMember> Public Property preAuthorized As String
    <DataMember> Public Property laborHoursTotal As String
    <DataMember> Public Property laborTotal As String
    <DataMember> Public Property partsCostTotal As String
    <DataMember> Public Property partsTotal As String
    <DataMember> Public Property mileageTotal As String
    <DataMember> Public Property mileageCostTotal As String
    <DataMember> Public Property overrideSuppliesTotal As String
    <DataMember> Public Property overridenSuppliesTotal As String
    <DataMember> Public Property serviceCallTotal As String
    <DataMember> Public Property allPartsPricedDateTime As String
    <DataMember> Public Property startDateTime As String
    <DataMember> Public Property completionDateTime As String
    <DataMember> Public Property createdByTechnician As String
    <DataMember> Public Property created As String
    <DataMember> Public Property MiscCharges As Object()
    <DataMember> Public Property Complaints As Complaint()
End Class
 
<DataContract> Public Class Customer1
    <DataMember> Public Property customerId As Integer
    <DataMember> Public Property title As String
    <DataMember> Public Property externalId As String
    <DataMember> Public Property mainPhone As String
    <DataMember> Public Property secondaryPhone As String
End Class
 
<DataContract> Public Class Unit
    <DataMember> Public Property customerUnitId As String
    <DataMember> Public Property number As String
    <DataMember> Public Property nickname As String
    <DataMember> Public Property type As String
    <DataMember> Public Property subType As String
    <DataMember> Public Property year As String
    <DataMember> Public Property make As String
    <DataMember> Public Property model As String
    <DataMember> Public Property vin As String
    <DataMember> Public Property licensePlate As String
End Class
 
<DataContract> Public Class Billingaddress
    <DataMember> Public Property title As Object
    <DataMember> Public Property line1 As Object
    <DataMember> Public Property line2 As Object
    <DataMember> Public Property city As Object
    <DataMember> Public Property state As Object
    <DataMember> Public Property country As Object
    <DataMember> Public Property postalCode As Object
End Class
 
<DataContract> Public Class Remittoaddress
    <DataMember> Public Property title As Object
    <DataMember> Public Property line1 As Object
    <DataMember> Public Property line2 As Object
    <DataMember> Public Property city As Object
    <DataMember> Public Property state As Object
    <DataMember> Public Property country As Object
    <DataMember> Public Property postalCode As Object
End Class
 
<DataContract> Public Class Shiptoaddress
    <DataMember> Public Property title As Object
    <DataMember> Public Property line1 As Object
    <DataMember> Public Property line2 As Object
    <DataMember> Public Property city As Object
    <DataMember> Public Property state As Object
    <DataMember> Public Property country As Object
    <DataMember> Public Property postalCode As Object
End Class
 
<DataContract> Public Class Unitpickupaddress
    <DataMember> Public Property title As Object
    <DataMember> Public Property line1 As Object
    <DataMember> Public Property line2 As Object
    <DataMember> Public Property city As Object
    <DataMember> Public Property state As Object
    <DataMember> Public Property country As Object
    <DataMember> Public Property postalCode As Object
End Class
 
<DataContract> Public Class Complaint
    <DataMember> Public Property primaryKey As String
    <DataMember> Public Property mileageRate As String
    <DataMember> Public Property laborRate As String
    <DataMember> Public Property type As String
    <DataMember> Public Property subType As String
    <DataMember> Public Property authorized As String
    <DataMember> Public Property severity As String
    <DataMember> Public Property note As String
    <DataMember> Public Property cause As String
    <DataMember> Public Property causeType As Object
    <DataMember> Public Property laborHoursTotal As Single
    <DataMember> Public Property laborTaxable As String
    <DataMember> Public Property laborTotal As Single
    <DataMember> Public Property partsCostTotal As String
    <DataMember> Public Property partsTotal As Single
    <DataMember> Public Property mileageTaxable As String
    <DataMember> Public Property mileageTotal As String
    <DataMember> Public Property mileageCostTotal As String
    <DataMember> Public Property serviceCallTaxable As String
    <DataMember> Public Property serviceCallTotal As String
    <DataMember> Public Property sublet As String
    <DataMember> Public Property partCategory As Object
    <DataMember> Public Property quickBooksAccount As Object
    <DataMember> Public Property quickBooksItem As Object
    <DataMember> Public Property created As String
    <DataMember> Public Property AssignedTechnicians As Assignedtechnician()
    <DataMember> Public Property Corrections As Correction()
End Class
 
<DataContract> Public Class Assignedtechnician
    <DataMember> Public Property portion As String
    <DataMember> Public Property primaryKey As String
    <DataMember> Public Property quickBooksLaborItem As String
    <DataMember> Public Property technician As String
End Class
 
<DataContract> Public Class Correction
    <DataMember> Public Property primaryKey As String
    <DataMember> Public Property globalComponent As String
    <DataMember> Public Property globalSystem As String
    <DataMember> Public Property globalService As String
    <DataMember> Public Property unitService As Object
    <DataMember> Public Property laborRate As String
    <DataMember> Public Property title As String
    <DataMember> Public Property recommendedCorrection As String
    <DataMember> Public Property actualCorrection As String
    <DataMember> Public Property correctionPerformed As String
    <DataMember> Public Property preAuthorized As String
    <DataMember> Public Property prePaid As String
    <DataMember> Public Property laborHoursTotal As String
    <DataMember> Public Property laborTotal As String
    <DataMember> Public Property taxable As String
    <DataMember> Public Property partsCostTotal As String
    <DataMember> Public Property partsTotal As String
    <DataMember> Public Property created As String
    <DataMember> Public Property Parts As Part()
End Class
 
<DataContract> Public Class Part
    <DataMember> Public Property primaryKey As String
    <DataMember> Public Property description As String
    <DataMember> Public Property shopPartNumber As String
    <DataMember> Public Property vendorPartNumber As String
    <DataMember> Public Property quantity As String
    <DataMember> Public Property toBeReturnedQuantity As String
    <DataMember> Public Property returnedQuantity As String
    <DataMember> Public Property cost As String
    <DataMember> Public Property sellingPrice As String
    <DataMember> Public Property sellingPriceOverridden As String
    <DataMember> Public Property taxable As String
    <DataMember> Public Property inventory As String
    <DataMember> Public Property coreType As String
    <DataMember> Public Property sublet As String
    <DataMember> Public Property partCategory As String
    <DataMember> Public Property quickBooksAccount As Object
    <DataMember> Public Property quickBooksItem As String
    <DataMember> Public Property created As String
End Class

 

 

 

 

 

 


RealWorldCode gives developers practical, real‑world solutions with clean, working code — no fluff, no theory, just answers.
Links
Home
Knowledge Areas
Sitemap
Contact
Et cetera
Privacy Policy
Terms and Conditions
Cookie Preferences