Remote API Methods allow you to develop stand-alone applications that can communicate with the wbTeamPro database. wbTeamPro uses a RESTful Service Model to provide remote access to the data and data operations within the system. Method requests made to the Remote API utilize the HTTP protocol, with all payload data being submitted and returned in the JSON format.
Using the API Developers Sandbox
Included with your installation package is an API Developers Sandbox script that allows you to view and test the methods provided by the Remote API. The API Developers Sandbox source code also serves as a PHP example of how to perform a request and parse the results.
To use our API Developers Sandbox you will need to upload the API Developers Sandbox folder included with your installation. Once uploaded you will access the sandbox.php file and be prompted to enter the API URL, API User, and API Pass for the sandbox to use when connecting to your server. The API URL will be a url pointing to the wbTeamPro api.php file (ie: {yourwebsite_url}/modules/addons/wbteampro/api.php). The API User must be an administrator that has an Administrative Role that was give access to the wbTeamPro system.
Anatomy of an API Request
Remote API requests are made by querying the api.php file provided with your installation. API Requests can be constructed using a "Clean URL" format, where each request URL will define the resource request being performed. Optionally the resource "action" can be passed as a parameter with the request.
- Clean URL Example
{yourwebsite_url}/modules/addons/wbteampro/api.php/v1/projects/100/json?params={...}
- or - using URI Rewrite Rules (htaccess rules included with installation)
{yourwebsite_url}/modules/addons/wbteampro/api/v1/projects/100/json?params={...}
- Direct URL Example
{yourwebsite_url}/modules/addons/wbteampro/api.php?action=v1.projects.100.json¶ms={...}
The response provided by the Remote API is encoded in either a JSON or XML format, defined as the last key the resource "action" request chain.
- JSON Response Format
{yourwebsite_url}/modules/addons/wbteampro/api.php/v1/projects/100/json
- XML Response Format
{yourwebsite_url}/modules/addons/wbteampro/api.php/v1/projects/100/xml
When performing a Remote API request the following information must be provided:
- API USERNAME (username=adminuser)
This is a valid Administrator username that is within a WHMCS Administrative Role that has been granted access to the wbTeamPro system. - API PASSWORD (password=MD5HASH)
This is the password for the valid Administrator, encoded into an MD5 HASH.
* NOTE * The wbTeamPro API will ban the IP address of any connection that fails to login after 3 attempts. - API VERSION
The API Version is specified as the FIRST key in the RESOURCE ACTION chain (ie: v1.project.100.json).
- API RESPONSE FORMAT
The API Response Format (json or xml) is specified as the LAST key in the RESOURCE ACTION chain (ie: v1.project.100.json).
- HTTP METHOD (method=get)
The http method defines the operation to be performed on the requested resource. The http method value can be passed as the parameter "method", or by using the correct http mehod for the request. The following http methods are allowed:
GET - Retrieve a record (or list of records)
PUT - Update a record
POST - Create a record
DELETE - Delete a record
- RESOURCE ACTION (action=v1.projects.100.json)
The resource action represents the method request chain for the query, specifying the Version, Method(s), and Response Format. For example, the resource action "v1.projects.100.json" would instruct API V1 to perform an action on Project ID #100 and return the results in the JSON format.
- RESOURCE PARAMETERS (params={"project_id":"100"})
The request parameters are additional values, unique for each method, that control or filter the resource request being performed. The params value can be provided as an ARRAY or JSON string.
Combining Resources
Resource requests can be chained together to create a more comprehensive response, minimizing the number of requests needed for simple operations. For example, to load a project and the actions for the project, you can create a single request that will return the response from both resourses.
- Example A - Perform Dual Requests
{yourwebsite_url}/modules/addons/wbteampro/api.php/v1/projects/100/json
{yourwebsite_url}/modules/addons/wbteampro/api.php/v1/actions/json?params={"project_id":"100"}
- Example B - Perform a Combined Request
{yourwebsite_url}/modules/addons/wbteampro/api.php/v1/projects/100/actions/json
Anatomy of the Response
The response data, whether in JSON or XML, will decode into an object containing a request and response dataset. In the following example we have requested all Tickets for Project #100.
stdClass Object (
[request] => stdClass Object
(
[action] => projects/219/whmcstickets
[method] => GET
[format] => json
[code] => 200
[message] => Success
)
[response] => stdClass Object
(
[data] => stdClass Object
(
[total] => 1
[page] => 1
[pages] => 0
[limit] => 50
[offset] => 0
[filters] => stdClass Object
(
[project_id] => 219
)
)
[project] => stdClass Object
(
[project_id] => 219
... project fields ...
)
[whmcstickets] => Array
(
[0] => stdClass Object
(
[id] => 2038
... ticket fields ...
[ticketxref] => stdClass Object
(
[xref_id] => 91
... ticketxref fields ...
)
)
)
)
)
Remote API Resource Action Reference
Please use the API Developers Sandbox to learn more about the request parameters required and response data provided by the following methods.
api
- findResources - Return the API Resource List
api.resources
config
- getConfig - Return a Config Option
config
projects
- findProjects - Return a Project List
projects - createProject - Create a Project
projects - getProject - Return a Project
projects.{project_id} - getProjectActions - Return a Project Action List
projects.{project_id}.actions - getProjectTopics - Return a Project Topic List
projects.{project_id}.topics - getProjectFiles - Return a Project File List
projects.{project_id}.files - getProjectTickets - Return a Project Ticket List
projects.{project_id}.whmcstickets - getProjectTimelogs - Return a Project Timelog List
projects.{project_id}.timelogs - updateProject - Update a Project
projects.{project_id} - deleteProject - Delete a Project
projects.{project_id}
actions
- findActions - Return a Action List
actions - createAction - Create a Action
actions - getAction - Return a Action
actions.{action_id} - getActionTopics - Return a Action Topic List
actions.{action_id}.topics - getActionFiles - Return a Action File List
actions.{action_id}.files - getActionTickets - Return a Action Ticket List
actions.{action_id}.whmcstickets - getActionTimelogs - Return a Action Timelog List
actions.{action_id}.timelogs - updateAction - Update a Action
actions.{action_id} - deleteAction - Delete a Action
actions.{action_id}
topics
- findTopics - Return a Topic List
topics - findTopicThreads - Return a Topic Thread List
topics.bythread - createTopic - Create a Topic
topics - getTopic - Return a Topic
topics.{topic_id} - updateTopic - Update a Topic
topics.{topic_id} - deleteTopic - Delete a Topic
topics.{topic_id}
files
- findFiles - Return a File List
files - findFileThreads - Return a File Thread List
files.bythread - createFile - Create a File
files - getFile - Return a File
files.{file_id} - downloadFile - Download a File
files.{file_id}.download - updateFile - Update a File
files.{file_id} - deleteFile - Delete a File
files.{file_id}
whmcstickets
- findWHMCSTickets - Return a WHMCS Ticket List
whmcstickets - getWHMCSTicket - Return a WHMCS Ticket
whmcstickets.{ticket_id}
ticketxrefs
- findTicketXrefs - Return a TicketXref List
ticketxrefs - createTicketXref - Create a TicketXref
ticketxrefs - getTicketXref - Return a TicketXref
ticketxrefs.{xref_id} - updateTicketXref - Update a TicketXref
ticketxrefs.{xref_id} - deleteTicketXref - Delete a TicketXref
ticketxrefs.{xref_id}
timelogs
- findTimelogs - Return a Timelog List
timelogs - createTimelog - Create a Timelog
timelogs - getTimelog - Return a Timelog
timelogs.{timelog_id} - updateTimelog - Update a Timelog
timelogs.{timelog_id} - deleteTimelog - Delete a Timelog
timelogs.{timelog_id}