what it does 2026-08-07 22:45

Next.js 15.5.8 · dub/web

Here is what your application can actually do.

801

ways in — pages people can open, endpoints anything can call, and actions your forms trigger.

Worth checking
0
Config-dependent
973
Import hops read
3
Scan time
10.5s
Read this first This was read from your code without running it. A path chosen at runtime is invisible to it, so the absence of a finding is not proof that nothing is there.
If you don't read code — the nine words this report uses
Way in
A door into your application: a page someone opens, an address other software calls, or a form that submits.
Endpoint
A door for other programs rather than people. Anything that knows the address can knock — which is why who-is-asking checks matter.
GET · POST · DELETE
The kinds of knock: asking to see something, sending something in, asking to remove something.
Table
Where one kind of your data lives — users, projects, invoices. Losing one loses that data.
Outside service
Someone else's system your app relies on: Stripe moves the money, Resend sends the email. You cannot fix their outages.
Middleware
Code that runs before every request — often the doorman that checks who is asking.
Checks who is asking
The moment code verifies identity or permission before acting. Its absence before a deletion is what we flag.
Setting
A value that lives outside the code, like an API key. The same code can behave differently on your machine and in production.
file:line
An address in your code, like app/api/route.ts:12. Paste it into your AI assistant and ask.

What it can do

by ways in
  • Destroys something 84
  • Moves money 14
  • Changes who can do what 5
  • Looks something up 643
  • Saves or changes something 464
  • Talks to another company's service 108
  • Emails someone 87
Why these three come first Deleting data, moving money and changing who has access are the ones that cost real money or real trust when they go wrong. They sort above everything else on every screen. A filled mark means consequential — it does not mean broken.

What it depends on

15 of 71 · widest reach first

Every table and outside service this application touches, and how much of it would notice if one changed.

See them as a map →  ·  or in depth →

This is the question behind "I'm afraid to touch it" Open any of these to see exactly what breaks if you rename it, change its shape, or lose it. The list is complete for names written literally in the code — anything reached through a name chosen at runtime is marked, because we cannot follow it.

56 more are reached by fewer behaviours and are not listed here.

Nothing looked wrong

Nothing looked wrong. Every behaviour that deletes data or moves money also establishes who is asking.
What this does and does not mean This is the correct result for a well-built application. It is a statement about what we could read, not a guarantee — a guard reached through code we could not follow and a missing guard look identical from here.
Middleware Middleware runs on 1 path pattern. Findings on paths it does not cover are stronger.

Every way in

9 groups · ranked by consequence

Grouped, and ranked by what a behaviour can do rather than by how big it is — a twelve-line delete endpoint outranks a four-hundred-line settings page.

