Skip to content

Commit 6c91c2e

Browse files
authored
Merge pull request #1 from workos-inc/feature/webhooks-validation-route
Add Webhooks Validation route
2 parents 41461f7 + 6337609 commit 6c91c2e

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

python-flask-directory-sync-example/app.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os
2-
from flask import (Flask, render_template, url_for)
2+
from flask import (Flask, render_template, request, Response)
33
import workos
4+
from workos import client as workos_client
45

56
DEBUG = False
67
app = Flask(__name__)
@@ -15,12 +16,28 @@ def home():
1516

1617
@app.route('/users')
1718
def directory_users():
18-
users = workos.client.directory_sync.list_users(directory=directory_id)
19+
users = workos_client.directory_sync.list_users(directory=directory_id)
1920
return render_template('users.html', users=users)
2021

2122

2223
@app.route('/groups')
2324
def directory_groups():
24-
groups = workos.client.directory_sync.list_groups(directory=directory_id)
25+
groups = workos_client.directory_sync.list_groups(directory=directory_id)
2526

2627
return render_template('groups.html', groups=groups)
28+
29+
@app.route('/webhooks', methods=['POST'])
30+
def webhooks():
31+
payload = request.get_data()
32+
sig_header = request.headers['WorkOS-Signature']
33+
34+
response = workos_client.webhooks.verify_event(
35+
payload = payload,
36+
sig_header = sig_header,
37+
secret = os.getenv('WEBHOOKS_SECRET')
38+
)
39+
# Validate the response is successful
40+
print(response)
41+
42+
# Return a 200 to prevent retries based on validation
43+
return Response(status=200)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11

22
Flask>=1.1.2
33
workos>=0.3.2
4+
python-dotenv

0 commit comments

Comments
 (0)