from flask import Flask, request, jsonify
app = Flask(__name__)
@app.post("/webhooks/altur/campaign-cycle")
def on_campaign_cycle_completed():
signature = request.headers.get("X-Altur-Signature")
if not is_valid_signature(SHARED_SECRET, request.get_json(), signature):
return jsonify(error="invalid signature"), 401
event = request.get_json()
data = event["data"]
campaign = data["campaign"]
snapshot_cycle_metrics(
campaign_id=campaign["id"],
iteration=data["cycle_iteration"],
next_at=data["next_cycle_at"],
)
if data["next_cycle_at"] is None and campaign["status"] != "finished":
alert_stalled_campaign(campaign["id"])
return "", 200