API · cron 117
POST /api/cron/cleanup/e2e-tests Endpoint
app/(ee)/api/cron/cleanup/e2e-tests/route.ts:19
+24
POST /api/cron/cleanup/unenrolled-partners Endpoint
app/(ee)/api/cron/cleanup/unenrolled-partners/route.ts:14
+12
POST /api/cron/cleanup/demo-embed-partners Endpoint
app/(ee)/api/cron/cleanup/demo-embed-partners/route.ts:13
+11
POST /api/cron/workspaces/delete Endpoint
app/(ee)/api/cron/workspaces/delete/route.ts:13
+14
POST /api/cron/partners/delete Endpoint
app/(ee)/api/cron/partners/delete/route.ts:19
+12
POST /api/cron/import/tapfiliate Endpoint
app/(ee)/api/cron/import/tapfiliate/route.ts:13
+21
POST /api/cron/partners/merge-accounts Endpoint
app/(ee)/api/cron/partners/merge-accounts/route.ts:32
+16
POST /api/cron/import/tolt Endpoint
app/(ee)/api/cron/import/tolt/route.ts:14
+17
POST /api/cron/groups/remap-default-links Endpoint
app/(ee)/api/cron/groups/remap-default-links/route.ts:46
+15
POST /api/cron/groups/create-default-links Endpoint
app/(ee)/api/cron/groups/create-default-links/route.ts:42
+14
POST /api/cron/import/csv Endpoint
app/(ee)/api/cron/import/csv/route.ts:58
+18
POST /api/cron/import/bitly Endpoint
app/(ee)/api/cron/import/bitly/route.ts:14
+8
POST /api/cron/import/rebrandly Endpoint
app/(ee)/api/cron/import/rebrandly/route.ts:11
+8
POST /api/cron/payouts/process Endpoint
app/(ee)/api/cron/payouts/process/route.ts:27
+8
POST /api/cron/import/partnerstack Endpoint
app/(ee)/api/cron/import/partnerstack/route.ts:15
+14
POST /api/cron/rewards/process Endpoint
app/(ee)/api/cron/rewards/process/route.ts:20
+4
POST /api/cron/usage Endpoint
app/(ee)/api/cron/usage/route.ts:11
+13
POST /api/cron/domains/transfer Endpoint
app/(ee)/api/cron/domains/transfer/route.ts:20
+3
GET /api/cron/queue/retry Endpoint
app/(ee)/api/cron/queue/retry/route.ts:22
+2
POST /api/cron/cleanup/link-retention Endpoint
app/(ee)/api/cron/cleanup/link-retention/route.ts:16
+2
POST /api/cron/import/rewardful Endpoint
app/(ee)/api/cron/import/rewardful/route.ts:13
+20
POST /api/cron/import/firstpromoter Endpoint
app/(ee)/api/cron/import/firstpromoter/route.ts:13
+19
POST /api/cron/partners/ban Endpoint
app/(ee)/api/cron/partners/ban/route.ts:22
+9
POST /api/cron/cleanup/expired-tokens Endpoint
app/(ee)/api/cron/cleanup/expired-tokens/route.ts:15
POST /api/cron/import/short Endpoint
app/(ee)/api/cron/import/short/route.ts:11
+7
POST /api/cron/commissions/referrals/queue Endpoint
app/(ee)/api/cron/commissions/referrals/queue/route.ts:18
+6
GET /api/cron/payouts/force-withdrawals Endpoint
app/(ee)/api/cron/payouts/force-withdrawals/route.ts:22
+6
POST /api/cron/groups/remap-discount-codes Endpoint
app/(ee)/api/cron/groups/remap-discount-codes/route.ts:21
+7
POST /api/cron/bounties/sync-social-metrics Endpoint
app/(ee)/api/cron/bounties/sync-social-metrics/route.ts:26
+4
POST /api/cron/aggregate-clicks/process Endpoint
app/(ee)/api/cron/aggregate-clicks/process/route.ts:41
+2
POST /api/cron/framer/backfill-leads-batch Endpoint
app/(ee)/api/cron/framer/backfill-leads-batch/route.ts:56
+12
POST /api/cron/network/calculate-program-similarities Endpoint
app/(ee)/api/cron/network/calculate-program-similarities/route.ts:30
+3
GET /api/cron/webhooks/sync-click-workspaces Endpoint
app/(ee)/api/cron/webhooks/sync-click-workspaces/route.ts:13
+2
POST /api/cron/links/delete Endpoint
app/(ee)/api/cron/links/delete/route.ts:12
+1
GET /api/cron/streams/update-click-stats Endpoint
app/(ee)/api/cron/streams/update-click-stats/route.ts:320
GET /api/cron/domains/verify Endpoint
app/(ee)/api/cron/domains/verify/route.ts:19
+9
POST /api/cron/partner-program-summary/process Endpoint
app/(ee)/api/cron/partner-program-summary/process/route.ts:49
+8
POST /api/cron/programs/reactivate Endpoint
app/(ee)/api/cron/programs/reactivate/route.ts:15
+8
GET /api/cron/streams/send-link-clicked-webhooks Endpoint
app/(ee)/api/cron/streams/send-link-clicked-webhooks/route.ts:32
+3
POST /api/cron/links/[linkId]/complete-tests Endpoint
app/(ee)/api/cron/links/[linkId]/complete-tests/route.ts:8
+6
POST /api/cron/partner-platforms Endpoint
app/(ee)/api/cron/partner-platforms/route.ts:26
+1
GET /api/cron/payouts/aggregate-due-commissions Endpoint
app/(ee)/api/cron/payouts/aggregate-due-commissions/route.ts:21
+6
POST /api/cron/shopify/order-paid Endpoint
app/(ee)/api/cron/shopify/order-paid/route.ts:15
+6
POST /api/cron/partners/auto-reject Endpoint
app/(ee)/api/cron/partners/auto-reject/route.ts:24
+5
POST /api/cron/fraud/release-hold-commissions Endpoint
app/(ee)/api/cron/fraud/release-hold-commissions/route.ts:15
+4
POST /api/cron/payouts/send-stripe-payout Endpoint
app/(ee)/api/cron/payouts/send-stripe-payout/route.ts:19
+4
POST /api/cron/payouts/send-tremendous-payout Endpoint
app/(ee)/api/cron/payouts/send-tremendous-payout/route.ts:14
+4
POST /api/cron/programs/deactivate Endpoint
app/(ee)/api/cron/programs/deactivate/route.ts:17
+4
POST /api/cron/fx-rates Endpoint
app/(ee)/api/cron/fx-rates/route.ts:11
POST /api/cron/payouts/charge-succeeded Endpoint
app/(ee)/api/cron/payouts/charge-succeeded/route.ts:24
+3
POST /api/cron/bounties/upsert-draft-submissions Endpoint
app/(ee)/api/cron/bounties/upsert-draft-submissions/route.ts:29
+2
POST /api/cron/campaigns/broadcast Endpoint
app/(ee)/api/cron/campaigns/broadcast/route.ts:40
+2
POST /api/cron/commissions/referrals/backfill Endpoint
app/(ee)/api/cron/commissions/referrals/backfill/route.ts:18
+2
GET /api/cron/fraud/summary Endpoint
app/(ee)/api/cron/fraud/summary/route.ts:24
+2
POST /api/cron/partners/deactivate Endpoint
app/(ee)/api/cron/partners/deactivate/route.ts:17
+3
GET /api/cron/payouts/reminders/partners Endpoint
app/(ee)/api/cron/payouts/reminders/partners/route.ts:21
+2
GET /api/cron/pending-applications-summary Endpoint
app/(ee)/api/cron/pending-applications-summary/route.ts:28
+2
GET /api/cron/trial-emails Endpoint
app/(ee)/api/cron/trial-emails/route.ts:57
+2
POST /api/cron/trial-emails Endpoint
app/(ee)/api/cron/trial-emails/route.ts:60
+2
POST /api/cron/bounties/notify-partners Endpoint
app/(ee)/api/cron/bounties/notify-partners/route.ts:34
+1
POST /api/cron/cleanup/expired-fraud-groups Endpoint
app/(ee)/api/cron/cleanup/expired-fraud-groups/route.ts:15
+1
POST /api/cron/discount-codes/create/queue-batches Endpoint
app/(ee)/api/cron/discount-codes/create/queue-batches/route.ts:20
+1
POST /api/cron/domains/update Endpoint
app/(ee)/api/cron/domains/update/route.ts:21
+1
POST /api/cron/fraud/release-all-hold-commissions Endpoint
app/(ee)/api/cron/fraud/release-all-hold-commissions/route.ts:13
+1
POST /api/cron/groups/update-default-links Endpoint
app/(ee)/api/cron/groups/update-default-links/route.ts:42
+1
POST /api/cron/partner-platforms/youtube Endpoint
app/(ee)/api/cron/partner-platforms/youtube/route.ts:24
+1
POST /api/cron/program-application-reminder Endpoint
app/(ee)/api/cron/program-application-reminder/route.ts:11
+1
POST /api/cron/sitemaps/import Endpoint
app/(ee)/api/cron/sitemaps/import/route.ts:20
+11
POST /api/cron/aggregate-clicks Endpoint
app/(ee)/api/cron/aggregate-clicks/route.ts:13
GET /api/cron/bounties/queue-sync-social-metrics Endpoint
app/(ee)/api/cron/bounties/queue-sync-social-metrics/route.ts:11
POST /api/cron/cleanup/orphaned-rewards Endpoint
app/(ee)/api/cron/cleanup/orphaned-rewards/route.ts:13
+1
POST /api/cron/disposable-emails Endpoint
app/(ee)/api/cron/disposable-emails/route.ts:10
GET /api/cron/domains/renewal-payments Endpoint
app/(ee)/api/cron/domains/renewal-payments/route.ts:25
+1
POST /api/cron/groups/sync-utm Endpoint
app/(ee)/api/cron/groups/sync-utm/route.ts:34
GET /api/cron/partner-program-summary Endpoint
app/(ee)/api/cron/partner-program-summary/route.ts:15
POST /api/cron/payouts/balance-available Endpoint
app/(ee)/api/cron/payouts/balance-available/route.ts:27
POST /api/cron/commissions/referrals/create Endpoint
app/(ee)/api/cron/commissions/referrals/create/route.ts:14
+9
POST /api/cron/payouts/process/updates Endpoint
app/(ee)/api/cron/payouts/process/updates/route.ts:23
GET / POST /api/cron/sitemaps/queue Endpoint
app/(ee)/api/cron/sitemaps/queue/route.ts:103
GET /api/cron/streams/update-partner-stats Endpoint
app/(ee)/api/cron/streams/update-partner-stats/route.ts:349
POST /api/cron/cleanup/declined-invites Endpoint
app/(ee)/api/cron/cleanup/declined-invites/route.ts:14
POST /api/cron/cleanup/rejected-applications Endpoint
app/(ee)/api/cron/cleanup/rejected-applications/route.ts:14
POST /api/cron/export/links Endpoint
app/(ee)/api/cron/export/links/route.ts:28
+8
POST /api/cron/invoices/retry-failed Endpoint
app/(ee)/api/cron/invoices/retry-failed/route.ts:15
GET /api/cron/streams/update-workspace-links-usage Endpoint
app/(ee)/api/cron/streams/update-workspace-links-usage/route.ts:310
+6
POST /api/cron/workflows/[workflowId] Endpoint
app/(ee)/api/cron/workflows/[workflowId]/route.ts:11
+6
POST /api/cron/partners/auto-approve Endpoint
app/(ee)/api/cron/partners/auto-approve/route.ts:19
+5
POST /api/cron/export/customers Endpoint
app/(ee)/api/cron/export/customers/route.ts:19
+4
POST /api/cron/export/payouts Endpoint
app/(ee)/api/cron/export/payouts/route.ts:22
+4
POST /api/cron/domains/renewal-succeeded Endpoint
app/(ee)/api/cron/domains/renewal-succeeded/route.ts:24
+3
GET /api/cron/email-domains/verify Endpoint
app/(ee)/api/cron/email-domains/verify/route.ts:14
+3
POST /api/cron/export/commissions Endpoint
app/(ee)/api/cron/export/commissions/route.ts:23
+3
POST /api/cron/export/events/partner Endpoint
app/(ee)/api/cron/export/events/partner/route.ts:39
+3
POST /api/cron/export/events/workspace Endpoint
app/(ee)/api/cron/export/events/workspace/route.ts:31
+2
POST /api/cron/partners/verify-country-change Endpoint
app/(ee)/api/cron/partners/verify-country-change/route.ts:21
+2
GET /api/cron/payouts/reminders/program-owners Endpoint
app/(ee)/api/cron/payouts/reminders/program-owners/route.ts:15
+2
POST /api/cron/discount-codes/create Endpoint
app/(ee)/api/cron/discount-codes/create/route.ts:17
+1
GET /api/cron/domains/renewal-reminders Endpoint
app/(ee)/api/cron/domains/renewal-reminders/route.ts:29
+1
POST /api/cron/export/partners Endpoint
app/(ee)/api/cron/export/partners/route.ts:23
+1
GET /api/cron/partner-platforms/website Endpoint
app/(ee)/api/cron/partner-platforms/website/route.ts:18
+1
POST /api/cron/email-domains/update Endpoint
app/(ee)/api/cron/email-domains/update/route.ts:15
POST /api/cron/payouts/payout-failed Endpoint
app/(ee)/api/cron/payouts/payout-failed/route.ts:22
POST /api/cron/payouts/payout-paid Endpoint
app/(ee)/api/cron/payouts/payout-paid/route.ts:22
GET /api/cron/trigger-backup Endpoint
app/(ee)/api/cron/trigger-backup/route.ts:9
POST /api/cron/welcome-user Endpoint
app/(ee)/api/cron/welcome-user/route.ts:19
POST /api/cron/discount-codes/disable Endpoint
app/(ee)/api/cron/discount-codes/disable/route.ts:18
POST /api/cron/links/invalidate-for-discounts Endpoint
app/(ee)/api/cron/links/invalidate-for-discounts/route.ts:23
POST /api/cron/links/invalidate-for-partners Endpoint
app/(ee)/api/cron/links/invalidate-for-partners/route.ts:15
POST /api/cron/messages/notify-partner Endpoint
app/(ee)/api/cron/messages/notify-partner/route.ts:24
POST /api/cron/messages/notify-program Endpoint
app/(ee)/api/cron/messages/notify-program/route.ts:24
GET /api/cron/trigger-withdrawal Endpoint
app/(ee)/api/cron/trigger-withdrawal/route.ts:12
POST /api/cron/send-batch-email Endpoint
app/(ee)/api/cron/send-batch-email/route.ts:38
POST /api/cron/fraud/summary Endpoint
app/(ee)/api/cron/fraud/summary/route.ts:164
POST /api/cron/payouts/aggregate-due-commissions Endpoint
app/(ee)/api/cron/payouts/aggregate-due-commissions/route.ts:282
POST /api/cron/payouts/force-withdrawals Endpoint
app/(ee)/api/cron/payouts/force-withdrawals/route.ts:108
POST /api/cron/payouts/reminders/partners Endpoint
app/(ee)/api/cron/payouts/reminders/partners/route.ts:213
POST /api/cron/pending-applications-summary Endpoint
app/(ee)/api/cron/pending-applications-summary/route.ts:282
API · stripe 8
POST /api/stripe/webhook Endpoint
app/(ee)/api/stripe/webhook/route.ts:30
+38
POST /api/stripe/integration/webhook Endpoint
app/(ee)/api/stripe/integration/webhook/route.ts:36
+25
PATCH /api/stripe/integration Endpoint
app/(ee)/api/stripe/integration/route.ts:18
+10
POST /api/stripe/connect/v2/webhook Endpoint
app/(ee)/api/stripe/connect/v2/webhook/route.ts:24
+8
POST /api/stripe/connect/webhook Endpoint
app/(ee)/api/stripe/connect/webhook/route.ts:24
+8
OPTIONS /api/stripe/integration Endpoint
app/(ee)/api/stripe/integration/route.ts:115
POST /api/stripe/integration/webhook/sandbox Endpoint
app/(ee)/api/stripe/integration/webhook/sandbox/route.ts:16
POST /api/stripe/integration/webhook/test Endpoint
app/(ee)/api/stripe/integration/webhook/test/route.ts:16
API · partners 26
PUT /api/partners/links/upsert Endpoint
app/(ee)/api/partners/links/upsert/route.ts:26
+19
POST /api/partners/links Endpoint
app/(ee)/api/partners/links/route.ts:70
+18
POST /api/partners Endpoint
app/(ee)/api/partners/route.ts:130
+24
GET /api/partners/analytics Endpoint
app/(ee)/api/partners/analytics/route.ts:18
+13
POST /api/partners/applications/reject Endpoint
app/(ee)/api/partners/applications/reject/route.ts:8
+13
POST /api/partners/deactivate Endpoint
app/(ee)/api/partners/deactivate/route.ts:13
+12
GET /api/partners/export Endpoint
app/(ee)/api/partners/export/route.ts:15
+7
POST /api/partners/ban Endpoint
app/(ee)/api/partners/ban/route.ts:12
+13
GET /api/partners/platforms/callback Endpoint
app/(ee)/api/partners/platforms/callback/route.ts:28
+2
POST /api/partners/applications/approve Endpoint
app/(ee)/api/partners/applications/approve/route.ts:9
+11
GET /api/partners/applications/history Endpoint
app/(ee)/api/partners/applications/history/route.ts:13
+9
GET /api/partners/[partnerId]/application-risks Endpoint
app/(ee)/api/partners/[partnerId]/application-risks/route.ts:8
+9
GET /api/partners/[partnerId]/cross-program-summary Endpoint
app/(ee)/api/partners/[partnerId]/cross-program-summary/route.ts:12
+8
GET /api/partners/[partnerId]/referral Endpoint
app/(ee)/api/partners/[partnerId]/referral/route.ts:10
+8
GET /api/partners/applications/analytics Endpoint
app/(ee)/api/partners/applications/analytics/route.ts:38
+7
GET /api/partners/applications/export Endpoint
app/(ee)/api/partners/applications/export/route.ts:24
+7
GET /api/partners/applications Endpoint
app/(ee)/api/partners/applications/route.ts:14
+7
GET /api/partners/applications/[applicationId] Endpoint
app/(ee)/api/partners/applications/[applicationId]/route.ts:8
+7
GET /api/partners/links Endpoint
app/(ee)/api/partners/links/route.ts:24
+7
GET /api/partners Endpoint
app/(ee)/api/partners/route.ts:37
+7
GET /api/partners/tags Endpoint
app/(ee)/api/partners/tags/route.ts:12
+7
GET /api/partners/[partnerId]/comments Endpoint
app/(ee)/api/partners/[partnerId]/comments/route.ts:9
+7
GET /api/partners/[partnerId] Endpoint
app/(ee)/api/partners/[partnerId]/route.ts:9
+7
GET /api/partners/count Endpoint
app/(ee)/api/partners/count/route.ts:26
+6
GET /api/partners/tags/count Endpoint
app/(ee)/api/partners/tags/count/route.ts:8
+6
GET /api/partners/[partnerId]/comments/count Endpoint
app/(ee)/api/partners/[partnerId]/comments/count/route.ts:7
+6
API · links 20
PUT /api/links/upsert Endpoint
app/api/links/upsert/route.ts:23
+18
POST /api/links Endpoint
app/api/links/route.ts:55
+17
POST /api/links/bulk Endpoint
app/api/links/bulk/route.ts:35
+22
PATCH /api/links/[linkId] Endpoint
app/api/links/[linkId]/route.ts:74
+16
DELETE /api/links/bulk Endpoint
app/api/links/bulk/route.ts:498
+14
POST /api/links/sync Endpoint
app/api/links/sync/route.ts:10
+9
DELETE /api/links/[linkId] Endpoint
app/api/links/[linkId]/route.ts:209
+13
PATCH /api/links/bulk Endpoint
app/api/links/bulk/route.ts:266
+19
GET /api/links/export Endpoint
app/api/links/export/route.ts:22
+13
POST /api/links/[linkId]/transfer Endpoint
app/api/links/[linkId]/transfer/route.ts:22
+11
GET /api/links Endpoint
app/api/links/route.ts:23
+13
GET /api/links/count Endpoint
app/api/links/count/route.ts:9
+11
GET /api/links/info Endpoint
app/api/links/info/route.ts:11
+10
GET /api/links/[linkId] Endpoint
app/api/links/[linkId]/route.ts:25
+10
GET /api/links/[linkId]/dashboard Endpoint
app/api/links/[linkId]/dashboard/route.ts:8
+8
GET /api/links/exists Endpoint
app/api/links/exists/route.ts:10
GET /api/links/random Endpoint
app/api/links/random/route.ts:9
GET /api/links/metatags Endpoint
app/api/links/metatags/route.ts:9
GET /api/links/iframeable Endpoint
app/api/links/iframeable/route.ts:12
PUT /api/links/[linkId] Endpoint
app/api/links/[linkId]/route.ts:206
API · partner-profile 54
POST /api/partner-profile/programs/[programId]/links Endpoint
app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:48
+17
PATCH /api/partner-profile/programs/[programId]/links/[linkId] Endpoint
app/(ee)/api/partner-profile/programs/[programId]/links/[linkId]/route.ts:16
+16
GET /api/partner-profile/programs/[programId]/events/export Endpoint
app/(ee)/api/partner-profile/programs/[programId]/events/export/route.ts:36
+12
DELETE /api/partner-profile/programs/[programId]/links/[linkId] Endpoint
app/(ee)/api/partner-profile/programs/[programId]/links/[linkId]/route.ts:159
+8
DELETE /api/partner-profile/invites Endpoint
app/(ee)/api/partner-profile/invites/route.ts:215
+5
GET /api/partner-profile/programs/[programId]/analytics/export Endpoint
app/(ee)/api/partner-profile/programs/[programId]/analytics/export/route.ts:25
+11
GET /api/partner-profile/programs/[programId]/analytics Endpoint
app/(ee)/api/partner-profile/programs/[programId]/analytics/route.ts:16
+11
GET /api/partner-profile/programs/[programId]/bounties/[bountyId]/social-content-stats Endpoint
app/(ee)/api/partner-profile/programs/[programId]/bounties/[bountyId]/social-content-stats/route.ts:16
+6
DELETE /api/partner-profile/postbacks/[postbackId] Endpoint
app/(ee)/api/partner-profile/postbacks/[postbackId]/route.ts:66
+5
DELETE /api/partner-profile/users Endpoint
app/(ee)/api/partner-profile/users/route.ts:140
+4
POST /api/partner-profile/invites/accept Endpoint
app/(ee)/api/partner-profile/invites/accept/route.ts:7
+4
POST /api/partner-profile/invites Endpoint
app/(ee)/api/partner-profile/invites/route.ts:46
+8
GET /api/partner-profile/programs/[programId]/activity-logs Endpoint
app/(ee)/api/partner-profile/programs/[programId]/activity-logs/route.ts:12
+7
GET /api/partner-profile/programs/[programId]/customers/[customerId] Endpoint
app/(ee)/api/partner-profile/programs/[programId]/customers/[customerId]/route.ts:20
+7
GET /api/partner-profile/programs/[programId]/earnings/count Endpoint
app/(ee)/api/partner-profile/programs/[programId]/earnings/count/route.ts:12
+7
GET /api/partner-profile/programs/[programId]/earnings Endpoint
app/(ee)/api/partner-profile/programs/[programId]/earnings/route.ts:8
+7
GET /api/partner-profile/programs/[programId]/events Endpoint
app/(ee)/api/partner-profile/programs/[programId]/events/route.ts:22
+7
GET /api/partner-profile/programs/[programId]/bounties Endpoint
app/(ee)/api/partner-profile/programs/[programId]/bounties/route.ts:7
+6
GET /api/partner-profile/programs/[programId]/bounties/[bountyId] Endpoint
app/(ee)/api/partner-profile/programs/[programId]/bounties/[bountyId]/route.ts:10
+6
GET /api/partner-profile/programs/[programId]/customers/count Endpoint
app/(ee)/api/partner-profile/programs/[programId]/customers/count/route.ts:15
+6
GET /api/partner-profile/programs/[programId]/customers Endpoint
app/(ee)/api/partner-profile/programs/[programId]/customers/route.ts:22
+6
GET /api/partner-profile/programs/[programId]/referrals Endpoint
app/(ee)/api/partner-profile/programs/[programId]/referrals/route.ts:15
+6
GET /api/partner-profile/programs/[programId]/submitted-leads Endpoint
app/(ee)/api/partner-profile/programs/[programId]/submitted-leads/route.ts:12
+6
PATCH /api/partner-profile/invites Endpoint
app/(ee)/api/partner-profile/invites/route.ts:169
+5
POST /api/partner-profile/postbacks/[postbackId]/rotate-secret Endpoint
app/(ee)/api/partner-profile/postbacks/[postbackId]/rotate-secret/route.ts:12
+5
PATCH /api/partner-profile/postbacks/[postbackId] Endpoint
app/(ee)/api/partner-profile/postbacks/[postbackId]/route.ts:30
+5
POST /api/partner-profile/postbacks/[postbackId]/send-test Endpoint
app/(ee)/api/partner-profile/postbacks/[postbackId]/send-test/route.ts:20
+5
GET /api/partner-profile/programs/[programId]/earnings/timeseries Endpoint
app/(ee)/api/partner-profile/programs/[programId]/earnings/timeseries/route.ts:7
+5
GET /api/partner-profile/programs/[programId]/groups/[groupIdOrSlug] Endpoint
app/(ee)/api/partner-profile/programs/[programId]/groups/[groupIdOrSlug]/route.ts:7
+5
GET /api/partner-profile/programs/[programId]/links Endpoint
app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:19
+5
GET /api/partner-profile/programs/[programId]/referrals/count Endpoint
app/(ee)/api/partner-profile/programs/[programId]/referrals/count/route.ts:10
+5
GET /api/partner-profile/programs/[programId]/resources Endpoint
app/(ee)/api/partner-profile/programs/[programId]/resources/route.ts:7
+5
GET /api/partner-profile/programs/[programId] Endpoint
app/(ee)/api/partner-profile/programs/[programId]/route.ts:8
+5
GET /api/partner-profile/programs/[programId]/submitted-leads/count Endpoint
app/(ee)/api/partner-profile/programs/[programId]/submitted-leads/count/route.ts:12
+5
GET /api/partner-profile/referrals Endpoint
app/(ee)/api/partner-profile/referrals/route.ts:24
+5
GET /api/partner-profile/invites Endpoint
app/(ee)/api/partner-profile/invites/route.ts:21
+4
GET /api/partner-profile/messages Endpoint
app/(ee)/api/partner-profile/messages/route.ts:12
+4
GET /api/partner-profile/payouts Endpoint
app/(ee)/api/partner-profile/payouts/route.ts:10
+4
GET /api/partner-profile/postbacks Endpoint
app/(ee)/api/partner-profile/postbacks/route.ts:22
+4
POST /api/partner-profile/postbacks Endpoint
app/(ee)/api/partner-profile/postbacks/route.ts:42
+4
GET /api/partner-profile/postbacks/[postbackId]/events Endpoint
app/(ee)/api/partner-profile/postbacks/[postbackId]/events/route.ts:7
+4
GET /api/partner-profile/postbacks/[postbackId] Endpoint
app/(ee)/api/partner-profile/postbacks/[postbackId]/route.ts:12
+4
GET /api/partner-profile/programs Endpoint
app/(ee)/api/partner-profile/programs/route.ts:11
+4
GET /api/partner-profile/users Endpoint
app/(ee)/api/partner-profile/users/route.ts:15
+4
GET /api/partner-profile/messages/count Endpoint
app/(ee)/api/partner-profile/messages/count/route.ts:8
+3
GET /api/partner-profile/notification-preferences Endpoint
app/(ee)/api/partner-profile/notification-preferences/route.ts:6
+3
GET /api/partner-profile/payouts/count Endpoint
app/(ee)/api/partner-profile/payouts/count/route.ts:8
+3
GET /api/partner-profile/payouts/settings Endpoint
app/(ee)/api/partner-profile/payouts/settings/route.ts:6
+3
GET /api/partner-profile/programs/count Endpoint
app/(ee)/api/partner-profile/programs/count/route.ts:8
+3
GET /api/partner-profile/referrals/stats Endpoint
app/(ee)/api/partner-profile/referrals/stats/route.ts:10
+3
GET /api/partner-profile/referrals/timeseries Endpoint
app/(ee)/api/partner-profile/referrals/timeseries/route.ts:21
+3
GET /api/partner-profile/rewind Endpoint
app/(ee)/api/partner-profile/rewind/route.ts:7
+3
GET /api/partner-profile Endpoint
app/(ee)/api/partner-profile/route.ts:6
+3
PATCH /api/partner-profile/users Endpoint
app/(ee)/api/partner-profile/users/route.ts:63
+3
API · workspaces 48
POST /api/workspaces/[idOrSlug]/billing/upgrade Endpoint
app/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:23
+10
POST /api/workspaces/[idOrSlug]/import/rebrandly Endpoint
app/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:95
+17
POST /api/workspaces/[idOrSlug]/import/short Endpoint
app/api/workspaces/[idOrSlug]/import/short/route.ts:79
+17
DELETE /api/workspaces/[idOrSlug] Endpoint
app/api/workspaces/[idOrSlug]/route.ts:310
+10
POST /api/workspaces/[idOrSlug]/import/bitly Endpoint
app/api/workspaces/[idOrSlug]/import/bitly/route.ts:61
+15
DELETE /api/workspaces/[idOrSlug]/users Endpoint
app/api/workspaces/[idOrSlug]/users/route.ts:96
+11
POST /api/workspaces/[idOrSlug]/import/csv Endpoint
app/api/workspaces/[idOrSlug]/import/csv/route.ts:13
+8
POST /api/workspaces/[idOrSlug]/billing/payment-methods Endpoint
app/api/workspaces/[idOrSlug]/billing/payment-methods/route.ts:102
+8
POST /api/workspaces/[idOrSlug]/invites Endpoint
app/api/workspaces/[idOrSlug]/invites/route.ts:49
+11
PATCH /api/workspaces/[idOrSlug] Endpoint
app/api/workspaces/[idOrSlug]/route.ts:87
+10
GET /api/workspaces/[idOrSlug]/import/bitly Endpoint
app/api/workspaces/[idOrSlug]/import/bitly/route.ts:14
+7
GET /api/workspaces/[idOrSlug]/import/rebrandly Endpoint
app/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:14
+7
GET /api/workspaces/[idOrSlug]/import/short Endpoint
app/api/workspaces/[idOrSlug]/import/short/route.ts:14
+7
POST /api/workspaces/[idOrSlug]/billing/activate-paid-plan Endpoint
app/api/workspaces/[idOrSlug]/billing/activate-paid-plan/route.ts:7
+7
POST /api/workspaces/[idOrSlug]/billing/cancel Endpoint
app/api/workspaces/[idOrSlug]/billing/cancel/route.ts:8
+7
POST /api/workspaces/[idOrSlug]/billing/manage Endpoint
app/api/workspaces/[idOrSlug]/billing/manage/route.ts:8
+7
PUT /api/workspaces/[idOrSlug]/import/rebrandly Endpoint
app/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:80
+6
PUT /api/workspaces/[idOrSlug]/import/short Endpoint
app/api/workspaces/[idOrSlug]/import/short/route.ts:67
+6
DELETE /api/workspaces/[idOrSlug]/invites Endpoint
app/api/workspaces/[idOrSlug]/invites/route.ts:226
+7
POST /api/workspaces/[idOrSlug]/sitemaps/import Endpoint
app/api/workspaces/[idOrSlug]/sitemaps/import/route.ts:20
+16
GET /api/workspaces/[idOrSlug]/saml Endpoint
app/api/workspaces/[idOrSlug]/saml/route.ts:30
+6
POST /api/workspaces/[idOrSlug]/invites/accept Endpoint
app/api/workspaces/[idOrSlug]/invites/accept/route.ts:11
+6
GET /api/workspaces/[idOrSlug]/billing/usage Endpoint
app/api/workspaces/[idOrSlug]/billing/usage/route.ts:6
+8
PATCH /api/workspaces/[idOrSlug]/invites Endpoint
app/api/workspaces/[idOrSlug]/invites/route.ts:181
+8
PATCH /api/workspaces/[idOrSlug]/users Endpoint
app/api/workspaces/[idOrSlug]/users/route.ts:61
+8
POST /api/workspaces Endpoint
app/api/workspaces/route.ts:61
+2
GET /api/workspaces/[idOrSlug]/billing/invoices Endpoint
app/api/workspaces/[idOrSlug]/billing/invoices/route.ts:18
+7
POST /api/workspaces/[idOrSlug]/invites/decline Endpoint
app/api/workspaces/[idOrSlug]/invites/decline/route.ts:7
+3
POST /api/workspaces/[idOrSlug]/invites/reset Endpoint
app/api/workspaces/[idOrSlug]/invites/reset/route.ts:6
+7
GET /api/workspaces/[idOrSlug]/invites Endpoint
app/api/workspaces/[idOrSlug]/invites/route.ts:19
+7
GET /api/workspaces/[idOrSlug] Endpoint
app/api/workspaces/[idOrSlug]/route.ts:49
+7
POST /api/workspaces/[idOrSlug]/saml Endpoint
app/api/workspaces/[idOrSlug]/saml/route.ts:56
+7
DELETE /api/workspaces/[idOrSlug]/saml Endpoint
app/api/workspaces/[idOrSlug]/saml/route.ts:100
+7
GET /api/workspaces/[idOrSlug]/users Endpoint
app/api/workspaces/[idOrSlug]/users/route.ts:17
+7
GET /api/workspaces/[idOrSlug]/billing/invoices/[invoiceId] Endpoint
app/api/workspaces/[idOrSlug]/billing/invoices/[invoiceId]/route.ts:6
+6
GET /api/workspaces/[idOrSlug]/billing/payment-methods Endpoint
app/api/workspaces/[idOrSlug]/billing/payment-methods/route.ts:47
+6
PATCH /api/workspaces/[idOrSlug]/billing/payment-methods Endpoint
app/api/workspaces/[idOrSlug]/billing/payment-methods/route.ts:160
+6
DELETE /api/workspaces/[idOrSlug]/billing/payment-methods Endpoint
app/api/workspaces/[idOrSlug]/billing/payment-methods/route.ts:200
+6
POST /api/workspaces/[idOrSlug]/billing/retry-payment Endpoint
app/api/workspaces/[idOrSlug]/billing/retry-payment/route.ts:14
+6
GET /api/workspaces/[idOrSlug]/import/[importId]/download Endpoint
app/api/workspaces/[idOrSlug]/import/[importId]/download/route.ts:6
+6
GET /api/workspaces/[idOrSlug]/notification-preferences Endpoint
app/api/workspaces/[idOrSlug]/notification-preferences/route.ts:6
+6
GET /api/workspaces/[idOrSlug]/scim Endpoint
app/api/workspaces/[idOrSlug]/scim/route.ts:17
+6
POST /api/workspaces/[idOrSlug]/scim Endpoint
app/api/workspaces/[idOrSlug]/scim/route.ts:43
+6
DELETE /api/workspaces/[idOrSlug]/scim Endpoint
app/api/workspaces/[idOrSlug]/scim/route.ts:93
+6
POST /api/workspaces/[idOrSlug]/support/slack-invite Endpoint
app/api/workspaces/[idOrSlug]/support/slack-invite/route.ts:25
+6
POST /api/workspaces/[idOrSlug]/upload-url Endpoint
app/api/workspaces/[idOrSlug]/upload-url/route.ts:12
+6
GET /api/workspaces Endpoint
app/api/workspaces/route.ts:19
+2
PUT /api/workspaces/[idOrSlug] Endpoint
app/api/workspaces/[idOrSlug]/route.ts:307
app.dub.co 119
Someone opens /app.dub.co/auth/confirm-email-change/[token] Page
app/app.dub.co/(auth)/auth/confirm-email-change/[token]/page.tsx:1
+3
Someone opens /app.dub.co/[slug]/settings/billing/upgrade Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/billing/upgrade/page.tsx:1
Someone opens /app.dub.co/[slug]/links/[...link] Page
app/app.dub.co/(dashboard)/[slug]/links/[...link]/page.tsx:1
Someone opens /app.dub.co/onboarding/plan Page
app/app.dub.co/(onboarding)/onboarding/(steps)/plan/page.tsx:1
Someone opens /app.dub.co/onboarding/program Page
app/app.dub.co/(onboarding)/onboarding/(steps)/program/page.tsx:1
Someone opens /app.dub.co/auth/saml Page
app/app.dub.co/(auth)/auth/saml/page.tsx:1
Someone opens /app.dub.co/register Page
app/app.dub.co/(auth-marketing)/register/page.tsx:1
GET /app.dub.co/invoices/[invoiceId] Endpoint
app/(ee)/app.dub.co/invoices/[invoiceId]/route.tsx:9
+4
Someone opens /app.dub.co/[slug]/program/bounties/[bountyId] Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/bounties/[bountyId]/page.tsx:1
Someone opens /app.dub.co/oauth/authorize Page
app/app.dub.co/(auth)/oauth/authorize/page.tsx:1
+2
Someone opens /app.dub.co/[slug]/program/campaigns Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/campaigns/page.tsx:1
Someone opens /app.dub.co/[slug]/program/partners/[partnerId]/links Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/[partnerId]/links/page.tsx:1
Someone opens /app.dub.co/invites/[code] Page
app/app.dub.co/(auth)/invites/[code]/page.tsx:1
+1
Someone opens /app.dub.co/[slug]/invite Page
app/app.dub.co/(invites)/[slug]/invite/page.tsx:1
+1
Someone opens /app.dub.co/onboarding/success Page
app/app.dub.co/(onboarding)/onboarding/(steps)/success/page.tsx:1
+1
Someone opens /app.dub.co/embed/referrals Page
app/(ee)/app.dub.co/embed/referrals/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/integrations/[integrationSlug] Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/integrations/[integrationSlug]/page.tsx:1
Someone opens /app.dub.co/unsubscribe/[token] Page
app/app.dub.co/(auth)/unsubscribe/[token]/page.tsx:1
Someone opens /app.dub.co/account/settings Page
app/app.dub.co/(dashboard)/account/settings/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/members Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/members/page.tsx:1
Someone opens /app.dub.co/[slug]/links/folders/[folderId]/members Page
app/app.dub.co/(dashboard)/[slug]/links/folders/[folderId]/members/page.tsx:1
Someone opens /app.dub.co/[slug]/links Page
app/app.dub.co/(dashboard)/[slug]/links/page.tsx:1
Someone opens /app.dub.co/analytics Page
app/app.dub.co/(redirects)/analytics/page.tsx:1
Someone opens /app.dub.co/share/[dashboardId] Page
app/app.dub.co/(share)/share/[dashboardId]/page.tsx:1
Someone opens /app.dub.co/auth/reset-password/[token] Page
app/app.dub.co/(auth)/auth/reset-password/[token]/page.tsx:1
Someone opens /app.dub.co/[slug]/links/customers Page
app/app.dub.co/(dashboard)/[slug]/(ee)/links/customers/page.tsx:1
Someone opens /app.dub.co/[slug]/program/commissions Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/commissions/page.tsx:1
Someone opens /app.dub.co/[slug]/program/commissions/[commissionId] Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/commissions/[commissionId]/page.tsx:1
Someone opens /app.dub.co/[slug]/program/partners Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/page.tsx:1
Someone opens /app.dub.co/[slug]/program/payouts Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/integrations/enabled Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/integrations/enabled/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/integrations/[integrationSlug]/manage Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/integrations/[integrationSlug]/manage/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/oauth-apps/new Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/oauth-apps/new/page.tsx:1
Someone opens /app.dub.co/[slug]/settings Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/tokens Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/tokens/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/tracking Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/tracking/page.tsx:1
Someone opens /app.dub.co/[slug]/links/analytics Page
app/app.dub.co/(dashboard)/[slug]/links/analytics/page.tsx:1
Someone opens /app.dub.co/onboarding/workspace Page
app/app.dub.co/(onboarding)/onboarding/(steps)/workspace/page.tsx:1
Someone opens /app.dub.co/[slug]/program/new Page
app/(ee)/app.dub.co/(new-program)/[slug]/program/new/page.tsx:1
Someone opens /app.dub.co/account/settings/referrals Page
app/app.dub.co/(dashboard)/account/settings/referrals/page.tsx:1
Someone opens /app.dub.co/account/settings/security Page
app/app.dub.co/(dashboard)/account/settings/security/page.tsx:1
Someone opens /app.dub.co/account/settings/tokens Page
app/app.dub.co/(dashboard)/account/settings/tokens/page.tsx:1
Someone opens /app.dub.co/[slug]/links/events Page
app/app.dub.co/(dashboard)/[slug]/(ee)/links/events/page.tsx:1
Someone opens /app.dub.co/[slug]/program/campaigns/[campaignId] Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/campaigns/[campaignId]/page.tsx:1
Someone opens /app.dub.co/[slug]/program/events Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/events/page.tsx:1
Someone opens /app.dub.co/[slug]/program/groups/[groupSlug]/links Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/groups/[groupSlug]/links/page.tsx:1
Someone opens /app.dub.co/[slug]/program/groups/[groupSlug]/settings Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/groups/[groupSlug]/settings/page.tsx:1
Someone opens /app.dub.co/[slug]/program/messages/[partnerId] Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/messages/[partnerId]/page.tsx:1
Someone opens /app.dub.co/[slug]/program/partners/applications Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/page.tsx:1
Someone opens /app.dub.co/[slug]/program/partners/[partnerId]/comments Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/[partnerId]/comments/page.tsx:1
Someone opens /app.dub.co/[slug]/program/payouts/[payoutId] Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/[payoutId]/page.tsx:1
Someone opens /app.dub.co/[slug]/program/risks/expired Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/risks/(archive)/expired/page.tsx:1
Someone opens /app.dub.co/[slug]/program/risks/resolved Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/risks/(archive)/resolved/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/billing Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/billing/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/domains/default Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/domains/default/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/integrations/new Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/integrations/new/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/integrations Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/integrations/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/logs Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/logs/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/logs/[logId] Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/logs/[logId]/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/oauth-apps/[appId] Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/oauth-apps/[appId]/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/security Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/security/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/webhooks/new Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/webhooks/new/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/webhooks/[webhookId]/edit Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/webhooks/[webhookId]/edit/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/webhooks/[webhookId] Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/webhooks/[webhookId]/page.tsx:1
Someone opens /app.dub.co/[slug]/links/tags Page
app/app.dub.co/(dashboard)/[slug]/links/tags/page.tsx:1
Someone opens /app.dub.co/[slug]/links/utm Page
app/app.dub.co/(dashboard)/[slug]/links/utm/page.tsx:1
Someone opens /app.dub.co/deeplink/[domain]/[[...key]] Page
app/app.dub.co/(deeplink)/deeplink/[domain]/[[...key]]/page.tsx:1
Someone opens /app.dub.co/onboarding/domain/custom Page
app/app.dub.co/(onboarding)/onboarding/(steps)/domain/custom/page.tsx:1
Someone opens /app.dub.co/onboarding/domain/register Page
app/app.dub.co/(onboarding)/onboarding/(steps)/domain/register/page.tsx:1
Someone opens /app.dub.co/onboarding/domain/subdomain Page
app/app.dub.co/(onboarding)/onboarding/(steps)/domain/subdomain/page.tsx:1
Someone opens /app.dub.co/onboarding/welcome Page
app/app.dub.co/(onboarding)/onboarding/welcome/page.tsx:1
Someone opens /app.dub.co/embed/support-chat Page
app/app.dub.co/embed/support-chat/page.tsx:1
Someone opens /app.dub.co/[slug]/program/new/overview Page
app/(ee)/app.dub.co/(new-program)/[slug]/program/new/overview/page.tsx:1
Someone opens /app.dub.co/[slug]/program/new/partners Page
app/(ee)/app.dub.co/(new-program)/[slug]/program/new/partners/page.tsx:1
Someone opens /app.dub.co/[slug]/program/new/rewards Page
app/(ee)/app.dub.co/(new-program)/[slug]/program/new/rewards/page.tsx:1
Someone opens /app.dub.co/[slug]/program/new/support Page
app/(ee)/app.dub.co/(new-program)/[slug]/program/new/support/page.tsx:1
Someone opens /app.dub.co/forgot-password Page
app/app.dub.co/(auth)/forgot-password/page.tsx:1
Someone opens /app.dub.co/login Page
app/app.dub.co/(auth-marketing)/login/page.tsx:1
Someone opens /app.dub.co/[slug]/links/customers/[customerId]/earnings Page
app/app.dub.co/(dashboard)/[slug]/(ee)/links/customers/[customerId]/earnings/page.tsx:1
Someone opens /app.dub.co/[slug]/links/customers/[customerId]/sales Page
app/app.dub.co/(dashboard)/[slug]/(ee)/links/customers/[customerId]/sales/page.tsx:1
Someone opens /app.dub.co/[slug]/program/analytics Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/analytics/page.tsx:1
Someone opens /app.dub.co/[slug]/program/analytics/[tab] Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/analytics/[tab]/page.tsx:1
Someone opens /app.dub.co/[slug]/program/bounties Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/bounties/page.tsx:1
Someone opens /app.dub.co/[slug]/program/customers/leads Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/customers/(index)/leads/page.tsx:1
Someone opens /app.dub.co/[slug]/program/customers Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/customers/(index)/page.tsx:1
Someone opens /app.dub.co/[slug]/program/customers/[customerId]/earnings Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/customers/[customerId]/earnings/page.tsx:1
Someone opens /app.dub.co/[slug]/program/customers/[customerId]/sales Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/customers/[customerId]/sales/page.tsx:1
Someone opens /app.dub.co/[slug]/program/groups Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/groups/page.tsx:1
Someone opens /app.dub.co/[slug]/program/groups/[groupSlug]/branding Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/groups/[groupSlug]/branding/page.tsx:1
Someone opens /app.dub.co/[slug]/program/groups/[groupSlug]/discounts Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/groups/[groupSlug]/discounts/page.tsx:1
Someone opens /app.dub.co/[slug]/program/groups/[groupSlug]/rewards Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/groups/[groupSlug]/rewards/page.tsx:1
Someone opens /app.dub.co/[slug]/program/messages Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/messages/page.tsx:1
Someone opens /app.dub.co/[slug]/program/network/ignored Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/network/ignored/page.tsx:1
Someone opens /app.dub.co/[slug]/program/network Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/network/page.tsx:1
Someone opens /app.dub.co/[slug]/program Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/page.tsx:1
Someone opens /app.dub.co/[slug]/program/partners/applications/rejected Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/rejected/page.tsx:1
Someone opens /app.dub.co/[slug]/program/partners/[partnerId]/customers Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/[partnerId]/customers/page.tsx:1
Someone opens /app.dub.co/[slug]/program/partners/[partnerId]/payouts Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/[partnerId]/payouts/page.tsx:1
Someone opens /app.dub.co/[slug]/program/payouts/success Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/success/page.tsx:1
Someone opens /app.dub.co/[slug]/program/resources Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/resources/page.tsx:1
Someone opens /app.dub.co/[slug]/program/risks Page
app/app.dub.co/(dashboard)/[slug]/(ee)/program/risks/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/billing/invoices Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/billing/invoices/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/domains/email Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/domains/email/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/domains Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/domains/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/notifications Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/notifications/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/oauth-apps Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/oauth-apps/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/webhooks Page
app/app.dub.co/(dashboard)/[slug]/(ee)/settings/webhooks/page.tsx:1
Someone opens /app.dub.co/[slug]/links/domains/default Page
app/app.dub.co/(dashboard)/[slug]/links/domains/default/page.tsx:1
Someone opens /app.dub.co/[slug]/links/domains/email Page
app/app.dub.co/(dashboard)/[slug]/links/domains/email/page.tsx:1
Someone opens /app.dub.co/[slug]/links/domains Page
app/app.dub.co/(dashboard)/[slug]/links/domains/page.tsx:1
Someone opens /app.dub.co/[slug]/links/folders Page
app/app.dub.co/(dashboard)/[slug]/links/folders/page.tsx:1
Someone opens /app.dub.co/onboarding/domain Page
app/app.dub.co/(onboarding)/onboarding/(steps)/domain/page.tsx:1
Someone opens /app.dub.co/onboarding/products Page
app/app.dub.co/(onboarding)/onboarding/(steps)/products/page.tsx:1
Someone opens /app.dub.co/onboarding/program/reward Page
app/app.dub.co/(onboarding)/onboarding/(steps)/program/reward/page.tsx:1
Someone opens /app.dub.co/[slug]/wrapped Page
app/app.dub.co/(onboarding)/[slug]/wrapped/page.tsx:1
Someone opens /app.dub.co/[slug]/wrapped/[year] Page
app/app.dub.co/(onboarding)/[slug]/wrapped/[year]/page.tsx:1
Someone opens /app.dub.co/[slug]/domains Page
app/app.dub.co/(redirects)/[slug]/domains/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/referrals Page
app/app.dub.co/(redirects)/[slug]/settings/referrals/page.tsx:1
Someone opens /app.dub.co/[slug]/settings/tags Page
app/app.dub.co/(redirects)/[slug]/settings/tags/page.tsx:1
partners.dub.co 49
Someone opens /partners.dub.co/register Page
app/(ee)/partners.dub.co/(auth-login-register)/(generic)/register/page.tsx:1
+1
Someone opens /partners.dub.co/login Page
app/(ee)/partners.dub.co/(auth-login-register)/(generic)/login/page.tsx:1
GET /partners.dub.co/invoices/[payoutId] Endpoint
app/(ee)/partners.dub.co/invoices/[payoutId]/route.tsx:36
+3
Someone opens /partners.dub.co/programs/[programSlug]/invite Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/invite/page.tsx:1
+1
Someone opens /partners.dub.co/onboarding/platforms Page
app/(ee)/partners.dub.co/(onboarding)/onboarding/platforms/page.tsx:1
+1
Someone opens /partners.dub.co/[programSlug]/apply Page
app/(ee)/partners.dub.co/(apply)/[programSlug]/(default)/apply/page.tsx:1
Someone opens /partners.dub.co/[programSlug]/apply/success Page
app/(ee)/partners.dub.co/(apply)/[programSlug]/(default)/apply/success/page.tsx:1
Someone opens /partners.dub.co/[programSlug] Page
app/(ee)/partners.dub.co/(apply)/[programSlug]/(default)/page.tsx:1
Someone opens /partners.dub.co/programs/[programSlug]/apply Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/apply/page.tsx:1
Someone opens /partners.dub.co/onboarding Page
app/(ee)/partners.dub.co/(onboarding)/onboarding/page.tsx:1
Someone opens /partners.dub.co/onboarding/payouts Page
app/(ee)/partners.dub.co/(onboarding)/onboarding/payouts/page.tsx:1
Someone opens /partners.dub.co/profile/members Page
app/(ee)/partners.dub.co/(dashboard)/profile/members/page.tsx:1
Someone opens /partners.dub.co/rewind/2025 Page
app/(ee)/partners.dub.co/(dashboard)/rewind/2025/page.tsx:1
Someone opens /partners.dub.co/invite Page
app/(ee)/partners.dub.co/(auth-other)/invite/page.tsx:1
Someone opens /partners.dub.co/messages/[programSlug] Page
app/(ee)/partners.dub.co/(dashboard)/messages/[programSlug]/page.tsx:1
Someone opens /partners.dub.co/programs/[programSlug]/analytics Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/analytics/page.tsx:1
Someone opens /partners.dub.co/marketplace/[[...segments]] Page
app/(ee)/partners.dub.co/(dashboard)/marketplace/[[...segments]]/page.tsx:1
Someone opens /partners.dub.co/payouts Page
app/(ee)/partners.dub.co/(dashboard)/payouts/page.tsx:1
Someone opens /partners.dub.co/profile Page
app/(ee)/partners.dub.co/(dashboard)/profile/page.tsx:1
Someone opens /partners.dub.co/programs/invitations Page
app/(ee)/partners.dub.co/(dashboard)/programs/invitations/page.tsx:1
Someone opens /partners.dub.co/programs Page
app/(ee)/partners.dub.co/(dashboard)/programs/page.tsx:1
Someone opens /partners.dub.co/programs/[programSlug]/customers/leads Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/customers/(index)/leads/page.tsx:1
Someone opens /partners.dub.co/programs/[programSlug]/customers Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/customers/(index)/page.tsx:1
Someone opens /partners.dub.co/programs/[programSlug]/customers/[customerId] Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/customers/[customerId]/page.tsx:1
Someone opens /partners.dub.co/programs/[programSlug]/earnings Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/earnings/page.tsx:1
Someone opens /partners.dub.co/programs/[programSlug]/events Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/events/page.tsx:1
Someone opens /partners.dub.co/programs/[programSlug]/links Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/links/page.tsx:1
Someone opens /partners.dub.co/programs/[programSlug] Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/page.tsx:1
Someone opens /partners.dub.co/programs/[programSlug]/referrals Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/referrals/page.tsx:1
Someone opens /partners.dub.co/referrals Page
app/(ee)/partners.dub.co/(dashboard)/referrals/page.tsx:1
Someone opens /partners.dub.co/[programSlug]/[groupSlug]/apply Page
app/(ee)/partners.dub.co/(apply)/[programSlug]/(group-level)/[groupSlug]/apply/page.tsx:1
Someone opens /partners.dub.co/[programSlug]/[groupSlug]/apply/success Page
app/(ee)/partners.dub.co/(apply)/[programSlug]/(group-level)/[groupSlug]/apply/success/page.tsx:1
Someone opens /partners.dub.co/[programSlug]/[groupSlug] Page
app/(ee)/partners.dub.co/(apply)/[programSlug]/(group-level)/[groupSlug]/page.tsx:1
Someone opens /partners.dub.co/[programSlug]/login Page
app/(ee)/partners.dub.co/(auth-login-register)/(program)/[programSlug]/login/page.tsx:1
Someone opens /partners.dub.co/[programSlug]/register Page
app/(ee)/partners.dub.co/(auth-login-register)/(program)/[programSlug]/register/page.tsx:1
Someone opens /partners.dub.co/auth/confirm-email-change/[token] Page
app/(ee)/partners.dub.co/(auth-other)/auth/confirm-email-change/[token]/page.tsx:1
Someone opens /partners.dub.co/auth/reset-password/[token] Page
app/(ee)/partners.dub.co/(auth-other)/auth/reset-password/[token]/page.tsx:1
Someone opens /partners.dub.co/forgot-password Page
app/(ee)/partners.dub.co/(auth-other)/forgot-password/page.tsx:1
Someone opens /partners.dub.co/unsubscribe/[token] Page
app/(ee)/partners.dub.co/(auth-other)/unsubscribe/[token]/page.tsx:1
Someone opens /partners.dub.co/account/settings Page
app/(ee)/partners.dub.co/(dashboard)/account/settings/page.tsx:1
Someone opens /partners.dub.co/account/settings/security Page
app/(ee)/partners.dub.co/(dashboard)/account/settings/security/page.tsx:1
Someone opens /partners.dub.co/messages Page
app/(ee)/partners.dub.co/(dashboard)/messages/page.tsx:1
Someone opens /partners.dub.co/profile/notifications Page
app/(ee)/partners.dub.co/(dashboard)/profile/notifications/page.tsx:1
Someone opens /partners.dub.co/profile/postbacks Page
app/(ee)/partners.dub.co/(dashboard)/profile/postbacks/page.tsx:1
Someone opens /partners.dub.co/profile/postbacks/[id] Page
app/(ee)/partners.dub.co/(dashboard)/profile/postbacks/[id]/page.tsx:1
Someone opens /partners.dub.co/programs/[programSlug]/bounties Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/bounties/page.tsx:1
Someone opens /partners.dub.co/programs/[programSlug]/bounties/[bountyId] Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/bounties/[bountyId]/page.tsx:1
Someone opens /partners.dub.co/programs/[programSlug]/resources Page
app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/resources/page.tsx:1
Someone opens /partners.dub.co/apply/[programSlug]/[[...slug]] Page
app/(ee)/partners.dub.co/(redirects)/apply/[programSlug]/[[...slug]]/page.tsx:1
Everything else (68 smaller areas) 360
POST /api/embed/referrals/links Endpoint
app/(ee)/api/embed/referrals/links/route.ts:24
+11
POST /api/admin/partners/delete-account Endpoint
app/(ee)/api/admin/partners/delete-account/route.ts:10
+8
POST /api/domains Endpoint
app/api/domains/route.ts:96
+10
DELETE /api/groups/[groupIdOrSlug] Endpoint
app/(ee)/api/groups/[groupIdOrSlug]/route.ts:263
+16
POST /api/workflows/partner-approved Endpoint
app/(ee)/api/workflows/partner-approved/route.ts:55
+27
DELETE /api/groups/[groupIdOrSlug]/default-links/[defaultLinkId] Endpoint
app/(ee)/api/groups/[groupIdOrSlug]/default-links/[defaultLinkId]/route.ts:153
+14
PATCH /api/embed/referrals/links/[linkId] Endpoint
app/(ee)/api/embed/referrals/links/[linkId]/route.ts:19
+9
POST /api/workflows/create-partner-commission Endpoint
app/(ee)/api/workflows/create-partner-commission/route.ts:82
+18
GET /api/events/export Endpoint
app/(ee)/api/events/export/route.ts:37
+17
POST /api/domains/register Endpoint
app/(ee)/api/domains/register/route.ts:10
+17
POST /api/domains/client/register Endpoint
app/api/domains/client/register/route.ts:16
+17
PATCH /api/groups/[groupIdOrSlug] Endpoint
app/(ee)/api/groups/[groupIdOrSlug]/route.ts:45
+16
PATCH /api/webhooks/[webhookId] Endpoint
app/api/webhooks/[webhookId]/route.ts:36
+17
POST /api/admin/ban Endpoint
app/(ee)/api/admin/ban/route.ts:12
+5
PATCH /api/commissions/[commissionId] Endpoint
app/(ee)/api/commissions/[commissionId]/route.ts:95
+14
DELETE /api/domains/[domain] Endpoint
app/api/domains/[domain]/route.ts:278
+13
PATCH /api/user Endpoint
app/api/user/route.ts:74
+12
POST /api/track/application Endpoint
app/(ee)/api/track/application/route.ts:41
+5
DELETE /api/tags/[id] Endpoint
app/api/tags/[id]/route.ts:60
+12
POST /api/bounties/[bountyId]/sync-social-metrics Endpoint
app/(ee)/api/bounties/[bountyId]/sync-social-metrics/route.ts:27
+9
POST /api/track/lead Endpoint
app/(ee)/api/track/lead/route.ts:10
+18
POST /api/oauth/token Endpoint
app/api/oauth/token/route.ts:11
+6
POST /api/track/sale Endpoint
app/(ee)/api/track/sale/route.ts:10
+17
DELETE /api/e2e/bounties/[bountyId] Endpoint
app/(ee)/api/e2e/bounties/[bountyId]/route.ts:8
+8
GET /api/analytics/export Endpoint
app/api/analytics/export/route.ts:23
+16
GET /api/analytics Endpoint
app/api/analytics/route.ts:20
+16
DELETE /api/tokens/[id] Endpoint
app/api/tokens/[id]/route.ts:108
+8
Every request to /((?!api/|_next/|_proxy/|favicon.ico|sitemap.xml|robots.txt|manifest.webmanifest).*), before anything else Every request
middleware.ts:1
+5
PATCH /api/domains/[domain] Endpoint
app/api/domains/[domain]/route.ts:45
+14
POST /api/shopify/integration/webhook Endpoint
app/(ee)/api/shopify/integration/webhook/route.ts:24
+9
A form calls createAndEnrollPartner() Form action
lib/api/partners/create-and-enroll-partner.ts:30
+19
POST /api/bounties Endpoint
app/(ee)/api/bounties/route.ts:149
+8
PATCH /api/bounties/[bountyId] Endpoint
app/(ee)/api/bounties/[bountyId]/route.ts:50
+8
POST /api/groups/[groupIdOrSlug]/partners Endpoint
app/(ee)/api/groups/[groupIdOrSlug]/partners/route.ts:16
+13
DELETE /api/folders/[folderId] Endpoint
app/api/folders/[folderId]/route.ts:95
+14
POST /api/tokens/embed/referrals Endpoint
app/api/tokens/embed/referrals/route.ts:16
+23
GET /api/admin/revenue Endpoint
app/(ee)/api/admin/revenue/route.ts:18
+1
PATCH /api/campaigns/[campaignId] Endpoint
app/(ee)/api/campaigns/[campaignId]/route.ts:53
+10
A form calls markSubmittedLeadQualified() Form action
lib/submitted-leads/mark-submitted-lead-qualified.ts:16
+10
PATCH /api/commissions/bulk Endpoint
app/(ee)/api/commissions/bulk/route.ts:9
+10
GET /api/commissions/export Endpoint
app/(ee)/api/commissions/export/route.ts:15
+9
DELETE /api/discount-codes/[discountCodeId] Endpoint
app/(ee)/api/discount-codes/[discountCodeId]/route.ts:11
+10
PATCH /api/fraud/rules Endpoint
app/(ee)/api/fraud/rules/route.ts:76
+9
PATCH /api/groups/[groupIdOrSlug]/default-links/[defaultLinkId] Endpoint
app/(ee)/api/groups/[groupIdOrSlug]/default-links/[defaultLinkId]/route.ts:19
+9
POST /api/hubspot/webhook/process Endpoint
app/(ee)/api/hubspot/webhook/process/route.ts:17
+9
GET /api/payouts/export Endpoint
app/(ee)/api/payouts/export/route.ts:14
+9
PATCH /api/shopify/integration/callback Endpoint
app/(ee)/api/shopify/integration/callback/route.ts:26
+10
GET /api/analytics/dashboard Endpoint
app/api/analytics/dashboard/route.ts:16
+4
PATCH /api/utm/[id] Endpoint
app/api/utm/[id]/route.ts:16
+9
GET /api/customers/export Endpoint
app/(ee)/api/customers/export/route.ts:16
+8
POST /api/domains/[domain]/transfer Endpoint
app/api/domains/[domain]/transfer/route.ts:13
+8
POST /api/email-domains Endpoint
app/(ee)/api/email-domains/route.ts:39
+8
PATCH /api/email-domains/[domain] Endpoint
app/(ee)/api/email-domains/[domain]/route.ts:20
+8
DELETE /api/dashboards/[id] Endpoint
app/api/dashboards/[id]/route.ts:56
+9
POST /api/webhooks Endpoint
app/api/webhooks/route.ts:35
+18
DELETE /api/webhooks/[webhookId] Endpoint
app/api/webhooks/[webhookId]/route.ts:188
+9
PATCH /api/admin/fraud-alerts/[id] Endpoint
app/(ee)/api/admin/fraud-alerts/[id]/route.ts:16
+13
DELETE /api/campaigns/[campaignId] Endpoint
app/(ee)/api/campaigns/[campaignId]/route.ts:188
+8
DELETE /api/customers/[id] Endpoint
app/(ee)/api/customers/[id]/route.ts:152
+8
DELETE /api/email-domains/[domain] Endpoint
app/(ee)/api/email-domains/[domain]/route.ts:153
+8
DELETE /api/integrations/uninstall Endpoint
app/api/integrations/uninstall/route.ts:10
+8
DELETE /api/oauth/apps/[appId] Endpoint
app/api/oauth/apps/[appId]/route.ts:173
+8
DELETE /api/utm/[id] Endpoint
app/api/utm/[id]/route.ts:130
+8
A form calls forceWithdrawal() Form action
lib/actions/partners/force-withdrawal.ts:41
+2
DELETE /api/bounties/[bountyId] Endpoint
app/(ee)/api/bounties/[bountyId]/route.ts:307
+7
POST /api/commissions Endpoint
app/(ee)/api/commissions/route.ts:74
+16
POST /api/domains/client/saved Endpoint
app/api/domains/client/saved/route.ts:16
+6
DELETE /api/e2e/notification-emails Endpoint
app/(ee)/api/e2e/notification-emails/route.ts:53
+7
POST /api/groups/[groupIdOrSlug]/default-links Endpoint
app/(ee)/api/groups/[groupIdOrSlug]/default-links/route.ts:50
+6
POST /api/track/click Endpoint
app/(ee)/api/track/click/route.ts:58
POST /api/track/lead/client Endpoint
app/(ee)/api/track/lead/client/route.ts:14
+11
POST /api/track/open Endpoint
app/(ee)/api/track/open/route.ts:23
POST /api/track/visit Endpoint
app/(ee)/api/track/visit/route.ts:18
POST /api/track/sale/client Endpoint
app/(ee)/api/track/sale/client/route.ts:14
+10
POST /api/webhooks/callback Endpoint
app/api/webhooks/callback/route.ts:22
+6
GET /api/appsflyer/webhook Endpoint
app/(ee)/api/appsflyer/webhook/route.ts:27
+9
POST /api/embed/referrals/tremendous/send-otp Endpoint
app/(ee)/api/embed/referrals/tremendous/send-otp/route.ts:25
POST /api/embed/referrals/tremendous/verify-otp Endpoint
app/(ee)/api/embed/referrals/tremendous/verify-otp/route.ts:23
POST /api/slack/slash-commands Endpoint
app/api/slack/slash-commands/route.ts:5
+9
POST /api/e2e/trigger-workflow/[workflowId] Endpoint
app/(ee)/api/e2e/trigger-workflow/[workflowId]/route.ts:13
+13
GET /api/singular/webhook Endpoint
app/(ee)/api/singular/webhook/route.ts:38
+8
POST /api/bounties/[bountyId]/submissions/[submissionId]/approve Endpoint
app/(ee)/api/bounties/[bountyId]/submissions/[submissionId]/approve/route.ts:10
+12
POST /api/intercom/webhook/process Endpoint
app/(ee)/api/intercom/webhook/process/route.ts:12
+2
POST /api/dashboards Endpoint
app/api/dashboards/route.ts:30
+12
A form calls markSubmittedLeadClosedWon() Form action
lib/submitted-leads/mark-submitted-lead-closed-won.ts:17
+7
GET /api/admin/analytics Endpoint
app/(ee)/api/admin/analytics/route.ts:7
+6
POST /api/discount-codes Endpoint
app/(ee)/api/discount-codes/route.ts:45
+11
POST /api/e2e/partners/pending-program-application Endpoint
app/(ee)/api/e2e/partners/pending-program-application/route.ts:20
+11
GET /api/events Endpoint
app/(ee)/api/events/route.ts:12
+11
POST /api/bounties/[bountyId]/submissions/[submissionId]/reject Endpoint
app/(ee)/api/bounties/[bountyId]/submissions/[submissionId]/reject/route.ts:10
+10
GET /api/commissions/analytics Endpoint
app/(ee)/api/commissions/analytics/route.ts:133
+10
GET /api/commissions Endpoint
app/(ee)/api/commissions/route.ts:19
+10
GET /api/folders/[folderId]/users Endpoint
app/api/folders/[folderId]/users/route.ts:10
+10
POST /api/admin/domains/register-premium Endpoint
app/(ee)/api/admin/domains/register-premium/route.ts:16
+5
GET /api/bounties Endpoint
app/(ee)/api/bounties/route.ts:33
+9
POST /api/campaigns/[campaignId]/preview Endpoint
app/(ee)/api/campaigns/[campaignId]/preview/route.ts:35
+9
GET /api/customers/[id]/stripe-invoices Endpoint
app/(ee)/api/customers/[id]/stripe-invoices/route.ts:8
+9
POST /api/domains/[domain]/primary Endpoint
app/api/domains/[domain]/primary/route.ts:8
+9
GET /api/domains/[domain]/verify Endpoint
app/api/domains/[domain]/verify/route.ts:13
+9
GET /api/groups/[groupIdOrSlug]/default-links Endpoint
app/(ee)/api/groups/[groupIdOrSlug]/default-links/route.ts:21
+9
GET /api/payouts Endpoint
app/(ee)/api/payouts/route.ts:12
+9
GET /api/folders/permissions Endpoint
app/api/folders/permissions/route.ts:11
+9
GET /api/folders/[folderId]/dashboard Endpoint
app/api/folders/[folderId]/dashboard/route.ts:8
+9
PATCH /api/folders/[folderId] Endpoint
app/api/folders/[folderId]/route.ts:33
+9
POST /api/oauth/apps Endpoint
app/api/oauth/apps/route.ts:45
+9
POST /api/admin/domains/renew Endpoint
app/(ee)/api/admin/domains/renew/route.ts:14
+4
GET /api/bounties/[bountyId]/submissions Endpoint
app/(ee)/api/bounties/[bountyId]/submissions/route.ts:12
+8
GET /api/campaigns/[campaignId]/events Endpoint
app/(ee)/api/campaigns/[campaignId]/events/route.ts:9
+8
GET /api/customers Endpoint
app/(ee)/api/customers/route.ts:23
+8
POST /api/customers Endpoint
app/(ee)/api/customers/route.ts:57
+8
GET /api/customers/search-stripe Endpoint
app/(ee)/api/customers/search-stripe/route.ts:11
+8
GET /api/customers/[id]/activity Endpoint
app/(ee)/api/customers/[id]/activity/route.ts:10
+8
PATCH /api/customers/[id] Endpoint
app/(ee)/api/customers/[id]/route.ts:47
+8
GET /api/discount-codes Endpoint
app/(ee)/api/discount-codes/route.ts:19
+8
GET /api/domains Endpoint
app/api/domains/route.ts:22
+8
GET /api/email-domains/[domain]/verify Endpoint
app/(ee)/api/email-domains/[domain]/verify/route.ts:10
+8
GET /api/embed/referrals/analytics Endpoint
app/(ee)/api/embed/referrals/analytics/route.ts:17
+3
GET /api/fraud/events Endpoint
app/(ee)/api/fraud/events/route.ts:14
+8
POST /api/groups/[groupIdOrSlug]/default Endpoint
app/(ee)/api/groups/[groupIdOrSlug]/default/route.ts:14
+8
GET /api/groups/[groupIdOrSlug] Endpoint
app/(ee)/api/groups/[groupIdOrSlug]/route.ts:25
+8
GET /api/payouts/[payoutId] Endpoint
app/(ee)/api/payouts/[payoutId]/route.ts:11
+8
POST /api/paypal/webhook Endpoint
app/(ee)/api/paypal/webhook/route.ts:20
+3
GET /api/programs/[programId]/payouts/eligible/count Endpoint
app/(ee)/api/programs/[programId]/payouts/eligible/count/route.ts:15
+8
GET /api/programs/[programId]/payouts/eligible Endpoint
app/(ee)/api/programs/[programId]/payouts/eligible/route.ts:19
+8
GET /api/activity-logs Endpoint
app/api/activity-logs/route.ts:13
+8
POST /api/ai/completion Endpoint
app/api/ai/completion/route.ts:20
+8
PATCH /api/dashboards/[id] Endpoint
app/api/dashboards/[id]/route.ts:33
+8
GET /api/folders Endpoint
app/api/folders/route.ts:18
+8
GET /api/folders/[folderId] Endpoint
app/api/folders/[folderId]/route.ts:13
+8
GET /api/logs Endpoint
app/api/logs/route.ts:9
+8
GET /api/logs/[logId] Endpoint
app/api/logs/[logId]/route.ts:9
+8
PATCH /api/tags/[id] Endpoint
app/api/tags/[id]/route.ts:10
+8
POST /api/tokens Endpoint
app/api/tokens/route.ts:66
+8
PATCH /api/user/password Endpoint
app/api/user/password/route.ts:13
+4
POST /api/utm Endpoint
app/api/utm/route.ts:32
+8
A form calls banPartner() Form action
lib/actions/partners/ban-partner.ts:50
+3
PATCH /api/admin/partners/[partnerId] Endpoint
app/(ee)/api/admin/partners/[partnerId]/route.ts:108
+2
GET /api/campaigns Endpoint
app/(ee)/api/campaigns/route.ts:21
+7
POST /api/campaigns/[campaignId]/duplicate Endpoint
app/(ee)/api/campaigns/[campaignId]/duplicate/route.ts:12
+7
GET /api/campaigns/[campaignId]/events/count Endpoint
app/(ee)/api/campaigns/[campaignId]/events/count/route.ts:9
+7
GET /api/campaigns/[campaignId] Endpoint
app/(ee)/api/campaigns/[campaignId]/route.ts:26
+7
GET /api/campaigns/[campaignId]/summary Endpoint
app/(ee)/api/campaigns/[campaignId]/summary/route.ts:8
+7
GET /api/commissions/count Endpoint
app/(ee)/api/commissions/count/route.ts:9
+7
GET /api/commissions/[commissionId] Endpoint
app/(ee)/api/commissions/[commissionId]/route.ts:16
+7
GET /api/customers/count Endpoint
app/(ee)/api/customers/count/route.ts:9
+7
GET /api/customers/[id] Endpoint
app/(ee)/api/customers/[id]/route.ts:19
+7
GET /api/domains/status Endpoint
app/(ee)/api/domains/status/route.ts:14
+7
GET /api/domains/default Endpoint
app/api/domains/default/route.ts:9
+7
PATCH /api/domains/default Endpoint
app/api/domains/default/route.ts:55
+7
GET /api/domains/search-availability Endpoint
app/api/domains/search-availability/route.ts:18
+7
GET /api/domains/[domain] Endpoint
app/api/domains/[domain]/route.ts:29
+7
PATCH /api/e2e/enrollments Endpoint
app/(ee)/api/e2e/enrollments/route.ts:8
+7
GET /api/e2e/notification-emails Endpoint
app/(ee)/api/e2e/notification-emails/route.ts:9
+7
POST /api/e2e/notification-emails Endpoint
app/(ee)/api/e2e/notification-emails/route.ts:26
+7
GET /api/e2e/workflows Endpoint
app/(ee)/api/e2e/workflows/route.ts:8
+7
PATCH /api/e2e/workflows/[workflowId] Endpoint
app/(ee)/api/e2e/workflows/[workflowId]/route.ts:8
+7
GET /api/email-domains Endpoint
app/(ee)/api/email-domains/route.ts:20
+7
GET /api/fraud/events/count Endpoint
app/(ee)/api/fraud/events/count/route.ts:9
+7
GET /api/fraud/groups Endpoint
app/(ee)/api/fraud/groups/route.ts:12
+7
GET /api/fraud/rules Endpoint
app/(ee)/api/fraud/rules/route.ts:32
+7
POST /api/groups Endpoint
app/(ee)/api/groups/route.ts:44
+7
GET /api/groups/rules Endpoint
app/(ee)/api/groups/rules/route.ts:8
+7
GET /api/messages Endpoint
app/(ee)/api/messages/route.ts:14
+7
GET /api/network/partners Endpoint
app/(ee)/api/network/partners/route.ts:17
+7
GET /api/payouts/count Endpoint
app/(ee)/api/payouts/count/route.ts:12
+7
GET /api/programs/[programId]/discounts Endpoint
app/(ee)/api/programs/[programId]/discounts/route.ts:10
+7
GET /api/programs/[programId]/resources Endpoint
app/(ee)/api/programs/[programId]/resources/route.ts:8
+7
GET /api/programs/[programId] Endpoint
app/(ee)/api/programs/[programId]/route.ts:7
+7
GET /api/programs/[programId]/submitted-leads Endpoint
app/(ee)/api/programs/[programId]/submitted-leads/route.ts:13
+7
GET /api/rewards Endpoint
app/(ee)/api/rewards/route.ts:9
+7
GET /api/rewards/[rewardId] Endpoint
app/(ee)/api/rewards/[rewardId]/route.ts:8
+7
GET /api/dashboards Endpoint
app/api/dashboards/route.ts:16
+7
GET /api/folders/access-requests Endpoint
app/api/folders/access-requests/route.ts:6
+7
GET /api/integrations Endpoint
app/api/integrations/route.ts:7
+7
GET /api/oauth/apps Endpoint
app/api/oauth/apps/route.ts:15
+7
GET /api/oauth/apps/[appId] Endpoint
app/api/oauth/apps/[appId]/route.ts:13
+7
PATCH /api/oauth/apps/[appId] Endpoint
app/api/oauth/apps/[appId]/route.ts:53
+7
POST /api/oauth/authorize Endpoint
app/api/oauth/authorize/route.ts:13
+7
GET /api/tags Endpoint
app/api/tags/route.ts:15
+7
POST /api/tags Endpoint
app/api/tags/route.ts:97
+7
GET /api/tokens Endpoint
app/api/tokens/route.ts:25
+7
PATCH /api/tokens/[id] Endpoint
app/api/tokens/[id]/route.ts:53
+7
DELETE /api/user Endpoint
app/api/user/route.ts:229
+3
GET /api/utm Endpoint
app/api/utm/route.ts:9
+7
GET /api/webhooks Endpoint
app/api/webhooks/route.ts:18
+7
GET /api/webhooks/[webhookId]/folders Endpoint
app/api/webhooks/[webhookId]/folders/route.ts:7
+7
GET /api/webhooks/[webhookId]/links Endpoint
app/api/webhooks/[webhookId]/links/route.ts:6
+7
GET /api/admin/payouts Endpoint
app/(ee)/api/admin/payouts/route.ts:22
+1
POST /api/audit-logs/export Endpoint
app/(ee)/api/audit-logs/export/route.ts:16
+6
GET /api/bounties/count/submissions Endpoint
app/(ee)/api/bounties/count/submissions/route.ts:17
+6
GET /api/bounties/[bountyId] Endpoint
app/(ee)/api/bounties/[bountyId]/route.ts:29
+6
GET /api/campaigns/count Endpoint
app/(ee)/api/campaigns/count/route.ts:9
+6
POST /api/campaigns Endpoint
app/(ee)/api/campaigns/route.ts:80
+6
GET /api/domains/count Endpoint
app/api/domains/count/route.ts:7
+6
GET /api/fraud/groups/count Endpoint
app/(ee)/api/fraud/groups/count/route.ts:13
+6
GET /api/groups/count Endpoint
app/(ee)/api/groups/count/route.ts:8
+6
GET /api/groups Endpoint
app/(ee)/api/groups/route.ts:23
+6
GET /api/messages/count Endpoint
app/(ee)/api/messages/count/route.ts:8
+6
GET /api/network/partners/count Endpoint
app/(ee)/api/network/partners/count/route.ts:13
+6
GET /api/network/partners/invites-usage Endpoint
app/(ee)/api/network/partners/invites-usage/route.ts:6
+6
GET /api/programs/rewardful/campaigns Endpoint
app/(ee)/api/programs/rewardful/campaigns/route.ts:7
+6
GET /api/programs/[programId]/submitted-leads/count Endpoint
app/(ee)/api/programs/[programId]/submitted-leads/count/route.ts:12
+6
POST /api/shopify/pixel Endpoint
app/(ee)/api/shopify/pixel/route.ts:13
GET /api/folders/count Endpoint
app/api/folders/count/route.ts:8
+6
POST /api/folders Endpoint
app/api/folders/route.ts:41
+6
GET /api/logs/count Endpoint
app/api/logs/count/route.ts:8
+6
GET /api/og/partner-earnings Endpoint
app/api/og/partner-earnings/route.tsx:17
+6
GET /api/tags/count Endpoint
app/api/tags/count/route.ts:7
+6
GET /api/tokens/[id] Endpoint
app/api/tokens/[id]/route.ts:12
+6
DELETE /api/user/tokens Endpoint
app/api/user/tokens/route.ts:31
+2
GET /api/webhooks/[webhookId]/events Endpoint
app/api/webhooks/[webhookId]/events/route.ts:7
+6
GET /api/webhooks/[webhookId] Endpoint
app/api/webhooks/[webhookId]/route.ts:16
+6
POST /api/auth/reset-password Endpoint
app/api/auth/reset-password/route.ts:15
GET /api/network/programs Endpoint
app/(ee)/api/network/programs/route.ts:12
+4
GET /api/network/programs/summary Endpoint
app/(ee)/api/network/programs/summary/route.ts:6
+4
GET /api/callback/bitly Endpoint
app/api/callback/bitly/route.ts:10
POST /api/callback/plain/workspace Endpoint
app/api/callback/plain/workspace/route.ts:20
GET /api/og/partner-rewind Endpoint
app/api/og/partner-rewind/route.tsx:17
+4
DELETE /api/admin/links/ban Endpoint
app/(ee)/api/admin/links/ban/route.ts:14
+3
POST /api/admin/programs Endpoint
app/(ee)/api/admin/programs/route.ts:103
+3
GET /api/embed/referrals/bounties/[bountyId]/social-content-stats Endpoint
app/(ee)/api/embed/referrals/bounties/[bountyId]/social-content-stats/route.ts:15
POST /api/intercom/webhook/uninstall Endpoint
app/(ee)/api/intercom/webhook/uninstall/route.ts:10
GET /api/network/programs/count Endpoint
app/(ee)/api/network/programs/count/route.ts:16
+3
POST /api/ai/sync-embeddings Endpoint
app/api/ai/sync-embeddings/route.ts:32
POST /api/user/set-password Endpoint
app/api/user/set-password/route.ts:11
+3
POST /api/veriff/webhook Endpoint
app/api/veriff/webhook/route.ts:7
+8
POST /api/intercom/webhook Endpoint
app/(ee)/api/intercom/webhook/route.ts:12
GET /api/qr Endpoint
app/api/qr/route.tsx:18
POST /api/admin/slack-support-invite Endpoint
app/(ee)/api/admin/slack-support-invite/route.ts:10
+1
POST /api/hubspot/webhook Endpoint
app/(ee)/api/hubspot/webhook/route.ts:11
Someone opens /[domain]/[key]/inspect Page
app/[domain]/[key]/inspect/page.tsx:1
Someone opens /[domain]/[key]/proxy Page
app/[domain]/[key]/proxy/page.tsx:1
GET /api/hubspot/callback Endpoint
app/(ee)/api/hubspot/callback/route.ts:16
GET /api/intercom/callback Endpoint
app/(ee)/api/intercom/callback/route.ts:17
GET /api/paypal/callback Endpoint
app/(ee)/api/paypal/callback/route.ts:13
POST /api/ai/support-chat Endpoint
app/api/ai/support-chat/route.ts:17
+5
GET /api/slack/callback Endpoint
app/api/slack/callback/route.ts:14
+5
GET /api/admin/partners/[partnerId] Endpoint
app/(ee)/api/admin/partners/[partnerId]/route.ts:11
+4
POST /api/admin/workspaces/disable Endpoint
app/(ee)/api/admin/workspaces/disable/route.ts:8
+4
POST /api/admin/workspaces/restore Endpoint
app/(ee)/api/admin/workspaces/restore/route.ts:7
+4
POST /api/callback/plain/partner Endpoint
app/api/callback/plain/partner/route.ts:21
POST /api/admin/impersonate Endpoint
app/(ee)/api/admin/impersonate/route.ts:8
+3
PATCH /api/admin/partners/[partnerId]/network-status Endpoint
app/(ee)/api/admin/partners/[partnerId]/network-status/route.ts:16
+3
POST /api/admin/partners/[partnerId]/platforms Endpoint
app/(ee)/api/admin/partners/[partnerId]/platforms/route.ts:17
+3
GET /api/domains/[domain]/validate Endpoint
app/api/domains/[domain]/validate/route.ts:9
+3
POST /api/postbacks/callback Endpoint
app/api/postbacks/callback/route.ts:12
GET /api/user Endpoint
app/api/user/route.ts:36
+3
GET /api/admin/events Endpoint
app/(ee)/api/admin/events/route.ts:7
+2
POST /api/admin/partners/trusted Endpoint
app/(ee)/api/admin/partners/trusted/route.ts:50
+2
DELETE /api/admin/partners/trusted Endpoint
app/(ee)/api/admin/partners/trusted/route.ts:125
+2
POST /api/admin/partners/[partnerId]/generate-veriff-session Endpoint
app/(ee)/api/admin/partners/[partnerId]/generate-veriff-session/route.ts:12
+2
GET /api/admin/partners/[partnerId]/shared-platforms Endpoint
app/(ee)/api/admin/partners/[partnerId]/shared-platforms/route.ts:10
+2
POST /api/admin/partners/[partnerId]/verify-identity Endpoint
app/(ee)/api/admin/partners/[partnerId]/verify-identity/route.ts:6
+2
PATCH /api/admin/programs Endpoint
app/(ee)/api/admin/programs/route.ts:182
+2
PATCH /api/admin/programs/[programId] Endpoint
app/(ee)/api/admin/programs/[programId]/route.ts:24
+2
DELETE /api/admin/programs/[programId] Endpoint
app/(ee)/api/admin/programs/[programId]/route.ts:82
+2
POST /api/admin/reset-login-attempts Endpoint
app/(ee)/api/admin/reset-login-attempts/route.ts:6
+2
POST /api/jobs/process/[jobName] Endpoint
app/api/jobs/process/[jobName]/route.ts:11
GET /api/me Endpoint
app/api/me/route.ts:6
+2
GET /api/misc/check-favicon Endpoint
app/api/misc/check-favicon/route.ts:5
+2
GET /api/misc/check-workspace-slug Endpoint
app/api/misc/check-workspace-slug/route.ts:7
+2
GET /api/user/tokens Endpoint
app/api/user/tokens/route.ts:6
+2
GET /api/admin/commissions Endpoint
app/(ee)/api/admin/commissions/route.ts:21
+1
POST /api/admin/domains/refresh Endpoint
app/(ee)/api/admin/domains/refresh/route.ts:6
+1
GET /api/admin/domains/search-availability Endpoint
app/(ee)/api/admin/domains/search-availability/route.ts:18
+1
GET /api/admin/links Endpoint
app/(ee)/api/admin/links/route.ts:8
+1
GET /api/admin/partners/fraud Endpoint
app/(ee)/api/admin/partners/fraud/route.ts:17
+1
GET /api/admin/partners/network Endpoint
app/(ee)/api/admin/partners/network/route.ts:10
+1
GET /api/admin/partners/trusted Endpoint
app/(ee)/api/admin/partners/trusted/route.ts:8
+1
GET /api/admin/payouts/paypal Endpoint
app/(ee)/api/admin/payouts/paypal/route.ts:5
+1
GET /api/admin/payouts/stablecoin Endpoint
app/(ee)/api/admin/payouts/stablecoin/route.ts:32
+1
GET /api/admin/programs Endpoint
app/(ee)/api/admin/programs/route.ts:69
+1
GET /api/admin/programs/sales Endpoint
app/(ee)/api/admin/programs/sales/route.ts:8
+1
POST /api/ai/support-chat/upload Endpoint
app/api/ai/support-chat/upload/route.ts:24
+1
GET /api/docs/guides/[guide] Endpoint
app/api/docs/guides/[guide]/route.ts:5
+1
POST /api/resumes/upload-url Endpoint
app/api/resumes/upload-url/route.ts:13
GET /api/unsplash/search Endpoint
app/api/unsplash/search/route.ts:8
POST /api/user/notification-preferences Endpoint
app/api/user/notification-preferences/route.ts:78
+1
GET /api/user/referrals-token Endpoint
app/api/user/referrals-token/route.ts:11
+1
GET /api/admin/links/count Endpoint
app/(ee)/api/admin/links/count/route.ts:7
GET /api/admin/partners/network/count Endpoint
app/(ee)/api/admin/partners/network/count/route.ts:7
GET /api/user/notification-preferences Endpoint
app/api/user/notification-preferences/route.ts:18
GET /api/embed/referrals/earnings Endpoint
app/(ee)/api/embed/referrals/earnings/route.ts:26
GET /api/embed/referrals/earnings/timeseries Endpoint
app/(ee)/api/embed/referrals/earnings/timeseries/route.ts:7
GET /api/embed/referrals/events Endpoint
app/(ee)/api/embed/referrals/events/route.ts:24
POST /api/dub/webhook Endpoint
app/api/dub/webhook/route.ts:7
GET /api/og/analytics Endpoint
app/api/og/analytics/route.tsx:16
POST /api/resend/webhook Endpoint
app/api/resend/webhook/route.ts:10
Someone opens /admin.dub.co/analytics Page
app/(ee)/admin.dub.co/(dashboard)/analytics/page.tsx:1
Someone opens /admin.dub.co Page
app/(ee)/admin.dub.co/(dashboard)/page.tsx:1
Someone opens /admin.dub.co/partners/network Page
app/(ee)/admin.dub.co/(dashboard)/partners/network/page.tsx:1
GET /api/embed/referrals/leaderboard Endpoint
app/(ee)/api/embed/referrals/leaderboard/route.ts:10
POST /api/intercom/webhook/health-check Endpoint
app/(ee)/api/intercom/webhook/health-check/route.ts:14
GET /api/oauth/userinfo Endpoint
app/api/oauth/userinfo/route.ts:16
GET /api/og/program Endpoint
app/api/og/program/route.tsx:19
Someone opens /admin.dub.co/domains Page
app/(ee)/admin.dub.co/(dashboard)/domains/page.tsx:1
Someone opens /admin.dub.co/events Page
app/(ee)/admin.dub.co/(dashboard)/events/page.tsx:1
Someone opens /admin.dub.co/partners/fraud Page
app/(ee)/admin.dub.co/(dashboard)/partners/fraud/page.tsx:1
Someone opens /admin.dub.co/partners/trusted Page
app/(ee)/admin.dub.co/(dashboard)/partners/trusted/page.tsx:1
Someone opens /admin.dub.co/programs Page
app/(ee)/admin.dub.co/(dashboard)/programs/page.tsx:1
GET / POST /api/auth/saml/authorize Endpoint
app/(ee)/api/auth/saml/authorize/route.ts:27
GET /api/auth/saml/userinfo Endpoint
app/(ee)/api/auth/saml/userinfo/route.ts:4
POST /api/auth/saml/verify Endpoint
app/(ee)/api/auth/saml/verify/route.tsx:9
POST /api/embed/referrals/bounties/[bountyId]/upload Endpoint
app/(ee)/api/embed/referrals/bounties/[bountyId]/upload/route.ts:13
GET /api/embed/referrals/links Endpoint
app/(ee)/api/embed/referrals/links/route.ts:17
POST /api/embed/referrals/submissions Endpoint
app/(ee)/api/embed/referrals/submissions/route.ts:9
GET /api/embed/referrals/token Endpoint
app/(ee)/api/embed/referrals/token/route.ts:5
GET /api/providers Endpoint
app/api/providers/route.ts:9
Someone opens /password/[linkId] Page
app/password/[linkId]/page.tsx:1
GET /wellknown/[domain]/[file] Endpoint
app/wellknown/[domain]/[file]/route.ts:9
Someone opens /[domain]/expired Page
app/[domain]/expired/page.tsx:1
Someone opens /[domain]/notfound Page
app/[domain]/notfound/page.tsx:1
Someone opens /[domain]/[key]/stats Page
app/[domain]/[key]/stats/page.tsx:1
A form calls verifyPassword() Form action
app/app.dub.co/(share)/share/[dashboardId]/action.ts:6
A form calls verifyPassword() Form action
app/password/[linkId]/action.ts:8
A form calls generateCsvMapping() Form action
lib/ai/generate-csv-mapping.ts:8
A form calls generateFilters() Form action
lib/ai/generate-filters.ts:40
A form calls validateAuthorizeRequest() Form action
lib/api/oauth/actions.ts:7
Someone opens /admin.dub.co/login Page
app/(ee)/admin.dub.co/(auth)/login/page.tsx:1
Someone opens /admin.dub.co/commissions Page
app/(ee)/admin.dub.co/(dashboard)/commissions/page.tsx:1
Someone opens /admin.dub.co/links Page
app/(ee)/admin.dub.co/(dashboard)/links/page.tsx:1
Someone opens /admin.dub.co/partners Page
app/(ee)/admin.dub.co/(dashboard)/partners/page.tsx:1
Someone opens /admin.dub.co/payouts Page
app/(ee)/admin.dub.co/(dashboard)/payouts/page.tsx:1
Someone opens /admin.dub.co/payouts/paypal Page
app/(ee)/admin.dub.co/(dashboard)/payouts/paypal/page.tsx:1
Someone opens /admin.dub.co/payouts/stablecoin Page
app/(ee)/admin.dub.co/(dashboard)/payouts/stablecoin/page.tsx:1
Someone opens /admin.dub.co/programs/marketplace Page
app/(ee)/admin.dub.co/(dashboard)/programs/marketplace/page.tsx:1
Someone opens /admin.dub.co/programs/sales Page
app/(ee)/admin.dub.co/(dashboard)/programs/sales/page.tsx:1
Someone opens /admin.dub.co/revenue Page
app/(ee)/admin.dub.co/(dashboard)/revenue/page.tsx:1
GET /api/admin/fraud-alerts Endpoint
app/(ee)/api/admin/fraud-alerts/route.ts:1
HEAD /api/appsflyer/webhook Endpoint
app/(ee)/api/appsflyer/webhook/route.ts:177
POST /api/auth/saml/callback Endpoint
app/(ee)/api/auth/saml/callback/route.ts:4
POST /api/auth/saml/token Endpoint
app/(ee)/api/auth/saml/token/route.ts:6
GET / POST /api/auth/[...nextauth] Endpoint
app/api/auth/[...nextauth]/route.tsx:6
GET /api/mock/rewardful/affiliates Endpoint
app/(ee)/api/mock/rewardful/affiliates/route.ts:3
GET /api/mock/rewardful/campaigns Endpoint
app/(ee)/api/mock/rewardful/campaigns/route.ts:4
GET /api/mock/rewardful/campaigns/[campaignId] Endpoint
app/(ee)/api/mock/rewardful/campaigns/[campaignId]/route.ts:4
GET /api/mock/rewardful/commissions Endpoint
app/(ee)/api/mock/rewardful/commissions/route.ts:3
GET /api/mock/rewardful/referrals Endpoint
app/(ee)/api/mock/rewardful/referrals/route.ts:3
DELETE / GET / POST / PUT /api/scim/v2.0/[...directory] Endpoint
app/(ee)/api/scim/v2.0/[...directory]/route.ts:58
OPTIONS /api/shopify/pixel Endpoint
app/(ee)/api/shopify/pixel/route.ts:58
HEAD /api/singular/webhook Endpoint
app/(ee)/api/singular/webhook/route.ts:115
OPTIONS /api/track/application Endpoint
app/(ee)/api/track/application/route.ts:124
OPTIONS /api/track/click Endpoint
app/(ee)/api/track/click/route.ts:185
OPTIONS /api/track/lead/client Endpoint
app/(ee)/api/track/lead/client/route.ts:62
OPTIONS /api/track/open Endpoint
app/(ee)/api/track/open/route.ts:204
OPTIONS /api/track/sale/client Endpoint
app/(ee)/api/track/sale/client/route.ts:75
OPTIONS /api/track/visit Endpoint
app/(ee)/api/track/visit/route.ts:119
OPTIONS /api/oauth/token Endpoint
app/api/oauth/token/route.ts:32
OPTIONS /api/oauth/userinfo Endpoint
app/api/oauth/userinfo/route.ts:78
GET /api/og/avatar/[[...seed]] Endpoint
app/api/og/avatar/[[...seed]]/route.tsx:7
OPTIONS /api/qr Endpoint
app/api/qr/route.tsx:106
GET /api Endpoint
app/api/route.ts:6
GET /api/supported-countries Endpoint
app/api/supported-countries/route.ts:6
PUT /api/tags/[id] Endpoint
app/api/tags/[id]/route.ts:57
POST /api/unsplash/download Endpoint
app/api/unsplash/download/route.ts:4
PUT /api/user Endpoint
app/api/user/route.ts:226
Someone opens /cloaked/[url] Page
app/cloaked/[url]/page.tsx:1
Someone opens /custom-uri-scheme/[url] Page
app/custom-uri-scheme/[url]/page.tsx:1
Someone opens /[domain]/banned Page
app/[domain]/banned/page.tsx:1
Someone opens /[domain] Page
app/[domain]/page.tsx:1
127 with nothing found We found no effects in 127 of these. Some genuinely do nothing — a static page is just a page. The rest do their work further than 3 import hops away, or through code we cannot follow. Nothing found is not the same as nothing there.
← All behaviours

