We are continuing our journey to profile the event-driven architecture of leading API providers, and better understand the different ways in which providers are making their platforms more responsive, and deliver real-time results for their consumers. As we are profiling API providers for the Streamdata.io API Gallery, if we come across APIs who have listed the types of events and subscriptions their consumers can put to use, we take a moment to write up a post on what we find. While profiling the mobile data collection platform Fulcrum, we came across their very detailed listing of data events they provide for their users–Fulcrum data events are pretty robust and they can tune into:
– Alert user if a photo is not geotagged – Use this to alert the user if a photo does not contain latitude or longitude metadata.
– Alert user to take horizontal media – These expressions check the orientation of photos and videos when they’re added.
– Auto-populate Last Value – Grabs the last value entered in a field and populates it into another field in the next new child record.
– Basic Timer – A simple stopwatch-like timer that allows you to start, pause, and reset.
– Capturing vector coordinates – Demonstrates how to capture the coordinates of line and polygon features.
– Change a record’s status – Use this to change a record’s status when a user changes a specific field or when the record is saved.
– Compare photo location to record location – Demonstrates how to add quality control checks on photos by checking to see if they were taken in the same geographic area as the record.
– Compare photo timestamp with current time – Demonstrates how to add quality control checks on photos by checking to see when they were taken.
– Conditionally persist values across records – Demonstrates dynamic logic to determine how default values are persisted across records.
– Coordinate Reference System Calculations – Transform latitude and longitude coordinates into another CRS via Proj4js.
– Update CARTO table from Fulcrum – Demonstrates how to POST data to the CARTO SQL API.
– Disable requirements by user or role – Relax field requirements for users by email or role
– Display the current GPS info on the form – Use this example to display the current GPS info on your form.
– Dynamically translate form elements – Demonstrates how to dynamically translate labels and choice list options to support multiple languages.
– Set the status field options based on role – Use this example to control which status field options are available based on the user role.
– Get elevation information – Determine the elevation of the location you are collecting data.
– Query Esri REST services – How to query an Esri ArcGIS Server or ArcGIS Online REST Service using Data Events in Fulcrum.
– Working with inline GeoJSON – Populate a choice list from GeoJSON and set other values from the selected feature properties.
– Query a GeoServer instance – Demonstrates how to send a WFS query to GeoServer and use the results in a choice list.
– Integrating Fulcrum with what3words – Use the what3words API to populate a record with the 3-word representation of its location or update its location from a known 3-word address.
– Hide fields based on user role – Use this example to conditionally display fields for certain user roles.
– Opening Google Maps & Street View – Demonstrates how to open Google Maps or Street View at your record location on both mobile and web.
– Make a phone call – Use this to create a button on your form to make a phone call to a phone number entered in a text field.
– Verify special choice option – Use this to warn and confirm that a special choice option was selected
– Repeatable requirement validation alerts – Use this to alert the user if a field in a repeatable section does not have a value.
– Phone number validation – Use the Twilio API to validate a phone number.
– Point-in-polygon with CARTO API – Locate which neighborhood you are working in via point-in-polygon.
– Prevent changes after signing – Lockdown fields so they cannot be changed once a signature has been added to a record.
– Send push notifications with Pushbullet – Demonstrates how to automatically send push notifications when a record is saved.
– Fetch data from a Socrata service – Demonstrates how to send a spatial query to a Socrata instance and use the data returned in your form.
– Make fields read-only based on user role – Use this example to conditionally disable fields for certain user roles.
– Require field based on date comparison – Demonstrates how to compare a date field with today’s date to script custom requirement logic.
– Require captions for a photo field – Use this custom validation logic to ensure every photo has a caption before saving.
– Require project – Use this custom validation logic to ensure every record has a project selected before saving.
– Send a text message – Use this to create a button on your form to send an SMS message.
– Add a tally counter to your form – Use this example to add a tally counter button to increment a numeric field.
– Prevent editing an old record – Use this to prevent a user from editing a record that was created at some defined time in the past.
– Intelligently updating record locations – Demonstrates how to intelligently update locations for imported records.
– Validate record is within a geographic area – Use this to ensure a record’s location is within a geographic area before saving.
– Enforce regex pattern validation by role – Use this to validate text against a regex pattern based on user role.
Fulcrum’s list of events is pretty exhaustive, providing some interesting use cases for events that occur out in the field. Their events are a little different perspective of the normal event-driven architecture we profile. Some of them are in response to something that happens, but others are events that you can initiate at specific times in the data collection process. Their approach pushes the boundaries of what is event-driven architecture and provides us with an interesting look at how events can occur out in the field on mobile devices.
We are adding Fulcrum’s list of data events to our catalog of event-driven architecture. Each API provider we profile brings a slightly different view of the landscape to our catalog. We feel that this research paints a picture of the evolving API landscape, showing how providers are making their API platforms more responsive, real-time, and delivering the signals, and providing the signals their consumers are demanding. Continuing to demonstrate how the most mature API providers are evolving their infrastructure beyond a request and response way of doing things, and responding to the most relevant events that occur via our increasingly noisy platforms.