GeoNext (1.0.0)

Download OpenAPI specification:Download

Introduction

The API implements the REST architecture and provides an easy and intuitive way of communication with the GeoNext system via the HTTP protocol. By sending GET, POST, PATCH, PUT, and DELETE requests to various API endpoints it is possible to manipulate the corresponding data containers called items.

The API receives requests and responds in widely supported JSON format thus allowing the developers to write GeoNext-powered applications in almost any major programming language (such as Java, C#, C/C++, PHP, Perl, Python, Ruby, etc.) and for all major platforms, including Windows, Mac OS X, Linux, iPhone, Android and Windows Phone.

Register as a Developer

Head over to https://api.geoworkforce.io/oauth/applications and follow the registration steps or login with an existing GeoNext account to access the developer portal.

Important Notes

This document describes a early preview of the public API which is subject to change as more comprehensive developer features are introduced.

It is only possible to communicate with the API from a non-browser because CORS will prevent API calls originating from outside of the GeoNext domains.

For legacy reasons, some PUT endpoints behave like PATCH endpoints.

Query String Parameters that accepted comma-separated values are named <field>[] should be specified without the [] e.g. a query string parameter named for_model[] should be specified as ?for_model=.

Authentication

An application willing to make requests to the GeoNext API will have to include an Authorization header with a unique access token so that each request can be authenticated and correct access permissions applied to that application.

The access token can be obtained from the GeoNext Authentication Server via the OAuth 2.0 protocol described in, Obtaining an access token

Roles

The protocol defines the following four roles:

  • Resource Owner – a registered GeoNext user (employee, manager, company, administrator, etc.) or a system service.
  • Resource Server – a GeoNext web server (https://api.geoworkforce.io) with access to the GeoNext database.
  • Client – a native or third-party application or website utilising the GeoNext API.
  • Authentication Server – a GeoNext web server (https://api.geoworkforce.io/oauth/token) responsible for authenticating incoming requests and issuing authorisation codes and access tokens (see below).

Using SSL/TLS security layer

Since access token acts as a session identifier and is used by the GeoNext Resource Server to load associated resource owner and client identities and permissions, it is crucial that this token is transferred only via a secured connection. Therefore, both the Authentication Server and the Resource Server require all requests to be made via a secured HTTPS connection.

Grant types

The GeoNext API oauth protocol implementation provides one way for a client to obtain an access token:

  1. Authorisation Code Grant – a client redirects resource owner to the login page, receives an authorisation code from it via a redirect link and exchanges it for an access token.

Client Registration

For a third-party application to request an authorisation code, it has to be first registered with GeoNext and assigned a Client ID and Client Secret.

Any GeoNext account can be used a developer account regardless of that account's associated users.

  1. Register for a GeoNext account at https://console.geoworkforce.io/signup
  2. Navigate to the GeoNext Developer Portal at https://api.geoworkforce.io/oauth/applications and enter your developer credentials if requested.
  3. Click "Create Application"
  4. Enter in an Application name and Redirect URI. Multiple Redirect URI's can assigned, with each being seperated by a new line.
  5. Click "Submit"
  6. You will be redirected the Applications landing page where your newly created Application should appear. Clicking on the Application's name will reveal the Client ID and Client Secret.

Obtaining an authorization code

An application that wants to get an authorisation code and later exchange it for an access token for GeoNext API has to redirect the resource owner to https://api.geoworkforce.io/oauth/authorize

The endpoint accepts the following parameters:

Parameter Required Description
client_id Required The Application's client id.
redirect_uri Required A redirect URI whitelisted in the Application's configuration.
response_type Required The desired response type. This should be 'code'.
scope Optional The desired scopes the Application wants access to. This defaults to every scope the Application can request.
curl -L -X GET "https://api.geoworkforce.io/oauth/authorize?client_id=<CLIENT_ID>&response_type=code&redirect_uri=<REDIRECT_URI>"

Obtaining an access token

Once the application has received an authorisation code as a parameter added to the redirect URI, it needs to exchange it for an access token, which it will then use to make requests to the GeoNext API. To do that, it has to make a POST request to the https://api.geoworkforce.io/oauth/token endpoint and include the following parameters:

The endpoint accepts the following parameters:

Parameter Required Description
client_id Required The Application's client id.
client_secret Required The Application's client secret.
grant_type Required The desired grant type. This should be 'authorization_code'.
redirect_uri Required The redirect_uri used to generate the authorization code.
code Required A valid authorization code.

Example Request

curl --location --request POST 'https://api.geoworkforce.io/oauth/token' --header 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'client_id=<CLIENT_ID>' --data-urlencode 'client_secret=<CLIENT_SECRET>' --data-urlencode 'grant_type=authorization_code' --data-urlencode 'code=<AUTHORIZATION_CODE>' --data-urlencode 'redirect_uri=<REDIRECT_URI>'
}'

Example Response

{
    "access_token": "7fa3d3a64dd5e83fdb6e3ec2b71853015a058b43bfcdb171f40e3315f91db728",
    "token_type": "Bearer",
    "expires_in": 7200,
    "refresh_token": "dd12433b6493a1b2ec50d063cc7a3bca642515536c2a8302eb06f9ab92ae7507",
    "scope": "write",
    "created_at": 1585213246,
    "companies": []
}

Refreshing an access token

If the application has received a refresh token, it may use the /oauth2/token endpoint to exchange it for a new access token once the current access token has expired. To do that, it has to make a https://api.geoworkforce.io/oauth/token request to the endpoint and include the following parameters:

The endpoint accepts the following parameters:

Parameter Required Description
grant_type Required The desired grant type. This should be 'refresh_token'.
refresh_token Required A valid refresh token.

Example Request

curl --location --request POST 'https://api.geoworkforce.io/oauth/token' --header 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'grant_type=refresh_token' --data-urlencode 'refresh_token=<REFRESH_TOKEN>'
}'

Example Response

    "access_token": "7fa3d3a64dd5e83fdb6e3ec2b71853015a058b43bfcdb171f40e3315f91db728",
    "token_type": "Bearer",
    "expires_in": 7200,
    "refresh_token": "dd12433b6493a1b2ec50d063cc7a3bca642515536c2a8302eb06f9ab92ae7507",
    "scope": "write",
    "created_at": 1585213246,
    "companies": []

Revoking an access token

If you wish to revoke an access token make an authenticated call to GET https://api.geoworkforce.io/oauth/logout and ignore any redirects.

API Limits

There are limits to how many times an application can make API calls to each particular company.

  • 1 call per second.
  • 60 calls per minute.
  • 5000 calls per day.

Once the call limit is reached the API will respond with http status code 429.

Webhooks

When you specify a Webhook URL for an application you will recieve begin to recieve API calls when an event for a company connected to your application is raised.

Recieving a Webhook Call

When an event occurs in GeoNext your webhook url will be called via a post containing the event name, a nonce, and a data object which typically only contains the resource identifier related to the event.

The following payload below states that a job was created with the identifier 117.

{
  "event_name": "job_created",
  "nounce": "7ebd27fe-435e-469e-af0d-76a875e9b44d"
  "data": {
    "id": 117
  }
}

Note that only a resource identifier is included in the data object. You can call the GeoNext API with a respective access token to interact with the resource further.

A header named X-Signature will be included in the call which is HMAC-SHA256 hashof the request payload using your application's secret as the signing key. You can repeat the hashing process and ensure your result matches the value of X-Signature to verify that the call originated from GeoNext.

Once you have confirmed the webhook call is genuine you can proceed with your implementation.

Your http status code response to the webhook call determines its success. Any http status code between 400-599 is considered a failure. All other http status codes are considered successes. If http status code 410 is recieved the webhook becomes permanently disabled.

Note: Some webhook calls can take upto 5 minutes to trigger. This is most evident with deletion. Therefore it is important to handle the case where a resource is no longer reachable.

Supported Event Names

Entity Action Event Name
Job Create job_created
Job Update job_updated
Job Delete job_deleted
Job Status Create job_status_created
Job Status Update job_status_updated
Job Status Delete job_status_deleted
Job Booking Create job_visit_created
Job Booking Update job_visit_updated
Job Booking Delete job_visit_deleted
Client Create client_created
Client Update client_updated
Client Delete client_deleted
User Create user_created
User Update user_updated
User Delete user_deleted
Timer Create timer_created
Timer Update timer_updated
Timer Delete timer_deleted
TimerType Create timer_type_created
TimerType Update timer_type_updated
TimerType Delete timer_type_deleted

OpenID Connect 1.0

GeoNext API supports OpenID Connect 1.0

During the Oauth2 authorization code request you can specify the openid scope.

During the Oauth2 access token request from an authorization code you will recieve an extra field id_token which contains an OpenID JWT.

The following endpoints relate to OpenID Connect functionality.

Endpoint Description
GET https://api.geoworkforce.io/oauth/userinfo Retrieve information related to the authenticated user.
GET https://api.geoworkforce.io/oauth/discovery/keys OpenID Discovery.
GET https://api.geoworkforce.io/.well-known/openid-configuration https://tools.ietf.org/html/rfc5785
GET https://api.geoworkforce.io/.well-known/webfinger https://tools.ietf.org/html/rfc5785

Pagination

Some top-level API resources have support for bulk fetches via "list" endpoints. For instance, you can list jobs, clients, and list invoices. These list API methods share a common structure, taking at least these two query string parameters page and per_page.

Forms

Operations about Forms

Bulk delete forms

Bulk delete forms

Request Body schema: application/x-www-form-urlencoded
id[]
required
Array of strings

List of ids to delete

Responses

Create a form

Create a form

Request Body schema: application/x-www-form-urlencoded
id
string

The identifier.

label
required
string

The label.

description
string

The description.

schema
string

The JSON schema.

configuration
json

The configuration.

owner_type
string

The owner type. Possible values: JobVisit.

owner_id
string

The owner identifier.

parent_id
string

The parent form.

document_id
integer <int32>

Invoice Document ID

form_fields[][id]
Array of strings

The field identifier.

form_fields[][label]
Array of strings

The label.

form_fields[][description]
Array of strings

The description.

form_fields[][type]
required
Array of strings

The type.

form_fields[][value]
Array of strings

The value.

form_fields[][initialiser]
Array of json

Describes how to initialise the value if one is not specified.

form_fields[][configuration]
Array of json

Describes the parameters of the field.

form_fields[][validators]
Array of json

The validators.

auto_attach[]
Array of strings

The classes to auto-attach forms to.

opaque_value
boolean

When set to true value will not be clobbered by attachments. (Default: false)

deleted_attachments[]
Array of strings

Filter attachments by value of deleted. Accepts true or false or true,false. (Default: false)

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

List all forms

List all forms

query Parameters
updated_at[from]
string <date-time>

from date

updated_at[to]
string <date-time>

to date

job_query
string

Parameters for filtering Forms by Job Association. Accepts all parameters supported by GET /api/v1/job

owner_type
string

The owner type to filter by.

deleted
string

Filter by value of deleted. Accepts true or false or true,false. (Default: false)

order_by
string

Hash where keys are the fields to sort by and values are the direction of order e.g. order_by[created_at]=desc => return results by created_at desc in descending order If specified, this will override any values in :predicate and :order Accepted fields - id, label, created_at, updated_at

opaque_value
boolean

When set to true value will not be clobbered by attachments. (Default: false)

Request Body schema: application/x-www-form-urlencoded
id[]
Array of strings

Comma-seperated string of owner identifiers.

owner_id[]
Array of strings

Comma-seperated string of owner identifiers.

deleted_attachments[]
Array of strings

Filter attachments by value of deleted. Accepts true or false or true,false. (Default: false)

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Delete a form

Delete a form

path Parameters
id
required
string

The form id.

Responses

Update a form

Update a form

path Parameters
id
required
string

The form identifier.

Request Body schema: application/x-www-form-urlencoded
label
string

The label.

description
string

The description.

schema
string

The JSON schema version.

configuration
json

The configuration.

owner_type
string

The owner type.

owner_id
string

The owner identifier.

parent_id
string

The parent form.

document_id
integer <int32>

Form Document ID

modified
boolean
form_fields[][id]
Array of strings

The field identifier.

form_fields[][label]
Array of strings

The label.

form_fields[][description]
Array of strings

The description.

form_fields[][type]
Array of strings

The type.

form_fields[][modified]
Array of booleans

Determines if the form was modified.

form_fields[][value]
Array of strings

The value.

form_fields[][initialiser]
Array of json

Describes how to initialise the value if one is not specified.

form_fields[][configuration]
Array of json

Describes the parameters of the field.

form_fields[][validators]
Array of json

The validators.

completed_by_id
integer <int32>

The user who completed the form.

completed_at
string

When the form was completed. Defaults to the current time.

auto_attach[]
Array of strings

The classes to auto-attach forms to.

opaque_value
boolean

When set to true value will not be clobbered by attachments. (Default: false)

deleted_attachments[]
Array of strings

Filter attachments by value of deleted. Accepts true or false or true,false. (Default: false)

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Get a form

Get a form

path Parameters
id
required
string

The form identifier.

query Parameters
opaque_value
boolean

When set to true value will not be clobbered by attachments. (Default: false)

Request Body schema: application/x-www-form-urlencoded
deleted_attachments[]
Array of strings

Filter attachments by value of deleted. Accepts true or false or true,false. (Default: false)

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Get a form PDF

Get a form PDF

path Parameters
id
required
string

ID of Form

query Parameters
document_id
integer <int32>

ID of Document template to use. The default template is used by default

disposition
string
Enum: "inline" "attachment"

How to return pdf, inline or attachment

Responses

Delete a field attachment

Delete a field attachment

path Parameters
form_id
required
string

Form identifier.

field_id
required
string

Form Field identifier.

id
required
string

Attachment identifier.

Responses

Create a field attachment

Create a field attachment

path Parameters
form_id
required
string

Form identifier.

field_id
required
string

Form Field identifier.

Request Body schema: application/x-www-form-urlencoded
id
string

The attachment identifier

file
required
string <binary>

The file.

attachment_type
string

Form note type (e.g. Voice Record, Barcode)

metadata
json

Responses

Clients

A client represents your company's client base. Clients are typically assigned to jobs.

Bulk delete clients

Bulk delete clients

query Parameters
origin
string

Where Client originated from, e.g. xero, myob

Request Body schema: application/x-www-form-urlencoded
ids[]
Array of integers <int32>

List of ids to delete

Responses

Create a client

Create a client

Request Body schema: application/x-www-form-urlencoded
id
string

Assign a UUID.

first_name
string

Name

last_name
string

Name

company_name
string

Company

email
string

Email

dob
string

Date of Birth

mobile_number
string

Mobile Number without the country code. Country code will be based on the set Country

landline_number
string

Phone number

country
string

Must be country code

physical_address[unit_number]
string
physical_address[address1]
string
physical_address[address2]
string
physical_address[city]
string
physical_address[state]
string
physical_address[postcode]
string
physical_address[country]
string
physical_address[latitude]
number <float>
physical_address[longitude]
number <float>
mailing_address[unit_number]
string
mailing_address[address1]
string
mailing_address[address2]
string
mailing_address[city]
string
mailing_address[state]
string
mailing_address[postcode]
string
mailing_address[country]
string
mailing_address[latitude]
number <float>
mailing_address[longitude]
number <float>
mobile_phones[][id]
Array of strings
mobile_phones[][number]
required
Array of strings
mobile_phones[][primary_contact]
Array of booleans
fax
string

Fax number

website
string

Website

business_type
string

Business Type

lead_source
string

Lead source

notes
string

Notes

billed_client_id
integer <int32>

The id of the client to bill to

alternative_contact_id
string

Alternative Contact (Client Id)

code
string

Client Code

medical_conditions
string

Medical conditions and allergies

upload_avatar
string <binary>

Client profile picture

budget
integer <int32>

Budget hours

custom_fields[][custom_field_definition_id]
required
Array of integers <int32>
custom_fields[][value]
required
Array of strings

Responses

List all clients

List all clients. Supports Pagination.

query Parameters
search_text
string

Query parameter to search for

status
string

Filter by client status. Accepts comma separated values of statuses. Valid statuses are active, suspended, archived, new

filter
string

An array of filters to search for, i.e. first_name, last_name, email, mobile_number, landline_number, address, billing_client, company_name, website, business_type, job_share

billed_client_id
integer <int32>

Billed Client Id

job_share
string

Whether to filter by Clients who have Job Share enabled

job_share_plus
string

Whether to filter by Clients who have Job Share Plus enabled or not.

include_deleted
string

Included deleted clients in returned set (Default: false)

include_archived
string

Included archived clients in returned set (Default: false)

modified
string

Only get clients with updated time greater than supplied (UTC, String, yyyy-mm-dd hh:mm:ss)

predicate
string

Sort by 'first_name, last_name, email, mobile, landline_number, company_name, address, created_at' (Default: created_at)

order
string

Sort order of results. ASC or DESC (Default: DESC)

order_by
string

Hash where keys are predicates and values are the direction of order e.g. order_by[created_at]=desc => return results by created_at desc in descending order If specified, this will override any values in :predicate and :order Accepted predicates - id, first_name, last_name, email, mobile_number, landline_number, company_name, physical_address, mailing_address, created_at, updated_at Nested predicates physical_address => order_by[physical_address][...]=asc - address1, address2, city, state, country, unit_number e.g order_by[physical_address][address1]=asc mailing_address => order_by[mailing_address][...]=desc - address1, address2, city, state, country, unit_number e.g order_by[mailing_address][address2]=asc

Request Body schema: application/x-www-form-urlencoded
ids[]
Array of integers <int32>

Comma separated list of Client ids

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Delete a client

Delete a client

path Parameters
id
required
integer <int32>

ID of Client to delete

Responses

Update a client

Update a client

Request Body schema: application/x-www-form-urlencoded
id[]
Array of integers <int32>
client_id
integer <int32>
first_name
string

Name

last_name
string

Name

company_name
string

Company

delete_avatar
boolean

Delete attached avatar ('true' or 'false') Default: false

copy_from_client_id
string

Client copy associations from client id and delete client

preferred_staff_ids[]
Array of strings

Preferred staff user IDs

status
string

State of Client (ACTIVE, SUSPENDED or ARCHIVED)

email
string

Email

dob
string

Date of Birth

mobile_number
string

Mobile Number without the country code. Country code will be based on the set Country

landline_number
string

Phone number

country
string

Must be country code

physical_address[unit_number]
string
physical_address[address1]
string
physical_address[address2]
string
physical_address[city]
string
physical_address[state]
string
physical_address[postcode]
string
physical_address[country]
string
physical_address[latitude]
number <float>
physical_address[longitude]
number <float>
mailing_address[unit_number]
string
mailing_address[address1]
string
mailing_address[address2]
string
mailing_address[city]
string
mailing_address[state]
string
mailing_address[postcode]
string
mailing_address[country]
string
mailing_address[latitude]
number <float>
mailing_address[longitude]
number <float>
mobile_phones[][id]
Array of strings
mobile_phones[][number]
required
Array of strings
mobile_phones[][primary_contact]
Array of booleans
fax
string

Fax number

website
string

Website

business_type
string

Business Type

lead_source
string

Lead source

notes
string

Notes

billed_client_id
integer <int32>

The id of the client to bill to

alternative_contact_id
string

Alternative Contact (Client Id)

code
string

Client Code

medical_conditions
string

Medical conditions and allergies

upload_avatar
string <binary>

Client profile picture

budget
integer <int32>

Budget hours

custom_fields[][custom_field_definition_id]
required
Array of integers <int32>
custom_fields[][value]
required
Array of strings

Responses

Get a client by id

Get a client by id

path Parameters
id
required
integer <int32>

Client Id

Responses

Jobs

Jobs represent units of work to be completed for a clients. Billabes such as material, labour can be attached to a job to track resources committed to the task. Bookings are attached to a job to track which users worked on the job.

Create a job

Create a job

Request Body schema: application/x-www-form-urlencoded
id
string

Assign a UUID.

title
required
string

Job title

client_id[]
Array of integers <int32>

Client id/s (separated by ,)

billed_client_id
integer <int32>

Billed to client

description
string

Job description

reference
string

Job reference

order_number
string

Job order number

priority
string

Job priority

job_status_id
string

Job status

lead_source
string

Lead Source

visits[id]
string

Assign a UUID.

visits[start_date]
string

Start time for the visit. UTC in format yyyy-mm-dd 00:00:00

visits[duration_hour]
integer <int32>

Duration of visit, hour portion

visits[duration_min]
integer <int32>

Duration of visit, minute portion

visits[end_date]
string

End time for the visit

visits[label]
string

Visit label

visits[detail]
string

Visit detail

visits[multiplier]
string

If unassigned, indicate the number of visits. If this value is filled up, assigned_to_id will be ignored.

visits[assigned_to_id]
string

If assigned, send an array of staff ids to assign to. e.g. 1,2,3

address[unit_number]
string
address[address1]
string
address[address2]
string
address[city]
string
address[state]
string
address[postcode]
string
address[country]
string
address[latitude]
number <float>
address[longitude]
number <float>
custom_fields[][custom_field_definition_id]
required
Array of integers <int32>
custom_fields[][value]
required
Array of strings

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "id_uuid": "string",
  • "title": "string",
  • "description": "string",
  • "reference": "string",
  • "order_number": "string",
  • "type": "string",
  • "recurrence_id": "string",
  • "deleted": "string",
  • "scheduled": "string",
  • "invoice_count": "string",
  • "created_at": "string",
  • "updated_at": "string",
  • "job_start": "string",
  • "job_end": "string",
  • "created_by_id": "string",
  • "note_count": "string",
  • "billable_count": "string",
  • "visit_count": "string",
  • "message_count": "string",
  • "lead_source": "string",
  • "quote_count": "string",
  • "archived": "string",
  • "custom_fields": "string",
  • "priority": "string",
  • "recurrence_uuid": "string",
  • "created_by_uuid": "string",
  • "has_uninvoiced_billables": "string",
  • "clients": "string",
  • "billed_client": "string",
  • "address": "string",
  • "job_status": "string",
  • "company": "string",
  • "job_visits": "string",
  • "recurrence_setting": "string",
  • "recurrence": "string",
  • "entity_permissions": "string"
}