Endpoint · POST

POST /api/cron/cleanup/e2e-tests

Other software sends something in here.

app/(ee)/api/cron/cleanup/e2e-tests/route.ts:19

What it does

1 step
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Changes something

    Checks who is asking, via verifyQstashSignature()

    • Reads rows from link
    • Reads rows from domain
    • Reads rows from tag
    • Reads rows from partner
    • Reads rows from user
    • Deletes multiple rows from tag
    • Deletes multiple rows from user

    app/(ee)/api/cron/cleanup/e2e-tests/route.ts:20

Depends on configuration

lib/cron/verify-qstash.ts:15 This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/stripe/webhook

Other software sends something in here.

app/(ee)/api/stripe/webhook/route.ts:30

What it does

9 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out buf

    app/(ee)/api/stripe/webhook/route.ts:31

  2. Works something out

    Works out sig

    app/(ee)/api/stripe/webhook/route.ts:32

  3. Works something out

    Works out webhookSecret

    app/(ee)/api/stripe/webhook/route.ts:33

  4. Works something out

    Works out event

    app/(ee)/api/stripe/webhook/route.ts:34

  5. Changes something

    Verifies the request really came from Stripe

    app/(ee)/api/stripe/webhook/route.ts:35

  6. Stops here if this fails

    Checks !relevantEvents.has(event.type) — otherwise it stops here

    app/(ee)/api/stripe/webhook/route.ts:46

  7. Works something out

    Works out response

    app/(ee)/api/stripe/webhook/route.ts:52

  8. Changes something

    Checks who is asking, via checkoutSessionCompleted()

    app/(ee)/api/stripe/webhook/route.ts:53

  9. Answers

    Answers the request

    app/(ee)/api/stripe/webhook/route.ts:96

