Settings → Migration

Migration inventory

Owner-only view of the existing MessyAPI platform and how each part is represented in the new experience. Owner-only access will be enforced once sign-in is connected.

owner only

Capability migration tracker

Nothing is marked Migrated until equivalent behaviour is verified.
CapabilityEndpointCurrent implementationNew representationVerificationStatus
Capability API (~80 operations)/api/v1/*Next.js route → withApiAuth → lib/servicesCatalog, docs, playground (proxy)Live-probedInventoried
Repair / Map / Guard demos/api/v1/demo/*Keyless, IP rate-limited, unmeteredHomepage interactive demo (live)Live-probedConnected
/process orchestrator/api/v1/processlib/operations/processWorkflow builder (generates + runs /process)Code-inspectedInventoried
Health/api/healthDB + config checkStatus page, dashboard API statusLive-probedConnected
OpenAPI spec/docs/openapi.jsonlib/openapi.tsCatalog + API reference (snapshot) + live countsLive-probedConnected
MCP endpoint/mcpapp/mcp/route.ts + lib/zapinner/*MCP onboarding + live tool listingLive-probedConnected
Dashboard sign-inSupabase Auth (existing project)@supabase/ssr, getUser()Sign-in screen — integration pendingCode-inspectedInventoried
API keysdashboard server actionsSHA-256 hashed, messy_live_/messy_test_Keys UI (development data)Code-inspectedInventoried
Usage/api/v1/usageusage_counters, usage_eventsUsage UI (development data)Code-inspectedInventoried
Request inspector/api/v1/requests/{id}api_requests tableRequests UI (development data)Code-inspectedInventoried
Async jobs/api/v1/jobsPostgres queue + 1-min cronJobs UI (development data)Code-inspectedInventoried
Projects / pipelines / recipes/api/v1/pipelines/{id}/runprojects, pipelines, pipeline_versions, project_variables, recipesProjects UI (development data)Code-inspectedInventoried
BillingStripe checkout/portal + webhooklib/stripe.ts, stripe_events, reconcile cronBilling UI (display only)Code-inspectedInventoried
RapidAPIsame /api/v1 routeslib/rapidapi.ts proxy-secret detectionDocs + admin status onlyCode-inspectedInventoried
SDKs / CLI@zapinner/sdk, zapinner (PyPI), @zapinner/clipackages/*DocsCode-inspectedInventoried
Referrals programme/api/referral/claimreferral_* tables + cronNot rebuilt — owner decisionCode-inspectedInventoried
Compliance admin/dashboard/admin/compliancecompliance_* tablesNot rebuilt — owner decisionCode-inspectedInventoried
Customer webhooks—Does not existShown as PlannedCode-inspectedNot inventoried

Orchestration endpoints

EndpointPurposeInputsMeteringUniqueOverlap with /processPlan
/api/v1/processChain record-stream operations over one working set.data[], steps[{operation, options, against}]Σ records_in × op weightPrimary model. 25 chainable ops (spec enum).—Primary UX target
/api/v1/analyzeRun several suite ops (normalize, match, dedupe, anomalies, score, explain…) independently over one payload.dataset(s) + operations[] (≤12)Sum of ops that actually ran, de-duplicatedPartial-failure isolation; suite ops not in /process enum.High — different op setPreserve
/api/v1/pipelineAd-hoc multi-step pipeline (per spec).See specPer specRequires verificationHighPreserve
/api/v1/pipelines/{id}/runRun a saved, versioned project pipeline.pipeline id + dataPer stepSaved versions + project variablesMediumPreserve (not in spec)
/api/v1/workflows/runLimited-preview orchestration layer, feature-flagged per account.See specPer specFeature-flag gatedHighPreserve
/api/v1/executeLimited-preview orchestration, feature-flagged per account.See specPer specFeature-flag gatedHighPreserve

Known consumers and per-endpoint tests: /process, /pipeline and pipelines/run have HTTP tests (process, api-pipeline-http, pipeline-http); consumer list needs request-log analysis.

Spec vs code — 100 published operations, 10 code-only route groups

Every published path exists in code. The difference is routes intentionally kept out of the public spec:

/api/v1/whoamiAccount introspection; used by SDK/CLI. Undocumented in spec.customer-facing · add to spec?
/api/v1/requests/{requestId}Request inspector lookup; undocumented in spec.customer-facing · add to spec?
/api/v1/pipelines/{id}/runSaved-pipeline runner (Projects); undocumented in spec.customer-facing · add to spec?
/api/v1/demo/{repair,map,guard,reconcile,recovery,revenue-leak,verify}Keyless, IP rate-limited, unmetered marketing demos.internal
/api/v1/rapidapi/diagnosticsRapidAPI integration diagnostics.internal
/api/health/live, /api/health/readyLiveness / readiness probes.internal
/api/cron/* (drain-jobs, health-alerts, reconcile-billing, referral-rewards)Vercel cron, secret-authenticated.internal
/api/stripe/webhookInbound Stripe webhook (signature verified).internal
/api/admin/compliance/exportAdmin compliance evidence export.internal
/api/public/founding-promo, /api/referral/claimPromotions / referral programme.internal

Backend items deliberately not changed in Phase 1

Implement server-side API key scope enforcementPlanned

Scopes are documented but not enforced. Not shown as a security control.

Evaluate defense-in-depth database RLSUnder review

RLS disabled on all ~45 tables; tenant isolation is enforced in withApiAuth + organizationId scoping, covered by tenant-isolation and tenant-scope-guard tests. Risk: backend uses direct pg/Drizzle connection; policies must not block it.

Customer webhooksPlanned

No customer webhook system exists. Only Stripe and internal alert webhooks.

Dashboard auth integration with existing Supabase projectBlocked

Needs the existing project's public URL + publishable key and allowed redirect URLs.

Read-only dashboard data API on existing backendBlocked

Org-scoped endpoints for keys list, usage series, requests, jobs, billing state.

Current messyapi.com content inventory

Homepage + Repair demo/ImproveRebuilt; demo still calls real keyless endpoint.
Repair / Map / Guard/ (flagship section)PreserveFirst-class in nav and homepage.
APIs / capabilities/ + docsImproveSearchable catalog from live spec.
Playground/playgroundImproveDashboard playground over spec; keyless demos public.
Pricing/pricingPreserveSame plans, same numbers.
Dashboard/dashboard/*ImproveRebuilt UI; data integration pending.
Docs (≈25 pages)/docs/*ImproveRebuilt around current implementation.
API Reference/docs/api-referenceImproveGenerated from spec.
OpenAPI / Postman downloads/docs/openapi.json, /docs/postman.jsonPreserveLinked to existing production files; URLs unchanged.
Changelog/docs/changelogMergePublic changelog page; owner to supply entries.
Status/statusImproveLive health probe.
Support / ContactfooterImproveContact page; support address needs owner confirmation.
Blog (3 posts)/blog/*Owner decisionNot rebuilt in Phase 1 — keep live on existing site.
Resources (≈20 guides)/resources/*Owner decisionSEO content; keep URLs live or redirect 1:1.
Compare (3)/compare/*Owner decisionNot rebuilt in Phase 1.
Recipes (11)/recipes/*MergeRecipes concept in dashboard Projects; public pages keep URLs.
Solutions (6) + SEO landers (6)/solutions/*, /crm-data-cleaning…MergeUse Cases page; keep URLs or redirect 1:1.
Case studies/case-studies/*Owner decisionMust verify claims before republishing.
Refer & Earn/referOwner decisionProgramme still live on backend.
Privacy / Terms / Acceptable Use/privacy, /terms, /acceptable-usePreserveLegal text NOT rewritten; pages point to authoritative versions.
Cookies/cookiesPreserveSame as above.
Security/securityImproveImplemented vs planned clearly separated.

Legacy branding — customer-facing (replace candidates)

  • Footer support address support@zapinner.com (live site)
  • Plan feature copy “Access to every MessyAPI API” (lib/plans.ts)
  • Homepage <title> “MessyAPI — Data Utility API for Developers” (repo snapshot)
  • OG image alt text: blog, compare, recipe pages
  • Docs: Postman page title, JS SDK ZapinnerError mention, Python SDK copy, CLI page, Vercel integration page, /analyze copy
  • Download filenames zapinner-openapi.json, zapinner.postman_collection.json
  • MCP docs config using https://zapinner.com/mcp
  • Apple touch icon zapinner-compass.png
  • Compliance export filename zapinner-soc2-readiness-*.zip

Technical compatibility identifiers (preserve)

  • Header X-Zapinner-Key (and legacy X-Zapiit-Key)
  • Key prefixes messy_live_ / messy_test_
  • npm @zapinner/sdk, @zapinner/mcp, @zapinner/cli; PyPI zapinner
  • Env var ZAPINNER_API_KEY used by MCP bridge / SDKs
  • MCP server name “zapinner” in serverInfo and client configs
  • Cookie key zapinner.cookie-consent
  • Env vars NEXT_PUBLIC_Zapinner_SUPABASE_*
  • Health payload service name (live now reports “messyapi”)