Repository navigation
fix: replace personal and merchant data in sample payloads - #82
Merged
Merged
Conversation
Some samples held real-looking emails, names, phone numbers, IPs, merchant and store identifiers, access tokens and Authorization headers. They are published to samples.hookdeck.com and shown on the Inspect vendor pages. Replace them with reserved-domain and obviously fictional placeholders, rebuild Aimfox from its current published examples, and drop signatures and content-length headers from any capture whose body 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.
Replaces personal and merchant data in the sample payloads published to samples.hookdeck.com and shown on the Inspect vendor pages. This changes 860 files: every JSON key is unchanged apart from the removed signature and
content-lengthheaders.yarn compilesucceeds andyarn testpasses 26 of 26.No real values appear in this PR text or the commit message.
What was replaced
userN@example.comJane Doe,jane-doe,https://example.com/avatar.png555digits203.0.113.x(RFC 5737)linkedin.com/in/example-profileAKIAIOSFODNN7EXAMPLEand a placeholder signatureAuthorizationheadersusername:passwordin base64,Bearer example-tokenexample.comEvery webmail address is gone, including all those in the known list (revenuecat, paysafe, azure-devops, resend, gitlab, authgear, cin7-core, uppromote, textus, hubspot, certn, github, bitbucket). Mailgun IPs and the BigCommerce store hash and test credentials are also replaced.
Aimfox: all 17 samples are rebuilt from Aimfox's current official examples (retrieved 2026-11-05), with identity fields replaced. See review item 1.
Captures changed
Captures are files with no
sourcekey, and 219 changed. When a body changed, its signature and stalecontent-lengthwent too, so no capture keeps a signature that no longer matches.merchantAccountCode,NAME1/NAME2, Basicauthorization, a phone number. EachhmacSignatureremovedstore_id, store hash inproducer,username/passwordheadersaccount_id,uuid, gravatar links, commit authors and emailsname, ordertoken,organization_id. Signature removednode_id, avatar, emails, and the login inside URLs.x-hub-signature*removedx-gitlab-tokencardholder_name.paddle-signatureremovedip.p_signatureremovedmerchant_id, business name, website, emails, phones.paypal-transmission-sigremovedtitle, emails, phones,meta.host, company and user ids, Basicauthorizationclient_ip,user_uuid. Placeholder signature removed2023-01real-store group:x-shopify-shop-domainin all 68; store URLs,vendor,shop_ownerand person names where present. The 10 with a changed body lostx-shopify-hmac-sha256; the other 58 changed only a header, so their HMAC still holdsaccount_name, hosted invoice, payment and buy links.stripe-signatureremovedCaptures I checked and left unchanged: WooCommerce (store host is local or a placeholder, signatures intact), Vapi (already sanitized), Formstack, Cronofy, Monday and Checkout.
Doc-sourced samples changed
623 files in 133 providers. Their
sourcemetadata is unchanged but they now differ from the vendor docs in the replaced values. Where a body changed, 11 signatures went too: Treezorobject_payload_signature(9), BVNK (1) and Veriff (1).Providers and file counts
360dialog (1), 8x8 (1), adyen (2), aftership (1), agentmail (10), aiprise (3), aircall (1), airwallex (2), attentive (9), auth0 (3), authgear (6), azure-devops (18), azure-event-grid (2), bigcommerce (3), bird (7), bitdefender (1), boldsign (4), box (1), brevo (1), bvnk (1), cal-com (1), castle (1), certn (1), checkout (1), cin7-core (15), clickup (1), community (4), connecteam (2), coterie (1), currents (1), dentally (1), document360 (1), doordash-drive (1), dub (4), envoy (13), factorial (1), folk (1), fountain (2), fusionauth (27), github (6), gitlab (5), goody (8), green-api (1), guesty (3), heroku (3), hibob (1), hitpay (12), honeybadger (3), humaans (1), incident-io (13), kolide (2), kombo (1), kustomer (2), launchdarkly (1), learnupon (12), lettermint (1), linear (1), linq (19), lokalise (2), mailersend (1), mailgun (6), mailtrap (1), micetribe (1), middesk (4), missive (1), modern-treasury (6), motive (1), nash (1), nitrosend (1), nium (3), nylas (2), oncehub (1), onelogin (1), opsgenie (12), partnero (1), paysafe (9), payt (11), paytabs (1), picqer (1), pipedrive (2), planetscale (4), polytomic (1), postmark (3), qonto (1), razorpay (6), recharge (16), recruitee (4), resend (14), revenuecat (9), rewardful (1), ringcentral (7), rocketlane (1), scalekit (11), segment (1), semaphore (1), sendgrid (1), sentry (2), shippo (1), slack (7), smile (1), snipcart (2), socure (7), solidgate (1), spacelift (1), sparkpost (23), square (6), statsig (1), storyblok (22), storylane (1), strapi (5), stream (9), supabase-auth-hooks (3), surge (9), telnyx (14), textus (1), thinkific (15), travtus (1), treezor (9), unipile (1), unit (1), uphold (1), uppromote (7), velt (1), veriff (1), waha (4), walmart (1), webflow (2), wistia (3), wiza (1), workable (4), zendesk (24), zoho-sign (1), zoom (29)
For a person to review
first.last@emails at 7 non-reserved domains (4 have MX records), LinkedIn-stylepublic_identifiers and pictures underaimfox.com/linkedin-profile/. I couldn't tell whether they are invented, so I kept the event structure and non-identity fields and replaced the identity fields. These samples no longer match upstream byte for byte. Someone may want to raise this with Aimfox.x-shopify-shop-domain: shop.myshopify.com) is unchanged, so its HMACs stay valid. It still has 4 emails at non-reserved domains (email,customer.email,customer_email,email_address), plus phones, addresses and names. I treated these as Shopify's synthetic data because they repeat across API versions and some match known fixture values, but I didn't confirm them against Shopify's docs.name,first_name,usernameand similar fields look like vendor examples, but nobody has checked each one.cus_/sub_ids, HubSpotobjectId,vidand owner ids, and Monday, PayPal and Commerce Layer resource ids. They need the account's API access to resolve, so I left them.body.hashwas kept. I treated it as a hash of the event data rather than a signature, but didn't verify what it covers.media_idandexpclaims, expired in 2020), UpholdshareToken(jtiandurlclaims, no expiry) and FusionAuthjwt.refreshevent.token(no email claim). The FusionAuthevent.original, which has an email claim, was replaced.detail.name,event.actor.name,event.comment.author.name, andevent.previousinorganization.name_changed. They look like placeholders or organization names. The 24detail.emailvalues were a Cloudflare email mask scraped from the docs and are nowuser@example.com.noreply@. They were matched by rule, not read one by one.namenext to a real email may now read "Jane Doe".Rotate if still in use
These secrets were public, and this PR doesn't change that: Adyen and Pipedrive Basic
authorizationheaders, the GitLabx-gitlab-token, BigCommerceusername/password, and the HubSpotprofile-token.Git history: not rewritten, your decision
The old values stay in public history: 209 commits on 4 branches (
main,master,feat/scrapfly-may-2026,claude/zealous-mccarthy-zricp2), 0 tags, 73 PRs and 24 forks. A rewrite would involve:git filter-repo --replace-textwith the private old-to-new map on a fresh mirror clone, then force-pushing every branch. The map holds the real values, so it isn't in this repo.refs/pull/*and cached commit views, which a force-push can't remove. Purging them needs a GitHub Support sensitive-data request.A rewrite reduces exposure but can't undo it, so rotating the credentials above matters either way.
🤖 Generated with Claude Code