Depends on configuration

lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
lib/edge-config/update.ts:21 This takes a different path depending on the setting EDGE_CONFIG_ID, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
lib/edge-config/is-blacklisted-email.ts:4 This takes a different path depending on the setting EDGE_CONFIG, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/cron/cleanup/unenrolled-partners

Other software sends something in here.

app/(ee)/api/cron/cleanup/unenrolled-partners/route.ts:14

What it does

1 step
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Changes something

    Checks who is asking, via verifyQstashSignature()

    • Reads rows from partner

    app/(ee)/api/cron/cleanup/unenrolled-partners/route.ts:15

Depends on configuration

lib/cron/verify-qstash.ts:15 This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/cron/cleanup/demo-embed-partners

Other software sends something in here.

app/(ee)/api/cron/cleanup/demo-embed-partners/route.ts:13

What it does

1 step
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Changes something

    Checks who is asking, via verifyQstashSignature()

    • Reads rows from programEnrollment

    app/(ee)/api/cron/cleanup/demo-embed-partners/route.ts:14

Depends on configuration

lib/cron/verify-qstash.ts:15 This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/cron/workspaces/delete

Other software sends something in here.

app/(ee)/api/cron/workspaces/delete/route.ts:13

What it does

1 step
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out payload

    app/(ee)/api/cron/workspaces/delete/route.ts:14

Depends on configuration

lib/cron/verify-vercel.ts:7 This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/cron/partners/delete

Other software sends something in here.

app/(ee)/api/cron/partners/delete/route.ts:19

What it does

13 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out programId

    app/(ee)/api/cron/partners/delete/route.ts:20

  2. Changes something

    Reads one row from programEnrollment

    app/(ee)/api/cron/partners/delete/route.ts:28

  3. Stops here if this fails

    Checks !programEnrollment — otherwise it stops here

    app/(ee)/api/cron/partners/delete/route.ts:48

  4. Works something out

    Works out linkStats

    app/(ee)/api/cron/partners/delete/route.ts:54

  5. Works something out

    Works out canDelete

    app/(ee)/api/cron/partners/delete/route.ts:56

  6. Stops here if this fails

    Checks !canDelete — otherwise it stops here

    app/(ee)/api/cron/partners/delete/route.ts:61

  7. Works something out

    Works out programEnrollmentWhere

    app/(ee)/api/cron/partners/delete/route.ts:67

  8. Stops here if this fails

    Checks commissionCount > 0 || payoutCount > 0 — otherwise it stops here

    app/(ee)/api/cron/partners/delete/route.ts:83

  9. Works something out

    Works out partner

    app/(ee)/api/cron/partners/delete/route.ts:89

  10. Changes something

    Deletes multiple rows from submittedLead

    • Deletes multiple rows from fraudEvent
    • Deletes multiple rows from fraudEventGroup
    • Deletes multiple rows from message
    • Deletes multiple rows from discoveredPartner

    app/(ee)/api/cron/partners/delete/route.ts:93

  11. Branches

    Depending on links.length > 0

    app/(ee)/api/cron/partners/delete/route.ts:129

  12. Changes something

    Deletes a row from programEnrollment

    • Changes a row in project

    app/(ee)/api/cron/partners/delete/route.ts:141

  13. Answers

    Answers the request

    app/(ee)/api/cron/partners/delete/route.ts:177

Depends on configuration

lib/cron/verify-vercel.ts:7 This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/cron/import/tapfiliate

Other software sends something in here.

app/(ee)/api/cron/import/tapfiliate/route.ts:13

What it does

2 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out payload

    app/(ee)/api/cron/import/tapfiliate/route.ts:14

  2. Answers

    Answers the request

    app/(ee)/api/cron/import/tapfiliate/route.ts:37

Depends on configuration

lib/cron/verify-vercel.ts:7 This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/stripe/integration/webhook

Other software sends something in here.

app/(ee)/api/stripe/integration/webhook/route.ts:36

What it does

19 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out startTime

    app/(ee)/api/stripe/integration/webhook/route.ts:37

  2. Works something out

    Works out pathname

    app/(ee)/api/stripe/integration/webhook/route.ts:38

  3. Works something out

    Works out buf

    app/(ee)/api/stripe/integration/webhook/route.ts:39

  4. Works something out

    Works out sig

    app/(ee)/api/stripe/integration/webhook/route.ts:40

  5. Works something out

    Works out webhookSecret

    app/(ee)/api/stripe/integration/webhook/route.ts:43

  6. Works something out

    Works out mode

    app/(ee)/api/stripe/integration/webhook/route.ts:44

  7. Branches

    Depending on pathname.endsWith("/test")

    app/(ee)/api/stripe/integration/webhook/route.ts:46

  8. Stops here if this fails

    Checks !sig || !webhookSecret — otherwise it stops here

    app/(ee)/api/stripe/integration/webhook/route.ts:57

  9. Works something out

    Works out event

    app/(ee)/api/stripe/integration/webhook/route.ts:63

  10. Changes something

    Verifies the request really came from Stripe

    app/(ee)/api/stripe/integration/webhook/route.ts:64

  11. Stops here if this fails

    Checks !relevantEvents.has(event.type) — otherwise it stops here

    app/(ee)/api/stripe/integration/webhook/route.ts:80

  12. Stops here if this fails

    Checks !event.livemode && mode === "live" — otherwise it stops here

    app/(ee)/api/stripe/integration/webhook/route.ts:91

  13. Stops here if this fails

    Checks !event.account — otherwise it stops here

    app/(ee)/api/stripe/integration/webhook/route.ts:100

  14. Changes something

    Reads one row from project

    app/(ee)/api/stripe/integration/webhook/route.ts:108

  15. Stops here if this fails

    Checks !workspace — otherwise it stops here

    app/(ee)/api/stripe/integration/webhook/route.ts:120

  16. Works something out

    Works out result

    app/(ee)/api/stripe/integration/webhook/route.ts:127

  17. Changes something

    Checks who is asking, via checkoutSessionCompleted()

    app/(ee)/api/stripe/integration/webhook/route.ts:131

  18. Works something out

    Works out responseBody

    app/(ee)/api/stripe/integration/webhook/route.ts:209

  19. Answers

    Answers the request

    app/(ee)/api/stripe/integration/webhook/route.ts:227

Depends on configuration

lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/cron/partners/merge-accounts

Other software sends something in here.

app/(ee)/api/cron/partners/merge-accounts/route.ts:32

What it does

2 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out userId

    app/(ee)/api/cron/partners/merge-accounts/route.ts:33

  2. Changes something

    Checks who is asking, via verifyQstashSignature()

    • Reads rows from partner
    • Changes multiple rows in link
    • Changes multiple rows in payout
    • Changes multiple rows in commission
    • Changes multiple rows in customer
    • Changes multiple rows in discountCode
    • Changes multiple rows in notificationEmail
    • Changes multiple rows in message
    • Changes multiple rows in partnerComment
    • Reads rows from link
    • Changes multiple rows in bountySubmission
    • Changes multiple rows in programEnrollment
    • Deletes rows from something chosen at runtime
    • Deletes a row from user
    • Reads rows from fraudEvent
    • Deletes multiple rows from fraudEvent
    • Sends several emails at once

    app/(ee)/api/cron/partners/merge-accounts/route.ts:35

Depends on configuration

lib/cron/verify-qstash.ts:15 This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/cron/import/tolt

Other software sends something in here.

app/(ee)/api/cron/import/tolt/route.ts:14

What it does

1 step
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Changes something

    Checks who is asking, via verifyQstashSignature()

    app/(ee)/api/cron/import/tolt/route.ts:15

Depends on configuration

lib/cron/verify-qstash.ts:15 This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/partners/links

Other software sends something in here.

app/(ee)/api/partners/links/route.ts:70

What it does

13 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out programId

    app/(ee)/api/partners/links/route.ts:72

  2. Works something out

    Works out partnerId

    app/(ee)/api/partners/links/route.ts:74

  3. Works something out

    Works out program

    app/(ee)/api/partners/links/route.ts:77

  4. Stops here if this fails

    Checks !program.domain || !program.url — otherwise it throws an error

    app/(ee)/api/partners/links/route.ts:82

  5. Changes something

    Reads one row from programEnrollment

    app/(ee)/api/partners/links/route.ts:92

  6. Stops here if this fails

    Checks !partner — otherwise it throws an error

    app/(ee)/api/partners/links/route.ts:106

  7. Works something out

    Works out partnerGroup

    app/(ee)/api/partners/links/route.ts:113

  8. Stops here if this fails

    Checks !partnerGroup — otherwise it throws an error

    app/(ee)/api/partners/links/route.ts:116

  9. Works something out

    Works out linkUrl

    app/(ee)/api/partners/links/route.ts:125

  10. Works something out

    Works out link

    app/(ee)/api/partners/links/route.ts:127

  11. Stops here if this fails

    Checks error != null — otherwise it throws an error

    app/(ee)/api/partners/links/route.ts:150

  12. Works something out

    Works out partnerLink

    app/(ee)/api/partners/links/route.ts:157

  13. Answers

    Answers the request

    app/(ee)/api/partners/links/route.ts:167

Depends on configuration

lib/edge-config/get-feature-flags.ts:23 This takes a different path depending on the setting EDGE_CONFIG, so it may not behave the same in production as it does locally.
lib/api/links/process-link.ts:510 This takes a different path depending on the setting STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
lib/webhook/qstash.ts:111 This takes a different path depending on the setting NODE_ENV, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/links

Other software sends something in here.

app/api/links/route.ts:55

What it does

6 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Branches

    Depending on workspace

    app/api/links/route.ts:57

  2. Works something out

    Works out body

    app/api/links/route.ts:61

  3. Stops here if this fails

    Checks !session — otherwise it throws an error

    app/api/links/route.ts:65

  4. Works something out

    Works out link

    app/api/links/route.ts:78

  5. Stops here if this fails

    Checks error != null — otherwise it throws an error

    app/api/links/route.ts:84

  6. Branches

    Attempts the work, catching failures

    app/api/links/route.ts:91

Depends on configuration

lib/edge-config/get-feature-flags.ts:23 This takes a different path depending on the setting EDGE_CONFIG, so it may not behave the same in production as it does locally.
lib/api/links/process-link.ts:510 This takes a different path depending on the setting STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
lib/webhook/qstash.ts:111 This takes a different path depending on the setting NODE_ENV, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/partner-profile/programs/[programId]/links

Other software sends something in here.

app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:48

What it does

12 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out url

    app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:50

  2. Works something out

    Works out program

    app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:54

  3. Stops here if this fails

    Checks INACTIVE_ENROLLMENT_STATUSES.includes(status) — otherwise it throws an error

    app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:70

  4. Stops here if this fails

    Checks !program.domain || !program.url — otherwise it throws an error

    app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:77

  5. Stops here if this fails

    Checks !group — otherwise it throws an error

    app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:85

  6. Stops here if this fails

    Checks links.length >= group.maxPartnerLinks — otherwise it throws an error

    app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:93

  7. Changes something

    Reads one row from utmTemplate

    app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:103

  8. Works something out

    Works out linkUrl

    app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:111

  9. Works something out

    Works out link

    app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:113

  10. Stops here if this fails

    Checks error != null — otherwise it throws an error

    app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:142

  11. Works something out

    Works out partnerLink

    app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:149

  12. Answers

    Answers the request

    app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:151

Depends on configuration

lib/edge-config/get-partner-feature-flags.ts:12 This takes a different path depending on the setting EDGE_CONFIG, so it may not behave the same in production as it does locally.
lib/api/links/process-link.ts:510 This takes a different path depending on the setting STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/workspaces/[idOrSlug]/billing/upgrade

Other software sends something in here.

app/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:23

What it does

7 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out plan

    app/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:25

  2. Works something out

    Works out lookupKey

    app/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:29

  3. Works something out

    Works out prices

    app/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:32

  4. Stops here if this fails

    Checks prices.data.length === 0 — otherwise it throws an error

    app/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:36

  5. Works something out

    Works out existingSubscription

    app/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:43

  6. Stops here if this fails

    Checks process.env.VERCEL === "1" && process.env.VERCEL_ENV === "preview" — otherwise it throws an error

    This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.

    This takes a different path depending on the setting VERCEL_ENV, so it may not behave the same in production as it does locally.

    app/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:52

  7. Stops here if this fails

    Checks workspace.stripeId && existingSubscription — otherwise it stops here

    • Opens the Stripe billing portal, where a customer can change what they pay
    • Starts a Stripe checkout — this is where money is taken

    This takes a different path depending on the setting NODE_ENV, so it may not behave the same in production as it does locally.

    app/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:62

Depends on configuration

app/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:52 This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.
app/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:52 This takes a different path depending on the setting VERCEL_ENV, so it may not behave the same in production as it does locally.
app/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:160 This takes a different path depending on the setting NODE_ENV, so it may not behave the same in production as it does locally.
lib/edge-config/get-feature-flags.ts:23 This takes a different path depending on the setting EDGE_CONFIG, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/embed/referrals/links

Other software sends something in here.

app/(ee)/api/embed/referrals/links/route.ts:24

What it does

13 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out url

    app/(ee)/api/embed/referrals/links/route.ts:26

  2. Stops here if this fails

    Checks ["banned", "deactivated"].includes(programEnrollment.status) — otherwise it throws an error

    app/(ee)/api/embed/referrals/links/route.ts:30

  3. Stops here if this fails

    Checks !program.domain || !program.url — otherwise it throws an error

    app/(ee)/api/embed/referrals/links/route.ts:37

  4. Stops here if this fails

    Checks links.length >= group.maxPartnerLinks — otherwise it throws an error

    app/(ee)/api/embed/referrals/links/route.ts:45

  5. Changes something

    Reads the first matching row from projectUsers

    • Reads one row from partnerGroup

    app/(ee)/api/embed/referrals/links/route.ts:54

  6. Stops here if this fails

    Checks !partnerGroup — otherwise it throws an error

    app/(ee)/api/embed/referrals/links/route.ts:85

  7. Works something out

    Works out linkUrl

    app/(ee)/api/embed/referrals/links/route.ts:92

  8. Works something out

    Works out link

    app/(ee)/api/embed/referrals/links/route.ts:94

  9. Stops here if this fails

    Checks error != null — otherwise it throws an error

    app/(ee)/api/embed/referrals/links/route.ts:122

  10. Works something out

    Works out partnerLink

    app/(ee)/api/embed/referrals/links/route.ts:129

  11. Works something out

    Works out workspace

    app/(ee)/api/embed/referrals/links/route.ts:132

  12. Branches

    Depending on workspace

    app/(ee)/api/embed/referrals/links/route.ts:133

  13. Answers

    Answers the request

    app/(ee)/api/embed/referrals/links/route.ts:143

Depends on configuration

lib/api/links/process-link.ts:510 This takes a different path depending on the setting STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
lib/edge-config/is-blacklisted-domain.ts:4 This takes a different path depending on the setting EDGE_CONFIG, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
lib/webhook/qstash.ts:111 This takes a different path depending on the setting NODE_ENV, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/cron/groups/remap-default-links

Other software sends something in here.

app/(ee)/api/cron/groups/remap-default-links/route.ts:46

What it does

1 step
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Changes something

    Checks who is asking, via verifyQstashSignature()

    • Reads one row from partnerGroup
    • Reads rows from programEnrollment
    • Changes multiple rows in link

    app/(ee)/api/cron/groups/remap-default-links/route.ts:47

Depends on configuration

lib/cron/verify-qstash.ts:15 This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.
lib/api/links/process-link.ts:510 This takes a different path depending on the setting STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/admin/partners/delete-account

Other software sends something in here.

app/(ee)/api/admin/partners/delete-account/route.ts:10

What it does

6 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out email

    app/(ee)/api/admin/partners/delete-account/route.ts:12

  2. Changes something

    Reads one row from partner

    app/(ee)/api/admin/partners/delete-account/route.ts:14

  3. Stops here if this fails

    Checks !partner — otherwise it stops here

    app/(ee)/api/admin/partners/delete-account/route.ts:39

  4. Stops here if this fails

    Checks partner.stripeConnectId — otherwise it stops here

    app/(ee)/api/admin/partners/delete-account/route.ts:43

  5. Stops here if this fails

    Checks deletePartnerAccount — otherwise it stops here

    app/(ee)/api/admin/partners/delete-account/route.ts:86

  6. Answers

    Answers the request

    app/(ee)/api/admin/partners/delete-account/route.ts:139

Depends on configuration

lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/cron/groups/create-default-links

Other software sends something in here.

app/(ee)/api/cron/groups/create-default-links/route.ts:42

What it does

1 step
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Changes something

    Checks who is asking, via verifyQstashSignature()

    • Reads one row from partnerGroupDefaultLink
    • Reads rows from programEnrollment

    app/(ee)/api/cron/groups/create-default-links/route.ts:43

Depends on configuration

lib/cron/verify-qstash.ts:15 This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.
lib/api/links/process-link.ts:510 This takes a different path depending on the setting STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/links/bulk

Other software sends something in here.

app/api/links/bulk/route.ts:35

What it does

13 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Stops here if this fails

    Checks !workspace — otherwise it throws an error

    app/api/links/bulk/route.ts:37

  2. Works something out

    Works out links

    app/api/links/bulk/route.ts:47

  3. Stops here if this fails

    Checks workspace.linksUsage + links.length > workspace.linksLimit && works… — otherwise it throws an error

    app/api/links/bulk/route.ts:48

  4. Works something out

    Works out duplicates

    app/api/links/bulk/route.ts:64

  5. Stops here if this fails

    Checks duplicates.length > 0 — otherwise it throws an error

    app/api/links/bulk/route.ts:72

  6. Works something out

    Works out processedLinks

    app/api/links/bulk/route.ts:81

  7. Works something out

    Works out validLinks

    app/api/links/bulk/route.ts:93

  8. Works something out

    Works out errorLinks

    app/api/links/bulk/route.ts:97

  9. Changes something

    Reads rows from tag

    app/api/links/bulk/route.ts:105

  10. Stops here if this fails

    Checks checkIfLinksHaveFolders(validLinks) — otherwise it stops here

    app/api/links/bulk/route.ts:171

  11. Stops here if this fails

    Checks checkIfLinksHaveWebhooks(validLinks) — otherwise it throws an error

    • Reads rows from webhook

    app/api/links/bulk/route.ts:218

  12. Works something out

    Works out validLinksResponse

    app/api/links/bulk/route.ts:253

  13. Answers

    Answers the request

    app/api/links/bulk/route.ts:256

Depends on configuration

lib/edge-config/get-feature-flags.ts:23 This takes a different path depending on the setting EDGE_CONFIG, so it may not behave the same in production as it does locally.
lib/api/links/process-link.ts:510 This takes a different path depending on the setting STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/workspaces/[idOrSlug]/import/rebrandly

Other software sends something in here.

app/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:95

What it does

7 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out selectedDomains

    app/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:97

  2. Changes something

    Checks who is asking, via verifyFolderAccess()

    app/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:100

  3. Changes something

    Reads rows from domain

    app/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:109

  4. Works something out

    Works out domainsNotInWorkspace

    app/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:116

  5. Changes something

    Adds multiple rows to domain

    app/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:119

  6. Works something out

    Works out response

    app/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:144

  7. Answers

    Answers the request

    app/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:160

Depends on configuration

lib/edge-config/get-feature-flags.ts:23 This takes a different path depending on the setting EDGE_CONFIG, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/workspaces/[idOrSlug]/import/short

Other software sends something in here.

app/api/workspaces/[idOrSlug]/import/short/route.ts:79

What it does

7 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out selectedDomains

    app/api/workspaces/[idOrSlug]/import/short/route.ts:81

  2. Changes something

    Checks who is asking, via verifyFolderAccess()

    app/api/workspaces/[idOrSlug]/import/short/route.ts:83

  3. Changes something

    Reads rows from domain

    app/api/workspaces/[idOrSlug]/import/short/route.ts:92

  4. Works something out

    Works out domainsNotInWorkspace

    app/api/workspaces/[idOrSlug]/import/short/route.ts:99

  5. Changes something

    Adds multiple rows to domain

    app/api/workspaces/[idOrSlug]/import/short/route.ts:102

  6. Works something out

    Works out response

    app/api/workspaces/[idOrSlug]/import/short/route.ts:127

  7. Answers

    Answers the request

    app/api/workspaces/[idOrSlug]/import/short/route.ts:142

Depends on configuration

lib/edge-config/get-feature-flags.ts:23 This takes a different path depending on the setting EDGE_CONFIG, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · DELETE

DELETE /api/workspaces/[idOrSlug]

Other software asks to remove something here.

app/api/workspaces/[idOrSlug]/route.ts:310

What it does

2 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Stops here if this fails

    Checks workspace.defaultProgramId — otherwise it throws an error

    app/api/workspaces/[idOrSlug]/route.ts:312

  2. Answers

    Answers the request

    app/api/workspaces/[idOrSlug]/route.ts:322

Depends on configuration

lib/edge-config/get-feature-flags.ts:23 This takes a different path depending on the setting EDGE_CONFIG, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/domains

Other software sends something in here.

app/api/domains/route.ts:96

What it does

10 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out body

    app/api/domains/route.ts:98

  2. Works something out

    Works out slug

    app/api/domains/route.ts:99

  3. Stops here if this fails

    Checks workspace.plan === "free" — otherwise it throws an error

    app/api/domains/route.ts:111

  4. Works something out

    Works out validDomain

    app/api/domains/route.ts:138

  5. Stops here if this fails

    Checks validDomain.error && validDomain.code — otherwise it throws an error

    app/api/domains/route.ts:140

  6. Stops here if this fails

    Checks process.env.VERCEL === "1" — otherwise it stops here

    This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.

    app/api/domains/route.ts:148

  7. Works something out

    Works out domainId

    app/api/domains/route.ts:159

  8. Works something out

    Works out logoUploaded

    app/api/domains/route.ts:161

  9. Works something out

    Works out domainRecord

    app/api/domains/route.ts:168

  10. Answers

    Answers the request

    app/api/domains/route.ts:254

Depends on configuration

app/api/domains/route.ts:148 This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.
lib/edge-config/get-feature-flags.ts:23 This takes a different path depending on the setting EDGE_CONFIG, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/workspaces/[idOrSlug]/import/bitly

Other software sends something in here.

app/api/workspaces/[idOrSlug]/import/bitly/route.ts:61

What it does

7 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out selectedDomains

    app/api/workspaces/[idOrSlug]/import/bitly/route.ts:63

  2. Changes something

    Reads rows from domain

    app/api/workspaces/[idOrSlug]/import/bitly/route.ts:65

  3. Works something out

    Works out domainsNotInWorkspace

    app/api/workspaces/[idOrSlug]/import/bitly/route.ts:72

  4. Changes something

    Adds multiple rows to domain

    app/api/workspaces/[idOrSlug]/import/bitly/route.ts:76

  5. Works something out

    Works out groups

    app/api/workspaces/[idOrSlug]/import/bitly/route.ts:104

  6. Works something out

    Works out response

    app/api/workspaces/[idOrSlug]/import/bitly/route.ts:120

  7. Answers

    Answers the request

    app/api/workspaces/[idOrSlug]/import/bitly/route.ts:138

Depends on configuration

lib/edge-config/get-feature-flags.ts:23 This takes a different path depending on the setting EDGE_CONFIG, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
lib/planetscale/connection.ts:4 This takes a different path depending on the setting DATABASE_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · DELETE

DELETE /api/groups/[groupIdOrSlug]

Other software asks to remove something here.

app/(ee)/api/groups/[groupIdOrSlug]/route.ts:263

What it does

11 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out programId

    app/(ee)/api/groups/[groupIdOrSlug]/route.ts:265

  2. Works something out

    Works out groupIdOrSlug

    app/(ee)/api/groups/[groupIdOrSlug]/route.ts:266

  3. Stops here if this fails

    Checks group.programId !== programId — otherwise it throws an error

    app/(ee)/api/groups/[groupIdOrSlug]/route.ts:294

  4. Stops here if this fails

    Checks group.slug === DEFAULT_PARTNER_GROUP.slug — otherwise it throws an error

    app/(ee)/api/groups/[groupIdOrSlug]/route.ts:301

  5. Changes something

    Reads rows from programEnrollment

    app/(ee)/api/groups/[groupIdOrSlug]/route.ts:308

  6. Works something out

    Works out shouldDeleteGroupRewards

    app/(ee)/api/groups/[groupIdOrSlug]/route.ts:329

  7. Works something out

    Works out groupRewardIds

    app/(ee)/api/groups/[groupIdOrSlug]/route.ts:331

  8. Branches

    Depending on groupRewardIds.length > 0

    app/(ee)/api/groups/[groupIdOrSlug]/route.ts:338

  9. Changes something

    Deletes multiple rows from reward

    • Deletes rows from something chosen at runtime

    app/(ee)/api/groups/[groupIdOrSlug]/route.ts:353

  10. Branches

    Depending on deletedGroup

    app/(ee)/api/groups/[groupIdOrSlug]/route.ts:388

  11. Answers

    Answers the request

    app/(ee)/api/groups/[groupIdOrSlug]/route.ts:414

Depends on configuration

lib/edge-config/get-feature-flags.ts:23 This takes a different path depending on the setting EDGE_CONFIG, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/cron/import/csv

Other software sends something in here.

app/(ee)/api/cron/import/csv/route.ts:58

What it does

1 step
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Changes something

    Checks who is asking, via verifyQstashSignature()

    app/(ee)/api/cron/import/csv/route.ts:59

Depends on configuration

lib/cron/verify-qstash.ts:15 This takes a different path depending on the setting VERCEL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:5 This takes a different path depending on the setting UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
lib/upstash/redis.ts:6 This takes a different path depending on the setting UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
lib/api/links/process-link.ts:510 This takes a different path depending on the setting STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
← All behaviours

Endpoint · POST

POST /api/workflows/partner-approved

Other software sends something in here.

app/(ee)/api/workflows/partner-approved/route.ts:55

What it does

8 steps
Read top to bottom These are the statements of this behaviour in the order they are written. A step marked stops here ends everything below it when its check fails. Work reached through other files is listed but not placed in sequence — we can see that it happens, not exactly when.
  1. Works something out

    Works out input

    app/(ee)/api/workflows/partner-approved/route.ts:57

  2. Works something out

    Works out programId

    app/(ee)/api/workflows/partner-approved/route.ts:58

  3. Works something out

    Works out program

    app/(ee)/api/workflows/partner-approved/route.ts:60

  4. Works something out

    Works out groupId

    app/(ee)/api/workflows/partner-approved/route.ts:75

  5. Works something out

    Works out allPartnerLinks

    app/(ee)/api/workflows/partner-approved/route.ts:77

  6. Stops here if this fails

    Checks program.id === NETWORK_PROGRAM_ID — otherwise it stops here

    app/(ee)/api/workflows/partner-approved/route.ts:169

  7. Changes something

    Reads rows from partnerUser

    • Sends several emails at once

    app/(ee)/api/workflows/partner-approved/route.ts:186

  8. Changes something

    Reads rows from partnerPlatform

    app/(ee)/api/workflows/partner-approved/route.ts:268