List all jobs

Returns a list of your jobs. Supports Pagination.

query Parameters
search_text
string

Query for searching

scheduled
string

accepts comma separated values. true => only scheduled false => only un-scheduled true,false => both scheduled and unscheduled (default)

assigned
string

accepts comma separated values. true => only assigned false => only un-assigned true,false => both assigned and un-assigned (default)

from_date
string

Beginning date to search for. UTC in format yyyy-mm-dd hh:mm:ss

to_date
string

End date to search for. UTC in format yyyy-mm-dd hh:mm:ss

modified
string

Only get jobs with updated/modified time greater than supplied (UTC, String, yyyy-mm-dd hh:mm:ss)

filter
string

An array of filters to search for. The available filters are title, reference, description, order_number

job_status_id
string

Filter by job status

recurrence_id
string

Filter by recurrence_id

client_id
integer <int32>

Filter by client_id

staff_id
integer <int32>

Filter by staff_id assigned to the job

priority_id
string

Filter by priority_id (comma separated string e.g. priority_id=0,1,2)

include_deleted
boolean

Included deleted jobs in returned set (Default: false)

include_deleted_visits
boolean

Included deleted jobs visits in returned set (Default: false)

include_forms
boolean
Default: true

Include forms in returned set (Default: true)

predicate
string
Enum: "clients.name" "clients.first_name" "reference" "clients.company_name" "job_statuses.color_hex" "job_statuses.color_hex,job_statuses.name" "job_statuses.color,job_statuses.name" "job_statuses.status_group" "job_statuses.name" "job_statuses.sort_order" "addresses.address1" "title" "jobs.created_at" "modified" "priority" "from_date" "to_date" "updated_at" "created_at" "job_status_id" "note_count" "billable_count"

