How to use Snyk webhooks with Zapier
How to use Snyk webhooks with Zapier
Last updated
Was this helpful?
Was this helpful?
POST /api/v1/org/{orgId}/webhooks HTTP/2
> Host: snyk.io
> Authorization: token {authToken}
> Content-Type: application/json
| {
| "url": "https://hooks.zapier.com/hooks/catch/9002958/oemlgkz/",
| "secret": "my-secret-string"
| }< HTTP/2 200
< Content-Type: application/json
| {
| "id": "{webhookId}",
| "url": "https://hooks.zapier.com/hooks/catch/9002958/oemlgkz/",
| }> POST /api/v1/org/{orgId}/webhooks/{webhookId}/ping HTTP/2
> Host: snyk.io
> Authorization: token {authToken}
> Content-Type: application/jsonconst crypto = require('crypto');
const secret = "my-secret-string";
function makeSignature(body, secret) {
const hmac = crypto.createHmac('sha256', secret);
hmac.update(body, 'utf8');
return `sha256=${hmac.digest('hex')}`;
}
try {
const body = JSON.parse(inputData.body);
const { project, org, group, newIssues } = body;
output = {
isValid: inputData.signature === makeSignature(inputData.body, secret)
};
} catch (err) {
output = { isValid: false, err: err.message };
}try {
output = JSON.parse(inputData.body);
} catch (err) {
output = { err: err.message };
}function formatIssue({ pkgName, pkgVersions, issueData }) {
return `
<a href="${issueData.url}">${issueData.title}</a><br/>
Vulnerability in ${pkgName} (${pkgVersions.join(', ')}). ${issueData.severity} severity.
`;
}
try {
const { newIssues, ...body } = JSON.parse(inputData.body);
output = { ...body, newIssues: newIssues.map(formatIssue) };
} catch (err) {
output = { newIssues: [], err: err.message };
}