Depends on configuration

lib/api/links/process-link.ts:510 This takes a different path depending on the setting STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
lib/webhook/qstash.ts:111 This takes a different path depending on the setting NODE_ENV, so it may not behave the same in production as it does locally.
lib/cron/index.ts:4 This takes a different path depending on the setting QSTASH_URL, so it may not behave the same in production as it does locally.
lib/cron/index.ts:5 This takes a different path depending on the setting QSTASH_TOKEN, so it may not behave the same in production as it does locally.
← All behaviours

table

token

What breaks if you change it

Rename or remove this table and 313 behaviours break.

Nothing writes to it from this application — it is read-only from here.

What happens next

If you remove or rename token…

315 behaviours affected in total

Stops working straight away in the code 313

These name it directly, so they break the moment it is gone.

POST /api/audit-logs/exportGET /api/bounties/count/submissionsGET /api/bountiesPOST /api/bountiesGET /api/bounties/[bountyId]PATCH /api/bounties/[bountyId]DELETE /api/bounties/[bountyId]GET /api/bounties/[bountyId]/submissions

and 305 more

Left with nothing keeping it up to date worked out 1

Every behaviour that wrote to these is in the list above. They would still exist and still be readable — but nothing would be updating them any more. This is the failure with no error message.

dashboard
Keeps running, on data that has gone stale worked out 2

These read the tables above. They would not crash and they would not warn you — they would carry on serving whatever was there when the writing stopped.

Someone opens /app.dub.co/share/[dashboardId]A form calls verifyPassword()
How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

313
POST /api/audit-logs/export Reads one row from token
GET /api/bounties/count/submissions Reads one row from token
GET /api/bounties Reads one row from token
POST /api/bounties Reads one row from token
GET /api/bounties/[bountyId] Reads one row from token
PATCH /api/bounties/[bountyId] Reads one row from token
DELETE /api/bounties/[bountyId] Reads one row from token
GET /api/bounties/[bountyId]/submissions Reads one row from token
POST /api/bounties/[bountyId]/submissions/[submissionId]/approve Reads one row from token
POST /api/bounties/[bountyId]/submissions/[submissionId]/reject Reads one row from token
POST /api/bounties/[bountyId]/sync-social-metrics Reads one row from token
GET /api/campaigns/count Reads one row from token
GET /api/campaigns Reads one row from token
POST /api/campaigns Reads one row from token
POST /api/campaigns/[campaignId]/duplicate Reads one row from token
GET /api/campaigns/[campaignId]/events/count Reads one row from token
GET /api/campaigns/[campaignId]/events Reads one row from token
POST /api/campaigns/[campaignId]/preview Reads one row from token
GET /api/campaigns/[campaignId] Reads one row from token
PATCH /api/campaigns/[campaignId] Reads one row from token
DELETE /api/campaigns/[campaignId] Reads one row from token
GET /api/campaigns/[campaignId]/summary Reads one row from token
GET /api/commissions/analytics Reads one row from token
PATCH /api/commissions/bulk Reads one row from token
GET /api/commissions/count Reads one row from token
GET /api/commissions/export Reads one row from token
GET /api/commissions Reads one row from token
POST /api/commissions Reads one row from token
GET /api/commissions/[commissionId] Reads one row from token
PATCH /api/commissions/[commissionId] Reads one row from token
POST /api/cron/framer/backfill-leads-batch Reads one row from token
GET /api/customers/count Reads one row from token
GET /api/customers/export Reads one row from token
GET /api/customers Reads one row from token
POST /api/customers Reads one row from token
GET /api/customers/search-stripe Reads one row from token
GET /api/customers/[id]/activity Reads one row from token
GET /api/customers/[id] Reads one row from token
PATCH /api/customers/[id] Reads one row from token
DELETE /api/customers/[id] Reads one row from token
GET /api/customers/[id]/stripe-invoices Reads one row from token
GET /api/discount-codes Reads one row from token
POST /api/discount-codes Reads one row from token
DELETE /api/discount-codes/[discountCodeId] Reads one row from token
POST /api/domains/register Reads one row from token
GET /api/domains/status Reads one row from token
DELETE /api/e2e/bounties/[bountyId] Reads one row from token
PATCH /api/e2e/enrollments Reads one row from token
GET /api/e2e/notification-emails Reads one row from token
POST /api/e2e/notification-emails Reads one row from token
DELETE /api/e2e/notification-emails Reads one row from token
POST /api/e2e/partners/pending-program-application Reads one row from token
POST /api/e2e/trigger-workflow/[workflowId] Reads one row from token
GET /api/e2e/workflows Reads one row from token
PATCH /api/e2e/workflows/[workflowId] Reads one row from token
GET /api/email-domains Reads one row from token
POST /api/email-domains Reads one row from token
PATCH /api/email-domains/[domain] Reads one row from token
DELETE /api/email-domains/[domain] Reads one row from token
GET /api/email-domains/[domain]/verify Reads one row from token
GET /api/events/export Reads one row from token
GET /api/events Reads one row from token
GET /api/fraud/events/count Reads one row from token
GET /api/fraud/events Reads one row from token
GET /api/fraud/groups/count Reads one row from token
GET /api/fraud/groups Reads one row from token
GET /api/fraud/rules Reads one row from token
PATCH /api/fraud/rules Reads one row from token
GET /api/groups/count Reads one row from token
GET /api/groups Reads one row from token
POST /api/groups Reads one row from token
GET /api/groups/rules Reads one row from token
POST /api/groups/[groupIdOrSlug]/default Reads one row from token
GET /api/groups/[groupIdOrSlug]/default-links Reads one row from token
POST /api/groups/[groupIdOrSlug]/default-links Reads one row from token
PATCH /api/groups/[groupIdOrSlug]/default-links/[defaultLinkId] Reads one row from token
DELETE /api/groups/[groupIdOrSlug]/default-links/[defaultLinkId] Reads one row from token
POST /api/groups/[groupIdOrSlug]/partners Reads one row from token
GET /api/groups/[groupIdOrSlug] Reads one row from token
PATCH /api/groups/[groupIdOrSlug] Reads one row from token
DELETE /api/groups/[groupIdOrSlug] Reads one row from token
GET /api/messages/count Reads one row from token
GET /api/messages Reads one row from token
GET /api/network/partners/count Reads one row from token
GET /api/network/partners/invites-usage Reads one row from token
GET /api/network/partners Reads one row from token
GET /api/network/programs/count Reads one row from token
GET /api/network/programs Reads one row from token
GET /api/network/programs/summary Reads one row from token
GET /api/partner-profile/invites Reads one row from token
POST /api/partner-profile/invites Reads one row from token
PATCH /api/partner-profile/invites Reads one row from token
DELETE /api/partner-profile/invites Reads one row from token
GET /api/partner-profile/messages/count Reads one row from token
GET /api/partner-profile/messages Reads one row from token
GET /api/partner-profile/notification-preferences Reads one row from token
GET /api/partner-profile/payouts/count Reads one row from token
GET /api/partner-profile/payouts Reads one row from token
GET /api/partner-profile/payouts/settings Reads one row from token
GET /api/partner-profile/postbacks Reads one row from token
POST /api/partner-profile/postbacks Reads one row from token
GET /api/partner-profile/postbacks/[postbackId]/events Reads one row from token
POST /api/partner-profile/postbacks/[postbackId]/rotate-secret Reads one row from token
GET /api/partner-profile/postbacks/[postbackId] Reads one row from token
PATCH /api/partner-profile/postbacks/[postbackId] Reads one row from token
DELETE /api/partner-profile/postbacks/[postbackId] Reads one row from token
POST /api/partner-profile/postbacks/[postbackId]/send-test Reads one row from token
GET /api/partner-profile/programs/count Reads one row from token
GET /api/partner-profile/programs Reads one row from token
GET /api/partner-profile/programs/[programId]/activity-logs Reads one row from token
GET /api/partner-profile/programs/[programId]/analytics/export Reads one row from token
GET /api/partner-profile/programs/[programId]/analytics Reads one row from token
GET /api/partner-profile/programs/[programId]/bounties Reads one row from token
GET /api/partner-profile/programs/[programId]/bounties/[bountyId] Reads one row from token
GET /api/partner-profile/programs/[programId]/bounties/[bountyId]/social-content-stats Reads one row from token
GET /api/partner-profile/programs/[programId]/customers/count Reads one row from token
GET /api/partner-profile/programs/[programId]/customers Reads one row from token
GET /api/partner-profile/programs/[programId]/customers/[customerId] Reads one row from token
GET /api/partner-profile/programs/[programId]/earnings/count Reads one row from token
GET /api/partner-profile/programs/[programId]/earnings Reads one row from token
GET /api/partner-profile/programs/[programId]/earnings/timeseries Reads one row from token
GET /api/partner-profile/programs/[programId]/events/export Reads one row from token
GET /api/partner-profile/programs/[programId]/events Reads one row from token
GET /api/partner-profile/programs/[programId]/groups/[groupIdOrSlug] Reads one row from token
GET /api/partner-profile/programs/[programId]/links Reads one row from token
POST /api/partner-profile/programs/[programId]/links Reads one row from token
PATCH /api/partner-profile/programs/[programId]/links/[linkId] Reads one row from token
DELETE /api/partner-profile/programs/[programId]/links/[linkId] Reads one row from token
GET /api/partner-profile/programs/[programId]/referrals/count Reads one row from token
GET /api/partner-profile/programs/[programId]/referrals Reads one row from token
GET /api/partner-profile/programs/[programId]/resources Reads one row from token
GET /api/partner-profile/programs/[programId] Reads one row from token
GET /api/partner-profile/programs/[programId]/submitted-leads/count Reads one row from token
GET /api/partner-profile/programs/[programId]/submitted-leads Reads one row from token
GET /api/partner-profile/referrals Reads one row from token
GET /api/partner-profile/referrals/stats Reads one row from token
GET /api/partner-profile/referrals/timeseries Reads one row from token
GET /api/partner-profile/rewind Reads one row from token
GET /api/partner-profile Reads one row from token
GET /api/partner-profile/users Reads one row from token
PATCH /api/partner-profile/users Reads one row from token
DELETE /api/partner-profile/users Reads one row from token
GET /api/partners/analytics Reads one row from token
GET /api/partners/applications/analytics Reads one row from token
POST /api/partners/applications/approve Reads one row from token
GET /api/partners/applications/export Reads one row from token
GET /api/partners/applications/history Reads one row from token
POST /api/partners/applications/reject Reads one row from token
GET /api/partners/applications Reads one row from token
GET /api/partners/applications/[applicationId] Reads one row from token
POST /api/partners/ban Reads one row from token
GET /api/partners/count Reads one row from token
POST /api/partners/deactivate Reads one row from token
GET /api/partners/export Reads one row from token
GET /api/partners/links Reads one row from token
POST /api/partners/links Reads one row from tokenPUT /api/partners/links/upsert Reads one row from token
GET /api/partners Reads one row from token
POST /api/partners Reads one row from token
GET /api/partners/tags/count Reads one row from token
GET /api/partners/tags Reads one row from token
GET /api/partners/[partnerId]/application-risks Reads one row from token
GET /api/partners/[partnerId]/comments/count Reads one row from token
GET /api/partners/[partnerId]/comments Reads one row from token
GET /api/partners/[partnerId]/cross-program-summary Reads one row from token
GET /api/partners/[partnerId]/referral Reads one row from token
GET /api/partners/[partnerId] Reads one row from token
GET /api/payouts/count Reads one row from token
GET /api/payouts/export Reads one row from token
GET /api/payouts Reads one row from token
GET /api/payouts/[payoutId] Reads one row from token
GET /api/programs/rewardful/campaigns Reads one row from token
GET /api/programs/[programId]/discounts Reads one row from token
GET /api/programs/[programId]/payouts/eligible/count Reads one row from token
GET /api/programs/[programId]/payouts/eligible Reads one row from token
GET /api/programs/[programId]/resources Reads one row from token
GET /api/programs/[programId] Reads one row from token
GET /api/programs/[programId]/submitted-leads/count Reads one row from token
GET /api/programs/[programId]/submitted-leads Reads one row from token
GET /api/rewards Reads one row from token
GET /api/rewards/[rewardId] Reads one row from token
PATCH /api/shopify/integration/callback Reads one row from token
PATCH /api/stripe/integration Reads one row from token
POST /api/track/lead Reads one row from token
POST /api/track/sale Reads one row from token
GET /partners.dub.co/invoices/[payoutId] Reads one row from token
GET /api/activity-logs Reads one row from token
POST /api/ai/completion Reads one row from token
GET /api/analytics/export Reads one row from token
GET /api/analytics Reads one row from token
GET /api/dashboards Reads one row from token
POST /api/dashboards Reads one row from token
PATCH /api/dashboards/[id] Reads one row from token
DELETE /api/dashboards/[id] Reads one row from token
POST /api/domains/client/register Reads one row from token
POST /api/domains/client/saved Reads one row from token
GET /api/domains/count Reads one row from token
GET /api/domains/default Reads one row from token
PATCH /api/domains/default Reads one row from token
GET /api/domains Reads one row from token
POST /api/domains Reads one row from token
GET /api/domains/search-availability Reads one row from token
POST /api/domains/[domain]/primary Reads one row from token
GET /api/domains/[domain] Reads one row from token
PATCH /api/domains/[domain] Reads one row from token
DELETE /api/domains/[domain] Reads one row from token
POST /api/domains/[domain]/transfer Reads one row from token
GET /api/domains/[domain]/verify Reads one row from token
GET /api/folders/access-requests Reads one row from token
GET /api/folders/count Reads one row from token
GET /api/folders/permissions Reads one row from token
GET /api/folders Reads one row from token
POST /api/folders Reads one row from token
GET /api/folders/[folderId]/dashboard Reads one row from token
GET /api/folders/[folderId] Reads one row from token
PATCH /api/folders/[folderId] Reads one row from token
DELETE /api/folders/[folderId] Reads one row from token
GET /api/folders/[folderId]/users Reads one row from token
GET /api/integrations Reads one row from token
DELETE /api/integrations/uninstall Reads one row from token
POST /api/links/bulk Reads one row from token
PATCH /api/links/bulk Reads one row from token
DELETE /api/links/bulk Reads one row from token
GET /api/links/count Reads one row from token
GET /api/links/export Reads one row from token
GET /api/links/info Reads one row from token
GET /api/links Reads one row from token
POST /api/links Reads one row from token
POST /api/links/sync Reads one row from token
PUT /api/links/upsert Reads one row from token
GET /api/links/[linkId]/dashboard Reads one row from token
GET /api/links/[linkId] Reads one row from token
PATCH /api/links/[linkId] Reads one row from token
DELETE /api/links/[linkId] Reads one row from token
POST /api/links/[linkId]/transfer Reads one row from token
GET /api/logs/count Reads one row from token
GET /api/logs Reads one row from token
GET /api/logs/[logId] Reads one row from token
GET /api/oauth/apps Reads one row from token
POST /api/oauth/apps Reads one row from token
GET /api/oauth/apps/[appId] Reads one row from token
PATCH /api/oauth/apps/[appId] Reads one row from token
DELETE /api/oauth/apps/[appId] Reads one row from token
POST /api/oauth/authorize Reads one row from token
GET /api/og/partner-earnings Reads one row from token
GET /api/og/partner-rewind Reads one row from token
GET /api/tags/count Reads one row from token
GET /api/tags Reads one row from token
POST /api/tags Reads one row from token
PATCH /api/tags/[id] Reads one row from token
DELETE /api/tags/[id] Reads one row from token
POST /api/tokens/embed/referrals Reads one row from token
GET /api/tokens Reads one row from token
POST /api/tokens Reads one row from token
GET /api/tokens/[id] Reads one row from token
PATCH /api/tokens/[id] Reads one row from token
DELETE /api/tokens/[id] Reads one row from token
GET /api/user/tokens Reads rows from token
GET /api/utm Reads one row from token
POST /api/utm Reads one row from token
PATCH /api/utm/[id] Reads one row from token
DELETE /api/utm/[id] Reads one row from token
GET /api/webhooks Reads one row from token
POST /api/webhooks Reads one row from token
GET /api/webhooks/[webhookId]/events Reads one row from token
GET /api/webhooks/[webhookId]/folders Reads one row from token
GET /api/webhooks/[webhookId]/links Reads one row from token
GET /api/webhooks/[webhookId] Reads one row from token
PATCH /api/webhooks/[webhookId] Reads one row from token
DELETE /api/webhooks/[webhookId] Reads one row from token
POST /api/workspaces/[idOrSlug]/billing/activate-paid-plan Reads one row from token
POST /api/workspaces/[idOrSlug]/billing/cancel Reads one row from token
GET /api/workspaces/[idOrSlug]/billing/invoices Reads one row from token
GET /api/workspaces/[idOrSlug]/billing/invoices/[invoiceId] Reads one row from token
POST /api/workspaces/[idOrSlug]/billing/manage Reads one row from token
GET /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from token
POST /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from token
PATCH /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from token
DELETE /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from token
POST /api/workspaces/[idOrSlug]/billing/retry-payment Reads one row from token
POST /api/workspaces/[idOrSlug]/billing/upgrade Reads one row from token
GET /api/workspaces/[idOrSlug]/billing/usage Reads one row from token
GET /api/workspaces/[idOrSlug]/import/bitly Reads one row from token
POST /api/workspaces/[idOrSlug]/import/bitly Reads one row from token
POST /api/workspaces/[idOrSlug]/import/csv Reads one row from token
GET /api/workspaces/[idOrSlug]/import/rebrandly Reads one row from token
PUT /api/workspaces/[idOrSlug]/import/rebrandly Reads one row from token
POST /api/workspaces/[idOrSlug]/import/rebrandly Reads one row from token
GET /api/workspaces/[idOrSlug]/import/short Reads one row from token
PUT /api/workspaces/[idOrSlug]/import/short Reads one row from token
POST /api/workspaces/[idOrSlug]/import/short Reads one row from token
GET /api/workspaces/[idOrSlug]/import/[importId]/download Reads one row from token
POST /api/workspaces/[idOrSlug]/invites/reset Reads one row from token
GET /api/workspaces/[idOrSlug]/invites Reads one row from token
POST /api/workspaces/[idOrSlug]/invites Reads one row from token
PATCH /api/workspaces/[idOrSlug]/invites Reads one row from token
DELETE /api/workspaces/[idOrSlug]/invites Reads one row from token
GET /api/workspaces/[idOrSlug]/notification-preferences Reads one row from token
GET /api/workspaces/[idOrSlug] Reads one row from token
PATCH /api/workspaces/[idOrSlug] Reads one row from token
DELETE /api/workspaces/[idOrSlug] Reads one row from token
GET /api/workspaces/[idOrSlug]/saml Reads one row from token
POST /api/workspaces/[idOrSlug]/saml Reads one row from token
DELETE /api/workspaces/[idOrSlug]/saml Reads one row from token
GET /api/workspaces/[idOrSlug]/scim Reads one row from token
POST /api/workspaces/[idOrSlug]/scim Reads one row from token
DELETE /api/workspaces/[idOrSlug]/scim Reads one row from token
POST /api/workspaces/[idOrSlug]/sitemaps/import Reads one row from token
POST /api/workspaces/[idOrSlug]/support/slack-invite Reads one row from token
POST /api/workspaces/[idOrSlug]/upload-url Reads one row from token
GET /api/workspaces/[idOrSlug]/users Reads one row from token
PATCH /api/workspaces/[idOrSlug]/users Reads one row from token
DELETE /api/workspaces/[idOrSlug]/users Reads one row from token
← All behaviours

table

project

What breaks if you change it

Rename or remove this table and 293 behaviours break.

4 places write to it — change its shape and each of those needs updating too.

What happens next

If you remove or rename project…

407 behaviours affected in total

Stops working straight away in the code 293

These name it directly, so they break the moment it is gone.

POST /api/admin/domains/register-premiumPOST /api/admin/workspaces/disablePOST /api/admin/workspaces/restorePOST /api/audit-logs/exportPOST /api/auth/saml/verifyGET /api/bounties/count/submissionsGET /api/bountiesPOST /api/bounties

and 285 more

Left with nothing keeping it up to date worked out 11

Every behaviour that wrote to these is in the list above. They would still exist and still be readable — but nothing would be updating them any more. This is the failure with no error message.

projectUsersdomainfoldertagwebhookuserregisteredDomaininstalledIntegration

and 3 more

Keeps running, on data that has gone stale worked out 114

These read the tables above. They would not crash and they would not warn you — they would carry on serving whatever was there when the writing stopped.

GET /api/admin/analyticsPOST /api/admin/banGET /api/admin/commissionsPOST /api/admin/domains/refreshPOST /api/admin/domains/renewGET /api/admin/domains/search-availabilityGET /api/admin/eventsPATCH /api/admin/fraud-alerts/[id]

and 106 more

How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

293
POST /api/admin/domains/register-premium Reads one row from project
POST /api/admin/workspaces/disable Reads one row from project
POST /api/admin/workspaces/restore Reads one row from project
POST /api/audit-logs/export Reads one row from project
POST /api/auth/saml/verify Reads one row from project
GET /api/bounties/count/submissions Reads one row from project
GET /api/bounties Reads one row from project
POST /api/bounties Reads one row from project
GET /api/bounties/[bountyId] Reads one row from project
PATCH /api/bounties/[bountyId] Reads one row from project
DELETE /api/bounties/[bountyId] Reads one row from project
GET /api/bounties/[bountyId]/submissions Reads one row from project
POST /api/bounties/[bountyId]/submissions/[submissionId]/approve Reads one row from project
POST /api/bounties/[bountyId]/submissions/[submissionId]/reject Reads one row from project
POST /api/bounties/[bountyId]/sync-social-metrics Reads one row from project
GET /api/campaigns/count Reads one row from project
GET /api/campaigns Reads one row from project
POST /api/campaigns Reads one row from project
POST /api/campaigns/[campaignId]/duplicate Reads one row from project
GET /api/campaigns/[campaignId]/events/count Reads one row from project
GET /api/campaigns/[campaignId]/events Reads one row from project
POST /api/campaigns/[campaignId]/preview Reads one row from project
GET /api/campaigns/[campaignId] Reads one row from project
PATCH /api/campaigns/[campaignId] Reads one row from project
DELETE /api/campaigns/[campaignId] Reads one row from project
GET /api/campaigns/[campaignId]/summary Reads one row from project
GET /api/commissions/analytics Reads one row from project
PATCH /api/commissions/bulk Reads one row from project
GET /api/commissions/count Reads one row from project
GET /api/commissions/export Reads one row from project
GET /api/commissions Reads one row from project
POST /api/commissions Reads one row from project
GET /api/commissions/[commissionId] Reads one row from project
PATCH /api/commissions/[commissionId] Reads one row from project
POST /api/cron/cleanup/demo-embed-partners Changes multiple rows in projectPOST /api/cron/cleanup/e2e-tests Changes multiple rows in projectPOST /api/cron/cleanup/unenrolled-partners Changes multiple rows in project
POST /api/cron/domains/transfer Reads one row from project
GET /api/cron/domains/verify Reads the first matching row from project
GET /api/cron/email-domains/verify Reads one row from project
POST /api/cron/export/customers Reads one row from project
POST /api/cron/export/events/workspace Reads one row from project
POST /api/cron/export/links Reads one row from project
POST /api/cron/framer/backfill-leads-batch Reads one row from project
GET /api/cron/fraud/summary Reads one row from project
POST /api/cron/import/bitly Reads one row from project
POST /api/cron/import/csv Reads one row from project
POST /api/cron/import/rebrandly Reads one row from project
POST /api/cron/import/short Reads one row from project
POST /api/cron/sitemaps/import Reads one row from project
GET /api/cron/streams/send-link-clicked-webhooks Reads rows from project
GET /api/cron/trial-emails Reads rows from project
POST /api/cron/trial-emails Reads rows from project
POST /api/cron/usage Reads rows from projectChanges multiple rows in project
POST /api/cron/workspaces/delete Reads one row from project
GET /api/customers/count Reads one row from project
GET /api/customers/export Reads one row from project
GET /api/customers Reads one row from project
POST /api/customers Reads one row from project
GET /api/customers/search-stripe Reads one row from project
GET /api/customers/[id]/activity Reads one row from project
GET /api/customers/[id] Reads one row from project
PATCH /api/customers/[id] Reads one row from project
DELETE /api/customers/[id] Reads one row from project
GET /api/customers/[id]/stripe-invoices Reads one row from project
GET /api/discount-codes Reads one row from project
POST /api/discount-codes Reads one row from project
DELETE /api/discount-codes/[discountCodeId] Reads one row from project
POST /api/domains/register Reads one row from project
GET /api/domains/status Reads one row from project
DELETE /api/e2e/bounties/[bountyId] Reads one row from project
PATCH /api/e2e/enrollments Reads one row from project
GET /api/e2e/notification-emails Reads one row from project
POST /api/e2e/notification-emails Reads one row from project
DELETE /api/e2e/notification-emails Reads one row from project
POST /api/e2e/partners/pending-program-application Reads one row from project
POST /api/e2e/trigger-workflow/[workflowId] Reads one row from project
GET /api/e2e/workflows Reads one row from project
PATCH /api/e2e/workflows/[workflowId] Reads one row from project
GET /api/email-domains Reads one row from project
POST /api/email-domains Reads one row from project
PATCH /api/email-domains/[domain] Reads one row from project
DELETE /api/email-domains/[domain] Reads one row from project
GET /api/email-domains/[domain]/verify Reads one row from project
PATCH /api/embed/referrals/links/[linkId] Reads one row from project
GET /api/events/export Reads one row from project
GET /api/events Reads one row from project
GET /api/fraud/events/count Reads one row from project
GET /api/fraud/events Reads one row from project
GET /api/fraud/groups/count Reads one row from project
GET /api/fraud/groups Reads one row from project
GET /api/fraud/rules Reads one row from project
PATCH /api/fraud/rules Reads one row from project
GET /api/groups/count Reads one row from project
GET /api/groups Reads one row from project
POST /api/groups Reads one row from project
GET /api/groups/rules Reads one row from project
POST /api/groups/[groupIdOrSlug]/default Reads one row from project
GET /api/groups/[groupIdOrSlug]/default-links Reads one row from project
POST /api/groups/[groupIdOrSlug]/default-links Reads one row from project
PATCH /api/groups/[groupIdOrSlug]/default-links/[defaultLinkId] Reads one row from project
DELETE /api/groups/[groupIdOrSlug]/default-links/[defaultLinkId] Reads one row from project
POST /api/groups/[groupIdOrSlug]/partners Reads one row from project
GET /api/groups/[groupIdOrSlug] Reads one row from project
PATCH /api/groups/[groupIdOrSlug] Reads one row from project
DELETE /api/groups/[groupIdOrSlug] Reads one row from project
GET /api/messages/count Reads one row from project
GET /api/messages Reads one row from project
GET /api/network/partners/count Reads one row from project
GET /api/network/partners/invites-usage Reads one row from project
GET /api/network/partners Reads one row from project
GET /api/partners/analytics Reads one row from project
GET /api/partners/applications/analytics Reads one row from project
POST /api/partners/applications/approve Reads one row from project
GET /api/partners/applications/export Reads one row from project
GET /api/partners/applications/history Reads one row from project
POST /api/partners/applications/reject Reads one row from project
GET /api/partners/applications Reads one row from project
GET /api/partners/applications/[applicationId] Reads one row from project
POST /api/partners/ban Reads one row from project
GET /api/partners/count Reads one row from project
POST /api/partners/deactivate Reads one row from project
GET /api/partners/export Reads one row from project
GET /api/partners/links Reads one row from project
POST /api/partners/links Reads one row from projectPUT /api/partners/links/upsert Reads one row from project
GET /api/partners Reads one row from project
POST /api/partners Reads one row from project
GET /api/partners/tags/count Reads one row from project
GET /api/partners/tags Reads one row from project
GET /api/partners/[partnerId]/application-risks Reads one row from project
GET /api/partners/[partnerId]/comments/count Reads one row from project
GET /api/partners/[partnerId]/comments Reads one row from project
GET /api/partners/[partnerId]/cross-program-summary Reads one row from project
GET /api/partners/[partnerId]/referral Reads one row from project
GET /api/partners/[partnerId] Reads one row from project
GET /api/payouts/count Reads one row from project
GET /api/payouts/export Reads one row from project
GET /api/payouts Reads one row from project
GET /api/payouts/[payoutId] Reads one row from project
GET /api/programs/rewardful/campaigns Reads one row from project
GET /api/programs/[programId]/discounts Reads one row from project
GET /api/programs/[programId]/payouts/eligible/count Reads one row from project
GET /api/programs/[programId]/payouts/eligible Reads one row from project
GET /api/programs/[programId]/resources Reads one row from project
GET /api/programs/[programId] Reads one row from project
GET /api/programs/[programId]/submitted-leads/count Reads one row from project
GET /api/programs/[programId]/submitted-leads Reads one row from project
GET /api/rewards Reads one row from project
GET /api/rewards/[rewardId] Reads one row from project
PATCH /api/shopify/integration/callback Reads one row from project
POST /api/shopify/integration/webhook Reads one row from project
GET /api/singular/webhook Reads one row from project
PATCH /api/stripe/integration Reads one row from project
POST /api/stripe/integration/webhook Reads one row from projectPOST /api/stripe/webhook Reads one row from projectReads the first matching row from project
POST /api/track/lead/client Reads one row from project
POST /api/track/lead Reads one row from project
POST /api/track/sale/client Reads one row from project
POST /api/track/sale Reads one row from project
GET /api/activity-logs Reads one row from project
POST /api/ai/completion Reads one row from project
POST /api/ai/support-chat Reads one row from project
GET /api/analytics/export Reads one row from project
GET /api/analytics Reads one row from project
GET /api/callback/bitly Reads one row from project
POST /api/callback/plain/workspace Reads the first matching row from project
GET /api/dashboards Reads one row from project
POST /api/dashboards Reads one row from project
PATCH /api/dashboards/[id] Reads one row from project
DELETE /api/dashboards/[id] Reads one row from project
POST /api/domains/client/register Reads one row from project
POST /api/domains/client/saved Reads one row from project
GET /api/domains/count Reads one row from project
GET /api/domains/default Reads one row from project
PATCH /api/domains/default Reads one row from project
GET /api/domains Reads one row from project
POST /api/domains Reads one row from project
GET /api/domains/search-availability Reads one row from project
POST /api/domains/[domain]/primary Reads one row from project
GET /api/domains/[domain] Reads one row from project
PATCH /api/domains/[domain] Reads one row from project
DELETE /api/domains/[domain] Reads one row from project
POST /api/domains/[domain]/transfer Reads one row from project
GET /api/domains/[domain]/verify Reads one row from project
POST /api/dub/webhook Reads one row from project
GET /api/folders/access-requests Reads one row from project
GET /api/folders/count Reads one row from project
GET /api/folders/permissions Reads one row from project
GET /api/folders Reads one row from project
POST /api/folders Reads one row from project
GET /api/folders/[folderId]/dashboard Reads one row from project
GET /api/folders/[folderId] Reads one row from project
PATCH /api/folders/[folderId] Reads one row from project
DELETE /api/folders/[folderId] Reads one row from project
GET /api/folders/[folderId]/users Reads one row from project
GET /api/integrations Reads one row from project
DELETE /api/integrations/uninstall Reads one row from project
POST /api/links/bulk Reads one row from project
PATCH /api/links/bulk Reads one row from project
DELETE /api/links/bulk Reads one row from project
GET /api/links/count Reads one row from project
GET /api/links/export Reads one row from project
GET /api/links/info Reads one row from project
GET /api/links Reads one row from project
POST /api/links Reads one row from project
POST /api/links/sync Reads one row from project
PUT /api/links/upsert Reads one row from project
GET /api/links/[linkId]/dashboard Reads one row from project
GET /api/links/[linkId] Reads one row from project
PATCH /api/links/[linkId] Reads one row from project
DELETE /api/links/[linkId] Reads one row from project
POST /api/links/[linkId]/transfer Reads one row from project
GET /api/logs/count Reads one row from project
GET /api/logs Reads one row from project
GET /api/logs/[logId] Reads one row from project
GET /api/misc/check-workspace-slug Reads one row from project
GET /api/oauth/apps Reads one row from project
POST /api/oauth/apps Reads one row from project
GET /api/oauth/apps/[appId] Reads one row from project
PATCH /api/oauth/apps/[appId] Reads one row from project
DELETE /api/oauth/apps/[appId] Reads one row from project
POST /api/oauth/authorize Reads one row from project
GET /api/tags/count Reads one row from project
GET /api/tags Reads one row from project
POST /api/tags Reads one row from project
PATCH /api/tags/[id] Reads one row from project
DELETE /api/tags/[id] Reads one row from project
POST /api/tokens/embed/referrals Reads one row from project
GET /api/tokens Reads one row from project
POST /api/tokens Reads one row from project
GET /api/tokens/[id] Reads one row from project
PATCH /api/tokens/[id] Reads one row from project
DELETE /api/tokens/[id] Reads one row from project
GET /api/utm Reads one row from project
POST /api/utm Reads one row from project
PATCH /api/utm/[id] Reads one row from project
DELETE /api/utm/[id] Reads one row from project
GET /api/webhooks Reads one row from project
POST /api/webhooks Reads one row from project
GET /api/webhooks/[webhookId]/events Reads one row from project
GET /api/webhooks/[webhookId]/folders Reads one row from project
GET /api/webhooks/[webhookId]/links Reads one row from project
GET /api/webhooks/[webhookId] Reads one row from project
PATCH /api/webhooks/[webhookId] Reads one row from project
DELETE /api/webhooks/[webhookId] Reads one row from project
GET /api/workspaces Reads rows from project
POST /api/workspaces/[idOrSlug]/billing/activate-paid-plan Reads one row from project
POST /api/workspaces/[idOrSlug]/billing/cancel Reads one row from project
GET /api/workspaces/[idOrSlug]/billing/invoices Reads one row from project
GET /api/workspaces/[idOrSlug]/billing/invoices/[invoiceId] Reads one row from project
POST /api/workspaces/[idOrSlug]/billing/manage Reads one row from project
GET /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from project
POST /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from project
PATCH /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from project
DELETE /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from project
POST /api/workspaces/[idOrSlug]/billing/retry-payment Reads one row from project
POST /api/workspaces/[idOrSlug]/billing/upgrade Reads one row from project
GET /api/workspaces/[idOrSlug]/billing/usage Reads one row from project
GET /api/workspaces/[idOrSlug]/import/bitly Reads one row from project
POST /api/workspaces/[idOrSlug]/import/bitly Reads one row from project
POST /api/workspaces/[idOrSlug]/import/csv Reads one row from project
GET /api/workspaces/[idOrSlug]/import/rebrandly Reads one row from project
PUT /api/workspaces/[idOrSlug]/import/rebrandly Reads one row from project
POST /api/workspaces/[idOrSlug]/import/rebrandly Reads one row from project
GET /api/workspaces/[idOrSlug]/import/short Reads one row from project
PUT /api/workspaces/[idOrSlug]/import/short Reads one row from project
POST /api/workspaces/[idOrSlug]/import/short Reads one row from project
GET /api/workspaces/[idOrSlug]/import/[importId]/download Reads one row from project
POST /api/workspaces/[idOrSlug]/invites/reset Reads one row from project
GET /api/workspaces/[idOrSlug]/invites Reads one row from project
POST /api/workspaces/[idOrSlug]/invites Reads one row from project
PATCH /api/workspaces/[idOrSlug]/invites Reads one row from project
DELETE /api/workspaces/[idOrSlug]/invites Reads one row from project
GET /api/workspaces/[idOrSlug]/notification-preferences Reads one row from project
GET /api/workspaces/[idOrSlug] Reads one row from project
PATCH /api/workspaces/[idOrSlug] Reads one row from project
DELETE /api/workspaces/[idOrSlug] Reads one row from project
GET /api/workspaces/[idOrSlug]/saml Reads one row from project
POST /api/workspaces/[idOrSlug]/saml Reads one row from project
DELETE /api/workspaces/[idOrSlug]/saml Reads one row from project
GET /api/workspaces/[idOrSlug]/scim Reads one row from project
POST /api/workspaces/[idOrSlug]/scim Reads one row from project
DELETE /api/workspaces/[idOrSlug]/scim Reads one row from project
POST /api/workspaces/[idOrSlug]/sitemaps/import Reads one row from project
POST /api/workspaces/[idOrSlug]/support/slack-invite Reads one row from project
POST /api/workspaces/[idOrSlug]/upload-url Reads one row from project
GET /api/workspaces/[idOrSlug]/users Reads one row from project
PATCH /api/workspaces/[idOrSlug]/users Reads one row from project
DELETE /api/workspaces/[idOrSlug]/users Reads one row from project
Someone opens /app.dub.co/invites/[code] Reads one row from project
Someone opens /app.dub.co/onboarding/success Reads one row from project
Someone opens /app.dub.co/analytics Reads the first matching row from project
← All behaviours

