[object Object]

← back to Secrets Manager

routes: add NPH (Mac2 + Kamatera) to STRIPE_SECRET_KEY + STRIPE_PUBLISHABLE_KEY fan-out

e14bedea1439f7fdd5fc79cf1b16ba7eb9afd30a · 2026-05-06 14:32:16 -0700 · SteveStudio2

NPH joins site-factory, lawyer-directory, professional-directory, and the 3
home-history sites on the same live Stripe account fan-out. Marketplace differentiation
remains via application_fee_amount + Stripe Connect destination accounts, not
account-level isolation. Sync ran clean: 122 destination entries written.

(Includes accumulated additions to routes since baseline 05d62f1 — Brave, MOONSHOT,
CF, multiple Stripe variants, Vercel, Purelymail, GoDaddy, Browserbase, Anthropic,
OpenAI, Gemini, Shopify, Resend, restricted-key, DPLA, Gemini-Ralph, ElevenLabs,
Google-Maps, LinkedIn x2, NPH-Google-OAuth x2, GEORGE_AUTH — all already in master
and routed through prior add invocations; this is just the catchup commit.)

Files touched

Diff

commit e14bedea1439f7fdd5fc79cf1b16ba7eb9afd30a
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Wed May 6 14:32:16 2026 -0700

    routes: add NPH (Mac2 + Kamatera) to STRIPE_SECRET_KEY + STRIPE_PUBLISHABLE_KEY fan-out
    
    NPH joins site-factory, lawyer-directory, professional-directory, and the 3
    home-history sites on the same live Stripe account fan-out. Marketplace differentiation
    remains via application_fee_amount + Stripe Connect destination accounts, not
    account-level isolation. Sync ran clean: 122 destination entries written.
    
    (Includes accumulated additions to routes since baseline 05d62f1 — Brave, MOONSHOT,
    CF, multiple Stripe variants, Vercel, Purelymail, GoDaddy, Browserbase, Anthropic,
    OpenAI, Gemini, Shopify, Resend, restricted-key, DPLA, Gemini-Ralph, ElevenLabs,
    Google-Maps, LinkedIn x2, NPH-Google-OAuth x2, GEORGE_AUTH — all already in master
    and routed through prior add invocations; this is just the catchup commit.)
---
 routes.json | 269 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 266 insertions(+), 3 deletions(-)

diff --git a/routes.json b/routes.json
index 21a68a3..64ca0e7 100644
--- a/routes.json
+++ b/routes.json
@@ -1,6 +1,47 @@
 {
   "_comment": "Per-secret routing table. Each entry: master + extra destinations. Master is implicit at ~/Projects/secrets-manager/.env + ~/Desktop/site-factory.env.",
   "services": {
+    "GOOGLE_PLACES_API_KEY": {
+      "label": "Google Places API Key",
+      "verify": {
+        "method": "GET",
+        "url": "https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input=Tito%27s+Tacos+Culver+City&inputtype=textquery&fields=place_id&key=__VALUE__",
+        "auth": "querystring"
+      },
+      "destinations": [
+        {
+          "type": "project",
+          "path": "~/Projects/restaurant-directory/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/professional-directory/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/animals/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/lawyer-directory-builder/.env"
+        }
+      ]
+    },
+    "BRAVE_SEARCH_API_KEY": {
+      "label": "Brave Search API (Web)",
+      "verify": {
+        "method": "GET",
+        "url": "https://api.search.brave.com/res/v1/web/search?q=test&count=1",
+        "auth": "header",
+        "headerName": "X-Subscription-Token"
+      },
+      "destinations": [
+        {
+          "type": "project",
+          "path": "~/Projects/_ventura-recon/.env"
+        }
+      ]
+    },
     "MOONSHOT_API_KEY": {
       "label": "Moonshot AI / Kimi K2 API Key",
       "verify": {
@@ -72,6 +113,16 @@
         {
           "type": "project",
           "path": "~/Projects/professional-directory/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/NationalPaperHangers/.env"
+        },
+        {
+          "type": "project",
+          "host": "45.61.58.125",
+          "user": "root",
+          "path": "/root/Projects/NationalPaperHangers/.env"
         }
       ]
     },
@@ -97,6 +148,16 @@
         {
           "type": "project",
           "path": "~/Projects/professional-directory/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/NationalPaperHangers/.env"
+        },
+        {
+          "type": "project",
+          "host": "45.61.58.125",
+          "user": "root",
+          "path": "/root/Projects/NationalPaperHangers/.env"
         }
       ]
     },