Sort by 'clients.name, clients.company_name, job_statuses.name, addresses.address1, title, created_at, modified, priority, from_date, to_date' (Default: created_at)

order
string
Default: "desc"
Enum: "asc" "desc"

asc or desc (Default: desc)

Request Body schema: application/x-www-form-urlencoded
ids[]
Array of integers <int32>

Comma separated list of Job ids

search_associations[]
Array of strings
Items Enum: "all" "address" "clients" "client_addresses"

A comma-separated array of associations to search again. (Allowed Values: all, addresses, clients, client_addresses) (Default: none)

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Delete a Job

Delete a Job

path Parameters
id
required
integer <int32>

ID of Job to delete

Responses

Update a job

Updates the specified job by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

Request Body schema: application/x-www-form-urlencoded
id[]
required
Array of integers <int32>

Job Id

client_id[]
Array of integers <int32>

Client id/s (separated by ,)

billed_client_id
integer <int32>

Billed to client

title
string

Job title

description
string

Job description

reference
string

Job reference

order_number
string

Job order number

priority_id
string

Job priority

job_status_id
string

Job status

lead_source
string

Lead Source

archived
boolean

Whether to archive job or not

address[unit_number]
string
address[address1]
string
address[address2]
string
address[city]
string
address[state]
string
address[postcode]
string
address[country]
string
address[latitude]
number <float>
address[longitude]
number <float>
custom_fields[][custom_field_definition_id]
required
Array of integers <int32>
custom_fields[][value]
required
Array of strings

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "id_uuid": "string",
  • "title": "string",
  • "description": "string",
  • "reference": "string",
  • "order_number": "string",
  • "type": "string",
  • "recurrence_id": "string",
  • "deleted": "string",
  • "scheduled": "string",
  • "invoice_count": "string",
  • "created_at": "string",
  • "updated_at": "string",
  • "job_start": "string",
  • "job_end": "string",
  • "created_by_id": "string",
  • "note_count": "string",
  • "billable_count": "string",
  • "visit_count": "string",
  • "message_count": "string",
  • "lead_source": "string",
  • "quote_count": "string",
  • "archived": "string",
  • "custom_fields": "string",
  • "priority": "string",
  • "recurrence_uuid": "string",
  • "created_by_uuid": "string",
  • "has_uninvoiced_billables": "string",
  • "clients": "string",
  • "billed_client": "string",
  • "address": "string",
  • "job_status": "string",
  • "company": "string",
  • "job_visits": "string",
  • "recurrence_setting": "string",
  • "recurrence": "string",
  • "entity_permissions": "string"
}

Get a job by id

Get a job by id

path Parameters
id
required
integer <int32>

Job Id

query Parameters
include_deleted_visits
boolean

Included deleted jobs visits in returned set (Default: false)

Request Body schema: application/x-www-form-urlencoded
fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "id_uuid": "string",
  • "title": "string",
  • "description": "string",
  • "reference": "string",
  • "order_number": "string",
  • "type": "string",
  • "recurrence_id": "string",
  • "deleted": "string",
  • "scheduled": "string",
  • "invoice_count": "string",
  • "created_at": "string",
  • "updated_at": "string",
  • "job_start": "string",
  • "job_end": "string",
  • "created_by_id": "string",
  • "note_count": "string",
  • "billable_count": "string",
  • "visit_count": "string",
  • "message_count": "string",
  • "lead_source": "string",
  • "quote_count": "string",
  • "archived": "string",
  • "custom_fields": "string",
  • "priority": "string",
  • "recurrence_uuid": "string",
  • "created_by_uuid": "string",
  • "has_uninvoiced_billables": "string",
  • "clients": "string",
  • "billed_client": "string",
  • "address": "string",
  • "job_status": "string",
  • "company": "string",
  • "job_visits": "string",
  • "recurrence_setting": "string",
  • "recurrence": "string",
  • "entity_permissions": "string"
}

Bulk delete jobs

Permanently deletes a job. It cannot be undone.

query Parameters
search_text
string

Query for searching

scheduled
string

accepts comma separated values. true => only scheduled false => only un-scheduled true,false => both scheduled and unscheduled (default)

assigned
string

accepts comma separated values. true => only assigned false => only un-assigned true,false => both assigned and un-assigned (default)

from_date
string

Beginning date to search for. UTC in format yyyy-mm-dd hh:mm:ss

to_date
string

End date to search for. UTC in format yyyy-mm-dd hh:mm:ss

modified
string

Only get jobs with updated/modified time greater than supplied (UTC, String, yyyy-mm-dd hh:mm:ss)

filter
string

An array of filters to search for. The available filters are title, reference, description, order_number

job_status_id
string

Filter by job status

recurrence_id
string

Filter by recurrence_id

client_id
integer <int32>

Filter by client_id

staff_id
integer <int32>

Filter by staff_id assigned to the job

priority_id
string

Filter by priority_id (comma separated string e.g. priority_id=0,1,2)

include_deleted
boolean

Included deleted jobs in returned set (Default: false)

include_deleted_visits
boolean

Included deleted jobs visits in returned set (Default: false)

include_forms
boolean
Default: true

Include forms in returned set (Default: true)

predicate
string
Enum: "clients.name" "clients.first_name" "reference" "clients.company_name" "job_statuses.color_hex" "job_statuses.color_hex,job_statuses.name" "job_statuses.color,job_statuses.name" "job_statuses.status_group" "job_statuses.name" "job_statuses.sort_order" "addresses.address1" "title" "jobs.created_at" "modified" "priority" "from_date" "to_date" "updated_at" "created_at" "job_status_id" "note_count" "billable_count"

Sort by 'clients.name, clients.company_name, job_statuses.name, addresses.address1, title, created_at, modified, priority, from_date, to_date' (Default: created_at)

order
string
Default: "desc"
Enum: "asc" "desc"

asc or desc (Default: desc)

Request Body schema: application/x-www-form-urlencoded
ids[]
Array of integers <int32>

Comma separated list of Job ids

search_associations[]
Array of strings
Items Enum: "all" "address" "clients" "client_addresses"

A comma-separated array of associations to search again. (Allowed Values: all, addresses, clients, client_addresses) (Default: none)

Responses

Job Bookings

Fetch Job Visits for a particular Job

List all Job Visits for a particular Job

path Parameters
job_id
required
integer <int32>

Job Id

query Parameters
include_forms
string
Default: "false"

Include forms in returned set (Default: false). Accepts true/false/short.

from_date
string <date-time>

Start of date range to filter by. Defaults to start of current month. Expects UTC in format yyyy-mm-dd hh:mm:ss'. Job Visits where start and end date intersect with date range will be returned