table

projectInvite

What breaks if you change it

Rename or remove this table and 257 behaviours break.

Nothing writes to it from this application — it is read-only from here.

What happens next

If you remove or rename projectInvite…

259 behaviours affected in total

Stops working straight away in the code 257

These name it directly, so they break the moment it is gone.

POST /api/audit-logs/exportGET /api/bounties/count/submissionsGET /api/bountiesPOST /api/bountiesGET /api/bounties/[bountyId]PATCH /api/bounties/[bountyId]DELETE /api/bounties/[bountyId]GET /api/bounties/[bountyId]/submissions

and 249 more

Left with nothing keeping it up to date worked out 1

Every behaviour that wrote to these is in the list above. They would still exist and still be readable — but nothing would be updating them any more. This is the failure with no error message.

dashboard
Keeps running, on data that has gone stale worked out 2

These read the tables above. They would not crash and they would not warn you — they would carry on serving whatever was there when the writing stopped.

Someone opens /app.dub.co/share/[dashboardId]A form calls verifyPassword()
How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

257
POST /api/audit-logs/export Reads one row from projectInvite
GET /api/bounties/count/submissions Reads one row from projectInvite
GET /api/bounties Reads one row from projectInvite
POST /api/bounties Reads one row from projectInvite
GET /api/bounties/[bountyId] Reads one row from projectInvite
PATCH /api/bounties/[bountyId] Reads one row from projectInvite
DELETE /api/bounties/[bountyId] Reads one row from projectInvite
GET /api/bounties/[bountyId]/submissions Reads one row from projectInvite
POST /api/bounties/[bountyId]/submissions/[submissionId]/approve Reads one row from projectInvite
POST /api/bounties/[bountyId]/submissions/[submissionId]/reject Reads one row from projectInvite
POST /api/bounties/[bountyId]/sync-social-metrics Reads one row from projectInvite
GET /api/campaigns/count Reads one row from projectInvite
GET /api/campaigns Reads one row from projectInvite
POST /api/campaigns Reads one row from projectInvite
POST /api/campaigns/[campaignId]/duplicate Reads one row from projectInvite
GET /api/campaigns/[campaignId]/events/count Reads one row from projectInvite
GET /api/campaigns/[campaignId]/events Reads one row from projectInvite
POST /api/campaigns/[campaignId]/preview Reads one row from projectInvite
GET /api/campaigns/[campaignId] Reads one row from projectInvite
PATCH /api/campaigns/[campaignId] Reads one row from projectInvite
DELETE /api/campaigns/[campaignId] Reads one row from projectInvite
GET /api/campaigns/[campaignId]/summary Reads one row from projectInvite
GET /api/commissions/analytics Reads one row from projectInvite
PATCH /api/commissions/bulk Reads one row from projectInvite
GET /api/commissions/count Reads one row from projectInvite
GET /api/commissions/export Reads one row from projectInvite
GET /api/commissions Reads one row from projectInvite
POST /api/commissions Reads one row from projectInvite
GET /api/commissions/[commissionId] Reads one row from projectInvite
PATCH /api/commissions/[commissionId] Reads one row from projectInvite
POST /api/cron/framer/backfill-leads-batch Reads one row from projectInvite
GET /api/customers/count Reads one row from projectInvite
GET /api/customers/export Reads one row from projectInvite
GET /api/customers Reads one row from projectInvite
POST /api/customers Reads one row from projectInvite
GET /api/customers/search-stripe Reads one row from projectInvite
GET /api/customers/[id]/activity Reads one row from projectInvite
GET /api/customers/[id] Reads one row from projectInvite
PATCH /api/customers/[id] Reads one row from projectInvite
DELETE /api/customers/[id] Reads one row from projectInvite
GET /api/customers/[id]/stripe-invoices Reads one row from projectInvite
GET /api/discount-codes Reads one row from projectInvite
POST /api/discount-codes Reads one row from projectInvite
DELETE /api/discount-codes/[discountCodeId] Reads one row from projectInvite
POST /api/domains/register Reads one row from projectInvite
GET /api/domains/status Reads one row from projectInvite
DELETE /api/e2e/bounties/[bountyId] Reads one row from projectInvite
PATCH /api/e2e/enrollments Reads one row from projectInvite
GET /api/e2e/notification-emails Reads one row from projectInvite
POST /api/e2e/notification-emails Reads one row from projectInvite
DELETE /api/e2e/notification-emails Reads one row from projectInvite
POST /api/e2e/partners/pending-program-application Reads one row from projectInvite
POST /api/e2e/trigger-workflow/[workflowId] Reads one row from projectInvite
GET /api/e2e/workflows Reads one row from projectInvite
PATCH /api/e2e/workflows/[workflowId] Reads one row from projectInvite
GET /api/email-domains Reads one row from projectInvite
POST /api/email-domains Reads one row from projectInvite
PATCH /api/email-domains/[domain] Reads one row from projectInvite
DELETE /api/email-domains/[domain] Reads one row from projectInvite
GET /api/email-domains/[domain]/verify Reads one row from projectInvite
GET /api/events/export Reads one row from projectInvite
GET /api/events Reads one row from projectInvite
GET /api/fraud/events/count Reads one row from projectInvite
GET /api/fraud/events Reads one row from projectInvite
GET /api/fraud/groups/count Reads one row from projectInvite
GET /api/fraud/groups Reads one row from projectInvite
GET /api/fraud/rules Reads one row from projectInvite
PATCH /api/fraud/rules Reads one row from projectInvite
GET /api/groups/count Reads one row from projectInvite
GET /api/groups Reads one row from projectInvite
POST /api/groups Reads one row from projectInvite
GET /api/groups/rules Reads one row from projectInvite
POST /api/groups/[groupIdOrSlug]/default Reads one row from projectInvite
GET /api/groups/[groupIdOrSlug]/default-links Reads one row from projectInvite
POST /api/groups/[groupIdOrSlug]/default-links Reads one row from projectInvite
PATCH /api/groups/[groupIdOrSlug]/default-links/[defaultLinkId] Reads one row from projectInvite
DELETE /api/groups/[groupIdOrSlug]/default-links/[defaultLinkId] Reads one row from projectInvite
POST /api/groups/[groupIdOrSlug]/partners Reads one row from projectInvite
GET /api/groups/[groupIdOrSlug] Reads one row from projectInvite
PATCH /api/groups/[groupIdOrSlug] Reads one row from projectInvite
DELETE /api/groups/[groupIdOrSlug] Reads one row from projectInvite
GET /api/messages/count Reads one row from projectInvite
GET /api/messages Reads one row from projectInvite
GET /api/network/partners/count Reads one row from projectInvite
GET /api/network/partners/invites-usage Reads one row from projectInvite
GET /api/network/partners Reads one row from projectInvite
GET /api/partners/analytics Reads one row from projectInvite
GET /api/partners/applications/analytics Reads one row from projectInvite
POST /api/partners/applications/approve Reads one row from projectInvite
GET /api/partners/applications/export Reads one row from projectInvite
GET /api/partners/applications/history Reads one row from projectInvite
POST /api/partners/applications/reject Reads one row from projectInvite
GET /api/partners/applications Reads one row from projectInvite
GET /api/partners/applications/[applicationId] Reads one row from projectInvite
POST /api/partners/ban Reads one row from projectInvite
GET /api/partners/count Reads one row from projectInvite
POST /api/partners/deactivate Reads one row from projectInvite
GET /api/partners/export Reads one row from projectInvite
GET /api/partners/links Reads one row from projectInvite
POST /api/partners/links Reads one row from projectInvitePUT /api/partners/links/upsert Reads one row from projectInvite
GET /api/partners Reads one row from projectInvite
POST /api/partners Reads one row from projectInvite
GET /api/partners/tags/count Reads one row from projectInvite
GET /api/partners/tags Reads one row from projectInvite
GET /api/partners/[partnerId]/application-risks Reads one row from projectInvite
GET /api/partners/[partnerId]/comments/count Reads one row from projectInvite
GET /api/partners/[partnerId]/comments Reads one row from projectInvite
GET /api/partners/[partnerId]/cross-program-summary Reads one row from projectInvite
GET /api/partners/[partnerId]/referral Reads one row from projectInvite
GET /api/partners/[partnerId] Reads one row from projectInvite
GET /api/payouts/count Reads one row from projectInvite
GET /api/payouts/export Reads one row from projectInvite
GET /api/payouts Reads one row from projectInvite
GET /api/payouts/[payoutId] Reads one row from projectInvite
GET /api/programs/rewardful/campaigns Reads one row from projectInvite
GET /api/programs/[programId]/discounts Reads one row from projectInvite
GET /api/programs/[programId]/payouts/eligible/count Reads one row from projectInvite
GET /api/programs/[programId]/payouts/eligible Reads one row from projectInvite
GET /api/programs/[programId]/resources Reads one row from projectInvite
GET /api/programs/[programId] Reads one row from projectInvite
GET /api/programs/[programId]/submitted-leads/count Reads one row from projectInvite
GET /api/programs/[programId]/submitted-leads Reads one row from projectInvite
GET /api/rewards Reads one row from projectInvite
GET /api/rewards/[rewardId] Reads one row from projectInvite
PATCH /api/shopify/integration/callback Reads one row from projectInvite
PATCH /api/stripe/integration Reads one row from projectInvite
POST /api/track/lead Reads one row from projectInvite
POST /api/track/sale Reads one row from projectInvite
GET /api/activity-logs Reads one row from projectInvite
POST /api/ai/completion Reads one row from projectInvite
GET /api/analytics/export Reads one row from projectInvite
GET /api/analytics Reads one row from projectInvite
GET /api/dashboards Reads one row from projectInvite
POST /api/dashboards Reads one row from projectInvite
PATCH /api/dashboards/[id] Reads one row from projectInvite
DELETE /api/dashboards/[id] Reads one row from projectInvite
POST /api/domains/client/register Reads one row from projectInvite
POST /api/domains/client/saved Reads one row from projectInvite
GET /api/domains/count Reads one row from projectInvite
GET /api/domains/default Reads one row from projectInvite
PATCH /api/domains/default Reads one row from projectInvite
GET /api/domains Reads one row from projectInvite
POST /api/domains Reads one row from projectInvite
GET /api/domains/search-availability Reads one row from projectInvite
POST /api/domains/[domain]/primary Reads one row from projectInvite
GET /api/domains/[domain] Reads one row from projectInvite
PATCH /api/domains/[domain] Reads one row from projectInvite
DELETE /api/domains/[domain] Reads one row from projectInvite
POST /api/domains/[domain]/transfer Reads one row from projectInvite
GET /api/domains/[domain]/verify Reads one row from projectInvite
GET /api/folders/access-requests Reads one row from projectInvite
GET /api/folders/count Reads one row from projectInvite
GET /api/folders/permissions Reads one row from projectInvite
GET /api/folders Reads one row from projectInvite
POST /api/folders Reads one row from projectInvite
GET /api/folders/[folderId]/dashboard Reads one row from projectInvite
GET /api/folders/[folderId] Reads one row from projectInvite
PATCH /api/folders/[folderId] Reads one row from projectInvite
DELETE /api/folders/[folderId] Reads one row from projectInvite
GET /api/folders/[folderId]/users Reads one row from projectInvite
GET /api/integrations Reads one row from projectInvite
DELETE /api/integrations/uninstall Reads one row from projectInvite
POST /api/links/bulk Reads one row from projectInvite
PATCH /api/links/bulk Reads one row from projectInvite
DELETE /api/links/bulk Reads one row from projectInvite
GET /api/links/count Reads one row from projectInvite
GET /api/links/export Reads one row from projectInvite
GET /api/links/info Reads one row from projectInvite
GET /api/links Reads one row from projectInvite
POST /api/links Reads one row from projectInvite
POST /api/links/sync Reads one row from projectInvite
PUT /api/links/upsert Reads one row from projectInvite
GET /api/links/[linkId]/dashboard Reads one row from projectInvite
GET /api/links/[linkId] Reads one row from projectInvite
PATCH /api/links/[linkId] Reads one row from projectInvite
DELETE /api/links/[linkId] Reads one row from projectInvite
POST /api/links/[linkId]/transfer Reads one row from projectInvite
GET /api/logs/count Reads one row from projectInvite
GET /api/logs Reads one row from projectInvite
GET /api/logs/[logId] Reads one row from projectInvite
GET /api/oauth/apps Reads one row from projectInvite
POST /api/oauth/apps Reads one row from projectInvite
GET /api/oauth/apps/[appId] Reads one row from projectInvite
PATCH /api/oauth/apps/[appId] Reads one row from projectInvite
DELETE /api/oauth/apps/[appId] Reads one row from projectInvite
POST /api/oauth/authorize Reads one row from projectInvite
GET /api/tags/count Reads one row from projectInvite
GET /api/tags Reads one row from projectInvite
POST /api/tags Reads one row from projectInvite
PATCH /api/tags/[id] Reads one row from projectInvite
DELETE /api/tags/[id] Reads one row from projectInvite
POST /api/tokens/embed/referrals Reads one row from projectInvite
GET /api/tokens Reads one row from projectInvite
POST /api/tokens Reads one row from projectInvite
GET /api/tokens/[id] Reads one row from projectInvite
PATCH /api/tokens/[id] Reads one row from projectInvite
DELETE /api/tokens/[id] Reads one row from projectInvite
GET /api/utm Reads one row from projectInvite
POST /api/utm Reads one row from projectInvite
PATCH /api/utm/[id] Reads one row from projectInvite
DELETE /api/utm/[id] Reads one row from projectInvite
GET /api/webhooks Reads one row from projectInvite
POST /api/webhooks Reads one row from projectInvite
GET /api/webhooks/[webhookId]/events Reads one row from projectInvite
GET /api/webhooks/[webhookId]/folders Reads one row from projectInvite
GET /api/webhooks/[webhookId]/links Reads one row from projectInvite
GET /api/webhooks/[webhookId] Reads one row from projectInvite
PATCH /api/webhooks/[webhookId] Reads one row from projectInvite
DELETE /api/webhooks/[webhookId] Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/billing/activate-paid-plan Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/billing/cancel Reads one row from projectInvite
GET /api/workspaces/[idOrSlug]/billing/invoices Reads one row from projectInvite
GET /api/workspaces/[idOrSlug]/billing/invoices/[invoiceId] Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/billing/manage Reads one row from projectInvite
GET /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from projectInvite
PATCH /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from projectInvite
DELETE /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/billing/retry-payment Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/billing/upgrade Reads one row from projectInvite
GET /api/workspaces/[idOrSlug]/billing/usage Reads one row from projectInvite
GET /api/workspaces/[idOrSlug]/import/bitly Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/import/bitly Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/import/csv Reads one row from projectInvite
GET /api/workspaces/[idOrSlug]/import/rebrandly Reads one row from projectInvite
PUT /api/workspaces/[idOrSlug]/import/rebrandly Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/import/rebrandly Reads one row from projectInvite
GET /api/workspaces/[idOrSlug]/import/short Reads one row from projectInvite
PUT /api/workspaces/[idOrSlug]/import/short Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/import/short Reads one row from projectInvite
GET /api/workspaces/[idOrSlug]/import/[importId]/download Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/invites/accept Reads the first matching row from projectInvite
POST /api/workspaces/[idOrSlug]/invites/decline Reads the first matching row from projectInvite
POST /api/workspaces/[idOrSlug]/invites/reset Reads one row from projectInvite
GET /api/workspaces/[idOrSlug]/invites Reads rows from projectInviteReads one row from projectInvite
POST /api/workspaces/[idOrSlug]/invites Reads one row from projectInvite
PATCH /api/workspaces/[idOrSlug]/invites Reads one row from projectInvite
DELETE /api/workspaces/[idOrSlug]/invites Reads one row from projectInvite
GET /api/workspaces/[idOrSlug]/notification-preferences Reads one row from projectInvite
GET /api/workspaces/[idOrSlug] Reads one row from projectInvite
PATCH /api/workspaces/[idOrSlug] Reads one row from projectInvite
DELETE /api/workspaces/[idOrSlug] Reads one row from projectInvite
GET /api/workspaces/[idOrSlug]/saml Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/saml Reads one row from projectInvite
DELETE /api/workspaces/[idOrSlug]/saml Reads one row from projectInvite
GET /api/workspaces/[idOrSlug]/scim Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/scim Reads one row from projectInvite
DELETE /api/workspaces/[idOrSlug]/scim Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/sitemaps/import Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/support/slack-invite Reads one row from projectInvite
POST /api/workspaces/[idOrSlug]/upload-url Reads one row from projectInvite
GET /api/workspaces/[idOrSlug]/users Reads one row from projectInvite
PATCH /api/workspaces/[idOrSlug]/users Reads one row from projectInvite
DELETE /api/workspaces/[idOrSlug]/users Reads one row from projectInvite
Someone opens /app.dub.co/[slug]/invite Reads the first matching row from projectInvite
Every request to /((?!api/|_next/|_proxy/|favicon.ico|sitemap.xml|robots.txt|manifest.webmanifest).*), before anything else Reads the first matching row from projectInvite
← All behaviours

table

restrictedToken

What breaks if you change it

Rename or remove this table and 255 behaviours break.

3 places can delete from it. Data removed here is gone for everything above.

What happens next

If you remove or rename restrictedToken…

257 behaviours affected in total

Stops working straight away in the code 255

These name it directly, so they break the moment it is gone.

POST /api/audit-logs/exportGET /api/bounties/count/submissionsGET /api/bountiesPOST /api/bountiesGET /api/bounties/[bountyId]PATCH /api/bounties/[bountyId]DELETE /api/bounties/[bountyId]GET /api/bounties/[bountyId]/submissions

and 247 more

Left with nothing keeping it up to date worked out 1

Every behaviour that wrote to these is in the list above. They would still exist and still be readable — but nothing would be updating them any more. This is the failure with no error message.

dashboard
Keeps running, on data that has gone stale worked out 2

These read the tables above. They would not crash and they would not warn you — they would carry on serving whatever was there when the writing stopped.

Someone opens /app.dub.co/share/[dashboardId]A form calls verifyPassword()
How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

255
POST /api/audit-logs/export Reads one row from restrictedToken
GET /api/bounties/count/submissions Reads one row from restrictedToken
GET /api/bounties Reads one row from restrictedToken
POST /api/bounties Reads one row from restrictedToken
GET /api/bounties/[bountyId] Reads one row from restrictedToken
PATCH /api/bounties/[bountyId] Reads one row from restrictedToken
DELETE /api/bounties/[bountyId] Reads one row from restrictedToken
GET /api/bounties/[bountyId]/submissions Reads one row from restrictedToken
POST /api/bounties/[bountyId]/submissions/[submissionId]/approve Reads one row from restrictedToken
POST /api/bounties/[bountyId]/submissions/[submissionId]/reject Reads one row from restrictedToken
POST /api/bounties/[bountyId]/sync-social-metrics Reads one row from restrictedToken
GET /api/campaigns/count Reads one row from restrictedToken
GET /api/campaigns Reads one row from restrictedToken
POST /api/campaigns Reads one row from restrictedToken
POST /api/campaigns/[campaignId]/duplicate Reads one row from restrictedToken
GET /api/campaigns/[campaignId]/events/count Reads one row from restrictedToken
GET /api/campaigns/[campaignId]/events Reads one row from restrictedToken
POST /api/campaigns/[campaignId]/preview Reads one row from restrictedToken
GET /api/campaigns/[campaignId] Reads one row from restrictedToken
PATCH /api/campaigns/[campaignId] Reads one row from restrictedToken
DELETE /api/campaigns/[campaignId] Reads one row from restrictedToken
GET /api/campaigns/[campaignId]/summary Reads one row from restrictedToken
GET /api/commissions/analytics Reads one row from restrictedToken
PATCH /api/commissions/bulk Reads one row from restrictedToken
GET /api/commissions/count Reads one row from restrictedToken
GET /api/commissions/export Reads one row from restrictedToken
GET /api/commissions Reads one row from restrictedToken
POST /api/commissions Reads one row from restrictedToken
GET /api/commissions/[commissionId] Reads one row from restrictedToken
PATCH /api/commissions/[commissionId] Reads one row from restrictedToken
POST /api/cron/framer/backfill-leads-batch Reads one row from restrictedToken
GET /api/customers/count Reads one row from restrictedToken
GET /api/customers/export Reads one row from restrictedToken
GET /api/customers Reads one row from restrictedToken
POST /api/customers Reads one row from restrictedToken
GET /api/customers/search-stripe Reads one row from restrictedToken
GET /api/customers/[id]/activity Reads one row from restrictedToken
GET /api/customers/[id] Reads one row from restrictedToken
PATCH /api/customers/[id] Reads one row from restrictedToken
DELETE /api/customers/[id] Reads one row from restrictedToken
GET /api/customers/[id]/stripe-invoices Reads one row from restrictedToken
GET /api/discount-codes Reads one row from restrictedToken
POST /api/discount-codes Reads one row from restrictedToken
DELETE /api/discount-codes/[discountCodeId] Reads one row from restrictedToken
POST /api/domains/register Reads one row from restrictedToken
GET /api/domains/status Reads one row from restrictedToken
DELETE /api/e2e/bounties/[bountyId] Reads one row from restrictedToken
PATCH /api/e2e/enrollments Reads one row from restrictedToken
GET /api/e2e/notification-emails Reads one row from restrictedToken
POST /api/e2e/notification-emails Reads one row from restrictedToken
DELETE /api/e2e/notification-emails Reads one row from restrictedToken
POST /api/e2e/partners/pending-program-application Reads one row from restrictedToken
POST /api/e2e/trigger-workflow/[workflowId] Reads one row from restrictedToken
GET /api/e2e/workflows Reads one row from restrictedToken
PATCH /api/e2e/workflows/[workflowId] Reads one row from restrictedToken
GET /api/email-domains Reads one row from restrictedToken
POST /api/email-domains Reads one row from restrictedToken
PATCH /api/email-domains/[domain] Reads one row from restrictedToken
DELETE /api/email-domains/[domain] Reads one row from restrictedToken
GET /api/email-domains/[domain]/verify Reads one row from restrictedToken
GET /api/events/export Reads one row from restrictedToken
GET /api/events Reads one row from restrictedToken
GET /api/fraud/events/count Reads one row from restrictedToken
GET /api/fraud/events Reads one row from restrictedToken
GET /api/fraud/groups/count Reads one row from restrictedToken
GET /api/fraud/groups Reads one row from restrictedToken
GET /api/fraud/rules Reads one row from restrictedToken
PATCH /api/fraud/rules Reads one row from restrictedToken
GET /api/groups/count Reads one row from restrictedToken
GET /api/groups Reads one row from restrictedToken
POST /api/groups Reads one row from restrictedToken
GET /api/groups/rules Reads one row from restrictedToken
POST /api/groups/[groupIdOrSlug]/default Reads one row from restrictedToken
GET /api/groups/[groupIdOrSlug]/default-links Reads one row from restrictedToken
POST /api/groups/[groupIdOrSlug]/default-links Reads one row from restrictedToken
PATCH /api/groups/[groupIdOrSlug]/default-links/[defaultLinkId] Reads one row from restrictedToken
DELETE /api/groups/[groupIdOrSlug]/default-links/[defaultLinkId] Reads one row from restrictedToken
POST /api/groups/[groupIdOrSlug]/partners Reads one row from restrictedToken
GET /api/groups/[groupIdOrSlug] Reads one row from restrictedToken
PATCH /api/groups/[groupIdOrSlug] Reads one row from restrictedToken
DELETE /api/groups/[groupIdOrSlug] Reads one row from restrictedToken
GET /api/messages/count Reads one row from restrictedToken
GET /api/messages Reads one row from restrictedToken
GET /api/network/partners/count Reads one row from restrictedToken
GET /api/network/partners/invites-usage Reads one row from restrictedToken
GET /api/network/partners Reads one row from restrictedToken
GET /api/partners/analytics Reads one row from restrictedToken
GET /api/partners/applications/analytics Reads one row from restrictedToken
POST /api/partners/applications/approve Reads one row from restrictedToken
GET /api/partners/applications/export Reads one row from restrictedToken
GET /api/partners/applications/history Reads one row from restrictedToken
POST /api/partners/applications/reject Reads one row from restrictedToken
GET /api/partners/applications Reads one row from restrictedToken
GET /api/partners/applications/[applicationId] Reads one row from restrictedToken
POST /api/partners/ban Reads one row from restrictedToken
GET /api/partners/count Reads one row from restrictedToken
POST /api/partners/deactivate Reads one row from restrictedToken
GET /api/partners/export Reads one row from restrictedToken
GET /api/partners/links Reads one row from restrictedToken
POST /api/partners/links Reads one row from restrictedTokenPUT /api/partners/links/upsert Reads one row from restrictedToken
GET /api/partners Reads one row from restrictedToken
POST /api/partners Reads one row from restrictedToken
GET /api/partners/tags/count Reads one row from restrictedToken
GET /api/partners/tags Reads one row from restrictedToken
GET /api/partners/[partnerId]/application-risks Reads one row from restrictedToken
GET /api/partners/[partnerId]/comments/count Reads one row from restrictedToken
GET /api/partners/[partnerId]/comments Reads one row from restrictedToken
GET /api/partners/[partnerId]/cross-program-summary Reads one row from restrictedToken
GET /api/partners/[partnerId]/referral Reads one row from restrictedToken
GET /api/partners/[partnerId] Reads one row from restrictedToken
GET /api/payouts/count Reads one row from restrictedToken
GET /api/payouts/export Reads one row from restrictedToken
GET /api/payouts Reads one row from restrictedToken
GET /api/payouts/[payoutId] Reads one row from restrictedToken
GET /api/programs/rewardful/campaigns Reads one row from restrictedToken
GET /api/programs/[programId]/discounts Reads one row from restrictedToken
GET /api/programs/[programId]/payouts/eligible/count Reads one row from restrictedToken
GET /api/programs/[programId]/payouts/eligible Reads one row from restrictedToken
GET /api/programs/[programId]/resources Reads one row from restrictedToken
GET /api/programs/[programId] Reads one row from restrictedToken
GET /api/programs/[programId]/submitted-leads/count Reads one row from restrictedToken
GET /api/programs/[programId]/submitted-leads Reads one row from restrictedToken
GET /api/rewards Reads one row from restrictedToken
GET /api/rewards/[rewardId] Reads one row from restrictedToken
PATCH /api/shopify/integration/callback Reads one row from restrictedToken
PATCH /api/stripe/integration Reads one row from restrictedToken
POST /api/track/lead Reads one row from restrictedToken
POST /api/track/sale Reads one row from restrictedToken
GET /api/activity-logs Reads one row from restrictedToken
POST /api/ai/completion Reads one row from restrictedToken
GET /api/analytics/export Reads one row from restrictedToken
GET /api/analytics Reads one row from restrictedToken
GET /api/dashboards Reads one row from restrictedToken
POST /api/dashboards Reads one row from restrictedToken
PATCH /api/dashboards/[id] Reads one row from restrictedToken
DELETE /api/dashboards/[id] Reads one row from restrictedToken
POST /api/domains/client/register Reads one row from restrictedToken
POST /api/domains/client/saved Reads one row from restrictedToken
GET /api/domains/count Reads one row from restrictedToken
GET /api/domains/default Reads one row from restrictedToken
PATCH /api/domains/default Reads one row from restrictedToken
GET /api/domains Reads one row from restrictedToken
POST /api/domains Reads one row from restrictedToken
GET /api/domains/search-availability Reads one row from restrictedToken
POST /api/domains/[domain]/primary Reads one row from restrictedToken
GET /api/domains/[domain] Reads one row from restrictedToken
PATCH /api/domains/[domain] Reads one row from restrictedToken
DELETE /api/domains/[domain] Reads one row from restrictedToken
POST /api/domains/[domain]/transfer Reads one row from restrictedToken
GET /api/domains/[domain]/verify Reads one row from restrictedToken
GET /api/folders/access-requests Reads one row from restrictedToken
GET /api/folders/count Reads one row from restrictedToken
GET /api/folders/permissions Reads one row from restrictedToken
GET /api/folders Reads one row from restrictedToken
POST /api/folders Reads one row from restrictedToken
GET /api/folders/[folderId]/dashboard Reads one row from restrictedToken
GET /api/folders/[folderId] Reads one row from restrictedToken
PATCH /api/folders/[folderId] Reads one row from restrictedToken
DELETE /api/folders/[folderId] Reads one row from restrictedToken
GET /api/folders/[folderId]/users Reads one row from restrictedToken
GET /api/integrations Reads one row from restrictedToken
DELETE /api/integrations/uninstall Reads one row from restrictedToken
POST /api/links/bulk Reads one row from restrictedToken
PATCH /api/links/bulk Reads one row from restrictedToken
DELETE /api/links/bulk Reads one row from restrictedToken
GET /api/links/count Reads one row from restrictedToken
GET /api/links/export Reads one row from restrictedToken
GET /api/links/info Reads one row from restrictedToken
GET /api/links Reads one row from restrictedToken
POST /api/links Reads one row from restrictedToken
POST /api/links/sync Reads one row from restrictedToken
PUT /api/links/upsert Reads one row from restrictedToken
GET /api/links/[linkId]/dashboard Reads one row from restrictedToken
GET /api/links/[linkId] Reads one row from restrictedToken
PATCH /api/links/[linkId] Reads one row from restrictedToken
DELETE /api/links/[linkId] Reads one row from restrictedToken
POST /api/links/[linkId]/transfer Reads one row from restrictedToken
GET /api/logs/count Reads one row from restrictedToken
GET /api/logs Reads one row from restrictedTokenReads rows from restrictedToken
GET /api/logs/[logId] Reads one row from restrictedTokenReads rows from restrictedToken
GET /api/oauth/apps Reads one row from restrictedToken
POST /api/oauth/apps Reads one row from restrictedToken
GET /api/oauth/apps/[appId] Reads one row from restrictedToken
PATCH /api/oauth/apps/[appId] Reads one row from restrictedToken
DELETE /api/oauth/apps/[appId] Reads one row from restrictedToken
POST /api/oauth/authorize Reads one row from restrictedToken
POST /api/oauth/token Deletes multiple rows from restrictedToken
GET /api/oauth/userinfo Reads the first matching row from restrictedToken
GET /api/tags/count Reads one row from restrictedToken
GET /api/tags Reads one row from restrictedToken
POST /api/tags Reads one row from restrictedToken
PATCH /api/tags/[id] Reads one row from restrictedToken
DELETE /api/tags/[id] Reads one row from restrictedToken
POST /api/tokens/embed/referrals Reads one row from restrictedToken
GET /api/tokens Reads rows from restrictedTokenReads one row from restrictedToken
POST /api/tokens Reads one row from restrictedToken
GET /api/tokens/[id] Reads one row from restrictedToken
PATCH /api/tokens/[id] Reads one row from restrictedToken
DELETE /api/tokens/[id] Reads one row from restrictedToken
GET /api/utm Reads one row from restrictedToken
POST /api/utm Reads one row from restrictedToken
PATCH /api/utm/[id] Reads one row from restrictedToken
DELETE /api/utm/[id] Reads one row from restrictedToken
GET /api/webhooks Reads one row from restrictedToken
POST /api/webhooks Reads one row from restrictedToken
GET /api/webhooks/[webhookId]/events Reads one row from restrictedToken
GET /api/webhooks/[webhookId]/folders Reads one row from restrictedToken
GET /api/webhooks/[webhookId]/links Reads one row from restrictedToken
GET /api/webhooks/[webhookId] Reads one row from restrictedToken
PATCH /api/webhooks/[webhookId] Reads one row from restrictedToken
DELETE /api/webhooks/[webhookId] Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/billing/activate-paid-plan Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/billing/cancel Reads one row from restrictedToken
GET /api/workspaces/[idOrSlug]/billing/invoices Reads one row from restrictedToken
GET /api/workspaces/[idOrSlug]/billing/invoices/[invoiceId] Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/billing/manage Reads one row from restrictedToken
GET /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from restrictedToken
PATCH /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from restrictedToken
DELETE /api/workspaces/[idOrSlug]/billing/payment-methods Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/billing/retry-payment Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/billing/upgrade Reads one row from restrictedToken
GET /api/workspaces/[idOrSlug]/billing/usage Reads one row from restrictedToken
GET /api/workspaces/[idOrSlug]/import/bitly Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/import/bitly Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/import/csv Reads one row from restrictedToken
GET /api/workspaces/[idOrSlug]/import/rebrandly Reads one row from restrictedToken
PUT /api/workspaces/[idOrSlug]/import/rebrandly Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/import/rebrandly Reads one row from restrictedToken
GET /api/workspaces/[idOrSlug]/import/short Reads one row from restrictedToken
PUT /api/workspaces/[idOrSlug]/import/short Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/import/short Reads one row from restrictedToken
GET /api/workspaces/[idOrSlug]/import/[importId]/download Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/invites/reset Reads one row from restrictedToken
GET /api/workspaces/[idOrSlug]/invites Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/invites Reads one row from restrictedToken
PATCH /api/workspaces/[idOrSlug]/invites Reads one row from restrictedToken
DELETE /api/workspaces/[idOrSlug]/invites Reads one row from restrictedToken
GET /api/workspaces/[idOrSlug]/notification-preferences Reads one row from restrictedToken
GET /api/workspaces/[idOrSlug] Reads one row from restrictedToken
PATCH /api/workspaces/[idOrSlug] Reads one row from restrictedToken
DELETE /api/workspaces/[idOrSlug] Reads one row from restrictedTokenDeletes multiple rows from restrictedToken
GET /api/workspaces/[idOrSlug]/saml Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/saml Reads one row from restrictedToken
DELETE /api/workspaces/[idOrSlug]/saml Reads one row from restrictedToken
GET /api/workspaces/[idOrSlug]/scim Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/scim Reads one row from restrictedToken
DELETE /api/workspaces/[idOrSlug]/scim Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/sitemaps/import Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/support/slack-invite Reads one row from restrictedToken
POST /api/workspaces/[idOrSlug]/upload-url Reads one row from restrictedToken
GET /api/workspaces/[idOrSlug]/users Reads one row from restrictedToken
PATCH /api/workspaces/[idOrSlug]/users Reads one row from restrictedToken
DELETE /api/workspaces/[idOrSlug]/users Deletes multiple rows from restrictedTokenReads one row from restrictedToken
← All behaviours

