From c1f5b133f45f5e07c55c5f3f3d75ae9c097ac7cc Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 25 Aug 2026 20:25:48 +0000 Subject: [PATCH] Add cronofy provider with captured Push Notification samples 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 Claude-Session: https://claude.ai/code/session_01N3a91JneFov5QaEUrcXXog --- providers/cronofy/index.json | 13 ++++++++++++ providers/cronofy/latest/change.json | 21 +++++++++++++++++++ .../conferencing_profile_disconnected.json | 20 ++++++++++++++++++ .../cronofy/latest/profile_disconnected.json | 20 ++++++++++++++++++ .../profile_initial_sync_completed.json | 20 ++++++++++++++++++ providers/cronofy/latest/verification.json | 20 ++++++++++++++++++ 6 files changed, 114 insertions(+) create mode 100644 providers/cronofy/index.json create mode 100644 providers/cronofy/latest/change.json create mode 100644 providers/cronofy/latest/conferencing_profile_disconnected.json create mode 100644 providers/cronofy/latest/profile_disconnected.json create mode 100644 providers/cronofy/latest/profile_initial_sync_completed.json create mode 100644 providers/cronofy/latest/verification.json diff --git a/providers/cronofy/index.json b/providers/cronofy/index.json new file mode 100644 index 0000000..b3b25aa --- /dev/null +++ b/providers/cronofy/index.json @@ -0,0 +1,13 @@ +{ + "label": "Cronofy", + "configs": { + "latest_version": "latest", + "topic_identifier": "notification.type" + }, + "provenance": { + "latest": { + "sourced_via": "capture", + "sourced_on": "2026-08-25" + } + } +} diff --git a/providers/cronofy/latest/change.json b/providers/cronofy/latest/change.json new file mode 100644 index 0000000..70757f4 --- /dev/null +++ b/providers/cronofy/latest/change.json @@ -0,0 +1,21 @@ +{ + "headers": { + "content-type": "application/json; charset=utf-8", + "cronofy-hmac-sha256": "REDACTED", + "user-agent": "Cronofy (https://www.cronofy.com/support/)", + "content-length": "217" + }, + "body": { + "notification": { + "type": "change", + "changes_since": "2026-08-25T20:06:29Z" + }, + "channel": { + "channel_id": "chn_6a8df5c5944f9501621a3083", + "callback_url": "https://example.com/cronofy", + "filters": {}, + "scheduling_conversations": {} + } + }, + "topic": "change" +} diff --git a/providers/cronofy/latest/conferencing_profile_disconnected.json b/providers/cronofy/latest/conferencing_profile_disconnected.json new file mode 100644 index 0000000..31ee0c7 --- /dev/null +++ b/providers/cronofy/latest/conferencing_profile_disconnected.json @@ -0,0 +1,20 @@ +{ + "headers": { + "content-type": "application/json; charset=utf-8", + "cronofy-hmac-sha256": "REDACTED", + "user-agent": "Cronofy (https://www.cronofy.com/support/)", + "content-length": "205" + }, + "body": { + "notification": { + "type": "conferencing_profile_disconnected" + }, + "channel": { + "channel_id": "chn_6a8df5c5944f9501621a3083", + "callback_url": "https://example.com/cronofy", + "filters": {}, + "scheduling_conversations": {} + } + }, + "topic": "conferencing_profile_disconnected" +} diff --git a/providers/cronofy/latest/profile_disconnected.json b/providers/cronofy/latest/profile_disconnected.json new file mode 100644 index 0000000..f346fda --- /dev/null +++ b/providers/cronofy/latest/profile_disconnected.json @@ -0,0 +1,20 @@ +{ + "headers": { + "content-type": "application/json; charset=utf-8", + "cronofy-hmac-sha256": "REDACTED", + "user-agent": "Cronofy (https://www.cronofy.com/support/)", + "content-length": "192" + }, + "body": { + "notification": { + "type": "profile_disconnected" + }, + "channel": { + "channel_id": "chn_6a8df5c5944f9501621a3083", + "callback_url": "https://example.com/cronofy", + "filters": {}, + "scheduling_conversations": {} + } + }, + "topic": "profile_disconnected" +} diff --git a/providers/cronofy/latest/profile_initial_sync_completed.json b/providers/cronofy/latest/profile_initial_sync_completed.json new file mode 100644 index 0000000..abc29d7 --- /dev/null +++ b/providers/cronofy/latest/profile_initial_sync_completed.json @@ -0,0 +1,20 @@ +{ + "headers": { + "content-type": "application/json; charset=utf-8", + "cronofy-hmac-sha256": "REDACTED", + "user-agent": "Cronofy (https://www.cronofy.com/support/)", + "content-length": "202" + }, + "body": { + "notification": { + "type": "profile_initial_sync_completed" + }, + "channel": { + "channel_id": "chn_6a8df5c5944f9501621a3083", + "callback_url": "https://example.com/cronofy", + "filters": {}, + "scheduling_conversations": {} + } + }, + "topic": "profile_initial_sync_completed" +} diff --git a/providers/cronofy/latest/verification.json b/providers/cronofy/latest/verification.json new file mode 100644 index 0000000..e6c0b08 --- /dev/null +++ b/providers/cronofy/latest/verification.json @@ -0,0 +1,20 @@ +{ + "headers": { + "content-type": "application/json; charset=utf-8", + "cronofy-hmac-sha256": "REDACTED", + "user-agent": "Cronofy (https://www.cronofy.com/support/)", + "content-length": "184" + }, + "body": { + "notification": { + "type": "verification" + }, + "channel": { + "channel_id": "chn_6a8df5c5944f9501621a3083", + "callback_url": "https://example.com/cronofy", + "filters": {}, + "scheduling_conversations": {} + } + }, + "topic": "verification" +}