ODK Central to support publishers?

Hi! Not sure where to ask this, but are there plans for ODK Central to do publishing similar to ODK Aggregate?

What is the general goal of the feature?
Emulate the ODK Aggregate publish hooks, in particular the JSON publisher.

What are some example use cases for this feature?
We have an in-house app that listens for publish events sent from Aggregate, and then compiles PDFs for certain form submissions. It would be ideal if we could do the same after migrating to ODK Central.

What can you contribute to making this feature a reality?
I'd be happy to contribute code if the feature is planned for future development. I've some experience in NodeJS and am a complete newbie to VueJS, but happy to help if I can!

1 Like

hey jonathan! i’m glad you’re interested in Central and helping to make it better.

certainly, adding some sort of http hooks or pubsub system to Central would be an improvement. out of curiosity, for your use case how important is reliable delivery on this service?

my instinct is to shoot for guaranteed reliability, which would necessitate some sort of internal queueing system for status tracking and retrying failures. the simpler, less guaranteed solution would be to just fire-and-forget a request on a separate thread of sorts.

in either case, i’m happy to provide guidance and overall design, if you feel like you are up to tackling this. if not, it’s something we are interested in and will certainly get to eventually. in the meantime, i’d recommend setting up an interval poll of our odata json service, which: 1) serves rows most-recently-first, and 2) has a $top parameter to limit result count, and so should be fairly well suited for checking for fresh data.

Hi Clint, thanks for taking a minute to respond.

For our use case, we would like to have a publisher hook fired for each form submission so that we can process it into our own custom format. It doesn't need to be real time, although that is a nice-to-have feature. Aggregate seems to error on the side of sending duplicates if necessary to avoid missing some submissions (docs). That has worked fine for our needs so far.

I appreciate your suggestion and will try the odata poll to learn more of how ODK Central works. I'll have a play around with it.

yeah—i would like to shoot for reliable single-delivery under some kind of pubsub model with an internal queueing system if at all possible. sending spurious duplicates seems fraught.