table

programEnrollment

What breaks if you change it

Rename or remove this table and 125 behaviours break.

9 places can delete from it. Data removed here is gone for everything above.

9 places write to it — change its shape and each of those needs updating too.

What happens next

If you remove or rename programEnrollment…

147 behaviours affected in total

Stops working straight away in the code 125

These name it directly, so they break the moment it is gone.

PATCH /api/admin/fraud-alerts/[id]POST /api/admin/partners/delete-accountGET /api/admin/partners/[partnerId]GET /api/appsflyer/webhookGET /api/bountiesPOST /api/bounties/[bountyId]/submissions/[submissionId]/approveGET /api/commissionsPOST /api/commissions

and 117 more

Left with nothing keeping it up to date worked out 8

Every behaviour that wrote to these is in the list above. They would still exist and still be readable — but nothing would be updating them any more. This is the failure with no error message.

installedIntegrationfraudEventprogramApplicationEventdiscountsubmittedLeadfraudAlertdiscoveredPartnerpartnerComment
Keeps running, on data that has gone stale worked out 22

These read the tables above. They would not crash and they would not warn you — they would carry on serving whatever was there when the writing stopped.

POST /api/cron/groups/update-default-linksGET /api/cron/streams/update-workspace-links-usagePOST /api/cron/usageGET /api/customers/search-stripeGET /api/customers/[id]/stripe-invoicesPOST /api/intercom/webhook/health-checkPOST /api/intercom/webhook/uninstallPATCH /api/stripe/integration

and 14 more

How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

125
PATCH /api/admin/fraud-alerts/[id] Reads rows from programEnrollment
POST /api/admin/partners/delete-account Deletes multiple rows from programEnrollment
GET /api/admin/partners/[partnerId] Reads rows from programEnrollment
GET /api/appsflyer/webhook Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/bounties Reads one row from programEnrollmentReads the first matching row from programEnrollment
POST /api/bounties/[bountyId]/submissions/[submissionId]/approve Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/commissions Reads one row from programEnrollment
POST /api/commissions Reads one row from programEnrollmentReads the first matching row from programEnrollment
PATCH /api/commissions/[commissionId] Reads one row from programEnrollmentReads the first matching row from programEnrollment
POST /api/cron/bounties/notify-partners Reads rows from programEnrollment
POST /api/cron/bounties/upsert-draft-submissions Reads rows from programEnrollment
POST /api/cron/campaigns/broadcast Reads rows from programEnrollment
POST /api/cron/cleanup/declined-invites Reads rows from programEnrollmentDeletes multiple rows from programEnrollment
POST /api/cron/cleanup/demo-embed-partners Reads rows from programEnrollmentDeletes multiple rows from programEnrollmentPOST /api/cron/cleanup/e2e-tests Reads rows from programEnrollmentDeletes multiple rows from programEnrollment
POST /api/cron/cleanup/rejected-applications Reads rows from programEnrollmentDeletes multiple rows from programEnrollment
POST /api/cron/cleanup/unenrolled-partners Reads rows from programEnrollmentDeletes multiple rows from programEnrollment
POST /api/cron/commissions/referrals/backfill Reads one row from programEnrollment
POST /api/cron/commissions/referrals/create Reads one row from programEnrollment
POST /api/cron/commissions/referrals/queue Reads one row from programEnrollment
POST /api/cron/discount-codes/create/queue-batches Reads rows from programEnrollment
POST /api/cron/export/events/partner Reads one row from programEnrollmentReads the first matching row from programEnrollment
POST /api/cron/export/partners Reads rows from programEnrollment
POST /api/cron/export/payouts Reads one row from programEnrollment
POST /api/cron/fraud/release-hold-commissions Reads one row from programEnrollment
POST /api/cron/groups/create-default-links Reads rows from programEnrollmentPOST /api/cron/groups/remap-default-links Reads rows from programEnrollment
POST /api/cron/groups/remap-discount-codes Reads rows from programEnrollment
POST /api/cron/groups/sync-utm Reads rows from programEnrollment
POST /api/cron/import/firstpromoter Reads rows from programEnrollment
POST /api/cron/import/partnerstack Reads rows from programEnrollmentReads the first matching row from programEnrollment
POST /api/cron/import/tapfiliate Deletes multiple rows from programEnrollmentReads rows from programEnrollmentPOST /api/cron/import/tolt Reads rows from programEnrollmentDeletes multiple rows from programEnrollment
POST /api/cron/links/invalidate-for-discounts Reads rows from programEnrollment
POST /api/cron/links/invalidate-for-partners Reads rows from programEnrollment
POST /api/cron/partner-program-summary/process Reads rows from programEnrollment
POST /api/cron/partners/auto-approve Reads one row from programEnrollment
POST /api/cron/partners/auto-reject Reads one row from programEnrollmentChanges multiple rows in programEnrollment
POST /api/cron/partners/ban Reads one row from programEnrollmentReads the first matching row from programEnrollment
POST /api/cron/partners/deactivate Reads rows from programEnrollment
POST /api/cron/partners/delete Reads one row from programEnrollmentPOST /api/cron/partners/merge-accounts Changes multiple rows in programEnrollment
POST /api/cron/program-application-reminder Reads the first matching row from programEnrollment
POST /api/cron/programs/deactivate Reads rows from programEnrollmentChanges multiple rows in programEnrollment
POST /api/cron/programs/reactivate Reads rows from programEnrollmentChanges multiple rows in programEnrollment
POST /api/cron/rewards/process Reads rows from programEnrollmentChanges multiple rows in programEnrollment
POST /api/cron/shopify/order-paid Reads one row from programEnrollment
POST /api/cron/workflows/[workflowId] Reads one row from programEnrollmentReads rows from programEnrollment
GET /api/discount-codes Reads one row from programEnrollmentReads the first matching row from programEnrollment
POST /api/discount-codes Reads one row from programEnrollmentReads the first matching row from programEnrollment
POST /api/e2e/partners/pending-program-application Reads one row from programEnrollment
POST /api/e2e/trigger-workflow/[workflowId] Reads one row from programEnrollmentReads rows from programEnrollment
GET /api/embed/referrals/earnings/timeseries Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/embed/referrals/leaderboard Reads rows from programEnrollment
POST /api/groups/[groupIdOrSlug]/partners Reads rows from programEnrollmentChanges multiple rows in programEnrollment
DELETE /api/groups/[groupIdOrSlug] Reads rows from programEnrollmentChanges multiple rows in programEnrollment
POST /api/hubspot/webhook/process Reads one row from programEnrollment
POST /api/intercom/webhook/process Reads rows from programEnrollment
GET /api/partner-profile/programs Reads rows from programEnrollment
GET /api/partner-profile/programs/[programId]/activity-logs Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/analytics/export Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/analytics Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/bounties Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/bounties/[bountyId] Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/bounties/[bountyId]/social-content-stats Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/customers/count Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/customers Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/customers/[customerId] Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/earnings/count Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/earnings Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/earnings/timeseries Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/events/export Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/events Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/links Reads one row from programEnrollmentReads the first matching row from programEnrollment
POST /api/partner-profile/programs/[programId]/links Reads one row from programEnrollmentReads the first matching row from programEnrollment
PATCH /api/partner-profile/programs/[programId]/links/[linkId] Reads one row from programEnrollmentReads the first matching row from programEnrollment
DELETE /api/partner-profile/programs/[programId]/links/[linkId] Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/referrals/count Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/referrals Reads rows from programEnrollmentReads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/resources Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId] Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/submitted-leads/count Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partner-profile/programs/[programId]/submitted-leads Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partners/analytics Reads one row from programEnrollment
POST /api/partners/applications/approve Reads one row from programEnrollment
GET /api/partners/applications/export Reads rows from programEnrollment
GET /api/partners/applications/history Reads one row from programEnrollment
POST /api/partners/applications/reject Reads one row from programEnrollmentDeletes multiple rows from programEnrollment
GET /api/partners/applications Reads rows from programEnrollment
POST /api/partners/ban Reads one row from programEnrollmentReads the first matching row from programEnrollment
POST /api/partners/deactivate Reads one row from programEnrollmentReads the first matching row from programEnrollmentReads rows from programEnrollmentChanges multiple rows in programEnrollment
GET /api/partners/export Reads rows from programEnrollment
GET /api/partners/links Reads one row from programEnrollment
POST /api/partners/links Reads one row from programEnrollmentPUT /api/partners/links/upsert Reads one row from programEnrollment
GET /api/partners Reads rows from programEnrollment
POST /api/partners Reads the first matching row from programEnrollmentReads one row from programEnrollment
GET /api/partners/[partnerId]/application-risks Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partners/[partnerId]/cross-program-summary Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partners/[partnerId]/referral Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/partners/[partnerId] Reads one row from programEnrollment
GET /api/payouts/export Reads one row from programEnrollment
GET /api/payouts Reads one row from programEnrollment
POST /api/shopify/integration/webhook Reads one row from programEnrollment
GET /api/singular/webhook Reads one row from programEnrollment
POST /api/stripe/connect/v2/webhook Reads rows from programEnrollment
POST /api/stripe/connect/webhook Reads rows from programEnrollment
POST /api/stripe/integration/webhook Reads one row from programEnrollmentReads the first matching row from programEnrollmentChanges multiple rows in programEnrollment
POST /api/track/application Reads one row from programEnrollment
POST /api/track/lead/client Reads one row from programEnrollmentReads the first matching row from programEnrollment
POST /api/track/lead Reads one row from programEnrollmentReads the first matching row from programEnrollment
POST /api/track/sale/client Reads one row from programEnrollment
POST /api/track/sale Reads one row from programEnrollment
POST /api/workflows/create-partner-commission Reads one row from programEnrollmentReads the first matching row from programEnrollment
POST /api/workflows/partner-approved Reads one row from programEnrollmentReads the first matching row from programEnrollmentReads rows from programEnrollment
Someone opens /app.dub.co/embed/referrals Reads one row from programEnrollmentReads the first matching row from programEnrollment
GET /api/activity-logs Reads one row from programEnrollment
POST /api/ai/support-chat Reads the first matching row from programEnrollment
GET /api/og/partner-earnings Reads one row from programEnrollmentReads the first matching row from programEnrollment
POST /api/tokens/embed/referrals Reads one row from programEnrollmentReads the first matching row from programEnrollment
POST /api/veriff/webhook Reads rows from programEnrollment
A form calls banPartner() Reads one row from programEnrollmentReads the first matching row from programEnrollment
A form calls createAndEnrollPartner() Reads the first matching row from programEnrollmentReads one row from programEnrollment
A form calls markSubmittedLeadClosedWon() Reads one row from programEnrollment
A form calls markSubmittedLeadQualified() Reads one row from programEnrollmentReads the first matching row from programEnrollment
← All behaviours

service

email

What breaks if you change it

If email is unavailable or changes its API, 87 behaviours stop working.

88 places send something to it. Those calls have effects outside your application that you cannot undo.

What happens next

If email stops responding…

135 behaviours affected in total

Stops working straight away in the code 87

These call it directly. Whatever they were doing with it will fail.

PATCH /api/admin/partners/[partnerId]/network-statusPOST /api/bounties/[bountyId]/submissions/[submissionId]/approvePOST /api/bounties/[bountyId]/submissions/[submissionId]/rejectPOST /api/bounties/[bountyId]/sync-social-metricsPOST /api/campaigns/[campaignId]/previewPOST /api/cron/bounties/notify-partnersPOST /api/cron/bounties/sync-social-metricsPOST /api/cron/campaigns/broadcast

and 79 more

Left with nothing keeping it up to date worked out 4

Every behaviour that wrote to these is in the list above. They would still exist and still be readable — but nothing would be updating them any more. This is the failure with no error message.

webhookinstalledIntegrationsentEmailpartnerComment
Keeps running, on data that has gone stale worked out 48

These read the tables above. They would not crash and they would not warn you — they would carry on serving whatever was there when the writing stopped.

GET /api/appsflyer/webhookPOST /api/bountiesPATCH /api/bounties/[bountyId]POST /api/cron/groups/create-default-linksPOST /api/cron/groups/remap-default-linksPOST /api/cron/links/[linkId]/complete-testsPOST /api/cron/payouts/charge-succeededPOST /api/cron/shopify/order-paid

and 40 more

How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

87
PATCH /api/admin/partners/[partnerId]/network-status Sends an email
POST /api/bounties/[bountyId]/submissions/[submissionId]/approve Sends an email
POST /api/bounties/[bountyId]/submissions/[submissionId]/reject Sends an email
POST /api/bounties/[bountyId]/sync-social-metrics Sends an email
POST /api/campaigns/[campaignId]/preview Sends several emails at once
POST /api/cron/bounties/notify-partners Sends several emails at once
POST /api/cron/bounties/sync-social-metrics Sends several emails at once
POST /api/cron/campaigns/broadcast Sends several emails at once
POST /api/cron/commissions/referrals/create Sends several emails at once
GET /api/cron/domains/renewal-reminders Sends several emails at once
POST /api/cron/domains/renewal-succeeded Sends several emails at once
POST /api/cron/domains/transfer Sends an email
GET /api/cron/domains/verify Sends several emails at once
GET /api/cron/email-domains/verify Sends several emails at once
POST /api/cron/export/commissions Sends an email
POST /api/cron/export/customers Sends an email
POST /api/cron/export/events/partner Sends an email
POST /api/cron/export/events/workspace Sends an email
POST /api/cron/export/links Sends an email
POST /api/cron/export/partners Sends an email
POST /api/cron/export/payouts Sends an email
POST /api/cron/import/bitly Sends an email
POST /api/cron/import/csv Sends an email
POST /api/cron/import/firstpromoter Sends an email
POST /api/cron/import/partnerstack Sends an email
POST /api/cron/import/rebrandly Sends an email
POST /api/cron/import/rewardful Sends an email
POST /api/cron/import/short Sends an email
POST /api/cron/import/tapfiliate Sends an emailPOST /api/cron/import/tolt Sends an email
POST /api/cron/messages/notify-partner Sends several emails at once
POST /api/cron/messages/notify-program Sends several emails at once
POST /api/cron/partner-program-summary/process Sends several emails at once
POST /api/cron/partners/auto-reject Sends an email
POST /api/cron/partners/ban Sends an email
POST /api/cron/partners/deactivate Sends several emails at once
POST /api/cron/partners/merge-accounts Sends several emails at once
POST /api/cron/partners/verify-country-change Sends an email
POST /api/cron/payouts/balance-available Sends an email
GET /api/cron/payouts/force-withdrawals Sends an email
POST /api/cron/payouts/payout-failed Sends an email
POST /api/cron/payouts/payout-paid Sends an email
POST /api/cron/payouts/process Sends an email
POST /api/cron/payouts/process/updates Sends several emails at once
GET /api/cron/payouts/reminders/program-owners Sends several emails at once
POST /api/cron/payouts/send-stripe-payout Sends an email
POST /api/cron/payouts/send-tremendous-payout Sends an email
GET /api/cron/pending-applications-summary Sends several emails at once
POST /api/cron/program-application-reminder Sends an email
POST /api/cron/programs/reactivate Sends several emails at once
POST /api/cron/send-batch-email Sends several emails at once
GET /api/cron/streams/update-workspace-links-usage Sends several emails at once
GET /api/cron/trial-emails Sends several emails at once
POST /api/cron/trial-emails Sends several emails at once
POST /api/cron/usage Sends several emails at once
POST /api/cron/welcome-user Sends an email
POST /api/cron/workflows/[workflowId] Sends several emails at once
POST /api/domains/register Sends several emails at once
POST /api/e2e/trigger-workflow/[workflowId] Sends several emails at once
POST /api/embed/referrals/tremendous/send-otp Sends an email
GET /api/hubspot/callback Sends an email
GET /api/intercom/callback Sends an email
POST /api/partner-profile/invites Sends an email
POST /api/partners/applications/reject Sends an email
GET /api/paypal/callback Sends an email
POST /api/paypal/webhook Sends an email
PATCH /api/shopify/integration/callback Sends an email
POST /api/stripe/connect/v2/webhook Sends an email
POST /api/stripe/connect/webhook Sends an email
POST /api/stripe/integration/webhook Sends several emails at oncePOST /api/stripe/webhook Sends several emails at onceSends an email
POST /api/workflows/create-partner-commission Sends several emails at once
POST /api/workflows/partner-approved Sends several emails at once
POST /api/auth/reset-password Sends an email
POST /api/domains/client/register Sends several emails at once
POST /api/dub/webhook Sends an email
POST /api/oauth/token Sends an email
GET /api/slack/callback Sends an email
POST /api/tokens Sends an email
PATCH /api/user/password Sends an email
PATCH /api/user Sends an email
POST /api/user/set-password Sends an email
POST /api/veriff/webhook Sends an email
POST /api/webhooks/callback Sends an email
POST /api/webhooks Sends an email
POST /api/workspaces/[idOrSlug]/invites Sends an email
A form calls forceWithdrawal() Sends an email
← All behaviours

table

projectUsers

What breaks if you change it

Rename or remove this table and 70 behaviours break.

1 place can delete from it. Data removed here is gone for everything above.

4 places write to it — change its shape and each of those needs updating too.

What happens next

If you remove or rename projectUsers…

109 behaviours affected in total

Stops working straight away in the code 70

These name it directly, so they break the moment it is gone.

GET /api/admin/analyticsPOST /api/admin/banGET /api/admin/commissionsPOST /api/admin/domains/refreshPOST /api/admin/domains/register-premiumPOST /api/admin/domains/renewGET /api/admin/domains/search-availabilityGET /api/admin/events

and 62 more

Left with nothing keeping it up to date worked out 3

Every behaviour that wrote to these is in the list above. They would still exist and still be readable — but nothing would be updating them any more. This is the failure with no error message.

webhookfraudAlertsentEmail
Keeps running, on data that has gone stale worked out 39

These read the tables above. They would not crash and they would not warn you — they would carry on serving whatever was there when the writing stopped.

GET /api/appsflyer/webhookPOST /api/bountiesPATCH /api/bounties/[bountyId]POST /api/cron/groups/create-default-linksPOST /api/cron/groups/remap-default-linksPOST /api/cron/import/csvPOST /api/cron/links/[linkId]/complete-testsPOST /api/cron/payouts/charge-succeeded

and 31 more

How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

70
GET /api/admin/analytics Reads one row from projectUsers
POST /api/admin/ban Reads one row from projectUsers
GET /api/admin/commissions Reads one row from projectUsers
POST /api/admin/domains/refresh Reads one row from projectUsers
POST /api/admin/domains/register-premium Reads one row from projectUsers
POST /api/admin/domains/renew Reads one row from projectUsers
GET /api/admin/domains/search-availability Reads one row from projectUsers
GET /api/admin/events Reads one row from projectUsers
PATCH /api/admin/fraud-alerts/[id] Reads one row from projectUsers
POST /api/admin/impersonate Reads one row from projectUsers
DELETE /api/admin/links/ban Reads one row from projectUsers
GET /api/admin/links/count Reads one row from projectUsers
GET /api/admin/links Reads one row from projectUsers
POST /api/admin/partners/delete-account Reads one row from projectUsers
GET /api/admin/partners/fraud Reads one row from projectUsers
GET /api/admin/partners/network/count Reads one row from projectUsers
GET /api/admin/partners/network Reads one row from projectUsers
GET /api/admin/partners/trusted Reads one row from projectUsers
POST /api/admin/partners/trusted Reads one row from projectUsers
DELETE /api/admin/partners/trusted Reads one row from projectUsers
POST /api/admin/partners/[partnerId]/generate-veriff-session Reads one row from projectUsers
PATCH /api/admin/partners/[partnerId]/network-status Reads one row from projectUsers
POST /api/admin/partners/[partnerId]/platforms Reads one row from projectUsers
GET /api/admin/partners/[partnerId] Reads one row from projectUsers
PATCH /api/admin/partners/[partnerId] Reads one row from projectUsers
GET /api/admin/partners/[partnerId]/shared-platforms Reads one row from projectUsers
POST /api/admin/partners/[partnerId]/verify-identity Reads one row from projectUsers
GET /api/admin/payouts/paypal Reads one row from projectUsers
GET /api/admin/payouts Reads one row from projectUsers
GET /api/admin/payouts/stablecoin Reads one row from projectUsers
GET /api/admin/programs Reads one row from projectUsers
POST /api/admin/programs Reads one row from projectUsers
PATCH /api/admin/programs Reads one row from projectUsers
GET /api/admin/programs/sales Reads one row from projectUsers
PATCH /api/admin/programs/[programId] Reads one row from projectUsers
DELETE /api/admin/programs/[programId] Reads one row from projectUsers
POST /api/admin/reset-login-attempts Reads one row from projectUsers
GET /api/admin/revenue Reads one row from projectUsers
POST /api/admin/slack-support-invite Reads one row from projectUsers
POST /api/admin/workspaces/disable Changes multiple rows in projectUsersReads one row from projectUsers
POST /api/admin/workspaces/restore Changes multiple rows in projectUsersReads one row from projectUsers
POST /api/cron/commissions/referrals/create Reads rows from projectUsers
POST /api/cron/export/links Reads one row from projectUsers
GET /api/cron/pending-applications-summary Reads rows from projectUsers
POST /api/cron/sitemaps/import Reads the first matching row from projectUsers
POST /api/embed/referrals/links Reads the first matching row from projectUsers
POST /api/intercom/webhook/process Reads rows from projectUsers
POST /api/stripe/webhook Changes multiple rows in projectUsers
POST /api/workflows/create-partner-commission Reads rows from projectUsers
POST /api/workflows/partner-approved Reads rows from projectUsers
GET /app.dub.co/invoices/[invoiceId] Reads one row from projectUsers
GET /api/folders/permissions Reads one row from projectUsers
GET /api/folders Reads one row from projectUsers
DELETE /api/folders/[folderId] Changes multiple rows in projectUsers
GET /api/folders/[folderId]/users Reads rows from projectUsers
GET /api/links/count Reads one row from projectUsers
GET /api/links/export Reads one row from projectUsers
GET /api/links Reads one row from projectUsers
PATCH /api/user Reads the first matching row from projectUsers
DELETE /api/user Reads rows from projectUsers
POST /api/webhooks/callback Reads the first matching row from projectUsers
POST /api/webhooks Reads one row from projectUsers
PATCH /api/webhooks/[webhookId] Reads one row from projectUsers
POST /api/workspaces/[idOrSlug]/billing/upgrade Reads one row from projectUsers
POST /api/workspaces/[idOrSlug]/invites/accept Reads one row from projectUsers
POST /api/workspaces/[idOrSlug]/invites Reads rows from projectUsers
DELETE /api/workspaces/[idOrSlug] Deletes multiple rows from projectUsers
GET /api/workspaces/[idOrSlug]/users Reads rows from projectUsers
DELETE /api/workspaces/[idOrSlug]/users Reads one row from projectUsers
Every request to /((?!api/|_next/|_proxy/|favicon.ico|sitemap.xml|robots.txt|manifest.webmanifest).*), before anything else Reads one row from projectUsers
← All behaviours

table

program

What breaks if you change it

Rename or remove this table and 65 behaviours break.

Nothing writes to it from this application — it is read-only from here.

What happens next

If you remove or rename program…

65 behaviours affected in total

Stops working straight away in the code 65

These name it directly, so they break the moment it is gone.

GET /api/admin/commissionsGET /api/admin/programsPOST /api/admin/programsPATCH /api/admin/programsGET /api/admin/programs/salesPATCH /api/admin/programs/[programId]DELETE /api/admin/programs/[programId]POST /api/campaigns/[campaignId]/preview

and 57 more

Left with nothing keeping it up to date worked out 1

Every behaviour that wrote to these is in the list above. They would still exist and still be readable — but nothing would be updating them any more. This is the failure with no error message.

programSimilarity
How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

