A SilverStripe BulkLoader for consuming external APIs
Maintain data integrity with an external source of truth. Keep dataobjects up to date with fresh data received from external APIs. Inspired by burnbright/silverstripe-importexport.
- Retains a record of the maximum last edited date (to use as a limit in future API calls)
- Display, Log and/or email Bulk Loader Results showing the changes made to a dataobject
- Localisation options available for Results report
- Preview setting for dry runs leaving the dataobject untouched
Where there is an external source of truth that a dataobject needs to be updated from.
An example is an eCommerce website where the product prices need to be kept in alignment with an online inventory system (which is used post-sale to manage fulfilment of an order). With the eCommerce website being a subset of the total inventory items in stock, updating, without creating new product items, is required. The pricing and other properties change frequently. Based upon the philosophy of entering data only once a sync from the external source of truth would keep the website accurate, up to date and reduce maintenance.
- Subclass
\AntonyThorpe\Consumer\BulkLoader
and set your column map between the external API fields and the dataobject (see docs and tests folder for guidance). - Create a
BuildTask
to retrieve fresh API data using a tool like Guzzle - Alter the dataobject via a method on your BulkLoader subclass
- Review the Bulk Loader Results report
- Create an instance of the
Consumer
class and record the last edited date for future reference - Setup a cron job to run the
BuildTask
on a regular basis and monitor incoming emails for exceptions
A bulk loader for Silvershop Unleashed Software (link)
None sorry.