Baffled on Assignment 503

Hi Robert,

I’m somewhat baffled by this assignment. I’m trying to create my first-ever webhook. My understanding of webhooks is that they are a way for a server (in this example, Zoom) to call a client on the server’s own initiative. My understanding is that I’m trying to register with Zoom via their API a webhook that lives at Apiant. This will provide Apiant with information about what’s going on with my Zoom account, for example, if a Zoom meeting I’ve scheduled has started, Zoom will call this Apiant-dwelling webhook, so that perhaps an Apiant automation will send an e-mail or do some other task based on that meeting start.

Can you confirm my understanding of all that?

On top of that, can you help me with the following?

  1. Because Zoom uses OAuth 2.0 authentication and not API Key authentication, it seems that I should not use the Service Credentials module in my Register Zoom Webhook assembly. Is that correct?
  2. I need to create my own Zoom app at, and then use the OAuth information from that process to insert it into an empty.keys file – is that right? If that’s the case, why doesn’t the empty.keys file have a blank spot for Zoom information?
  3. Can you explain the Zoom documentation a bit more to me? I’m looking at It looks like this is documentation for a Zoom API which Apiant will call – but why do we supply an event type at that time? Is this because I can only register a webhook that listens for one event type at a time with them?

Now that I type this all out, I’m pretty sure that the answer to my question 3) is “yes”, but 1) and 2) still seem unclear to me.

Thanks so much for your help; I’m enjoying this process and learning about this technology, which is new to me.

Happy New Year!

Hi Ben,

Your understanding of how webhooks function is correct.

#1. That is correct. Zoom is already integrated in dev.apiant. See this “create meeting” Zoom action assembly, which uses an older deprecated version of the OAuth Transaction module: fcffb492033a41498c640c107fb60f18

#2. No, Zoom is already integrated in dev.apiant, so you don’t need to obtain API keys or build an app assembly:


Always check the catalog before beginning to integrate an API to see if it has already been integrated or not.

The empty.keys file is just a template file that makes it easy to import your new OAuth API keys into the system. It can also serve as a master backup and documentation where you place all your integrated OAuth API keys and the account credentials used to obtain them.

#3. Most webhook API’s let you create a webhook per account and per event type. It is not clear from their documentation if they use a webhook per event type or if one webhook must support multiple event types. Part of the complexity of integrating webhooks is to determine the API’s webhook functionality and then determine how to map that into APIANT webhook functionality. See the webhook documentation starting at page 88:

Sometimes you just have to play around with the API to learn its capabilities when the documentation isn’t clear.

For the purpose of training, let’s just build the webhook trigger in a manner where you send it a single event type for meeting. I don’t see a “meeting created” event type listed. So it looks like “meeting_started” is the next easiest one to test.

For training, the goal is to build a “new meeting started (instant)” trigger that uses the API to register a webhook, build an automation that uses the webhook trigger, then demonstrate that the automation works ok.

In an earlier message I provided references to existing assemblies that should be similar to what is needed.

I don’t want you to feel overwhelmed, this is supposed to be a rather easy assignment.

You can hand draw a simple diagram of the trigger flow before building it and let me review, if you are not clear on how to go about building it.

Or maybe you can experiment with just the webhook module first. Maybe examine the “Webhook” app and its “new webhook received” instant trigger. Build an automation with it and use curl to send it a test webhook. Then play with the webhook module in the assembly editor again using curl to send test data. All you need to do is “curl WEBHOOK_URL?param1=value1” from your local machine to send a test value via curl.

Let me know what ends up helping to get you up to speed with webhooks, so I can incorporate any needed changes into the training. As it is the training assumes familiarity with webhooks.

Happy New Year!


All right, here is my diagram. Really I copied it from what we’ve already done in the Assembly Editor.

I have nominally played around with the Webhook trigger in an automation. I got my automation, called Foo Webhook Automation, to send me an e-mail when I call the webhook URL from my browser.

Yep, that is the correct approach!