Skip to main content
Starting with the entry below, version numbers track the janus software’s release version (what actually shipped), not the X-API-VERSION request-versioning scheme described in the Version Guide. Those are two separate things: X-API-VERSION identifies the shape of the request/response contract and has not changed since 3.0.0 below; the release version identifies which build of the software is running. A release can ship fixes or additive fields without bumping X-API-VERSION at all, which is what most entries below are.

[2.16.3] - 2026/05/12

fixed

  • Removed the upper cap on the page_limit/page_index pagination fields.

[2.16.2] - 2026/04/28

fixed

  • Fixed an error when checking asset availability with certain filters.
  • last_job_id is now sourced from LastRequest; added job type and date fields.

[2.16.1] - 2026/04/07

fixed

  • Added missing fields to several response model schemas.

[2.16.0] - 2026/04/01

added

  • Job responses now use repositioned asset coordinates for geolocation.

fixed

  • A non-integer x-tenant-id header now returns an input error instead of an unhandled exception.

[2.15.1] - 2026/03/11

fixed

  • Fixed the password reset flow for unverified and third-party users.

[2.15.0] - 2026/02/27

added

  • Hauler invite links are now validated via a signed JWT at registration.

[2.13.4] - 2026/01/26

fixed

  • Fixed an error when creating hauler connections (POST /haulers/{hauler_uuid}/connections).

[2.13.3] - 2026/01/08

fixed

  • List-assets endpoints now include assets that have no movement history (previously omitted).

[2.13.0] - 2025/12/11

fixed

  • Corrected the latest-incident subquery logic in list-assets endpoints and handled a None asset location value (previously caused errors).
  • Fixed a bug where auth token expiration checks could behave incorrectly due to timezone handling.

[2.12.5] - 2025/07/10

fixed

  • Moved PATCH /users/pwreset parameters from query parameters to the request body.
  • User verification email tokens now expire after 1 day instead of 1 hour.
  • Fixed a bug where customer address updates (PATCH) weren’t correctly committed to the database.
  • Reverted a stored-procedure optimization for list-assets endpoints that had introduced a regression.

[2.12.4] - 2023/05/02

fixed

  • GET /haulers/{third_party_hauler_id}/connections now returns the correct connection list.
  • GET /locations/{location_id}/trucks now correctly returns trucks for third-party users.
  • All PATCH/POST endpoints now reliably commit their transaction.
  • POST /customers/{customer_id}/locations/{customer_location_id} now returns a more descriptive error message on a conflict.

[2.12.3.rc0] - 2023/01/26

breaking

  • Job materials: the materials field was replaced by additional_items.

added

  • Added GET /trailers.
  • Added job image support: GET /jobs/{job_id}/images/{s3_object}, an upload endpoint, and DELETE /jobs/{job_id}/images/{s3_object}.
  • Added a decline-job endpoint.
  • Added verified_redirect_url to POST /users and GET /users/verify_email to redirect after verification (omitting it preserves the original “Account verified” response).
  • Renamed LineItemModel to ProductModel; added auto_deduct, purchase, and is_deleted fields, plus filters on the list-products endpoint.
  • Added Dispatcher and ThirdParty* role access to GET /asset_types and GET /locations/{location_id}/assets.

fixed

  • All job-model-returning endpoints now format consistently by version (previously only the list-jobs endpoint was correct).
  • Fixed a recaptcha issue on POST /haulers.
  • Third-party hauler truck listings no longer show all trucks.
  • Fixed job-listing authorization so all valid locations are covered.
  • Public (unauthenticated) role introspection now works correctly.
  • Fixed a server error caused by a missing default value on the contact profile during customer creation.

[2.12.2] - 2022/10/11

added

  • Added POST /locations/{location_id}/jobs/{job_id}/complete and POST /locations/{location_id}/jobs/{job_id}/additional_items/{job_item_id}/complete for job completion.
  • Added GET /products.
  • Added X-API-VERSION header support, with backward-compatible input/output versioning across affected endpoints.
  • Added can_user_access_location, JobModel.username, JobModel.rout_stop_id, and a quantity field on job materials.
  • Added has_role, page_index, and page_limit filters to the list-users endpoint.
  • Added completed_by and requested_by filters to the list-jobs endpoints.