to_date
string <date-time>

End of date range to filter by. Defaults to end of current month. Expects UTC in format yyyy-mm-dd hh:mm:ss' Job Visits where start and end date intersect with date range will be returned

any_time
string
Default: [true,false]

Filter by whether job visits anytime or not. By default all job visits are returned.

deleted
string
Default: [false]

Filter by value of deleted. Accepts true or false or true,false. Default: false

updated_at[from]
string <date-time>

from date

updated_at[to]
string <date-time>

to date

assignment_status
string
Default: "all"
Enum: "assigned" "unassigned" "all"
              Filter by whether job visits have a user assigned to them or not.
              By default all job visits are returned, assigned or not assigned
Request Body schema: application/x-www-form-urlencoded
fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Bulk delete job bookings

Bulk delete job bookings

Request Body schema: application/x-www-form-urlencoded
ids[]
required
Array of integers <int32>

List of ids to delete

Responses

Create a job booking

Create a job booking

Request Body schema: application/x-www-form-urlencoded
id
string

Assign a UUID.

job_id
required
integer <int32>

Job to add a visit to

start_date
required
string

Start date for the visit. UTC in format yyyy-mm-dd 00:00:00

duration_hour
required
integer <int32>

Duration of visit

duration_min
required
integer <int32>

Duration of visit

label
string

Visit label

detail
string

Visit detail

multiplier
string

If unassigned, indicate the number of visits. If this value is filled up, assigned_to_id will be ignored.

assigned_to_id
string

If assigned, send an array of staff ids to assign to. e.g. 1,2,3 (Will make new visit for each staff)

any_time
boolean

An anytime booking decouples start_date and end_date from duration_hour and duration_min.

form_id
string

Any form templates to create with the booking.

staff_ids[]
Array of integers <int32>

Multiple staff per created visit (Ignored if assgined_to_id or multiplier set)

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

List all job bookings

List all job bookings

query Parameters
job_query
string

Parameters for filtering Jobs. Accepts all parameters supported by GET /api/v1/job

assigned_staff_ids
string

Comma separated list of assigned staff ids

job_id
integer <int32>

Job Id

include_forms
string
Default: "false"

Include forms in returned set (Default: false). Accepts true/false/short.

from_date
string <date-time>

Start of date range to filter by. Defaults to start of current month. Expects UTC in format yyyy-mm-dd hh:mm:ss'. Job Visits where start and end date intersect with date range will be returned

to_date
string <date-time>

End of date range to filter by. Defaults to end of current month. Expects UTC in format yyyy-mm-dd hh:mm:ss' Job Visits where start and end date intersect with date range will be returned

any_time
string
Default: [true,false]

Filter by whether job visits anytime or not. By default all job visits are returned.

deleted
string
Default: [false]

Filter by value of deleted. Accepts true or false or true,false. Default: false

updated_at[from]
string <date-time>

from date

updated_at[to]
string <date-time>

to date

assignment_status
string
Default: "all"
Enum: "assigned" "unassigned" "all"
              Filter by whether job visits have a user assigned to them or not.
              By default all job visits are returned, assigned or not assigned
Request Body schema: application/x-www-form-urlencoded
ids[]
Array of integers <int32>

Comma separated list of Job Visit ids

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Delete a job booking

Delete a job booking

path Parameters
id
required
integer <int32>

JobVisit ID

Responses

Update a job booking

Update a job booking

path Parameters
id
required
integer <int32>

Job Visit Id

Request Body schema: application/x-www-form-urlencoded
start_date
string

Start date for the visit. UTC in format yyyy-mm-dd 00:00:00

duration_hour
integer <int32>

Duration of visit

duration_min
integer <int32>

Duration of visit

job_id
integer <int32>

Job Id

label
string

Visit label

detail
string

Visit detail

assigned_to_id
string

(Deprecated) Staff id to assign to

any_time
boolean

An anytime booking decouples start_date and end_date from duration_hour and duration_min.

staff_ids[]
Array of integers <int32>

Staff ids as a comma separated string

form_id
string

Any form templates to create on the booking, and existing forms. Any forms not specified here will be deleted from the booking. Accepts comma separated string of ids

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

List all job bookings for a job

List all job bookings for a job. (DEPRECATING. use GET /job/:id/job_visit instead)

path Parameters
job_id
required
integer <int32>

Job Id

query Parameters
from_date
string <date-time>
Default: "2021-11-01T00:00:00.000Z"

Start of date range to filter by. Defaults to start of current month. Expects UTC in format yyyy-mm-dd hh:mm:ss'. Job Visits where start and end date intersect with date range will be returned

to_date
string <date-time>
Default: "2021-11-30T23:59:59.999Z"

End of date range to filter by. Defaults to end of current month. Expects UTC in format yyyy-mm-dd hh:mm:ss' Job Visits where start and end date intersect with date range will be returned

any_time
string
Default: [true,false]

Filter by whether job visits anytime or not. By default all job visits are returned.

include_deleted
boolean

Included deleted job visits in returned set (Default: false)

modified_after
string <date-time>

Get visits that have been modified after this time

assignment_status
string
Default: "all"
Enum: "assigned" "unassigned" "all"
               Filter by whether job visits have a user assigned to them or not.
               By default all job visits are returned, assigned or not assigned
Request Body schema: application/x-www-form-urlencoded
fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Job Notes

Delete job note attachment

Delete job note attachment

path Parameters
id
required
integer <int32>

ID of Job Note Attachment to delete

Responses

Create job note attachment

Create job note attachment

Request Body schema: application/x-www-form-urlencoded
id
string

Assign a UUID.

job_note_id
required
integer <int32>

Job Note ID

file
required
string <binary>

JobNoteAttachment file

attachment_type
string

Job note type (e.g. Voice Record, Barcode)

metadata
json

Responses

List all job note attachments

List all job note attachments

query Parameters
order
string
Default: "created_at"
Enum: "created_at" "updated_at"

attribute to order by. Default created_at

order_direction
string
Default: "asc"
Enum: "asc" "desc"

order direction, (asc, desc). Default asc

Request Body schema: application/x-www-form-urlencoded
job_note_ids[]
Array of integers <int32>

Comma separated list of Job Note IDs

ids[]
Array of integers <int32>

Comma separated list of IDs

Responses

Bulk delete job notes

Bulk delete job notes

Request Body schema: application/x-www-form-urlencoded
ids[]
required
Array of integers <int32>

List of ids to delete

Responses

Create a job note

Create a job note

Request Body schema: application/x-www-form-urlencoded
id
string

Assign a UUID.

job_id
required
integer <int32>

Job to add a note to

description
string

Note description

heading
string

Note Heading

start_time
string <date-time>

Start DateTime. UTC in format yyyy-mm-dd hh:mm:ss

file
string <binary>

Note file

job_visit_id
integer <int32>

Job visit id

metadata
json
attachment_type
string

Job note type (e.g. Voice Record, Barcode)

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

List all job notes

List all job notes. Supports Pagination.

query Parameters
modified
string <date-time>

Get notes modified after this time

job_query
string

Parameters for filtering Jobs. Accepts all parameters supported by GET /api/v1/job

type
string
Enum: "NORMAL" "DRAFT_INVOICE" "APPROVED_INVOICE" "JOB_SHEET_DOCUMENT" "QUOTE_DOCUMENT" "PURCHASE_ORDER_DOCUMENT" "JOB_SHEET_WITH_STATUS_DOCUMENT"

Filter Notes by type. Valid types are: NORMAL, DRAFT_INVOICE, APPROVED_INVOICE,JOB_SHEET_DOCUMENT, QUOTE_SHEET_DOCUMENT, PURCHASE_ORDER_DOCUMENT, JOB_SHEET_WITH_STATUS

order
string
Default: "DESC"
Enum: "ASC" "DESC" "asc" "desc"

ASC or DESC (Default: DESC)

include_deleted
boolean

Include deleted notes?

job_id
integer <int32>

Job id

Request Body schema: application/x-www-form-urlencoded
ids[]
Array of integers <int32>

Comma separated list of Job Note ids

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Delete a job note

Delete a job note

path Parameters
id
required
integer <int32>

ID of Job Note to delete

Responses

Update a job note

Update a job note

path Parameters
id
required
integer <int32>

Job Note Id

Request Body schema: application/x-www-form-urlencoded
start_time
string

Start DateTime. UTC in format yyyy-mm-dd hh:mm:ss

description
string

Note description

heading
string

Note Heading

file
string <binary>

Note file

delete_file
boolean

Delete attached file (Default: false)

job_visit_id
integer <int32>

Job visit id

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Job Statuses

A job always has some job status assigned which helps you understand the current status of a job.

Bull delete job statuses

Bull delete job statuses

query Parameters
id[]
required
Array of integers <int32>

Comma-separated list e.g. 1, 20, 7, 5

Responses

Update a job status

Update a job status

Request Body schema: application/x-www-form-urlencoded
id
required
integer <int32>
color_hex
string

The status colour in hexadecimal format e.g. A3FF05.

name
string

The status name.

sort_order
integer <int32>

The sort order within the status_group. A sort_order of 1 denotes the parent of the status. Side Effect: All sort_orders in the status_group are packed. Any sort_orders greater or equal to the set sort_order are ordered after.

status_group
integer <int32>

The group the status belongs to. Only a parent status'es status_group can be modified. Side Effect: All active status_groups are packed. Any status_groups greater or equal to the set status_group are ordered after.

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "color_hex": "string",
  • "name": "string",
  • "sort_order": "string",
  • "created_at": "string",
  • "updated_at": "string",
  • "status_group": "string",
  • "deleted": "string"
}

Set job statuses

Set job statuses

Request Body schema: application/x-www-form-urlencoded
job_status[][group][][id]
Array of strings
job_status[][group][][color_hex]
required
Array of strings

The status colour in hexadecimal format e.g. A3FF05.

job_status[][group][][name]
required
Array of strings

The status name.

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "color_hex": "string",
  • "name": "string",
  • "sort_order": "string",
  • "created_at": "string",
  • "updated_at": "string",
  • "status_group": "string",
  • "deleted": "string"
}

Create a job status

Create a job status

Request Body schema: application/x-www-form-urlencoded
color_hex
required
string

