From 4e94ef913cfb050aaf35a217f226da6cc09b9e11 Mon Sep 17 00:00:00 2001 From: Alex Harrison Date: Mon, 5 Oct 2026 10:39:05 -0600 Subject: [PATCH] Webhooks: athlete.deleted on an account deletion, and on the coach lane Co-Authored-By: Claude Opus 5.5 (1M context) Ci-From: linux Ci-Session: 50b30f5b-9019-44dd-a4b5-0cc78b011706 --- guides/coach-api.mdx | 2 +- guides/webhooks.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/guides/coach-api.mdx b/guides/coach-api.mdx index e73a319..96eb79b 100644 --- a/guides/coach-api.mdx +++ b/guides/coach-api.mdx @@ -377,7 +377,7 @@ curl -X POST https://api.saturday.fit/v1/coach/webhooks \ | `POST /v1/coach/webhooks/{id}/disable` | disable (stop delivery, keep the endpoint) | | `POST /v1/coach/webhooks/{id}/enable` | re-enable | -**Event types:** `concern.detected` and `athlete.needs_attention`, which an empty `events` list subscribes you to (`["*"]` subscribes to every coach event), plus `coach.message.sent`, which is opt-in and fires only for Enterprise coaches, mirroring messages the coach sends from the portal. An unknown event name fails registration with `400`. The URL must be public `https` on the standard port; internal, metadata, and loopback URLs are rejected at registration. +**Event types:** `concern.detected` and `athlete.needs_attention`, which an empty `events` list subscribes you to (`["*"]` subscribes to every coach event), plus `coach.message.sent`, which is opt-in and fires only for Enterprise coaches, mirroring messages the coach sends from the portal. `athlete.deleted` (`data`: `athlete_uid` only) fires when an athlete you coached deletes their Saturday account; it goes to every endpoint subscribed to any of these events, so a system holding what they said about the athlete can delete it, and carries one `X-Saturday-Event-ID` per athlete. An unknown event name fails registration with `400`. The URL must be public `https` on the standard port; internal, metadata, and loopback URLs are rejected at registration. Each delivery is a `POST` carrying the event name in `X-Saturday-Event-Type` and an HMAC-SHA256 signature in `X-Saturday-Signature` (`t=,v1=`) computed with the secret returned at registration. See [Webhooks](/guides/webhooks) for verifying it. The body is the event, with `data` shaped per event type: diff --git a/guides/webhooks.mdx b/guides/webhooks.mdx index 0fc77a1..f868954 100644 --- a/guides/webhooks.mdx +++ b/guides/webhooks.mdx @@ -74,7 +74,7 @@ These event types are emitted today: | `athlete.created` | A new athlete is created | | `athlete.updated` | An athlete profile is modified | | `athlete.profile_completed` | An athlete's fueling profile crosses from incomplete to complete, which is the cue that this athlete is now eligible for exact prescriptions | -| `athlete.deleted` | An athlete is deleted | +| `athlete.deleted` | An athlete is deleted through the API, or deletes their Saturday account | | `activity.created` | A new activity is created | | `activity.updated` | An activity is modified | | `activity.deleted` | An activity is deleted |