The QBO3 RESTful API is based on a set of C# classes and the methods implemented in the class, and customized from site to site as power users and developers create Statements and Services.
- Module: a C# class backed by a SQL table, such a Attachment, Contact, Message, Loan, etc.
- Handler: an ASP.NET HttpHandler (.ashx file) that acts as a URI endpoint for a module (e.g. Message.ashx)
- Method: a C# method that may be invoked via the RESTful API
- Statement: a SQL snippet (similar to a stored procedure) that may be invoked via the RESTful API
- Service: a .NET managed code plugin that may be invoked via the RESTful API
- Operation: a method, statement, or service
- Parameters: a dictionary (or query string) of name value pairs to pass to an operation
Invoking the API
Invoking the QBO3 API via a web browser synchronously is done with the following syntax:
Message.ashx/Save?Subject=Hello World&BodyText=This is my first message
Contact.ashx/Geocode?Address=123 Main Street&PostalCode=92101
Invoking the QBO3 API via a web browser asynchronously is done with the following syntax:
Message.ashx/Queue/Send?Subject=My First Email&BodyText=Hello there
When invoke a QBO3 handler, there are several reserved parameters:
- Transform: if specified, this dictates an XSLT to use when rendering the results. If not specified, if the underlying operation is pre-defined to use a transform, that will be used, otherwise XML will be returned
- Output: if specified, this dictates how to deliver the results. Valid values include Html (default), Xml, Json, CSV and Excel
- QueueName: if specified with a Queue operation
Invoking the QBO3 API from the application tier is done by many of the QBO3 template classes, including DecisionTemplate (workflow), AttachmentTemplate (document generation), and MessageTemplate:
Extending the API
You can extend the QBO3 API via the web browser by adding a Statement or Service. Methods are compiled in C# code, and are thus not extensible via the web browser.
To see a list of possible API operations:
- Navigate to Design > Configuration > Modules
- Choose a module you want to invoke API calls against
- From the module's Advanced panel, review the Statements, Methods, and Services tabs
If there exists a method, statement and service each with the same name, the winner will be method (if it exists), else service, else statement. Thus, the Summary method (defined in C#) may leverage a Summary statement (SQL snippet) to drive some of it's behavior.