top of page

API Documentation 

Introduction

The WTMBackflowResultsAPI provides direct access to completed backflow tests conducted via the MachBackflow App. This API eliminates the need for manually transferring data between the app and test sheets or third-party programs. Additionally, it also replaces the process of exporting completed backflow test results to a CSV file and importing that file into third-party programs used for reporting and managing testing data.

 

The API facilitates a seamless transfer of backflow test data directly from the field to the management software, ensuring swift and efficient delivery. This eliminates errors that may arise from manual transcription and human interaction when transferring data captured in the field to third-party management software. 

Questions?

General Setup

 Parameters

To access the API, you need the Company API Key (referred to as "X-Company-Api-key"). These credentials are obtained upon payment of an initial connection fee of $250.00 USD. There are no additional charges for using the API beyond the initial fee, see limits section for more information on call limits.** 

To pay the connection fee and get the required credentials Contact Us. Once the fee is paid we will provide the Linked company ID and generated X-Company-Api-key. 

Property
Conditional
Description

X-Company-Api-key

Required

The generated API key, provided after the intial connection fee is paid and confirmed.

Linked company

Optional


The company id in the system, provided after initial connection fee is paid and confirmed.

offset

Optional 


Specifies where the API should start returning records from in the entire dataset.

limit

Optional 


Used to specify the maximum number of results or items that should be returned by the API in a single response.

updated_stamp

Recommended

Used to get records after a certain date and time.

Python Example:

The example above will retrieve all saved test results for ABC Backflow Testing from January 1st, 2024. 

Limits 

API Call Limits

API Pagination

Python Example:

The example above fetches completed backflow tests for the linked testing company to the API Key. It limits the number of results to 100, skips the first 5 initial records, and filters results based on the update timestamp to only fetch records after May 1st, 2024. 

Free API Call Tier: 

After Initial Connection Fee no cost to for API usage up 4 API calls per hour.

Higher API call rates available upon request Contact Us to inquire about higher call rates.

Results are limited to 300 per page, amount of returned results per call can be customized using the "limit" and or "offset" parameters in the API call.

API Response

Response Headers

Property
Description
Type

results

An array of trace records.

{Array}

previous

The URL of the previous page of trace records, or null if there is no previous page.

{string|null}

next

The URL of the next page of trace records, or null if there is no next page.

{string|null}

count

The total number of trace records.

{number}


Property
Description
Type

guid

The unique identifier for the test result. 


{string}

facility_name

The name of the facility where the test was conducted.

{string}

facility_address

The address of the facility.

{string}

facility_city

The city where the facility is located.

{string}

facility_state

The state where the facility is located.

{string}

facility_zip

The ZIP code of the facility.

{string}

contact_phone_number

The phone number of the contact person at the facility.

{string}

contact_email

The email address of the contact person at the facility.

{string}

make

The make of the equipment or system being tested.

{string}

model

The model of the equipment or system being tested.

{string}

assembly_type

The type of assembly being tested.

{string}

size

The size of the assembly.

{string}

serial_number

The serial number of the assembly.

{string}

location_of_assembly

The location of the assembly.

{string}

equipment_or_system_application

The application of the equipment or system being tested.

{string}

equipment_or_system_application_other

Additional information about the equipment or system application.

{string}

hazard_level

The hazard level of the assembly.

{string}

unit_of_measure

The unit of measure for pressure values.

{string}

created_on_device_at

The timestamp when the test result was created on the server.

{string}

initial_test_status

The initial test status.

{string}

initial_line_pressure_value

The initial line pressure value.

{number|null}

initial_check_valve_1_value

The initial value of check valve 1.

{number|null}

initial_check_valve_1_status

The status of check valve 1.

{string}

initial_check_valve_2_value

The initial value of check valve 2.

{number|null}

initial_check_valve_2_status

The status of check valve 2.

{string}

initial_relief_valve_value

The initial value of the relief valve.

{number|null}

initial_relief_valve_status

The status of the relief valve.

{string}

initial_air_inlet_valve_value

The initial value of the air inlet valve.

{number|null}

initial_air_inlet_valve_status

The status of the air inlet valve.

{string|null}

initial_shutoff_valve_2_status

The status of shutoff valve 2.

{string}

initial_comments

Additional comments for the initial test.

{string}

initial_date_of_test

The date of the initial test.

{string}

final_created_on_device

The timestamp when the final test result was created on the server.

{string}

final_test_status

The final test status.

{string}

final_line_pressure_value

The final line pressure value.

{number|null}

final_check_valve_1_value

The final value of check valve 1.

{number|null}

final_check_valve_1_status

The status of check valve 1.

{string|null}

final_check_valve_2_value

The final value of check valve 2.

{number|null}

final_check_valve_2_status

The status of check valve 2.

{string|null}

final_relief_valve_value

The final value of the relief valve.

{number|null}

final_relief_valve_status

The status of the relief valve.

{string|null}

final_air_inlet_valve_value

The final value of the air inlet valve.

{number|null}

final_air_inlet_valve_status

The status of the air inlet valve.

{string|null}

final_shutoff_valve_2_status

The status of shutoff valve 2.

{string|null}

final_comments

Additional comments for the final test.

{string|null}

final_date_of_test

The date of the final test.

{string|null}

tester_name

The name of the tester.

{string|null}

testing_firm_name

The name of the testing firm.

{string|null}

testing_firm_address

The address of the testing firm.

{string|null}

testing_firm_city

The city where the testing firm is located.

{string|null}

testing_firm_state

The state where the testing firm is located.

{string|null}

testing_firm_zip

The ZIP code of the testing firm.

{string|null}

certification_number

The certification number of the tester.

{string|null}

tester_phone

The phone number of the tester.

{string|null}

tester_email

The email address of the tester.

{string|null}

trace_kit_make

The make of the trace kit used.

{string|null}

trace_kit_model

The model of the trace kit used.

{string|null}

trace_kit_serial_number

The serial number of the trace kit used.

{string|null}

last_calibration_date

The date of the last calibration.

{string|null}

Response Body

Example Response

Example Implementation 

The above example automatically fetches updated backflow testing data every 30 minutes daily that is linked to the "API_Key" for the given company.

 

  1. It does so by calculating the date and the time 30 minutes ago.

  2. Sending a Get request to the API with this date and time to retrieve data updated since then.

  3. Repeating this process indefinitely, ensuring that the new backflow testing data is consistently up-to-date.

Python Example:

Errors

Incorrect or Revoked API Key 

Response Status Code: 401

Exceeded Number of API Calls Allowed for Free Tier (4 per hour)

Response Status Code: 429

bottom of page