The status colour in hexadecimal format e.g. A3FF05.

name
required
string

The status name.

sort_order
required
integer <int32>

The sort order within the status_group. A sort_order of 1 denotes the parent of the status group. Sort_order is unique withen a group.

status_group
integer <int32>

The group the status belongs to.

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "color_hex": "string",
  • "name": "string",
  • "sort_order": "string",
  • "created_at": "string",
  • "updated_at": "string",
  • "status_group": "string",
  • "deleted": "string"
}

List all job statuses

List all job statuses. Supports Pagination.

query Parameters
include_deleted
boolean

Include deleted job statuses in the response? (Default: false)

modified
string <date-time>

Only get job statuses with a updated time greater than supplied (UTC, String, yyyy-mm-dd hh:mm:ss)

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "color_hex": "string",
  • "name": "string",
  • "sort_order": "string",
  • "created_at": "string",
  • "updated_at": "string",
  • "status_group": "string",
  • "deleted": "string"
}

Staff

A staff member represents an employee in your company that can be assigned to jobs.

Get staff capacity

Get staff capacity

query Parameters
start_at
string <date-time>

When to begin listing capacity. Defaults to the start of the current week. (Company Timezone Required)

end_at
string <date-time>

When to end listing capacity. Defaults to the end of the current week. (Company Timezone Required)

Request Body schema: application/x-www-form-urlencoded
id[]
Array of integers <int32>

A comma-seperated list of staff identifiers.

Responses

Deactivate a staff

Deactivate a staff

Request Body schema: application/x-www-form-urlencoded
staff_id
required
integer <int32>

Staff Id

Responses

Activate a staff

Activate a staff

Request Body schema: application/x-www-form-urlencoded
staff_id
required
integer <int32>

Staff Id

Responses

Delete a staff

Delete a staff

path Parameters
id
required
integer <int32>

ID of Staff member to delete

Responses

Update a staff

Update a staff

Request Body schema: application/x-www-form-urlencoded
id[]
Array of integers <int32>

Staff Id

delete_avatar
boolean

Delete attached avatar ('true' or 'false') Default: false

status
string
Enum: "active" "deactivated"

User Status. Accepted values: active, deactivated

email
string

Email

first_name
string

Name

last_name
string

Name

mobile_number
string

Mobile Number without the country code. Country code will be based on the set Country

login
string

Login

landline_number
string

Landline Number without the country code. Country code will be based on the set Country

company_name
string

Company

country
string

Must be country code

password
string

Password. If this is not set, it is assumed that an invite will be sent

role_id
integer <int32>

Staff role. Default role is Employee

upload_avatar
string <binary>

User profile picture

physical_address[unit_number]
string
physical_address[address1]
string
physical_address[address2]
string
physical_address[city]
string
physical_address[state]
string
physical_address[postcode]
string
physical_address[country]
string
physical_address[latitude]
number <float>
physical_address[longitude]
number <float>
mailing_address[unit_number]
string
mailing_address[address1]
string
mailing_address[address2]
string
mailing_address[city]
string
mailing_address[state]
string
mailing_address[postcode]
string
mailing_address[country]
string
mailing_address[latitude]
number <float>
mailing_address[longitude]
number <float>
staff_colour
string

Staff color

work_group_id
string

Array of work group ids E.g. 1,2,3

budget
integer <int32>

Max budget hours

min_budget
integer <int32>

Min budget hours

custom_fields[][custom_field_definition_id]
required
Array of integers <int32>
custom_fields[][value]
required
Array of strings
fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Get a staff by id

Get a staff by id

path Parameters
id
required
integer <int32>

Staff ID

Request Body schema: application/x-www-form-urlencoded
fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Create a staff

Create a staff

Request Body schema: application/x-www-form-urlencoded
id
string

Assign a UUID.

email
string

Email

first_name
string

Name

last_name
string

Name

mobile_number
string

Mobile Number without the country code. Country code will be based on the set Country

login
string

Login

landline_number
string

Landline Number without the country code. Country code will be based on the set Country

company_name
string

Company

country
string

Must be country code

password
string

Password. If this is not set, it is assumed that an invite will be sent

role_id
integer <int32>

Staff role. Default role is Employee

upload_avatar
string <binary>

User profile picture

physical_address[unit_number]
string
physical_address[address1]
string
physical_address[address2]
string
physical_address[city]
string
physical_address[state]
string
physical_address[postcode]
string
physical_address[country]
string
physical_address[latitude]
number <float>
physical_address[longitude]
number <float>
mailing_address[unit_number]
string
mailing_address[address1]
string
mailing_address[address2]
string
mailing_address[city]
string
mailing_address[state]
string
mailing_address[postcode]
string
mailing_address[country]
string
mailing_address[latitude]
number <float>
mailing_address[longitude]
number <float>
staff_colour
string

Staff color

work_group_id
string

Array of work group ids E.g. 1,2,3

budget
integer <int32>

Max budget hours

min_budget
integer <int32>

Min budget hours

custom_fields[][custom_field_definition_id]
required
Array of integers <int32>
custom_fields[][value]
required
Array of strings
fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

List all staff

List all staff. Supports Pagination.

query Parameters
search_text
string

Query parameter to search for

role_id
string

Comma separated values of Role IDs to filter by

work_group
string

Limit Staff to members of specified Work groups (Comma separated list of work goup ids)

deleted
string

Filter by :deleted. Accepts values separated by comma, i.e. true or false or true,false. Default: false

status
string

Comma separated list of statuses to filter by. Accepts: invited, active, deactivated

modified
string <date-time>

Limit list to Staff that have been modified after provided date in UTC (yyyy-mm-dd hh:mm:ss)

last_location_modified
string <date-time>

Limit list to Staffthat have been modified or has had its last location string modified after provided date in UTC (yyyy-mm-dd hh:mm:ss)

filter
string

An array of filters to search for. The available filters are first_name, last_name, email, physical_address, mailing_address, company_name, mobile_number, landline_number, status, role

jsp_staff
boolean

true or false. default is All

include_deleted
boolean

Included deleted Staff in returned set (Default: false). This will be deprecated so favour :deleted over :include_deleted

active
boolean

Deprecating Soon. Please use :status filter instead. Filters by whether Staff member is active or not.

invited
boolean

Deprecating Soon. Please use :status filter instead. Filters by whether Staff member has logged into their account or not. If true, only Staff that have never logged in will be returned If false, only Staff that have logged into their account at least once will be returned

predicate
string
Default: "created_at"

Deprecating soon. Please migrate to use :order_by. Sort Staff by field (first_name, last_name, mobile, landline_number, status, role_id, created_at)

order
string
Default: "DESC"

Deprecating soon. Please migrate to use :order_by. Order of records

Request Body schema: application/x-www-form-urlencoded
id[]
Array of integers <int32>

Comma separated list of Staff id

ids[]
Array of integers <int32>

Comma separated list of Staff id. Will be deprecated so favour using :id over :ids

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Get current staff logged in

Get current staff logged in

Request Body schema: application/x-www-form-urlencoded
fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Roles

Fetch all Roles

Fetch all Roles

Responses

Invoices

List all invoice statuses

Fetch all available Invoice Statuses

query Parameters
transition_from_id
integer <int32>

Filter by ability to be transitioned to from this id

Responses

Bulk delete invoices

Bulk delete invoice

Request Body schema: application/x-www-form-urlencoded
ids[]
required
Array of integers <int32>

Comma separated IDs of Invoices to delete

Responses

Create an invoice

Create an invoice

Request Body schema: application/x-www-form-urlencoded
id
string

Assign a UUID.

client_id
required
integer <int32>

ID of Client to create Invoice for

billables[][id]
Array of integers <int32>

Billable ID. If specified, other parameters are ignored

billables[][type]
Array of strings
Items Enum: "Billables::Part" "Billables::Time"

Billable type

billables[][job_id]
Array of integers <int32>

Job to create against

billables[][staff_id]
Array of integers <int32>

Staff associated with billable

billables[][time_start]
Array of strings

UTC in format yyyy-mm-dd hh:mm:ss

billables[][time_end]
Array of strings

UTC in format yyyy-mm-dd hh:mm:ss. Required if type is Billables::Time

billables[][description]
Array of strings

Time description

billables[][quantity]
Array of numbers <float>

Rate Multiplier

billables[][company_charge_id]
Array of integers <int32>

The hourly rate at which the job is charged

billables[][company_part_id]
Array of integers <int32>

Part ID used

billables[][item_id]
Array of integers <int32>

Company Charge/Part ID

billables[][is_tax_inclusive]
Array of booleans

Determines if the billable is tax inclusive or exclusive

billables[][code]
Array of strings

Billable Code

billables[][cost]
Array of numbers <float>

Billable cost

billables[][price]
Array of numbers <float>

Billable price

billables[][discount]
Array of numbers <float>

Discount Rate to apply to total before tax. Time total will be quantity x charge * (100 - discount)/100

billables[][name]
Array of strings

Name of billable

billables[][persist]
Array of booleans

Creates a company part or charge derived from this billable.

billables[][unit]
Array of strings
Items Enum: "None" "Hour" "Day"

Unit of measurement for Charge rate. Default: None.

number
string

Unique Invoice Number

reference
string

Invoice reference

status_id
integer <int32>

Invoice Status ID

document_id
integer <int32>

Invoice Document ID

description
string

Description of Invoice

notes
string

Invoice notes

discount_amount
string

Discount amount for Invoice

discount_unit
string
Enum: "money" "percent"

Unit of discount_amount. Can be either 'money' or 'percent'. Default is 'money'

compound_tax_rate
string

Tax Rate that is applied to Billables tax inclusive total

deposit_amount
string

Deposit amount for Invoice

deposit_unit
string
Enum: "money" "percent"

Unit of deposit. Can be either 'money' or 'percent'. Default is 'money'

issued_at
string

Date invoice is issued in UTC. Defaults to current time

Responses

List all invoices

List all invoices. Supports Pagination.

query Parameters
job_query
string

Parameters for filtering Jobs. Accepts all parameters supported by GET /api/v1/job

client_id
integer <int32>

Filter by Client ID

status_id
string

Status ID

job_id
integer <int32>

Filter by Job ID

search_text
string

Query parameter to search for

filter
string