65
GET /api/admin/commissions Reads rows from program
GET /api/admin/programs Reads rows from program
POST /api/admin/programs Reads one row from program
PATCH /api/admin/programs Reads rows from program
GET /api/admin/programs/sales Reads rows from program
PATCH /api/admin/programs/[programId] Reads one row from program
DELETE /api/admin/programs/[programId] Reads one row from program
POST /api/campaigns/[campaignId]/preview Reads one row from program
GET /api/commissions/analytics Reads one row from program
POST /api/cron/export/commissions Reads one row from program
POST /api/cron/export/partners Reads one row from program
POST /api/cron/export/payouts Reads one row from program
GET /api/cron/fraud/summary Reads rows from program
POST /api/cron/groups/create-default-links Reads one row from programPOST /api/cron/groups/remap-default-links Reads one row from programPOST /api/cron/import/csv Reads one row from programPOST /api/cron/import/tapfiliate Reads one row from program
POST /api/cron/network/calculate-program-similarities Reads rows from programReads one row from programReads the first matching row from program
POST /api/cron/partner-program-summary/process Reads one row from program
GET /api/cron/partner-program-summary Reads rows from program
POST /api/cron/payouts/charge-succeeded Reads one row from program
GET /api/cron/payouts/reminders/partners Reads rows from program
GET /api/cron/payouts/reminders/program-owners Reads rows from program
GET /api/cron/pending-applications-summary Reads rows from program
POST /api/cron/programs/deactivate Reads one row from program
POST /api/cron/programs/reactivate Reads one row from program
POST /api/embed/referrals/links Reads one row from program
PATCH /api/embed/referrals/links/[linkId] Reads one row from program
GET /api/events/export Reads one row from program
GET /api/network/programs Reads rows from program
GET /api/network/programs/summary Reads rows from program
GET /api/partner-profile/messages Reads rows from program
POST /api/partner-profile/programs/[programId]/links Reads one row from program
PATCH /api/partner-profile/programs/[programId]/links/[linkId] Reads one row from program
POST /api/partners/links Reads one row from programPUT /api/partners/links/upsert Reads one row from program
POST /api/partners Reads one row from program
GET /api/payouts/count Reads one row from program
GET /api/payouts/export Reads one row from program
GET /api/payouts Reads one row from program
GET /api/payouts/[payoutId] Reads one row from program
GET /api/programs/[programId]/payouts/eligible/count Reads one row from program
GET /api/programs/[programId]/payouts/eligible Reads one row from program
GET /api/programs/[programId]/resources Reads one row from program
GET /api/programs/[programId] Reads one row from program
POST /api/track/application Reads one row from program
POST /api/workflows/partner-approved Reads one row from program
Someone opens /partners.dub.co/[programSlug]/apply Reads one row from program
Someone opens /partners.dub.co/[programSlug]/apply/success Reads one row from program
Someone opens /partners.dub.co/[programSlug] Reads one row from program
Someone opens /partners.dub.co/login Reads one row from program
Someone opens /partners.dub.co/register Reads one row from program
Someone opens /partners.dub.co/marketplace/[[...segments]] Reads rows from program
Someone opens /partners.dub.co/programs/[programSlug]/apply Reads one row from program
Someone opens /partners.dub.co/programs/[programSlug]/invite Reads one row from program
GET /api/analytics/export Reads one row from program
GET /api/analytics Reads one row from program
POST /api/links/bulk Reads one row from program
PATCH /api/links/bulk Reads one row from program
POST /api/links Reads one row from programPUT /api/links/upsert Reads one row from programPATCH /api/links/[linkId] Reads one row from program
GET /api/og/program Reads one row from program
POST /api/slack/slash-commands Reads one row from program
A form calls createAndEnrollPartner() Reads one row from program
← All behaviours

table

partnerUser

What breaks if you change it

Rename or remove this table and 65 behaviours break.

Nothing writes to it from this application — it is read-only from here.

What happens next

If you remove or rename partnerUser…

65 behaviours affected in total

Stops working straight away in the code 65

These name it directly, so they break the moment it is gone.

POST /api/groups/[groupIdOrSlug]/partnersDELETE /api/groups/[groupIdOrSlug]GET /api/network/programs/countGET /api/network/programsGET /api/network/programs/summaryGET /api/partner-profile/invitesPOST /api/partner-profile/invitesPATCH /api/partner-profile/invites

and 57 more

How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

65
POST /api/groups/[groupIdOrSlug]/partners Reads rows from partnerUser
DELETE /api/groups/[groupIdOrSlug] Reads rows from partnerUser
GET /api/network/programs/count Reads one row from partnerUser
GET /api/network/programs Reads one row from partnerUser
GET /api/network/programs/summary Reads one row from partnerUser
GET /api/partner-profile/invites Reads one row from partnerUser
POST /api/partner-profile/invites Reads rows from partnerUserReads one row from partnerUser
PATCH /api/partner-profile/invites Reads one row from partnerUser
DELETE /api/partner-profile/invites Reads one row from partnerUser
GET /api/partner-profile/messages/count Reads one row from partnerUser
GET /api/partner-profile/messages Reads one row from partnerUser
GET /api/partner-profile/notification-preferences Reads one row from partnerUser
GET /api/partner-profile/payouts/count Reads one row from partnerUser
GET /api/partner-profile/payouts Reads one row from partnerUser
GET /api/partner-profile/payouts/settings Reads one row from partnerUser
GET /api/partner-profile/postbacks Reads one row from partnerUser
POST /api/partner-profile/postbacks Reads one row from partnerUser
GET /api/partner-profile/postbacks/[postbackId]/events Reads one row from partnerUser
POST /api/partner-profile/postbacks/[postbackId]/rotate-secret Reads one row from partnerUser
GET /api/partner-profile/postbacks/[postbackId] Reads one row from partnerUser
PATCH /api/partner-profile/postbacks/[postbackId] Reads one row from partnerUser
DELETE /api/partner-profile/postbacks/[postbackId] Reads one row from partnerUser
POST /api/partner-profile/postbacks/[postbackId]/send-test Reads one row from partnerUser
GET /api/partner-profile/programs/count Reads one row from partnerUser
GET /api/partner-profile/programs Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/activity-logs Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/analytics/export Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/analytics Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/bounties Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/bounties/[bountyId] Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/bounties/[bountyId]/social-content-stats Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/customers/count Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/customers Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/customers/[customerId] Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/earnings/count Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/earnings Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/earnings/timeseries Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/events/export Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/events Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/groups/[groupIdOrSlug] Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/links Reads one row from partnerUser
POST /api/partner-profile/programs/[programId]/links Reads one row from partnerUser
PATCH /api/partner-profile/programs/[programId]/links/[linkId] Reads one row from partnerUser
DELETE /api/partner-profile/programs/[programId]/links/[linkId] Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/referrals/count Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/referrals Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/resources Reads one row from partnerUser
GET /api/partner-profile/programs/[programId] Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/submitted-leads/count Reads one row from partnerUser
GET /api/partner-profile/programs/[programId]/submitted-leads Reads one row from partnerUser
GET /api/partner-profile/referrals Reads one row from partnerUser
GET /api/partner-profile/referrals/stats Reads one row from partnerUser
GET /api/partner-profile/referrals/timeseries Reads one row from partnerUser
GET /api/partner-profile/rewind Reads one row from partnerUser
GET /api/partner-profile Reads one row from partnerUser
GET /api/partner-profile/users Reads rows from partnerUserReads one row from partnerUser
PATCH /api/partner-profile/users Reads one row from partnerUser
DELETE /api/partner-profile/users Reads one row from partnerUser
POST /api/workflows/partner-approved Reads rows from partnerUser
Someone opens /partners.dub.co/rewind/2025 Reads one row from partnerUser
GET /partners.dub.co/invoices/[payoutId] Reads one row from partnerUser
GET /api/og/partner-earnings Reads one row from partnerUser
GET /api/og/partner-rewind Reads one row from partnerUser
PATCH /api/user Reads one row from partnerUser
Someone opens /app.dub.co/auth/confirm-email-change/[token] Reads one row from partnerUser
← All behaviours

table

partner

What breaks if you change it

Rename or remove this table and 62 behaviours break.

2 places can delete from it. Data removed here is gone for everything above.

1 place writes to it — change its shape and each of those needs updating too.

What happens next

If you remove or rename partner…

63 behaviours affected in total

Stops working straight away in the code 62

These name it directly, so they break the moment it is gone.

GET /api/admin/analyticsPOST /api/admin/impersonatePOST /api/admin/partners/delete-accountGET /api/admin/partners/networkGET /api/admin/partners/trustedPOST /api/admin/partners/trustedDELETE /api/admin/partners/trustedPOST /api/admin/partners/[partnerId]/generate-veriff-session

and 54 more

Left with nothing keeping it up to date worked out 1

Every behaviour that wrote to these is in the list above. They would still exist and still be readable — but nothing would be updating them any more. This is the failure with no error message.

partnerComment
Keeps running, on data that has gone stale worked out 1

These read the tables above. They would not crash and they would not warn you — they would carry on serving whatever was there when the writing stopped.

GET /api/partners/[partnerId]/comments
How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

62
GET /api/admin/analytics Reads rows from partner
POST /api/admin/impersonate Reads one row from partner
POST /api/admin/partners/delete-account Reads one row from partner
GET /api/admin/partners/network Reads rows from partner
GET /api/admin/partners/trusted Reads rows from partner
POST /api/admin/partners/trusted Reads the first matching row from partner
DELETE /api/admin/partners/trusted Reads one row from partner
POST /api/admin/partners/[partnerId]/generate-veriff-session Reads one row from partner
PATCH /api/admin/partners/[partnerId]/network-status Reads one row from partner
POST /api/admin/partners/[partnerId]/platforms Reads one row from partner
GET /api/admin/partners/[partnerId] Reads one row from partner
PATCH /api/admin/partners/[partnerId] Reads one row from partner
GET /api/admin/partners/[partnerId]/shared-platforms Reads one row from partner
POST /api/admin/partners/[partnerId]/verify-identity Reads one row from partner
GET /api/commissions/analytics Reads rows from partner
POST /api/cron/cleanup/e2e-tests Reads rows from partnerPOST /api/cron/cleanup/unenrolled-partners Reads rows from partner
POST /api/cron/commissions/referrals/create Reads one row from partner
POST /api/cron/import/firstpromoter Reads rows from partner
POST /api/cron/import/tapfiliate Reads rows from partnerDeletes multiple rows from partnerPOST /api/cron/import/tolt Reads rows from partnerDeletes multiple rows from partner
POST /api/cron/links/[linkId]/complete-tests Reads rows from partner
POST /api/cron/partner-program-summary/process Reads rows from partner
POST /api/cron/partners/merge-accounts Reads rows from partner
POST /api/cron/partners/verify-country-change Reads one row from partner
POST /api/cron/payouts/balance-available Reads one row from partner
GET /api/cron/payouts/force-withdrawals Reads rows from partner
POST /api/cron/payouts/payout-failed Reads one row from partner
POST /api/cron/payouts/payout-paid Reads one row from partner
GET /api/cron/payouts/reminders/partners Reads rows from partnerChanges multiple rows in partner
POST /api/cron/usage Reads rows from partner
POST /api/e2e/partners/pending-program-application Reads one row from partner
GET /api/embed/referrals/analytics Reads rows from partner
GET /api/embed/referrals/earnings Reads rows from partner
GET /api/events/export Reads rows from partner
POST /api/intercom/webhook/process Reads rows from partner
GET /api/messages Reads rows from partner
GET /api/partner-profile/programs/[programId]/analytics/export Reads rows from partner
GET /api/partner-profile/programs/[programId]/analytics Reads rows from partner
GET /api/partner-profile/programs/[programId]/earnings Reads rows from partner
GET /api/partner-profile/programs/[programId]/events/export Reads rows from partner
GET /api/partner-profile/referrals Reads rows from partner
GET /api/partners/analytics Reads rows from partner
GET /api/partners/applications/analytics Reads rows from partner
POST /api/partners Reads one row from partner
POST /api/stripe/connect/v2/webhook Reads one row from partner
POST /api/stripe/connect/webhook Reads one row from partner
POST /api/track/application Reads one row from partner
POST /api/workflows/create-partner-commission Reads one row from partner
POST /api/workflows/partner-approved Reads one row from partner
Someone opens /partners.dub.co/onboarding Reads one row from partner
Someone opens /partners.dub.co/onboarding/payouts Reads one row from partner
Someone opens /partners.dub.co/onboarding/platforms Reads the first matching row from partner
GET /api/analytics/dashboard Reads rows from partner
GET /api/analytics/export Reads rows from partner
GET /api/analytics Reads rows from partner
POST /api/callback/plain/partner Reads the first matching row from partner
POST /api/tokens/embed/referrals Reads one row from partner
PATCH /api/user Reads one row from partnerReads the first matching row from partner
POST /api/veriff/webhook Reads one row from partner
Every request to /((?!api/|_next/|_proxy/|favicon.ico|sitemap.xml|robots.txt|manifest.webmanifest).*), before anything else Reads one row from partner
A form calls createAndEnrollPartner() Reads one row from partner
← All behaviours

table

domain

What breaks if you change it

Rename or remove this table and 54 behaviours break.

1 place can delete from it. Data removed here is gone for everything above.

6 places write to it — change its shape and each of those needs updating too.

What happens next

If you remove or rename domain…

118 behaviours affected in total

Stops working straight away in the code 54

These name it directly, so they break the moment it is gone.

POST /api/admin/domains/register-premiumGET /api/admin/domains/search-availabilityPOST /api/cron/cleanup/e2e-testsPOST /api/cron/cleanup/link-retentionPOST /api/cron/domains/updateGET /api/cron/domains/verifyPOST /api/cron/export/linksPOST /api/cron/groups/create-default-links

and 46 more

Left with nothing keeping it up to date worked out 5

Every behaviour that wrote to these is in the list above. They would still exist and still be readable — but nothing would be updating them any more. This is the failure with no error message.

folderwebhookregisteredDomaininvoicesentEmail
Keeps running, on data that has gone stale worked out 64

These read the tables above. They would not crash and they would not warn you — they would carry on serving whatever was there when the writing stopped.

GET /api/admin/analyticsPOST /api/cron/links/[linkId]/complete-testsPOST /api/cron/partner-program-summary/processGET /api/embed/referrals/analyticsGET /api/events/exportGET /api/eventsGET /api/partner-profile/programs/[programId]/analytics/exportGET /api/partner-profile/programs/[programId]/analytics

and 56 more

How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

54
POST /api/admin/domains/register-premium Reads one row from domain
GET /api/admin/domains/search-availability Reads one row from domain
POST /api/cron/cleanup/e2e-tests Reads rows from domainReads one row from domain
POST /api/cron/cleanup/link-retention Reads rows from domain
POST /api/cron/domains/update Reads one row from domain
GET /api/cron/domains/verify Reads rows from domainReads the first matching row from domainReads one row from domain
POST /api/cron/export/links Reads one row from domain
POST /api/cron/groups/create-default-links Reads rows from domainPOST /api/cron/groups/remap-default-links Reads rows from domainPOST /api/cron/import/csv Reads rows from domainAdds multiple rows to domain
POST /api/cron/sitemaps/import Reads the first matching row from domain
POST /api/cron/usage Reads rows from domain
POST /api/cron/workspaces/delete Reads rows from domainDeletes multiple rows from domain
POST /api/domains/register Reads the first matching row from domainReads one row from domain
GET /api/domains/status Reads rows from domain
POST /api/embed/referrals/links Reads rows from domain
PATCH /api/embed/referrals/links/[linkId] Reads rows from domain
POST /api/partner-profile/programs/[programId]/links Reads rows from domain
PATCH /api/partner-profile/programs/[programId]/links/[linkId] Reads rows from domain
POST /api/partners/links Reads rows from domainPUT /api/partners/links/upsert Reads rows from domainPOST /api/stripe/webhook Reads one row from domainReads the first matching row from domainChanges multiple rows in domainPOST /api/workflows/partner-approved Reads rows from domain
POST /api/domains/client/register Reads the first matching row from domainReads one row from domain
GET /api/domains Reads rows from domain
POST /api/domains Reads the first matching row from domain
GET /api/domains/search-availability Reads one row from domain
POST /api/domains/[domain]/primary Changes multiple rows in domainReads one row from domain
GET /api/domains/[domain] Reads one row from domain
PATCH /api/domains/[domain] Reads one row from domainReads the first matching row from domainReads rows from domain
DELETE /api/domains/[domain] Reads one row from domainReads rows from domain
POST /api/domains/[domain]/transfer Reads one row from domain
GET /api/domains/[domain]/validate Reads the first matching row from domain
GET /api/domains/[domain]/verify Reads one row from domain
POST /api/links/bulk Reads rows from domain
PATCH /api/links/bulk Reads rows from domain
GET /api/links/count Reads one row from domain
GET /api/links/export Reads one row from domain
GET /api/links Reads one row from domain
POST /api/links Reads rows from domainPUT /api/links/upsert Reads rows from domainPATCH /api/links/[linkId] Reads rows from domain
POST /api/slack/slash-commands Reads rows from domain
GET /api/workspaces/[idOrSlug]/billing/usage Reads rows from domain
POST /api/workspaces/[idOrSlug]/import/bitly Reads rows from domainAdds multiple rows to domainPOST /api/workspaces/[idOrSlug]/import/rebrandly Reads rows from domainAdds multiple rows to domainPOST /api/workspaces/[idOrSlug]/import/short Reads rows from domainAdds multiple rows to domain
GET /api/workspaces/[idOrSlug] Reads rows from domain
PATCH /api/workspaces/[idOrSlug] Reads the first matching row from domain
POST /api/workspaces/[idOrSlug]/sitemaps/import Reads the first matching row from domain
GET /wellknown/[domain]/[file] Reads one row from domain
Someone opens /[domain]/expired Reads one row from domain
Someone opens /[domain]/notfound Reads one row from domain
A form calls createAndEnrollPartner() Reads rows from domain
← All behaviours

table

folder

What breaks if you change it

Rename or remove this table and 53 behaviours break.

1 place can delete from it. Data removed here is gone for everything above.

1 place writes to it — change its shape and each of those needs updating too.

What happens next

If you remove or rename folder…

94 behaviours affected in total

Stops working straight away in the code 53

These name it directly, so they break the moment it is gone.

GET /api/admin/analyticsPOST /api/cron/export/linksPOST /api/cron/links/[linkId]/complete-testsPOST /api/cron/partner-program-summary/processPOST /api/cron/sitemaps/importPOST /api/cron/usagePOST /api/cron/workspaces/deleteGET /api/embed/referrals/analytics

and 45 more

Left with nothing keeping it up to date worked out 4

Every behaviour that wrote to these is in the list above. They would still exist and still be readable — but nothing would be updating them any more. This is the failure with no error message.

webhookregisteredDomaininvoicesentEmail
Keeps running, on data that has gone stale worked out 41

These read the tables above. They would not crash and they would not warn you — they would carry on serving whatever was there when the writing stopped.

GET /api/appsflyer/webhookPOST /api/bountiesPATCH /api/bounties/[bountyId]POST /api/cron/commissions/referrals/createPOST /api/cron/groups/create-default-linksPOST /api/cron/groups/remap-default-linksPOST /api/cron/import/csvPOST /api/cron/payouts/charge-succeeded

and 33 more

How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

53
GET /api/admin/analytics Reads rows from folder
POST /api/cron/export/links Reads one row from folderReads rows from folder
POST /api/cron/links/[linkId]/complete-tests Reads rows from folder
POST /api/cron/partner-program-summary/process Reads rows from folder
POST /api/cron/sitemaps/import Reads the first matching row from folder
POST /api/cron/usage Reads rows from folder
POST /api/cron/workspaces/delete Reads rows from folderDeletes multiple rows from folder
GET /api/embed/referrals/analytics Reads rows from folder
POST /api/embed/referrals/links Reads one row from folder
PATCH /api/embed/referrals/links/[linkId] Reads one row from folder
GET /api/events/export Reads one row from folderReads rows from folder
GET /api/events Reads one row from folder
GET /api/partner-profile/programs/[programId]/analytics/export Reads rows from folder
GET /api/partner-profile/programs/[programId]/analytics Reads rows from folder
GET /api/partner-profile/programs/[programId]/events/export Reads rows from folder
POST /api/partner-profile/programs/[programId]/links Reads one row from folder
PATCH /api/partner-profile/programs/[programId]/links/[linkId] Reads one row from folder
GET /api/partners/analytics Reads rows from folder
POST /api/partners/links Reads one row from folderPUT /api/partners/links/upsert Reads one row from folderPOST /api/stripe/webhook Reads rows from folderChanges multiple rows in folderReads one row from folder
GET /api/analytics/dashboard Reads one row from folderReads rows from folder
GET /api/analytics/export Reads one row from folderReads rows from folder
GET /api/analytics Reads one row from folderReads rows from folder
POST /api/dashboards Reads one row from folder
GET /api/folders/permissions Reads rows from folder
GET /api/folders Reads rows from folder
GET /api/folders/[folderId]/dashboard Reads one row from folder
GET /api/folders/[folderId] Reads one row from folder
PATCH /api/folders/[folderId] Reads one row from folder
DELETE /api/folders/[folderId] Reads one row from folder
GET /api/folders/[folderId]/users Reads one row from folder
POST /api/links/bulk Reads one row from folderReads rows from folder
PATCH /api/links/bulk Reads one row from folderReads rows from folder
DELETE /api/links/bulk Reads rows from folder
GET /api/links/count Reads one row from folderReads rows from folder
GET /api/links/export Reads one row from folderReads rows from folder
GET /api/links/info Reads one row from folder
GET /api/links Reads one row from folderReads rows from folder
POST /api/links Reads one row from folderPUT /api/links/upsert Reads one row from folder
GET /api/links/[linkId] Reads one row from folder
PATCH /api/links/[linkId] Reads one row from folder
DELETE /api/links/[linkId] Reads one row from folder
POST /api/links/[linkId]/transfer Reads one row from folder
GET /api/og/analytics Reads one row from folder
POST /api/webhooks Reads rows from folder
PATCH /api/webhooks/[webhookId] Reads rows from folder
GET /api/workspaces/[idOrSlug]/billing/usage Reads rows from folder
POST /api/workspaces/[idOrSlug]/import/csv Reads one row from folder
POST /api/workspaces/[idOrSlug]/import/rebrandly Reads one row from folderPOST /api/workspaces/[idOrSlug]/import/short Reads one row from folder
POST /api/workspaces/[idOrSlug]/sitemaps/import Reads the first matching row from folder
← All behaviours

table

tag

What breaks if you change it

Rename or remove this table and 48 behaviours break.

3 places can delete from it. Data removed here is gone for everything above.

5 places write to it — change its shape and each of those needs updating too.

What happens next

If you remove or rename tag…

48 behaviours affected in total

Stops working straight away in the code 48

These name it directly, so they break the moment it is gone.

GET /api/admin/analyticsPOST /api/cron/cleanup/e2e-testsPOST /api/cron/groups/create-default-linksPOST /api/cron/groups/remap-default-linksPOST /api/cron/import/bitlyPOST /api/cron/import/csvPOST /api/cron/import/firstpromoterPOST /api/cron/import/rebrandly

and 40 more

How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

48
GET /api/admin/analytics Reads rows from tag
POST /api/cron/cleanup/e2e-tests Reads rows from tagDeletes multiple rows from tagPOST /api/cron/groups/create-default-links Reads rows from tagPOST /api/cron/groups/remap-default-links Reads rows from tag
POST /api/cron/import/bitly Adds multiple rows to tagReads rows from tagDeletes multiple rows from tag
POST /api/cron/import/csv Reads rows from tagAdds multiple rows to tag
POST /api/cron/import/firstpromoter Reads rows from tag
POST /api/cron/import/rebrandly Reads rows from tagAdds multiple rows to tagDeletes multiple rows from tag
POST /api/cron/import/rewardful Reads rows from tag
POST /api/cron/import/short Reads rows from tagAdds multiple rows to tag
POST /api/cron/links/[linkId]/complete-tests Reads rows from tag
POST /api/cron/partner-program-summary/process Reads rows from tag
POST /api/cron/sitemaps/import Reads rows from tag
POST /api/cron/usage Reads rows from tag
GET /api/embed/referrals/analytics Reads rows from tag
POST /api/embed/referrals/links Reads rows from tag
PATCH /api/embed/referrals/links/[linkId] Reads rows from tag
GET /api/events/export Reads rows from tag
GET /api/partner-profile/programs/[programId]/analytics/export Reads rows from tag
GET /api/partner-profile/programs/[programId]/analytics Reads rows from tag
GET /api/partner-profile/programs/[programId]/events/export Reads rows from tag
POST /api/partner-profile/programs/[programId]/links Reads rows from tag
PATCH /api/partner-profile/programs/[programId]/links/[linkId] Reads rows from tag
GET /api/partners/analytics Reads rows from tag
POST /api/partners/links Reads rows from tagPUT /api/partners/links/upsert Reads rows from tag
POST /api/partners Reads rows from tag
POST /api/workflows/partner-approved Reads rows from tag
GET /api/analytics/dashboard Reads rows from tag
GET /api/analytics/export Reads rows from tag
GET /api/analytics Reads rows from tag
POST /api/links/bulk Reads rows from tag
PATCH /api/links/bulk Reads rows from tag
GET /api/links/info Reads rows from tag
POST /api/links Reads rows from tagPUT /api/links/upsert Reads rows from tag
GET /api/links/[linkId] Reads rows from tag
PATCH /api/links/[linkId] Reads rows from tag
POST /api/slack/slash-commands Reads rows from tag
GET /api/tags Reads rows from tag
PATCH /api/tags/[id] Reads the first matching row from tag
DELETE /api/tags/[id] Changes multiple rows in tagReads one row from tag
POST /api/tokens/embed/referrals Reads rows from tag
POST /api/workspaces/[idOrSlug]/import/bitly Reads rows from tagPOST /api/workspaces/[idOrSlug]/import/rebrandly Reads rows from tagPOST /api/workspaces/[idOrSlug]/import/short Reads rows from tag
POST /api/workspaces/[idOrSlug]/sitemaps/import Reads rows from tag
A form calls createAndEnrollPartner() Reads rows from tag
← All behaviours

table

webhook

What breaks if you change it

Rename or remove this table and 46 behaviours break.

1 place writes to it — change its shape and each of those needs updating too.

What happens next

If you remove or rename webhook…

61 behaviours affected in total

Stops working straight away in the code 46

These name it directly, so they break the moment it is gone.

GET /api/appsflyer/webhookPOST /api/bountiesPATCH /api/bounties/[bountyId]POST /api/cron/commissions/referrals/createPOST /api/cron/groups/create-default-linksPOST /api/cron/groups/remap-default-linksPOST /api/cron/import/csvPOST /api/cron/links/[linkId]/complete-tests

and 38 more

Left with nothing keeping it up to date worked out 3

Every behaviour that wrote to these is in the list above. They would still exist and still be readable — but nothing would be updating them any more. This is the failure with no error message.

installedIntegrationfolderWebhooksentEmail
Keeps running, on data that has gone stale worked out 15

These read the tables above. They would not crash and they would not warn you — they would carry on serving whatever was there when the writing stopped.

POST /api/commissionsPOST /api/cron/groups/update-default-linksGET /api/cron/streams/update-workspace-links-usagePOST /api/cron/usageGET /api/customers/search-stripeGET /api/customers/[id]/stripe-invoicesPOST /api/intercom/webhook/health-checkPOST /api/intercom/webhook/process

and 7 more

How far to trust this Wave one is what the code literally references. Everything after it is worked out from the graph, so treat it as where to look rather than as what will happen.

Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.

Everything that reaches it

46
GET /api/appsflyer/webhook Reads rows from webhook
POST /api/bounties Reads rows from webhook
PATCH /api/bounties/[bountyId] Reads rows from webhook
POST /api/cron/commissions/referrals/create Reads rows from webhook
POST /api/cron/groups/create-default-links Reads rows from webhookPOST /api/cron/groups/remap-default-links Reads rows from webhookPOST /api/cron/import/csv Reads rows from webhook
POST /api/cron/links/[linkId]/complete-tests Reads rows from webhook
POST /api/cron/payouts/charge-succeeded Reads rows from webhook
POST /api/cron/shopify/order-paid Reads rows from webhook
GET /api/cron/webhooks/sync-click-workspaces Reads rows from webhook
POST /api/embed/referrals/links Reads rows from webhook
PATCH /api/embed/referrals/links/[linkId] Reads rows from webhook
POST /api/hubspot/webhook/process Reads rows from webhook
POST /api/partner-profile/programs/[programId]/links Reads rows from webhook
PATCH /api/partner-profile/programs/[programId]/links/[linkId] Reads rows from webhook
POST /api/partners/links Reads rows from webhookPUT /api/partners/links/upsert Reads rows from webhook
POST /api/partners Reads rows from webhook
POST /api/shopify/integration/webhook Reads rows from webhook
GET /api/singular/webhook Reads rows from webhook
POST /api/stripe/integration/webhook Reads rows from webhookPOST /api/stripe/webhook Changes multiple rows in webhook
POST /api/track/lead/client Reads rows from webhook
POST /api/track/lead Reads rows from webhook
POST /api/track/sale/client Reads rows from webhook
POST /api/track/sale Reads rows from webhook
POST /api/workflows/create-partner-commission Reads rows from webhook
POST /api/workflows/partner-approved Reads rows from webhookPOST /api/links/bulk Reads rows from webhook
PATCH /api/links/bulk Reads rows from webhook
POST /api/links Reads rows from webhookPUT /api/links/upsert Reads rows from webhookPATCH /api/links/[linkId] Reads rows from webhook
DELETE /api/links/[linkId] Reads rows from webhook
GET /api/slack/callback Reads rows from webhook
POST /api/slack/slash-commands Reads rows from webhook
POST /api/tokens/embed/referrals Reads rows from webhook
POST /api/webhooks/callback Reads one row from webhookReads rows from webhook
GET /api/webhooks Reads rows from webhook
POST /api/webhooks Reads the first matching row from webhookReads rows from webhook
PATCH /api/webhooks/[webhookId] Reads the first matching row from webhookReads rows from webhook
DELETE /api/webhooks/[webhookId] Reads rows from webhook
A form calls createAndEnrollPartner() Reads rows from webhook
A form calls markSubmittedLeadClosedWon() Reads rows from webhook
A form calls markSubmittedLeadQualified() Reads rows from webhook
← All behaviours

71 dependencies · 220 connections

Everything this application leans on.

Two things are joined when some behaviour reaches both — so a line means they get changed together, whether or not anyone meant them to.

something can delete from it read or written only outside service size = how much reaches it
How to read it token is the centre of gravity — 313 behaviours reach it. 37 of these are ones something can delete from. Click any node to see exactly what breaks if you change it.
What this picture leaves out Only names written literally in the code can be placed. Anything reached through a name chosen at runtime is missing from this map entirely — not drawn faintly, not drawn at all — so treat it as a floor on how connected your application is, never a ceiling.
← All behaviours

71 dependencies · in depth

The same map, with room to breathe.

Drag to turn it. Nearer means larger and brighter; the clusters are groups of tables your application almost always touches together.

See it flat instead →

Three-dimensional map of the tables and services this application depends on 71 resources arranged in depth. Larger and brighter means nearer and more depended upon. The same information is listed as text under "What it depends on". customer webhook domain email link tag program programEnrollment project token restrictedToken folder partnerUser partner projectInvite partnerGroup user projectUsers Drag to turn · scroll to zoom
something can delete from it read or written only outside service
Why depth rather than decoration Forced onto one plane, a densely-connected graph presses unrelated clusters into each other simply because there is nowhere else for them to go. A third axis gives them somewhere, so what you are looking at is closer to the shape of the data. Everything here is the same information as the flat map and the text list — no claim is made in this view that is not made in those.
What this picture leaves out Only names written literally in the code can be placed. Anything reached through a name chosen at runtime is absent entirely, so treat this as a floor on how connected your application is, never a ceiling.