@@ -157,14 +218,30 @@
       "label": "PurelyMail API Token",
       "verify": {
         "method": "POST",
-        "url": "https://purelymail.com/api/v0/checkAccount",
-        "auth": "bearer",
-        "body": "{}"
+        "url": "https://purelymail.com/api/v0/listDomains",
+        "auth": "header",
+        "headerName": "Purelymail-Api-Token",
+        "body": "{}",
+        "bodyMustContain": "^\\s*\\{\\s*\"type\"\\s*:\\s*\"success\"",
+        "bodyMustNotContain": "\"type\"\\s*:\\s*\"error\""
       },
       "destinations": [
         {
           "type": "project",
           "path": "~/Projects/site-factory/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/ventura-corridor/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/purelymail-mcp/.env"
+        },
+        {
+          "type": "mcp",
+          "server": "purelymail",
+          "key": "PURELYMAIL_API_TOKEN"
         }
       ]
     },
@@ -427,6 +504,188 @@
           "path": "~/Projects/jill-website/.env"
         }
       ]
+    },
+    "LINKEDIN_CLIENT_ID": {
+      "label": "LinkedIn OAuth Client ID — \"For Claude - 5-6-26\" app, bound to Designer Wallcoverings Page",
+      "_note": "No verify endpoint — LinkedIn requires the ID+SECRET pair to validate, and the CLI verifies one key at a time. Manual probe via POST /oauth/v2/accessToken with a fake code expects 'invalid_request: authorization code not found' = creds OK.",
+      "destinations": [
+        {
+          "type": "project",
+          "path": "~/Projects/NationalPaperHangers/.env"
+        },
+        {
+          "type": "remote",
+          "host": "root@45.61.58.125",
+          "path": "/root/Projects/NationalPaperHangers/.env"
+        }
+      ]
+    },
+    "LINKEDIN_CLIENT_SECRET": {
+      "label": "LinkedIn OAuth Client Secret — \"For Claude - 5-6-26\" app, bound to Designer Wallcoverings Page",
+      "destinations": [
+        {
+          "type": "project",
+          "path": "~/Projects/NationalPaperHangers/.env"
+        },
+        {
+          "type": "remote",
+          "host": "root@45.61.58.125",
+          "path": "/root/Projects/NationalPaperHangers/.env"
+        }
+      ]
+    },
+    "NPH_GOOGLE_OAUTH_CLIENT_ID": {
+      "label": "Google OAuth Client ID — buyer sign-in on National Paper Hangers",
+      "destinations": [
+        {
+          "type": "project",
+          "path": "~/Projects/NationalPaperHangers/.env"
+        },
+        {
+          "type": "remote",
+          "host": "root@45.61.58.125",
+          "path": "/root/Projects/NationalPaperHangers/.env"
+        }
+      ]
+    },
+    "NPH_GOOGLE_OAUTH_CLIENT_SECRET": {
+      "label": "Google OAuth Client Secret — buyer sign-in on National Paper Hangers",
+      "destinations": [
+        {
+          "type": "project",
+          "path": "~/Projects/NationalPaperHangers/.env"
+        },
+        {
+          "type": "remote",
+          "host": "root@45.61.58.125",
+          "path": "/root/Projects/NationalPaperHangers/.env"
+        }
+      ]
+    },
+    "GEORGE_AUTH": {
+      "label": "George Gmail Basic Auth (DW microsite leads)",
+      "destinations": [
+        {
+          "type": "project",
+          "path": "~/Projects/1900swallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/1920swallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/1950swallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/agedwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/apartmentwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/architecturalwallcoverings/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/blockprintedwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/embroideredwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/glitterwalls/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/greenwallcoverings/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/handcraftedwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/madagascarwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/micawallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/museumwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/mylarwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/naturalwallcoverings/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/pastelwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/raffiawalls/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/recycledwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/restorationwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/retrowalls/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/saloonwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/screenprintedwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/selfadhesivewallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/silkwallcoverings/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/silkwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/stringwallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/suedewallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/textilewallpaper/.env"
+        },
+        {
+          "type": "project",
+          "path": "~/Projects/vinylwallpaper/.env"
+        }
+      ]
     }
   },
   "leak_patterns": [
@@ -434,6 +693,10 @@
       "name": "stripe-live-secret",
       "regex": "sk_live_[A-Za-z0-9]{20,}"
     },
+    {
+      "name": "purelymail-token",
+      "regex": "PURELYMAIL_API_TOKEN\\s*=\\s*[A-Za-z0-9_-]{20,}"
+    },
     {
       "name": "stripe-test-secret",
       "regex": "sk_test_[A-Za-z0-9]{20,}"

← 05d62f1 [overnight] pre-debate baseline  ·  back to Secrets Manager  ·  fix: envEscape() so #-containing values keep quotes through f2bf483 →