An array of filters to search for. The available filters are number, client, job

created_at[from]
string <date-time>

from date

created_at[to]
string <date-time>

to date

updated_at[from]
string <date-time>

from date

updated_at[to]
string <date-time>

to date

due_on[from]
string <date-time>

from date

due_on[to]
string <date-time>

to date

issued_at[from]
string <date-time>

from date

issued_at[to]
string <date-time>

to date

deleted
string

Filter by value of deleted. Accepts true or false or true,false. Default: false

locked
string

Filter by value of locked. Accepts true or false or true,false. Default: true,false

order_by
string

Hash where keys are the fields to sort by and values are the direction of order e.g. order_by[created_at]=desc => return results by created_at desc in descending order If specified, this will override any values in :predicate and :order Accepted fields - id, number, client, status, name, total, due_on, created_at, updated_at Nested fields status => order_by[status][...]=asc - name, sort_order, status_group, color_hex client => order_by[client][...]=desc - company_name, name, first_name, last_name

Request Body schema: application/x-www-form-urlencoded
fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Delete an invoice

Delete an invoice

path Parameters
id
required
integer <int32>

ID of Invoice to delete

Responses

Update an invoice

Update an invoice

path Parameters
id
required
integer <int32>

ID of Invoice to Edit

Request Body schema: application/x-www-form-urlencoded
client_id
integer <int32>

ID of Client to create Invoice for

billables[][id]
Array of strings

Billable ID. If specified, other parameters are ignored

billables[][type]
Array of strings
Items Enum: "Billables::Part" "Billables::Time"

Billable type

billables[][job_id]
Array of integers <int32>

Job to create against

billables[][staff_id]
Array of integers <int32>

Staff associated with billable

billables[][time_start]
Array of strings

UTC in format yyyy-mm-dd hh:mm:ss

billables[][time_end]
Array of strings

UTC in format yyyy-mm-dd hh:mm:ss. Required if type is Billables::Time

billables[][description]
Array of strings

Time description

billables[][quantity]
Array of numbers <float>

Rate Multiplier

billables[][company_charge_id]
Array of integers <int32>

The hourly rate at which the job is charged

billables[][company_part_id]
Array of integers <int32>

Part ID used

billables[][item_id]
Array of integers <int32>

Company Charge/Part ID

billables[][code]
Array of strings

Billable Code

billables[][cost]
Array of numbers <float>

Billable cost

billables[][price]
Array of numbers <float>

Billable price

billables[][sale_code_id]
Array of integers <int32>

Sales Tax Rate associated with the billable

billables[][discount]
Array of numbers <float>

Discount Rate to apply to total before tax. Time total will be quantity x charge * (100 - discount)/100

billables[][name]
Array of strings

Name of billable

billables[][is_tax_inclusive]
Array of booleans

Determines if the billable is tax inclusive or exclusive

billables[][unit]
Array of strings
Items Enum: "None" "Hour" "Day"

Unit of measurement for Charge rate. Default: None.

number
string

Unique Invoice Number

reference
string

Invoice reference

status_id
integer <int32>

Invoice Status ID

document_id
integer <int32>

Invoice Document ID

description
string

Description of Invoice

notes
string

Invoice notes

discount_amount
string

Discount amount for Invoice

discount_unit
string
Enum: "money" "percent"

Unit of discount_amount. Can be either 'money' or 'percent'. Default is 'money'

compound_tax_rate
string

Tax Rate that is applied to Billables tax inclusive total

deposit_amount
string

Deposit amount for Invoice

deposit_unit
string
Enum: "money" "percent"

Unit of deposit. Can be either 'money' or 'percent'. Default is 'money'

locked
boolean

Whether to lock Invoice or not

issued_at
string

Date invoice is issued in UTC

Responses

Get invoice by id

Retrieve Invoice by id

path Parameters
id
required
integer <int32>

ID of Invoice to fetch

Responses

List all billable for an invoice.

List all billables for invoice. Supports Pagination

path Parameters
id
required
integer <int32>

ID of Invoice to fetch

query Parameters
deleted
string

Filter by value of deleted. Accepts true or false or true,false. Default: false

Responses

List all payments for an invoice

List all payments for an invoice. Supports Pagination.

path Parameters
id
required
integer <int32>

ID of Invoice to fetch

Request Body schema: application/x-www-form-urlencoded
fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Create a invoice pdf

Generate Pdf of Invoice using a template

path Parameters
id
required
integer <int32>

ID of Invoice

query Parameters
document_id
integer <int32>

ID of Document template to use. The default template is used by default

disposition
string
Enum: "inline" "attachment"

How to return pdf, inline or attachment

Responses

Quotes

Bulk delete quotes

Bulk delete quotes

Request Body schema: application/x-www-form-urlencoded
ids[]
required
Array of integers <int32>

ID of Quote to delete

Responses

Create a quote

Create a quote

Request Body schema: application/x-www-form-urlencoded
id
string

Assign a UUID.

client_id
required
integer <int32>

ID of Client to create Quote for

job_address[unit_number]
string
job_address[address1]
string
job_address[address2]
string
job_address[city]
string
job_address[state]
string
job_address[postcode]
string
job_address[country]
string
job_address[latitude]
number <float>
job_address[longitude]
number <float>
job_name
required
string

Name Quote

status_id
integer <int32>

Quote Status ID

document_id
integer <int32>

Quote Document ID

job_id
integer <int32>

ID of Job relating to Quote

job_description
string

Description of Quote

notes
string

Quote notes

issued_at
string

Date of Issue

expires_on
string

Expiry Date

billables[][id]
Array of integers <int32>

Other params ignored if this is specified

billables[][type]
Array of strings
Items Enum: "Billables::Part" "Billables::Time"

Billable type

billables[][time_start]
Array of strings

UTC in format yyyy-mm-dd hh:mm:ss

billables[][name]
Array of strings

Name

billables[][quantity]
Array of numbers <float>

Rate Multiplier

billables[][time_end]
Array of strings

UTC in format yyyy-mm-dd hh:mm:ss. Required if type is Billables::Time

billables[][company_charge_id]
Array of integers <int32>

The hourly rate at which the job is charged

billables[][company_part_id]
Array of integers <int32>

Part ID used

billables[][staff_id]
Array of integers <int32>

Staff ID

billables[][persist]
Array of booleans

Creates a company part or charge derived from this billable.

billables[][job_visit_id]
Array of integers <int32>

Job visit if applicable

billables[][client_id]
Array of integers <int32>

Client linked to billable

billables[][cost]
Array of numbers <float>

Time cost

billables[][charge]
Array of numbers <float>

Value to charge to client

billables[][discount]
Array of numbers <float>

Discount Rate to apply to total before tax. Time total will be quantity x charge * (100 - discount)/100

billables[][item_id]
Array of integers <int32>

Company Time/Part ID to use as a template

billables[][description]
Array of strings

Time description

billables[][file]
Array of file

Billable File

billables[][unit]
Array of strings

Unit of measurement for Charge rate.

billables[][code]
Array of strings

Billable Charge Code

billables[][invoice_id]
Array of integers <int32>

ID of Invoice associated with Billable

billables[][is_tax_inclusive]
Array of booleans

Determines if the billable is tax inclusive or exclusive

billables[][sale_code_id]
Array of integers <int32>

Sales Tax Rate associated with the billable

discount_amount
string

Discount amount for Quote

discount_unit
string
Enum: "money" "percent"

Unit of discount_amount. Can be either 'money' or 'percent'. Default is 'money'

deposit_amount
string

Amount of expected deposit for Quote

deposit_unit
string
Enum: "money" "percent"

Unit of deposit_amount. Can be either 'money' or 'percent'. Default is 'money'

compound_tax_rate
string

Tax Rate that is applied to Billables tax inclusive total

Responses

List all quotes

List all quotes. Supports Pagination.

query Parameters
job_query
string

Parameters for filtering Jobs. Accepts all parameters supported by GET /api/v1/job

client_id
integer <int32>

Filter by Client ID

status_id
string

Status ID

job_id
integer <int32>

Filter by Job ID

search_text
string

Query parameter to search for

filter
string

An array of filters to search for. The available filters are number, job_name, client

created_at[from]
string <date-time>

from date

created_at[to]
string <date-time>

to date

updated_at[from]
string <date-time>

from date

updated_at[to]
string <date-time>

to date

deleted
string

Filter by value of deleted. Accepts true or false or true,false. Default: false

order_by
string

Hash where keys are the fields to sort by and values are the direction of order e.g. order_by[created_at]=desc => return results by created_at desc in descending order If specified, this will override any values in :predicate and :order Accepted fields - id, number, client, status, job_name, total, created_at, updated_at Nested fields status => order_by[status][...]=asc - name, sort_order, status_group, color_hex client => order_by[client][...]=desc - company_name, name, first_name, last_name

Responses

Delete a quote

Delete a quote

path Parameters
id
required
integer <int32>

ID of Quote to delete

Responses

Update a quote

Update a quote

path Parameters
id
required
integer <int32>

ID of Quote to Edit

Request Body schema: application/x-www-form-urlencoded
client_id
integer <int32>

ID of Client to create Quote for

job_address[unit_number]
string
job_address[address1]
string
job_address[address2]
string
job_address[city]
string
job_address[state]
string
job_address[postcode]
string
job_address[country]
string
job_address[latitude]
number <float>
job_address[longitude]
number <float>
status_id
integer <int32>

Quote Status ID

document_id
integer <int32>

Quote Document ID

job_name
string

Name of Quote

job_id
integer <int32>

ID of Job relating to Quote

job_description
string

Description of Quote

notes
string

Quote notes

issued_at
string

Date of Issue

expires_on
string

Expiry Date

discount_amount
string

Discount amount for Quote

billables[][id]
Array of integers <int32>

Other params ignored if this is specified

billables[][company_charge_id]
Array of integers <int32>

The hourly rate at which the job is charged

billables[][company_part_id]
Array of integers <int32>

Part ID used

billables[][staff_id]
Array of integers <int32>

Staff ID

discount_unit
string
Enum: "money" "percent"

Unit of discount_amount. Can be either 'money' or 'percent'. Default is 'money'

deposit_amount
string

Amount of expected deposit for Quote

deposit_unit
string
Enum: "money" "percent"