changed

  • The list-jobs endpoints now include only the calling customer’s own location settings; the list-customers endpoints now include each customer’s list of location settings.
  • POST /haulers and POST /haulers/{hauler_uuid}/connections now accept a JSON body instead of query parameters, matching every other request.
  • PATCH /locations/{location_id}/trucks/{truck_id} renamed internally from set_truck_driver to update_truck.

fixed

  • Corrected list-assets model formatting.
  • Removed the Driver role from job creation.
  • Fixed missing tenant-scoping filters on several endpoints (UserModel.company_id, driver location filters, NULL location id handling).
  • Corrected duplicate entries in can_dispatch_to/can_assign_to for the driver detail endpoint.
  • Renamed JobModel.created_by_id to created_by for consistency.
  • Re-added a missing scale_ticket field (affects all endpoints returning job models).
  • Added missing account_number_1/account_number_2 fields.
  • Resized the reCAPTCHA token length limit from 512 to 4096 characters.

[3.0.0] - 2021/11/04

breaking

added

  • Added X-CRO-VERSION header for specifying versions (backwards compatibility).
  • Added input format validation to user identifiers (applies to all user ids).
  • Added completed_by and requested_by filters to GET /locations//jobs and GET /jobs.
  • Added user id normalization to JobModel.created_by.
  • Added 3rd party dispatcher to user identifier resolution.
  • Added logic to include 3rd party locations for GET /locations//jobs and GET /jobs.
  • Added location_id filter to GET /locations//drivers.
  • Added GET /products endpoint.
  • Added location_id filter to GET /products.
  • Added quantity field to job materials endpoints (including job endpoints).
  • Added schedule_lte and schedule_gte to GET /jobs and GET /locations//jobs.
  • Added all filters from GET /locations//jobs filters to /jobs.
  • Added account_number_1/2 to DispatchCustomerLocationModel, LocationAddressModel, CreateCustomerModel, UpdateDispatchCustomerLocationModel.
  • Added LEED support.
  • Added username field to GET /locations//drivers and GET /locations//drivers/.
  • Added scale_ticket to JobModel.

changed

  • Removed duplicate entries in the can_dispatch_to and can_assign_to fields for GET /locations//driver/.
  • Fixed issue with paged results boundary calculation.
  • Job listings now include correct total_count.
  • Customer existence checks now ignore inactive customers & addresses.
  • Provider user IDs now normalized correctly as user IDs (for endpoints accessing return full data).
  • PATCH /locations//trucks/ now accepts NULL driver_id.
  • Corrected issue with TruckModel.driver_id being incorrectly interpreted as user id (all endpoints accessing truck resources).
  • Added missing default value (NULL) to GET /locations/ for postcode field.
  • CreateCustomerAddressModel now uses defaults for optional fields.
  • Adjusted asset location formatting to match models.
  • Fixed invalid exception thrown when tblAdditionalItem.HeavyWeight is NULL.
  • Job endpoints images & return_full fields now returned (previously always missing).
  • NULL user identifier cases now handled correctly for all endpoints using user identifiers.

[2.9.1] - 2021/08/02

breaking

[2.6.0] - 2021/05/07

breaking

[2.5.0] - 2021/04/07

breaking

[2.0.0] - 2021/08/03

