Welcome to the Uptick API!
Stay abreast of all API updates by subscribing to our API updates mailing list. Click here to subscribe.
Versioning
Our versioning is implemented across the board, rather than on a per-endpoint basis. Access is via <customer>.onuptick.com/api/v<version>/<endpoint>/.
Scheme
The versioning scheme is as follows (note that this is NOT semver):
MAJOR: Corresponds to spec being implemented.
MINOR: Corresponds to a backwards-incompatible change that's been made.
PATCH: Corresponds to minor, backwards-compatible, tweaks.
We currently offer one MAJOR version, v2, which implements REST, extended with the JsonAPI spec.
When the MINOR version is not specified (eg. /api/v2/<endpoint>/), the latest MINOR version will be defaulted to for the given MAJOR version. Similarly, when the PATCH version is not specificed, the latest PATCH for the given MINOR.MAJOR combination is used.
Deprecation Cycle
There is no explicit lifetime for each MINOR version, but roughly ~3 minor versions should be expected to coexist simultaneously, so when you see a new one introduced, expect the oldest one to be on its way out.
You can review version info at /api/version/ You'll see the keys latest, deprecated, imminent_removal and removed there, which should let you know well ahead of time whether you need to start updating.
Endpoints
Our endpoints are self-descriptive; they are their own documentation. If you view our API from your browser, you'll see it render in a human-readable way.
Navigate to /api/v2.8/ to see a list of endpoints. Follow any of these to see available fields. Every endpoint also offers an OPTIONS method, which lists additional metadata for each field.
Getting Connected
A guide on how to get connected is available here.
Postman collections
Sample files and steps for setting up a Postman collection are available here.
Recommendations
Here are a few tips to ensure you get the best out of our API:
Always specify the MINOR version in your calls, to avoid surprises when things change. eg.
/api/v2.x/<endpoint>/. We also send out email updates when adding/removing MINOR versions. Please get in contact with us if you would like to be included on this mailing list.
Prefetch data. You can use
?include=<fieldname of relationship>to pull through related table data. Can even dig through multiple levels, eg./api/v2.x/tasks/?include=property.tags
Take advantage of sparsefields. By default, endpoints return all available fields. You can use the
?fields[<ResourceType>]query to request only the specific fields you need. eg./api/v2.x/properties/?fields[Property]=name,ref,created. These work on included data as well. eg./api/v2.x/properties/?include=client&fields[Property]=ref&fields[Client]=name
Paginate. Two pagination modes are available:
limit-offset (default): eg.
?page[limit]=50&page[offset]=100.cursor: eg
?page[cursor]&page[size]=50(you'll need to separately include?page[count]if you want it returned). Use this mode if performing data syncs.
Filter results. Most fields can be filtered on. There's also a special
updatedsincefilter, which you should be using when you're fetching lists of data for syncing purposes. eg./api/v2.x/tasksessions/?updatedsince=2019-10-28T19:53:25.906000Z.
Minimise the number of API calls you make. With the above points, you should be able to efficiently collect exactly the data you need with minimal calls to the API. Everybody wins.
Patch notes
v2.14 (Added June, 2025)
Removed
Task.sourceandTask.source_content_typefields.
AddedTask.source_defect_quote,Task.source_service_quoteandTask.source_taskin their stead.Renamed
/api/v2.x/chat-messages/to/api/v2.x/chatmessages/.
Both endpoints will remain accessible via both old and new API versions until support for v2.13 is dropped.Removed
ChatMessage.data_linkscomputed field. This is no longer supported.Added
timelineevents/create_comment/endpoint for creating comment-type events. Attempting to create comment-type events via standard POST will return an error.Added new required
ServiceQuoteProductLineItem.taxcodefield.Added new
ServiceQuoteProductLineItem.taxratefield, for tracking the tax rate as a decimal. Will be inferred fromtaxcodeif not supplied.Added new required
ServiceQuoteServiceLineItem.taxcodefield.Added new
ServiceQuoteServiceLineItem.taxratefield, for tracking the tax rate as a decimal. Will be inferred fromtaxcodeif not supplied.The
addressfield on thePropertyresource has undergone an overhaul. It is now a flat structured json blob as opposed to a foreignkey to anAddressresource. The available values arecountry,country_name,display,streetline,city,state,postal_codeandplace_id.
Most notably,timezoneandcoord_lat/coord_lngare no longer stored here.Added new
Property.coordspoint field, for storing the coordinates which previously lived underProperty.address.coord_lat/coord_lng.Added new
Property.timezonefield, for storing the timezone which previously lived underProperty.address.timezone.Removed the
Addressresource and/api/v2.x/addresses/endpoint.The
attributesfield will no longer be present in a response when an api request only asks for relationship fields.Removed
PropertyContact.primary_numberfield. This was a legacy duplicate ofPropertyContact.phone_bh.Replaced
/api/v2.x/remarks/addwith/api/v2.x/remarks/add_remark. It is functionally the same but accepts a flat JSON body instead of a JSONAPI body.
v2.13 (Added Oct, 2024)
api/v2.x/jobs/has been renamed toapi/v2.x/projects, across all api versions. This change is not going through a deprecation cycle, as it was not used by any customers.product,descriptionandunit_pricehave been removed fromlineitemsin theapi/v2.x/purchaseorders/create_docketendpoint.purchaseorderlineitem_idis now required on eachlineitemfor theapi/v2.x/purchaseorders/create_docketendpoint.purchaseorderlineitem_idis now required on eachlineitemfor theapi/v2.x/purchaseorders/create_billendpoint.For the
InvoiceLineItem,CreditNoteLineItem,PurchaseOrderLineItemandPurchaseOrderBillLineItemresources:Renamed
tax_ratetotaxcodeand made it required. The old name will remain available until support for v2.12 is dropped.Added new
taxratefield, for tracking the tax rate as a decimal. Will be inferred fromtaxcodeif not supplied.
For the
DefectQuoteLineItemresource:Added new required
taxcodefield.Added new
taxratefield, for tracking the tax rate as a decimal. Will be inferred fromtaxcodeif not supplied.
Renamed the
DefectQuote.gstfield totax. The old name will remain accessible until support for v2.12 is dropped.
v2.12 (Added Feb, 2024)
Added cursor-based pagination, which can be used as a performant alternative to limit-offset pagination when needing to iterate through a full table of records. Enable by including
?page[cursor]&page[size]=Xin your query. Retrieve a count of objects by including?page[count]in your query. Page count is disabled by default.Removed
RemarkType.standardfield. This was an underused freetext field, that was preventing us from introducing aRemarkType.standardForeignKey in future. The key will remain in the response until v2.11 is dropped, however it will only return emptystring.The
?activefilter under the/api/v2.x/remarks/endpoint is now considered deprecated. Use?is_activeinstead. The former will be removed once v2.11 is dropped.Removed
Client.primary_contactfield, flattenedContactDetailsfields ontoClientmodel itself.Removed
ContactDetailsresource. The/api/v2.x/contactdetails/endpoint will be removed once v2.11 is dropped.Renamed
PropertyContact.activetoPropertyContact.is_active. The old name will remain accessible until support for v2.11 is dropped.Renamed the
PropertyContact.activefilter tois_active. The old filter will remain accessible until support for v2.11 is dropped.
v2.11 (Deprecated June 2025)
RemarkType,RemarkandRemarkEventresources have moved namespace frominspectionstoremarks. This affects scoping on associated contenttypes, as well as thereinstate_remarkspermission. The oldinspectionsscope will continue being returned for versions prior to 2.11.Removed automatic lineitem generation when creating a new
PurchaseOrderBillresource using the/api/v2.x/purchaseorderbills/endpoint.Added the following read-only fields to the
TaskSessionresource:submitted_at,submitted_by,approved_by,approved_at. The previousis_approvedandsubmittedfields are now deprecated but will continue to work until removed when v2.10 is dropped.Added a readonly
statusfield to theTaskSessionresource, which will be either DRAFT, SUBMITTED, APPROVED or TRASHED.Renamed
/api/v2.x/default-technicians/to/api/v2.x/defaulttechnicians/. Both endpoints will remain accessible via both old and new API versions until support for v2.10 is dropped.Removed the
/api/v2.x/payroll/export in favour of/api/v2.x/tasksessions/as this endpoint provides the same functionality.
v2.10 (Deprecated June 2025)
Appointments endpoint,
api/v2.x/appointments/, now returns cancelled appointments too.Extra Fields with a widget type of date are now required to be in ISO format (yyyy-MM-dd). For versions prior to 2.10 dd/MM/yyyy formatted extra date fields will be converted to yyyy-MM-dd on POST/PATCH and will be reconverted to dd/MM/yyyy on GET.
v2.9 (Removed Dec 21, 2023)
ServiceTasks created via the
api/v2.x/servicetasks/endpoint are now expected to haveroutineserviceleveltypeprovided for service work. For versions prior to 2.9, this field will now automatically be populated using info fromServiceTask.routineif left blank.Replaced the
remarkfield on thePromptAnswerresource with an M2M,remarks.Added endpoint
/api/v2.x/promptsets/for newPromptSetresource.Added endpoint
/api/v2.x/promptquestionrules/for newPromptQuestionRuleresource.Removed
assettypefield fromPromptQuestionresource. You can now look it up viapromptset.assettypes.Removed
routineservicetypefield fromPromptQuestionresource. You can now look it up viapromptset.routineservicetypes.Renamed
PromptQuestion.routineserviceleveltypestoPromptQuestion.limit_to_routineserviceleveltypesto better communicate what the field is capturing.Updated the set of Asset icon names. You can view the new names by performing an OPTIONS call against
/api/v2.x/assettypes/(note that making this call against older API versions will _NOT_ return the original icon names).Document download URLs are no longer directly available. The
/api/v2.x/{app}/documents/{id}/documentsurlfield has changed and now points to/api/v2.x/documents/{uuid}/download. Following this url will redirect to an AWS Signed URL with a 60 second expiry.
v2.8 (Removed Dec 21, 2023)
Expanded
PromptQuestion.typechoices from'A', 'R', 'T', 'I', 'D'to'ASSERTION', 'REMARK', 'TEXT', 'INTEGER, 'DECIMAL', respectively.Renamed
labeltohelp_textandheadingtolabelonPromptQuestionresource.Abstracted a portion of the path prefix out from the document upload interface. The interface w.r.t retrieving data (using
/v2/uploads/endpoint) otherwise remains unchanged. Please ensure that you're usingrootas the base path for rendering folders, and not theprefixfrom the upload config.
v2.7 (Removed Dec 21, 2023)
Removed the
access_policecheckreqandaccess_childrencheckreqfields on thePropertyresource. This functionality is now accessible through the new Accreditations module; specifically theAccreditationRequirementresource at/api/v2.x/accreditationrequirements/.Expensive relations (M2Ms & Reverse ForeignKeys) are no longer returned by default when hitting a naked endpoint. They must be requested explicitly with the
fields[]query parameter.Renamed
ContacttoPropertyContactand flattened theContactDetailsresource located underPropertyContact.contactonto thePropertyContactresource itself.Introduced a new csv download mechanism, which is much more performant, faster, and puts less strain on your server. To use it, instead of tacking
.csvonto the end of your api call, appendgenerate_csv/instead. For example:https://yourserver.onuptick.com/api/v2/properties/generate_csv/. This will return a 'PENDING' status when first hit. Refresh the page after a short wait to receive your csv download link. The existing.csvapproach is no longer available, across all API versions.
v2.6 (Removed Dec 21, 2023)
Added a
building_classeschoice field to thePropertyresource. This replaces thebuilding_classandbuilding_typefields, which will be remain accessible until v2.5 is dropped.Added
bsecure_resolved_guid(actual guid) andbsecure_latest_sticker_guid(guid of most recently attached sticker; gets mapped to actual guid) fields to thePropertyandAssetresources, to be used in place ofbsecure_guidandbsecure_real_guidfields. If you've been using these old fields, you'll want to apply the following mapping. For thePropertyresourcebsecure_guidis the same asbsecure_resolved_guid; for theAssetresource,bsecure_guidis the same asbsecure_latest_sticker_guidandbsecure_real_guidis the same asbsecure_resolved_guid. The old fields will remain accessible via both old and new API versions until support for v2.5 is dropped.Removed
propertyrelationship fromServiceTaskresource. No longer accessible via previous API versions either, as it was never used./api/v2.x/pushnotificationtokens/register/now requiresplatformto be provided. Must be one ofAPNS|GCM.A
quantityof 0 passed to the/api/v2.x/servicetasks/endpoint will now remain as 0, rather than getting automatically converted to 1.Renamed
/api/v2.x/form-responses/to/api/v2.x/dynamicformresponses/. Both endpoints will remain accessible via both old and new API versions until support for v2.5 is dropped.Renamed
/api/v2.x/dynamicform_templates/to/api/v2.x/dynamicformtemplates/. Both endpoints will remain accessible via both old and new API versions until support for v2.5 is dropped.
v2.5 (Removed Dec 21, 2023)
Asset.floorplan_locationshas now becomeAsset.floorplan_location, as the relationship is now one-to-one. Both usages will remain accessible until support for v2.4 is dropped.
v2.4 (Removed Dec 21, 2023)
The following resources have been renamed:
InspectionItem->AssetInspectionItemType->AssetTypeInspectionItemTag->AssetTagInspectionItemTypeTag->AssetTypeTagInspectionItemTypeVariant->AssetTypeVariant
Renamed all occurences of fields named
inspectionitemandinspection_itemwithasset. This change spans multiple endpoints, and affects the following resources:Asset,AssetType,AssetTag,AssetTypeTag,AssetTypeVariant,PlanLocation,Remark,SuggestedProduct,DefectQuoteLineItem,SignoffItem,ServiceTask,AssetPreset,RemarkType,RoutineServiceType,ServiceRecord,Rectification.Changed
Task.statusfrom a CharField to a ForeignKey relationship on resourceTaskStatus. What was previously stored inTask.statuscan now be found underTask.status.id. Affects all endpoints that reference theTaskresource.Added endpoint
/api/v2.x/taskstatuses/, for viewingTaskStatusresources.All datetimes are now returned in the timezone of the user performing the request. For example,
2020-01-20T00:32:06.912780Z, for a user with a Melbourne timezone, will now return as2020-01-20T11:32:06.912780+11:00. Clients must ensure they understand the+XX:XXtimezone offset suffix, rather than just theZUTC suffix, or always assuming UTC.
v2.3 (Removed Oct 21, 2021)
Renamed a number of endpoints. Both endpoint names will remain accessible via both old and new API versions until support for v2.2 is dropped.
/api/v2.x/property-tags/->/api/v2.x/propertytags/./api/v2.x/timeline-events/->/api/v2.x/timelineevents/./api/v2.x/extra-fields/->/api/v2.x/extrafields/./api/v2.x/display-conditions/->/api/v2.x/displayconditions/./api/v2.x/dispatch/->/api/v2.x/dispatches/.
Added endpoint
/api/v2.x/assettags/, for parity with the same endpoint in the v1 api.Filter
content_type_idon/api/v2.x/timelineevents/has been renamed tocontent_type. Both filter names will remain usable until support for v2.2 is dropped.Removed
is_performedbool field fromServiceTaskresource. Useperformed_datedatetime field instead.Removed
is_quotablebool field fromServiceTaskresource. Concept of "Quotable" ServiceTasks has been replaced with a new "SuggestedProducts" resource.Added
/api/v2.x/suggestedproducts/endpoint, for interfacing with SuggestedProducts.Tasks with new status type CANCELLED are now visible through the
/api/v2.x/tasks/endpoint.
v2.2 (Removed Mar 18, 2021)
Renamed
/api/v2.x/task-sessions/to/api/v2.x/tasksessions/. Both endpoints will remain accessible via both old and new API versions until support for v2.1 is dropped.Changed
TaskSession.typefrom a CharField to a ForeignKey on model TaskSessionType. What was previously stored inTaskSession.typecan now be found underTaskSessionType.key. This affects both the TaskSession endpoints/api/v2.x/task-sessions/and/api/v2.x/tasksessions/, as well as the/api/v2.x/payroll/endpoint.Added new endpoint
/api/v2.x/tasksessiontypes/, for accessing and manipulating TaskSessionTypes.
v2.1 (Removed Jun 18, 2020)
Renamed
Remark.failuretoRemark.type. Notes:This is only a field name change. The resource behind the ForeignKey was already called RemarkType and remains this way.
This change affects not only the
remarksendpoint, but all other endpoints that were pulling remarks through via theincludequery param.
Renamed
/api/v2/remark-types/endpoint to/api/v2/remarktypes/. Both endpoints will remain accessible via both old and new API versions until support for v2.0 is dropped.
v2.0 (Removed Feb 6, 2020)
Initial release