Unit of deposit_amount. Can be either 'money' or 'percent'. Default is 'money'

compound_tax_rate
string

Tax Rate that is applied to Billables tax inclusive total

Responses

Get quote by id

Get quote by id

path Parameters
id
required
integer <int32>

ID of Quote to fetch

Responses

Create a quote pdf

Generate Pdf of Quote using a template

path Parameters
id
required
integer <int32>

ID of Quote

query Parameters
document_id
integer <int32>

ID of Document template to use. The default template is used by default

disposition
string
Enum: "inline" "attachment"

How to return pdf, inline or attachment

Responses

Materials

Bulk delete materials

Bulk delete materials

query Parameters
origin
string

Where Company Part originated from

Request Body schema: application/x-www-form-urlencoded
ids[]
Array of integers <int32>

List of ids to delete

Responses

Create a material

Create a material

Request Body schema: application/x-www-form-urlencoded
id
string

Assign a UUID.

code
string

Part code

sale_price
required
number <float>

Price

description
string

Part description

name
string

Part name

purchase_price
number <float>

Price

purchase_code_id
integer <int32>

Tax rate id

sale_code_id
integer <int32>

Tax rate id

profit
number <float>

Profit

margin
number <float>

Margin

tax_inclusive
boolean

Is the sale_price tax inclusive?

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

List all materials

List all materials. Supports Pagination.

query Parameters
search_text
string

Query parameter to search for

filter
string

Comma separated list of fields to search on supported values: item_code, name, description. Searches on all of them by default

modified
string

Get Company Charges modified after this (UTC, String, yyyy-mm-dd hh:mm:ss)

integration_only
boolean

Force search to be performed using Integrated Inventory Management API only, e.g. Xero. Requires search_text to be configured.

ids
string

see :id. Will be deprecated soon. Please migrate to use :id parameter instead

predicate
string

Sort by 'created_at item_code description sale_price margin purchase_price profit' (Default: created_at). If :order_by is used, this is ignored. Please migrate to use :order_by

order
string
Default: "DESC"

ASC or DESC (Default: DESC). If :order_by is used, this is ignored. Please migrate to use :order_by

Request Body schema: application/x-www-form-urlencoded
id[]
Array of integers <int32>

Comma separated list of Company Part ids to filter by

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Delete a material

Delete a material

path Parameters
id
required
integer <int32>

Company Part Id

Responses

Update a material

Update a material

path Parameters
id
required
integer <int32>

Company Part Id

Request Body schema: application/x-www-form-urlencoded
code
string

Part code

sale_price
number <float>

Price

description
string

Part description

name
string

Part name

purchase_price
number <float>

Price

purchase_code_id
integer <int32>

Tax rate id

sale_code_id
integer <int32>

Tax rate id

profit
number <float>

Profit

margin
number <float>

Margin

tax_inclusive
boolean

Is the sale_price tax inclusive?

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Labours

Bulk delete labours

Bulk delete labours

Request Body schema: application/x-www-form-urlencoded
ids[]
required
Array of integers <int32>

Comma separated string of CompanyCharge ids

Responses

Create a labour

Create a labour

Request Body schema: application/x-www-form-urlencoded
id
string

Assign a UUID.

name
string

Name of charge

charge
required
number <float>

Charge rate

cost
required
number <float>

Cost rate

code
string

Unique Identifier for the Charge

unit
string

Unit of measurement for Charge rate

tax_rate_id
integer <int32>

Tax rate id

sales_tax_rate_id
integer <int32>

Sales Tax rate id. Should replace :tax_rate_id

description
string

Description of the charge

staff_charge_associations
string

Array of staff that will be associated to the charge. E.g. 1,2

client_charge_associations
string

Array of clients that will be associated to the charge. E.g. 1,2

billable_category_name
string

Company billable category name

origin_id
string

External Identifier. Only available for NDIS

tax_inclusive
boolean

Is the charge tax inclusive?

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

List all labours

List all labours. Supports Pagination.

query Parameters
job_id
integer <int32>

Job id

staff_id
integer <int32>

Staff id

modified
string

Get Company Charges modified after this (UTC, String, yyyy-mm-dd hh:mm:ss)

search_text
string

Query parameter to search for

filter
string

Fields to filter Company Charges as comma separated list. Supports: name, description, billable_category_name (if NDIS component enabled) Uses all by default

integration_only
boolean

Force search to be performed using Integrated Inventory Management API only, e.g. Xero. Requires search_text to be configured.

predicate
string

Sort by 'name created_at item_code description sale_price margin purchase_price profit' (Default: created_at). If :order_by is used, this is ignored. Please migrate to use :order_by

order
string
Default: "DESC"

ASC or DESC (Default: DESC). If :order_by is used, this is ignored. Please migrate to use :order_by

filter_fields
string

See :filter. Will be deprecated soon. Please migrate to use :filter parameter instead.

filter_term
string

See :search_text. Will be deprecated soon. Please migrate to use :search_text parameter instead.

Request Body schema: application/x-www-form-urlencoded
id[]
Array of integers <int32>

Comma separated list of Company Charges ids

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

ids[]
Array of integers <int32>

see :id. Will be deprecated soon. Please migrate to use :id parameter instead

Responses

Delete a labour

Delete a labour

path Parameters
id
required
integer <int32>

Company Charge Id

Responses

Update a labour

Update a labour

path Parameters
id
required
integer <int32>

Company Charge Id

Request Body schema: application/x-www-form-urlencoded
name
string

Name of charge

charge
required
number <float>

Charge rate

cost
required
number <float>

Cost rate

description
string

Description of the charge

code
string

Unique Identifier for the Charge

unit
string

Unit of measurement for Charge rate.

tax_rate_id
integer <int32>

Tax rate id

sales_tax_rate_id
integer <int32>

Sales Tax rate id. Should replace :tax_rate_id

staff_charge_associations
string

Array of staff that will be associated to the charge. E.g. 1,2

client_charge_associations
string

Array of clients that will be associated to the charge. E.g. 1,2

billable_category_name
string

Company billable category name

origin_id
string

External Identifier. Only available for NDIS

tax_inclusive
boolean

Is the charge tax inclusive?

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Update a labour charge

Update a labour charge

path Parameters
id
required
integer <int32>

Company Charge Id

Request Body schema: application/x-www-form-urlencoded
name
string

Name of charge

charge
number <float>

Charge rate

cost
number <float>

Cost rate

description
string

Description of the charge

code
string

Unique Identifier for the Charge

unit
string

Unit of measurement for Charge rate.

tax_rate_id
integer <int32>

Tax rate id

sales_tax_rate_id
integer <int32>

Sales Tax rate id. Should replace :tax_rate_id

staff_charge_associations
string

Array of staff that will be associated to the charge. E.g. 1,2

client_charge_associations
string

Array of clients that will be associated to the charge. E.g. 1,2

billable_category_name
string

Company billable category name

origin_id
string

External Identifier. Only available for NDIS

tax_inclusive
boolean

Is the charge tax inclusive?

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Billables

Bulk delete billables

Bulk delete billables

Request Body schema: application/x-www-form-urlencoded
ids[]
required
Array of integers <int32>

List of ids to delete

Responses

Create a billable

Create a billable

Request Body schema: application/x-www-form-urlencoded
id
string

Assign a UUID.

type
required
string
Enum: "Billables::Time" "Billables::Part"

Type of Billable

job_id
integer <int32>

Job to create against. Required if quote_id is not specified

quote_id
integer <int32>

Quote to create against. Required if job_id is not specified

staff_id
required
integer <int32>

Staff with the time billable

time_start
required
string

UTC in format yyyy-mm-dd hh:mm:ss

name
string

Name of billable

billable
required
boolean

Indicate whether this is billable or not

quantity
required
number <float>

Rate Multiplier

time_end
string

UTC in format yyyy-mm-dd hh:mm:ss. Required if type is Billables::Time

job_visit_id
integer <int32>

Job visit if applicable

client_id
integer <int32>

Client linked to billable

cost
number <float>

Time cost

charge
number <float>

Value to charge to client

discount
number <float>

Discount Rate to apply to total before tax. Time total will be quantity x charge * (100 - discount)/100

item_id
integer <int32>

Company Time/Part ID to use as a template

description
string

Time description

file
string <binary>

Billable File

unit
string

Unit of measurement for Charge rate.

code
string

Billable Charge Code

invoice_id
integer <int32>

ID of Invoice associated with Billable

company_charge_id
integer <int32>

The hourly rate at which the job is charged

company_part_id
integer <int32>

Part ID used

is_tax_inclusive
boolean

Determines if the billable is tax inclusive or exclusive

sale_code_id
integer <int32>

Sales Tax Rate associated with the billable

Responses

List all billables.

List all billables. Supports Pagination.

query Parameters
job_query
string

Parameters for filtering Jobs. Accepts all parameters supported by GET /api/v1/job

search_text
string

Query parameter to search for

filter
string

An array of filters to search for

scheduled
boolean

true or false. default is All

from_date
string

Beginning date to search for. UTC in format yyyy-mm-dd hh:mm:ss

to_date
string

End date to search for. UTC in format yyyy-mm-dd hh:mm:ss

job_status_id
string

Filter by job status

billable_client_id
integer <int32>

Limit by the billable client

created_at[from]
string <date-time>

from date

created_at[to]
string <date-time>

to date

updated_at[from]
string <date-time>

from date

updated_at[to]
string <date-time>

to date

invoiced
string

Filter by value of invoiced

billable
string

Filter by value of billable

type
string

Filter by type, Billables::Part or Billables::Time

types
string

'time', 'part' comma separated (Default: All) Deprecating soon, use :type

only_invoiced
boolean

Get only invoiced billables or not (Default: All) Deprecating soon, use :invoiced

only_billable
boolean

Get only billables flagged as billable (Default: All) Deprecating soon, use :billable

predicate
string

Sort by 'name, code, type, unit, cost, charge, margin, sub_total, computed_tax, total, quantity, created_at (Default), updated_at, id

order
string

ASC or DESC (Default: DESC)

modified
string

Get billables modified only after this time Deprecating soon, use :updated_at

Request Body schema: application/x-www-form-urlencoded
id[]
Array of integers <int32>

Comma separated list of Billable ids

job_id[]
Array of integers <int32>