added

  • Excluded UserId formats from credit card number check.
  • CC number checks to all string inputs/outputs.
  • POST /locations/x/jobs/y/additional_items.
  • PATCH /locations/x/jobs/y/additional_items.
  • DELETE /locations/x/jobs/y/additional_items.
  • GET /assets_types.
  • ation & name info to GET /locations//assets.
  • PATCH /locations//jobs//dispatch.
  • GET /jobs.
  • GET /destinations.
  • GET /routes.
  • GET /users/current.
  • GET /users/current/locations.
  • GET /users/current.
  • GET /locations/x/assets implementation.
  • Added location_id to CustomerLocationModel.
  • trailer_id, interface_color to GET /locations/x/trucks.
  • Fields can_set_request_trucks, can_dispatch, is_deactivated, interface_color to driver model for GET /drivers/.
  • Missing driver_ids to user profiles.
  • New crm user type and role.
  • Fields name, active, and location_id filters added to GET /customers.
  • Customer address constraints for billing/shipping.
  • Field username to GET /locations//drivers and GET /locations//drivers/.
  • Location permission check to driver validation (for all driver resources).
  • Renamed contact_id input fields to customer_contact_id.
  • Renamed address_id input fields to customer_address_id.
  • Added location_id to CustomerLocationModel.

changed

  • All user_id, driver_id, and provider_user_id inputs now accept numeric id, uuid, or username. Username used for outputs for all user_id, driver_id, and provider_user_id fields.
  • The user_id and filter_driver_id are now UserId format.
  • Updated list_assets to include location & name.
  • Changed PATCH /locations//jobs/ to update job details (instead of dispatch job).
  • Failed tenant/location checks now return 401 Unauthorized instead of 404 Not Found.
  • User not found during authentication will now return 401 Unauthorized.
  • The field sales_rep_id now accepts user uuid, username, or provider id for POST /locations//customers, PATCH /customers/, POST /customers//locations/.
  • CustomerLocationModel.id renamed to customer_id.
  • Output driver_ids are now set to the user_id.
  • Paged results field current_page now returns the page index of the results returned.
  • The sales_rep_identifier check now skips if sale_rep_identifier not set for customer endpoints.
  • Address fields country, line_1, locality, postcode, region now nullable (customer addresses).
  • The suspension_id field now nullable and defaults as NULL (for customers).
  • The sales_rep and reference_number fields now allow null.

fixed

  • Some fields not being updated for PATCH /drivers//chats/ now updated correctly.
  • Omitted sales_rep_id for POST /customers//locations/ no longer returns 500.
  • Fixed page_index issue in customer exists check (affects customer endpoints).
  • CustomerLocationModel.id renamed customer_id.

[1.0.7] - 2020/07/31

added

  • Added active, last_updated_gte, created_on_gte, is_parent, parent_id filters to GET location/x/customers.
  • Added company_id filter to user list DAL functions
  • Added active filter to list_users.
  • Added filter parent_id to /customers.
  • Added Dispatcher to Administrator roles results.
  • Added is_parent, location_id, is_active filters to GET /customers.
  • Added is_dispatched to list job filters.
  • Added CrmUser role.

changed

  • Removed role Public from user role list when listing users.
  • Changed list-customer operations to return results based on role (GET /customers, etc.).
  • Updated billing/shipping address logic to be based on parent_id.

fixed

  • Corrected UserModel.id to UserModel.dispatcher_id for provider_id filter.
  • Fixed issue with suspension_id nullability.
  • Fixed incorrect location id column logic for all location-specific resources.
  • Fixed Dispatcher role validation for null location_id for all endpoints.

[1.0.6] - 2020/06/04

changed

  • Changed customer address create to accept null for country, region, locality, & postcode if line_1 is null.

[1.0.5] - 2020/05/20

changed

  • Changed POST /locations//customers to allow omitted and/or NULL contact name, email, number, and fax.

[1.0.4] - 2020/05/09

added

  • Email, name, & phone number inputs as csv to POST /locations//customers.
  • completed_by_driver filter to GET /locations//jobs.
  • Job materials data to GET /locations//jobs.
  • Field is_active to PATCH /customers//locations/.
  • GET locations//dump_destinations.
  • GET locations//dump_destinations/.
  • Customer dupe detection logic (name & address).

changed

  • Changed POST /locations//customers to allow omitted and/or NULL renewal_date.
  • Limited job dispatch to Dispatchers.

[1.0.3] - 2019/10/21

added

  • Parameter max_address_edit_distance to POST /locations//customers.
  • Name filter to GET /location//users.

changed

  • Duplicate customers created via POST /locations//customers now return 409 conflict.
  • Updated parent_id, line_2, line_3, line_4 to be optional fields for POST /locations//customers.

