# Webhook pipedream validation

**URL:** <https://devforum.zoom.us/t/webhook-pipedream-validation/82453>\
**Category:** API and Webhooks\
**Tags:** webhooks\
**Created:** [February 1, 2023, 9:42am UTC](https://devforum.zoom.us/t/webhook-pipedream-validation/82453 "2023-02-01T09:42:07Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![nverley](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/nverley/32/30007_2.png) [@nverley](https://devforum.zoom.us/u/nverley)\
**Post date:** [February 1, 2023, 9:42am UTC](https://devforum.zoom.us/t/webhook-pipedream-validation/82453/1 "2023-02-01T09:42:07Z")

</div>

**Description**  
I have build a S2SOAuth Zoom App which trigger webhooks when a call log or a call recording is completed. The endpoint of the webhook is hosted on pipedream but the webhook endpoint validation failed without any reason or error.

**Error?**  
There is no error displayed except the message displayed below the URL : URL validation failed. Try again later.

**How To Reproduce**

1. the S2SOAuth Zoom App pointing to the pipedream endpoint  

2. The pipedream code which validates the CRC

```auto
import crypto from "crypto";
export default defineComponent({
  async run({ steps, $ }) {
    if (steps.trigger.event.body.event === "endpoint.url_validation"){
        // Webhook endpoint validation
        const hashForValidate = crypto.createHmac("sha256", process.env.CDR_SECRET_TOKEN).update(steps.trigger.event.body.payload.plainToken).digest("hex");
        await $.respond({
          status: 200,
          body : {
            plainToken : steps.trigger.event.body.payload.plainToken,
            encryptedToken : hashForValidate
          }
        });
        $.flow.exit("Endpoint validated");
      }
  },
})

```

1. The log displayed from pipedream side after the http response sent to Zoom  
 ![Capture d’écran 2023-02-01 à 08.54.10](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/9/4/94f9437ea65264e062346084251fa293d950f5dc.png)

I have tried different ways to send back the HTTP response but the process always failed without any error/message. Any idea/advise on how I can solve my issue ?

---

<div class="post-metadata">

**Author:** ![rarev](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/rarev/32/38939_2.png) [@rarev](https://devforum.zoom.us/u/rarev)\
**Post date:** [February 1, 2023, 5:22pm UTC](https://devforum.zoom.us/t/webhook-pipedream-validation/82453/2 "2023-02-01T17:22:29Z")

</div>

Hi @nverley

Could you construct your response object the like we have in our [sample code](https://github.com/zoom/webhook-sample-node.js/blob/master/index.js#L35).

Let me know if this works!

---

<div class="post-metadata">

**Author:** ![enrodroid](https://avatars.discourse-cdn.com/v4/letter/e/838e76/32.png) [@enrodroid](https://devforum.zoom.us/u/enrodroid)\
**Post date:** [February 1, 2023, 8:49pm UTC](https://devforum.zoom.us/t/webhook-pipedream-validation/82453/4 "2023-02-01T20:49:04Z")

</div>

Hi there Ron,  
I’m having a similar problem with my integrations; could you please help me figure out what the issue is?  
Take a look…  
This is the code that resolves the response for the CRC:

 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/9/f/9f36e4e93d9ff431ab03cd282dd8df3770d13b8e.png)

This is my JWT Zoom app:

 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/8/0/80ea0f87000029cab9cc4d94623074405aaa4052.png)

This is the response using Postman as a reference.

 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/8/4/84d31c042081a7b868f9563ca4854266a98a145f.png)

What am I doing wrong? Thanks!

---

<div class="post-metadata">

**Author:** ![nverley](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/nverley/32/30007_2.png) [@nverley](https://devforum.zoom.us/u/nverley)\
**Post date:** [February 2, 2023, 8:16am UTC](https://devforum.zoom.us/t/webhook-pipedream-validation/82453/5 "2023-02-02T08:16:14Z")

</div>

Hi Ron

Finally, I have re built my Zoom application and it works now.

Thank you for your time

Nicolas

---

<div class="post-metadata">

**Author:** ![enrodroid](https://avatars.discourse-cdn.com/v4/letter/e/838e76/32.png) [@enrodroid](https://devforum.zoom.us/u/enrodroid)\
**Post date:** [February 2, 2023, 2:00pm UTC](https://devforum.zoom.us/t/webhook-pipedream-validation/82453/6 "2023-02-02T14:00:32Z")

</div>

Hi there Nicolas,  
Could you please provide some details on how you were able to do it?

Thanks!

---

<div class="post-metadata">

**Author:** ![nverley](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/nverley/32/30007_2.png) [@nverley](https://devforum.zoom.us/u/nverley)\
**Post date:** [February 2, 2023, 2:32pm UTC](https://devforum.zoom.us/t/webhook-pipedream-validation/82453/7 "2023-02-02T14:32:22Z")

</div>

I haven’t changed my code but the deleting and the re creating of my Zoom App has solved my issue…

---

<div class="post-metadata">

**Author:** ![rarev](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/rarev/32/38939_2.png) [@rarev](https://devforum.zoom.us/u/rarev)\
**Post date:** [February 3, 2023, 10:39pm UTC](https://devforum.zoom.us/t/webhook-pipedream-validation/82453/8 "2023-02-03T22:39:49Z")

</div>

Hi @enrodroid,

Does your encrypted token match what is sent in the header? Also I don’t see that you’ve set that status to 200, it’s commented out.

---

<div class="post-metadata">

**Author:** ![enrodroid](https://avatars.discourse-cdn.com/v4/letter/e/838e76/32.png) [@enrodroid](https://devforum.zoom.us/u/enrodroid)\
**Post date:** [February 3, 2023, 11:08pm UTC](https://devforum.zoom.us/t/webhook-pipedream-validation/82453/9 "2023-02-03T23:08:52Z")

</div>

Thank you very much for your response @rarev  
The problem is that I’m not sure what Zoom CRC is expecting as a response.  
As you can see in the Postman screenshot, the status of the response is 200, and the response was:  
{  
“plainToken”: “[the same i receive from zoom]”,  
“encryptedToken”: “[the string generated using plainToken + secretToken in Hex format]”  
}  
That response was generated by the above C# code, but if I uncomment the commented lines, this is what I get…  
{  
“message”: {  
“plainToken”: “[the same i receive from zoom]”,  
“encryptedToken”: “[the string generated using plainToken + secretToken]”  
},  
“status”: 200  
}  
Either way, I still can’t validate the request, as seen in the screenshot of my JWT Zoom app.  
I also tried creating a new server-to-server app, and the same thing happened.

I appreciate your response!  
Enrique

---

<div class="post-metadata">

**Author:** ![rarev](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/rarev/32/38939_2.png) [@rarev](https://devforum.zoom.us/u/rarev)\
**Post date:** [February 6, 2023, 6:36pm UTC](https://devforum.zoom.us/t/webhook-pipedream-validation/82453/10 "2023-02-06T18:36:56Z")

</div>

Hey @enrodroid,

Is there a way in C# to log the request header and request body? That might be able to help narrow down the issue.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/1/614bdd549b610bbaa46ff934617683a02bdaa03c.png) [@system](https://devforum.zoom.us/u/system)\
**Post date:** [February 10, 2024, 10:13am UTC](https://devforum.zoom.us/t/webhook-pipedream-validation/82453/11 "2024-02-10T10:13:05Z")

</div>

Closed on February 10, 2024, 10:13am UTC

This topic was automatically closed 368 days after the last reply. New replies are no longer allowed.