Comma separated list of Job ids

invoice_id[]
Array of integers <int32>

Filter set on a single or multiple invoice ID(s)

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Update a billable

Update a billable

path Parameters
id
required
integer <int32>

Billable Id

Request Body schema: application/x-www-form-urlencoded
staff_id
integer <int32>

Staff associated with billable

name
string

Name of billable

job_visit_id
integer <int32>

Job visit if applicable

client_id
integer <int32>

Client linked to billable

item_id
integer <int32>

Company Part/Charge to use as a template

time_start
string

UTC in format yyyy-mm-dd hh:mm:ss

time_end
string

UTC in format yyyy-mm-dd hh:mm:ss

quantity
number <float>

Rate Multiplier

charge
number <float>

Value to charge to client

unit
string

Unit of measurement for Charge rate.

code
string

Billable Charge Code

discount
number <float>

Discount Rate to apply to total before tax. Time total will be quantity x charge * (100 - discount)/100

cost
number <float>

Time cost

description
string

Time description

billable
boolean

Indicate whether this is billable or not

file
string <binary>

Billable File

delete_file
boolean

Delete attached file (Default: false)

invoice_id
integer <int32>

ID of Invoice associated with Billable

is_tax_inclusive
boolean

Determines if the billable is tax inclusive or exclusive

sale_code_id
integer <int32>

Sales Tax Rate associated with the billable

Responses

Custom Fields

Each custom field is appointed a custom field definition that can belong to jobs, clients, and users. The definition acts as an identifier, label, and what entity type supports it. Each entity where its type is associated to a custom field definition contains a custom_fields field which is an array of objects containing the custom_field_definition_id and the assigned value.

Example, the following definitions GET /api/v1/custom_field_definition

[
  {
      "id":549,
      "name":"Date Shipped",
      "for_model":"job"
      }
  },
  {
      "id":550,
      "name":"Courier",
      "for_model":"job"
  }
]

are mapped to jobs.custom_fields from GET /api/v1/job/actual

[
  {
      "id":107484,
      "title":"Features on GeoNext [Demo]",
      "description":"Custom Fields Example",
      "reference":"1001",
      "type":"Jobs::Actual",
      "custom_fields":[
        {
            "value":"2020/01/01",
            "custom_field_definition_id":549
        },
        {
            "value":"DHL",
            "custom_field_definition_id":550
        }
      ]
  }
]

List all custom field definitions

List all custom field definitions

query Parameters
for_model[]
Array of strings
Items Enum: "job" "client" "user"

Filter by for_model. Accepts comma-separated values.

field_group[]
Array of strings

Filter by field_group. Accepts comma-separated values.

required
boolean

Filter by required

modified
string <date-time>

Retrieve fields modified after the specified date.

Request Body schema: application/x-www-form-urlencoded
deleted[]
Array of strings

Filter by deleted. Supports an array of values. e.g. false,true => deleted or not deleted true => only deleted false => only non-deleted (default)

Responses

Timers

Get a timer approval status

Get a timer approval status

path Parameters
id
required
string

TimerApprovalStatus Id.

Responses

List all timer approval statuses

Returns a list of your timer approval statuses.

query Parameters
include_deleted
boolean

Include deleted TimerApprovalStatuses?

Responses

Delete timer types

Delete timer types

query Parameters
ids
required
string

Comma-seperated string of TimerType identifiers.

Responses

Create a timer type

Create a timer type

Request Body schema: application/x-www-form-urlencoded
id
string

The id of the type.

name
required
string

The name of the type.

display_order
integer <int32>

An arbitrary index used for display ordering.

color_hex
string

The color code for the type e.g. #ff0000.

is_default
boolean

Determines if this type is default.

Responses

List all timer types

Returns a list of your timer types.

query Parameters
include_deleted
boolean

Include deleted TimerTypes?

origin
string

Filters out timers that do not come from the specified origin.

Responses

Update a timer type

Update a timer type

path Parameters
id
required
string

The TimerType identifier.

Request Body schema: application/x-www-form-urlencoded
name
string

The name of the type.

display_order
integer <int32>

An arbitrary index used for display ordering.

color_hex
string

The color code for the type e.g. #ff0000.

is_default
boolean

Determines if this type is default.

origin
string

The origin of the TimerType.

origin_id
string

The origin_id of the TimerType.

origin_account_id
string

The origin_account_id of the TimerType.

Responses

Get timer type

Get timer type

path Parameters
id
required
string

TimerType Id.

Responses

Transition timers

Transition many timers at once

Request Body schema: application/x-www-form-urlencoded
ids
required
string

Comma-seperated string of Timer identifiers.

approval_status_id
required
string

The TimerApprovalStatus to transition to.

Responses

Delete timers

Delete timers

query Parameters
ids
required
string

Comma-seperated string of Timer identifiers.

Responses

Update a timer

Update a timer

Request Body schema: application/x-www-form-urlencoded
id
required
string

The Timer identifier.

timer_type_id
string

The TimerType identifier.

start_at
string <date-time>

When the Timer started. Defaults to current time.

end_at
string <date-time>

When the Timer ended.

time_zone
string

The timezone the timer was created in.

start_address[unit_number]
string
start_address[address1]
string
start_address[address2]
string
start_address[city]
string
start_address[state]
string
start_address[postcode]
string
start_address[country]
string
start_address[latitude]
number <float>
start_address[longitude]
number <float>
end_address[unit_number]
string
end_address[address1]
string
end_address[address2]
string
end_address[city]
string
end_address[state]
string
end_address[postcode]
string
end_address[country]
string
end_address[latitude]
number <float>
end_address[longitude]
number <float>
job_id
integer <int32>

The Job the Timer belongs to.

owner_id
integer <int32>

The owner of the Timer.

authority_id
integer <int32>

The approver of the Timer. Defaults to the current user when a Approved/Declined TimerApprovalStatus is set.

approval_status_id
string

The TimerApprovalStatus identifier.

notes
string

Auxillary information about the Timer.

state
string

A generic field used for hinting.

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Create a timer

Create a Timer.

Request Body schema: application/x-www-form-urlencoded
id
string

The Timer identifier.

timer_type_id
string

The TimerType identifier.

start_at
string <date-time>
Default: "2021-11-04T03:03:09.241Z"

When the Timer started. Defaults to current time.

end_at
string <date-time>

When the Timer ended.

time_zone
string

The timezone the timer was created in.

start_address[unit_number]
string
start_address[address1]
string
start_address[address2]
string
start_address[city]
string
start_address[state]
string
start_address[postcode]
string
start_address[country]
string
start_address[latitude]
number <float>
start_address[longitude]
number <float>
end_address[unit_number]
string
end_address[address1]
string
end_address[address2]
string
end_address[city]
string
end_address[state]
string
end_address[postcode]
string
end_address[country]
string
end_address[latitude]
number <float>
end_address[longitude]
number <float>
job_id
integer <int32>

The Job the Timer belongs to.

owner_id
integer <int32>

The owner of the Timer. Defaults to the current user.

authority_id
integer <int32>

The approver of the Timer.

approval_status_id
string

The TimerApprovalStatus identifier.

notes
string

Auxillary information about the Timer.

state
string

A generic field used for hinting.

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

List all timers

Returns a list of your timers. Supports Pagination.

query Parameters
intersect_start
string <date-time>

Filters out Timers that does not intersect with the specified interval (start).

intersect_end
string <date-time>

Filters out Timers that does not intersect with the specified interval (end).

include_deleted
boolean

Include deleted Timers?

job_name
string

Filter out timers that do not contain job_name.

modified
string

Filters out Timers modified before the specified time.

approval_status_ids
string

Comma-seperated string of TimerApprovalStatus identifiers. Filters out any TimerApprovalStatuses not specified.

timer_type_ids
string

Comma-seperated string of TimerType identifiers. Filters out any TimerTypes not specified.

include_active
boolean

Include any running timers in the response.

order_by
string

Hash where keys are the fields to sort by and values are the direction of order e.g. order_by[duration]=desc => return results by created_at desc in descending order If specified, this will override any values in :predicate and :order Accepted fields - start_at, end_at, duration, status

Request Body schema: application/x-www-form-urlencoded
owner_ids[]
Array of integers <int32>

Comma-seperated string of owner identifiers. Filters out any owners not specified.

fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Gets the running timer, otherwise an empty object is returned.

Get the running timeer

Request Body schema: application/x-www-form-urlencoded
fields[]
Array of strings

Fields to include in the response. Accepts a comma separated string of field names. @example Only field names a,b,c #=> { a: value, b: value, c: value } @example Nested fields (associations) a,b,c[d,e] #=> { a: value, b: value, c: { d: value, e: value }

Responses

Export timers

Export timers

query Parameters
intersect_start
required
string <date-time>

Filters out Timers that does not intersect with the specified interval (start).

intersect_end
required
string <date-time>

Filters out Timers that does not intersect with the specified interval (end).

export_by
string
Enum: "day" "week"

Exports timers by day format.

export_format
string
Default: "csv"
Value: "csv"

Export fomat.

export_time_zone
string

The export time zone to format.

include_deleted
boolean

Include deleted Timers?

job_name
string

Filter out timers that do not contain job_name.

modified
string

Filters out Timers modified before the specified time.

approval_status_ids
string

Comma-seperated string of TimerApprovalStatus identifiers. Filters out any TimerApprovalStatuses not specified.

timer_type_ids
string

Comma-seperated string of TimerType identifiers. Filters out any TimerTypes not specified.

include_active
boolean

Include any running timers in the response.

order_by
string

Hash where keys are the fields to sort by and values are the direction of order e.g. order_by[duration]=desc => return results by created_at desc in descending order If specified, this will override any values in :predicate and :order Accepted fields - start_at, end_at, duration, status

Request Body schema: application/x-www-form-urlencoded
owner_ids[]
Array of integers <int32>

Comma-seperated string of owner identifiers. Filters out any owners not specified.

Responses

Get timer metadata

Get timer metadata

query Parameters
intersect_start
required
string

Filters out Timers that does not intersect with the specified interval (start).

intersect_end
required
string

Filters out Timers that does not intersect with the specified interval (end).

owner_ids
string

Comma-seperated string of owner identifiers. Filters out any owners not specified.

Responses