fixed

  • Added missing ‘id’ field to /tenant return results.

[1.0.2] - 2019/09/25

added

  • Added GET /locations//materials.
  • Added GET /locations//users.
  • Added GET /locations//users/.
  • Added scale_ticket field to JobModel.
  • Added webhooks callbacks.
  • Added webhook ping endpoint to API.
  • Fixed issue in user location authorization for Admin roles.

changed

  • Changed field inputs type validation to restrict to specified type (e.g. JSON int not implicitly converted to string).
  • Changed requests with Admin users to also auth for Dispatched authorized calls.
  • Renamed GET /customers ‘filter_name’ param to ‘name’.

fixed

  • Fixed header param naming issue in customer locations.
  • Fixed authorization header spec.
  • Fixed customer_id/location_id mixup in the CustomerLocation endpoints.
  • Fixed bug in date filter validation.
  • Fixed exception handling for missing/invalid endpoint arguments.
  • Fixed exception bug and indentation error.

[1.0.1] - 2019/07/30

added

  • Added filter_last_update_gte and filter_created_on_gte to GET /customers and GET /location//jobs.
  • Changed requests with Admin users to also auth for Dispatcher authorized calls.

changed

  • Renamed GET /customers ‘filter_name’ param to ‘name’.

fixed

  • Un-flipped Customer ID and Location ID on the “Add customer to location” endpoint.

[0.0.0] - 2019/04/16

added

  • Exception handling to endpoint arg processing.
  • Support for X-REQUEST-ID header.
  • Added field materials list to job records (for GET /locations//jobs/ only).
  • GET /customer
  • GET /customer/
  • PATCH /customer/
  • GET /customer//location
  • GET /customer//location/
  • POST /customer//location/
  • PATCH /customer//location/
  • GET /customer//address
  • POST /customer//address
  • GET /customer//address/
  • PATCH /customer//address/
  • DELETE /customer//address/
  • GET /customer//contact
  • POST /customer//contact
  • GET /customer//contact/
  • PATCH /customer//contact/
  • POST /location//customer
  • POST /location//customer
  • PATCH /location//customer/
  • GET /location//customer/
  • DELETE /location//customer/
  • POST /location//gps_event
  • GET /tenant
  • Added filters to list job endpoint (schedule date range, deleted, completed, driver id, truck id).
  • Initial implementations for: - GET /location//driver - GET /location//driver/ - GET /location//customer - POST /hauler - POST /hauler//connection - GET /hauler/ - GET /hauler - GET /hauler//connection - GET /location - GET /location/ - PATCH /location//job/ - GET /location//job/ - GET /location//job - GET /location//truck/ - GET /location//truck - PATCH /location//truck/

changed

  • Changed customer contact and address to Dispatcher role access (removed ThirdPartyDispatcher role access).
  • Changed argument validation to raise InputError on invalid signature profile (vs HTTP 500).
  • Changed scope list support (vs single scope).
  • Changed tenant db session logic to raise InputError on x-tenant-id missing.
  • Pluralized endpoint URLs.
  • Changed CustomerLocationApi.list_customers to RoleGroup.Authenticated.
  • Log GPS event now accepts application/json instead of gps_event_json parameter.
  • Create/update customer changed from request parameter to JSON customer profile.
  • Create/update customer creates/updates customer addresses.
  • Create/update customer creates/updates billing zone codes.
  • Policy verification moved to function entry points.
  • Requests using unassigned tenant IDs now return 403 instead of 200.
  • Added tenant/location check to policy enforcement

fixed

  • Changed MultiTenantSAConnector to raise InputError on connection if missing tenant id.
  • Fixed fence post error in paged queries logic.
  • Improved /location//customers GET query performance.
  • Invalid access token no longer returns 500 internal server error.
  • <jwt-access-token> corrected to <access-token> in doc.
  • Validation issues.
  • Filtering issues.
  • Issue with date comparisons during input validation (aware vs naive)
  • ThirdPartyDriver permission issues with List Customers.