Many thanks Davide,
I have managed to create a working solution that both eliminates the need for additional fields in Baserow and manual intervention.
NOTE: only tested for [event_type] => rows.updated.
Lets assume:
my target field is DATA.
my local processing of DATA outputs a new DATA value.
When a user changes the value of DATA, Baserow generates a webhook.
On receipt of the webhook I run a compare function on my local server:
function compare()
if webhook payload [items] not equal to webhook payload [old_items]
- Process DATA on my server,
- update DATA via Baserow API.
else
return HTTP 200
Therefore:
(a) The first time I receive the webhook [items] and [old_items] are different (expected), therefore I process DATA locally, then update DATA via the API
(b) Baserow triggers webhook again.
(c) The second time I receive the webhook [items] and [old_items] are again different (expected as I have updated DATA via API update, as in (a)), therefore I process DATA locally, then update DATA via the API. However, this time I am updating DATA with the same values as in (a).
(d) Baserow triggers webhook again.
(e) The third time I receive the webhook [items] and [old_items] are identical (expected), therefore I return HTTP 200 which stops Baserow from triggering additional webhooks.
As I said before, this is an unnecessary overhead for both Baserow and my server, however, it can act as a short-term workaround that does not require additional database columns or manual intervention.
I am in the process of testing [event_type] => rows.created and will update accordingly.
Again, many thanks for your help.
Martin