Summary
This guide is intended for Developers integrating BlastIQ data into their applications and other users wanting to directly access their BlastIQ data using the BlastIQ External API.
The BlastIQ External API currently allows authorised users and authenticated systems to read their blasting information from BlastIQ, including:
- Drill Hole Designs
- Drill Hole QA/QC Actual Measurement history
- Bulk Explosive Loading Designs
- Bulk Explosive Loading Actual Measurement history
- Drilling records
It also allows authorised users and authenticated systems to write their blasting information to BlastIQ, including:
- Drill Hole Designs
- Drill As Drilled Records
- Drill Hole Measurement Records
- Bulk Explosive Loading Designs
The BlastIQ Customer REST API is versioned. New versions will be released for breaking changes. Breaking changes are changes that can potentially break an integration. Breaking changes include:
- Removing an operation.
- Removing or renaming a parameter.
- Removing or renaming a response field.
- Adding a new required parameter.
- Making a previously optional parameter required.
- Changing the type of a parameter or response field.
- Removing a value from an enum definition.
- Changing authentication or authorization requirements.
Additive changes are changes that should not break an integration. Additive changes include:
- Adding an operation.
- Adding an optional parameter.
- Adding an optional request header.
- Adding a response field.
- Adding a response header.
- Adding a value to an enum definition.
- Ensure your client can handle new response fields. e.g. do not expect the field list to always remain the same if enumerating fields.
- Only integrate with the operations and response fields that you require.
- Take special care with unknown enum value handling.
- Many client generators create clients that will break on unknown enum values.
- Always have an 'Unknown' value in client-side enums.
- Ensure unknown enum values are deserialized as 'Unknown'. Example approach in c# https://stackoverflow.com/a/22755077
- Ensure integration code gracefully handles data containing 'Unknown' enum values, e.g. skip entry and log a warning.
- Alternately, use string properties in clients instead of enums and treat them as codes. You must still consider what to do when you receive a code you don't expect.
- Consider using filters provided by the API to only return objects you understand. e.g. productTypes filter on /v3/{siteId}/products
Some new features on the API may not be supported by older versions of BlastIQ applications. Always update the BlastIQ applications on your site; if you use incompatible application versions, you should not use the new API features until they have been updated.
The following table lists new features and compatible application versions when all production versions of BlastIQ applications make use of new features, they will be removed from this table.
Feature | Mobile Version | LOADPlus Version | SHOTPlus version |
Hole Accessories | v1.4.4449 | N/A | v6.x.x |
Plan Accessories | v1.4.4449 | N/A | v6.x.x |
Rename Holes | v1.4.4449 | 3.2.2+ | None |
Move Holes | v1.4.4449 | 3.2.2+ | None |
Initiator Design | v1.7.7425 | N/A | N/A |
When integrating with BlastIQ API, please consider the number of calls made to BlastIQ. BlastIQ enforces the following rate limits:
- 20 requests per 10 seconds (2 requests per second)
- 60 requests per minute (1 request per second)
- 1200 requests per 4 hours (5 requests per minute)
Measures to prevent rate limit exceedance:
- Make API calls sequentially rather than in parallel.
- Delay 1s between API calls.
- Delay 5s between calls to IsReady.
- Only retrieve modified data rather than all data.
- Many BlastIQ APIs support modifiedSince or receivedSince to reduce data returned.
- Consider using a client-side rate-limiting library. e.g. https://github.com/David-Desmaisons/RateLimiter
If the above limits do not meet your requirements, please get in touch with BlastIQ support.
The Blast Control API turns incoming requests into events for distribution to field devices (BlastIQ Mobile & LOADPlus). To ensure the correct operation of the system, rate limits are applied based on the number of events produced.
The following limits are currently enforced:
- 15,000 per 10 minutes.
- 30,000 per 1 hour.
These limits are unlikely to ever be encountered for live data import. However, they may be encountered if you attempt to import historical data.
A quick rule of thumb: at least 1 event will be produced for every hole/measurement/drill data, etc., you import. However, the number may be higher if the system has to correct for events being produced out of order in time.
Measures to prevent event rate limit exceedance:
- Run data imports more regularly rather than waiting to send large batches of data all at once.
- Set the isHistoricalImport parameter to true when importing historical drill data.
- If importing a large amount of historical drill data, ensure that you send fewer than 5,000 entries per 10 minutes, or you will hit the hourly limit.
We welcome feedback on the BlastIQ APIs and suggestions for improvement, you can make suggestions and support the suggestions of other users here.
If you have questions or would like assistance with integration to BlastIQ, please raise a support ticket, and we would be happy to assist you.
Please see the Authorization Flow support documentation here: https://support.blastiq.com/hc/en-us/articles/360048345774
A Swagger page is available to test the BlastIQ External API at:
https://api.blastiq.com/swagger/index.html
The Swagger page provides details on data types, response codes and other information for developers.
When using Swagger, a blastiq.com login can be used for authentication.
Select the Authorize button at the top of the Swagger page. When presented with the Available authorizations window, ensure cosmos is selected (image below). The client_id is cosmos.external.swagger, and the client_secret remains blank. After selecting Authorize, you will be asked to log into BlastIQ.
Use the Interactive Swagger page at https://api.blastiq.com/swagger/index.html to view available methods, parameters and example responses. The Schemas section at the bottom of the page provides a purpose, example and data type for every field.
Version 1: Deprecated Q1 2018
Version 2: Deprecated Q2 2020
Version 3: Production Q3 2019