Skip to content

Add cronofy provider with captured Push Notification samples - #33

Merged
leggetter merged 1 commit into
mainfrom
claude/cronofy-samples-k2j5ko
Aug 27, 2026
Merged

Add cronofy provider with captured Push Notification samples#33
leggetter merged 1 commit into
mainfrom
claude/cronofy-samples-k2j5ko

Conversation

@leggetter

Copy link
Copy Markdown
Collaborator

Adds a cronofy provider covering all five notification types Cronofy's developer dashboard can trigger. All five are real captures from a live notification channel pointed at a Hookdeck source on 2026-08-25, so the version is marked sourced_via: "capture".

Read this first: two deliberate edits to the captured data

Neither sample set is byte-identical to what Cronofy sent. Both edits are intentional and worth agreeing on before merge.

1. cronofy-hmac-sha256 is REDACTED. The captured value is a valid signature over the captured body under a real client secret. Publishing the pair would let anyone replay a correctly signed request at any endpoint verifying with that secret. This matches the convention already used for other captured providers' signature headers (see providers/scrapfly).

2. callback_url is replaced with an example.com placeholder. The captured value was a live ingest endpoint. content-length has been recomputed from the edited body so each sample stays internally consistent rather than declaring a length that no longer matches.

If you'd rather have byte-exact captures and accept both consequences, say so and I'll regenerate.

What's included

Topic Source
change capture
verification capture
profile_disconnected capture
conferencing_profile_disconnected capture
profile_initial_sync_completed capture

A sixth documented type, gdpr_requested, is not included. The dashboard has no trigger button for it, and it is omitted rather than transcribed from the docs.

Config choices

topic_identifier is notification.type. Cronofy sends no custom identifying header beyond Cronofy-HMAC-SHA256 - there is no x-cronofy-event-type or equivalent - so a header-based topic was not an option. Dotted body paths are already used by several providers in the repo.

latest_version is latest. Push notification payloads carry no version field and the docs URLs are unversioned, which is the README's stated condition for latest.

Header handling

Only headers Cronofy itself sends are kept:

content-length
content-type
cronofy-hmac-sha256   (REDACTED)
user-agent

Seven capture-path headers were dropped: x-vercel-forwarded-for, x-vercel-id, x-vercel-ja4-digest, x-vercel-proxied-for, x-vercel-proxy-signature, x-vercel-proxy-signature-ts, x-hookdeck-original-ip. The generator uses an allowlist rather than a denylist, so anything the capture path adds in future is dropped by default.

Verification

yarn compile passes. The compiled entry in public/providers.json reads:

"cronofy": {
  "label": "Cronofy",
  "latest_version": "latest",
  "versions": ["latest"],
  "provenance": { "latest": { "sourced_via": "capture", "sourced_on": "2026-08-25" } }
}

Context

Captured during the run-through for the Cronofy tutorial in hookdeck/website (branch claude/cronofy-webhooks-tutorial-k2j5ko), which uses the same deliveries.

🤖 Generated with Claude Code

https://claude.ai/code/session_01N3a91JneFov5QaEUrcXXog


Generated by Claude Code

Adds a cronofy provider entry covering all five notification types that
Cronofy's developer dashboard can trigger: change, verification,
profile_disconnected, conferencing_profile_disconnected and
profile_initial_sync_completed.

All five are real captures, taken from a live Cronofy notification
channel pointed at a Hookdeck source on 2026-08-25, so the version is
marked sourced_via "capture".

A sixth type exists, gdpr_requested, but the dashboard has no trigger
button for it and it is not included rather than being transcribed from
the docs.

topic_identifier is notification.type, since Cronofy carries the type in
the body rather than a header. latest_version is "latest": push
notification payloads carry no version field and the docs URLs are
unversioned.

Two deliberate edits to the captured data:

- cronofy-hmac-sha256 is REDACTED, matching the convention used for
  other captured providers' signature headers. The captured value is a
  valid signature over the captured body under a real client secret, so
  publishing it would let anyone replay a correctly signed request at an
  endpoint verifying with that secret.
- callback_url is replaced with an example.com placeholder, because the
  captured value was a live ingest endpoint. content-length has been
  recomputed from the edited body so each sample stays internally
  consistent.

Console and Vercel infrastructure headers from the capture path were
stripped; only headers Cronofy itself sends are kept.

Verified with yarn compile.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N3a91JneFov5QaEUrcXXog
@vercel

vercel Bot commented Aug 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
webhook-samples Ready Ready Preview Aug 26, 2026 8:12am

Request Review

@leggetter
leggetter marked this pull request as ready for review August 26, 2026 12:58
@leggetter
leggetter requested a lite review from Copilot August 26, 2026 12:58

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new cronofy provider to the webhook samples catalog, including captured examples for five Cronofy push notification types and provider metadata/provenance so they can be surfaced/compiled alongside existing providers.

Changes:

  • Added providers/cronofy/index.json defining latest_version, topic_identifier, and capture provenance (sourced_via: capture).
  • Added five captured webhook sample payloads under providers/cronofy/latest/ for the supported notification types.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
providers/cronofy/index.json Registers the Cronofy provider, configures topic identification, and records capture provenance.
providers/cronofy/latest/change.json Captured sample for change notifications.
providers/cronofy/latest/verification.json Captured sample for verification notifications.
providers/cronofy/latest/profile_disconnected.json Captured sample for profile_disconnected notifications.
providers/cronofy/latest/conferencing_profile_disconnected.json Captured sample for conferencing_profile_disconnected notifications.
providers/cronofy/latest/profile_initial_sync_completed.json Captured sample for profile_initial_sync_completed notifications.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread providers/cronofy/index.json
@leggetter
leggetter merged commit ac6e1db into main Aug 27, 2026
4 checks passed
@leggetter
leggetter deleted the claude/cronofy-samples-k2j5ko branch August 27, 2026 10:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants