feat: add 57 doc-sourced samples for aftership, circleci, docker-hub, grafana, snipcart, sparkpost + checkout Identity Verification - #58
Merged
Conversation
…ity Verification New providers (140 -> 146), each from hookdeck/webhook-registry samples-doc/ at fdbef66, byte-identical to a fresh regeneration of that tree: - aftership 2026-07/ 1 (tracking_update) topic_identifier: event - circleci latest/ 2 (job-/workflow-completed) topic_identifier: circleci-event-type - docker-hub latest/ 1 (push) topic_identifier: none (no carrier) - grafana latest/ 1 (firing) topic_identifier: status - snipcart latest/ 3 topic_identifier: eventName - sparkpost latest/ 27 (array-envelope bodies) topic_identifier: [].msys.*.type checkout/1.0.25: 22 Identity Verification doc examples (face_authentication_*, id_document_verification_*), additive only. index.json untouched: the version now mixes captures and doc examples, so it carries no provenance. No existing file changed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The sample-payload stage of the add-a-source pipeline for nine newly registered providers. The registry rows are on hookdeck/webhook-registry
mainatfdbef66, and the samples come from that commit'ssamples-doc/.57 doc-sourced samples. 140 → 146 providers. No existing file changed.
git statusshows 6 new provider directories and 22 new files underproviders/checkout/1.0.25/, and nothing else.topic_identifier2026-07/eventlatest/circleci-event-type(header)latest/latest/statuslatest/eventNamelatest/[].msys.*.type1.0.25/(existing)type(existing, unchanged)Checklist
yarn compileproviders.jsonhas 146 providers (140 + 6); 0 topic collisions in any provider/versionyarn testresolveTopicagainst every new sampletopic== resolved value. docker-hub 0/1 and sparkpost 0/27 don't resolve, which is expected (see below). Nothing mis-resolves.type.scripts/<provider>/harnessscripts/directory for any of these seven providers.topic_identifierlowercased and equal to the registry'sdiscriminator_path_lookupcircleci-event-typeequals the lookup. Every other identifier is a body path and equals its lookup exactly.samples-doc/into a scratch tree and diffharvest_{aftership,circleci,docker_hub,grafana,snipcart,sparkpost,checkout}.pyrun against an emptyWEBHOOK_SAMPLES_DOC, withWEBHOOK_SAMPLES_DIRset to a clean clone of this repo'smain)verify.pyFAIL (0)provenancedocs/2026-09-28for each of the six new versions. None for checkout1.0.25, which is now mixed; it publishes asunknown.Version directories (rules 2 and 3)
2026-07/. AfterShip versions the webhook payload itself. Each webhook URL picks aYYYY-MMpayload version, which arrives as theas-webhook-versionheader ("included in every webhook request to indicate the payload version", from the Tracking webhook-versioning page). The specifications page the body was read from is served from docs branchproduction/2026-07, and its header sample showsAs-Webhook-Version: 2026-07. The harvester refuses to write if either of those moves. The header isn't synthesized into the file, because a page provides a body, not a delivery.latest/. None of the three documents a payload-version field. circleci'sv1=incircleci-signatureis the version of the signing scheme, not of the payload. docker-hub'sdhi_metadata.*.schema_versionversions that one object (the object-version row in rule 3). sparkpost's/api/v1/is the REST API path of the samples endpoint, not a webhook-contract version.latest/. Thev3indocs.snipcart.com/v3/is the platform generation. It isn't a payload version, and the vendor says fields are added "without notice or a new version". The literalv3/prefix on subscriptioneventNamevalues is part of the event name, and none of the three exported events carries it. This follows the precedent of nylas, which is underlatest/here although its docs are served under/docs/v3/.latest/. This is a deviation, stated. The default body carries"version": "1", documented as "Version of the payload structure", so rule 2's second source would make the directory1/. The registry filed it underlatest/. That follows the precedent of two providers already merged here with one observed payload version: gemini (version: "v1") and azure-event-grid (metadataVersion: "1"), both underlatest/. Grafana hard-codesVersion: "1"inwebhook.goand has never shipped another value. If maintainers would rather have1/, the change belongs in the registry harvester (sosamples-doc/and this repo keep agreeing), not here.1.0.25/(rule 7). The new bodies'version: "1.2.0"is an event-schema version, the checkout row of rule 3's table, not a directory.topic_identifierchoices (rules 4, 6 and 7)circleci-event-type, the header. It's the carrier CircleCI documents as the event type ("The type of event, (workflow-completed, job-completed, etc)"). The same value also appears at bodytypein all four published samples, buttypeis missing from the reference's top-level-keys table, so the body field rests on examples alone. Each file carriescircleci-event-typeequal to its topic, and I checked that it equals bodytypein both files. This is the only header synthesized beyondcontent-type.circleci-signatureis per-delivery and isn't included.null, which facebook, gocardless, statsig and strava already use). Docker Hub has one trigger, a push. The payload has no event-type key and the page documents no request headers, so there is nothing to resolve. The file's explicittopic: "push"names it. A capture throughrequestReceiver.tswould be filed asuntitled-<md5>, which is correct for a provider with no carrier.status(firing|resolved). Grafana has no event types, andstatusis the only documented field that tells one notification from another.resolvedhas no published body, so onlyfiringships.[].msys.*.type, kept as the accurate path. A delivery is a JSON array (a batch) of{"msys": {"<event_class>": {..., "type": "<event>"}}}. The class key varies (message_event,track_event, …), so the path needs a root-array segment and a wildcard.resolveTopicsupports neither, so all 27 files resolve to nothing: no mis-resolution, justuntitled-on a future capture. Every file carries an explicittopic, and I checked thatbody[0].msys.<class>.type == topicin all 27. I didn't flatten it totype, which would resolve nowhere and read as a decision (rule 6).event, snipcarteventName: top-level body keys that resolve flat.What's not included, and why
edd_reviseandtracking_pending_timeare in the event table but have no body on any Tracking page. The Returns, Warranty and Shipping products are separate surfaces with their own envelopes and aren't pooled in.notenames the one left out.pingis excluded because its type is undocumented and only a community log shows it.dhi_metadataexamples are excerpts that open with a literal....resolved(no published body), the Test notification (afiringnotification, not a type of its own), and Custom Payload (template output)....or"...": "..."), lack the documented envelope (order.withdrawal.createdhas nocreatedOn), or are content-only fragments. One repair was made: theshippingrates.fetchexample as published is invalid JSON with one trailing comma. The comma was deleted, and nothing was added, removed or retyped. The file'ssource.noterecords this.resultslist wrapped in a one-element array, because deliveries are batches with noresultskey. The composition is recorded in eachsource.note.relay_messagebelongs to Relay Webhooks, a separate product.digital_card_reprovisionedandpayouts_disabledhave per-event pages whose example body carries a differenttype, so they're declined rather than filed under a topic their own discriminator contradicts.Headers
Only
content-type: application/jsonis synthesized, pluscircleci-event-typefor circleci. This is the repo convention for doc samples described in the README. For docker-hub and sparkpost the registry records that the delivery Content-Type value isn't stated on any vendor page, so for those two it's convention, not a vendor claim. No signature headers are included.These are transcriptions of documentation. As with every doc-sourced entry, a capture would replace them, and
provenance: docskeeps all six providers on the capture queue.🤖 Generated with Claude Code