Next.js 15.5.8 · dub/web
Here is what your application can actually do.
ways in — pages people can open, endpoints anything can call, and actions your forms trigger.
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 inWhat it depends on
15 of 71 · widest reach firstEvery 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 →
56 more are reached by fewer behaviours and are not listed here.
Nothing looked wrong
Every way in
9 groups · ranked by consequenceGrouped, 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
API · stripe 8
API · partners 26
API · links 20
API · partner-profile 54
API · workspaces 48
app.dub.co 119
partners.dub.co 49
Everything else (68 smaller areas) 360
Endpoint · POST
POST /api/cron/cleanup/e2e-tests
Other software sends something in here.
What it does
1 step-
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
- Reads rows from
Depends on configuration
VERCEL, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/stripe/webhook
Other software sends something in here.
What it does
9 steps-
Works something out
Works out
bufapp/(ee)/api/stripe/webhook/route.ts:31
-
Works something out
Works out
sigapp/(ee)/api/stripe/webhook/route.ts:32
-
Works something out
Works out
webhookSecretapp/(ee)/api/stripe/webhook/route.ts:33
-
Works something out
Works out
eventapp/(ee)/api/stripe/webhook/route.ts:34
-
Changes something
Verifies the request really came from Stripe
app/(ee)/api/stripe/webhook/route.ts:35
-
Stops here if this fails
Checks !relevantEvents.has(event.type) — otherwise it stops here
app/(ee)/api/stripe/webhook/route.ts:46
-
Works something out
Works out
responseapp/(ee)/api/stripe/webhook/route.ts:52
-
Changes something
Checks who is asking, via
checkoutSessionCompleted()app/(ee)/api/stripe/webhook/route.ts:53
-
Answers
Answers the request
app/(ee)/api/stripe/webhook/route.ts:96
Depends on configuration
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
EDGE_CONFIG_ID, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
EDGE_CONFIG, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/cron/cleanup/unenrolled-partners
Other software sends something in here.
What it does
1 step-
Changes something
Checks who is asking, via
verifyQstashSignature()- Reads rows from
partner
app/(ee)/api/cron/cleanup/unenrolled-partners/route.ts:15
- Reads rows from
Depends on configuration
VERCEL, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/cron/cleanup/demo-embed-partners
Other software sends something in here.
What it does
1 step-
Changes something
Checks who is asking, via
verifyQstashSignature()- Reads rows from
programEnrollment
app/(ee)/api/cron/cleanup/demo-embed-partners/route.ts:14
- Reads rows from
Depends on configuration
VERCEL, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/cron/workspaces/delete
Other software sends something in here.
What it does
1 step-
Works something out
Works out
payloadapp/(ee)/api/cron/workspaces/delete/route.ts:14
Depends on configuration
VERCEL, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/cron/partners/delete
Other software sends something in here.
What it does
13 steps-
Works something out
Works out
programIdapp/(ee)/api/cron/partners/delete/route.ts:20
-
Changes something
Reads one row from
programEnrollmentapp/(ee)/api/cron/partners/delete/route.ts:28
-
Stops here if this fails
Checks !programEnrollment — otherwise it stops here
app/(ee)/api/cron/partners/delete/route.ts:48
-
Works something out
Works out
linkStatsapp/(ee)/api/cron/partners/delete/route.ts:54
-
Works something out
Works out
canDeleteapp/(ee)/api/cron/partners/delete/route.ts:56
-
Stops here if this fails
Checks !canDelete — otherwise it stops here
app/(ee)/api/cron/partners/delete/route.ts:61
-
Works something out
Works out
programEnrollmentWhereapp/(ee)/api/cron/partners/delete/route.ts:67
-
Stops here if this fails
Checks commissionCount > 0 || payoutCount > 0 — otherwise it stops here
app/(ee)/api/cron/partners/delete/route.ts:83
-
Works something out
Works out
partnerapp/(ee)/api/cron/partners/delete/route.ts:89
-
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
- Deletes multiple rows from
-
Branches
Depending on links.length > 0
app/(ee)/api/cron/partners/delete/route.ts:129
-
Changes something
Deletes a row from
programEnrollment- Changes a row in
project
app/(ee)/api/cron/partners/delete/route.ts:141
- Changes a row in
-
Answers
Answers the request
app/(ee)/api/cron/partners/delete/route.ts:177
Depends on configuration
VERCEL, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/cron/import/tapfiliate
Other software sends something in here.
What it does
2 steps-
Works something out
Works out
payloadapp/(ee)/api/cron/import/tapfiliate/route.ts:14
-
Answers
Answers the request
app/(ee)/api/cron/import/tapfiliate/route.ts:37
Depends on configuration
VERCEL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/stripe/integration/webhook
Other software sends something in here.
What it does
19 steps-
Works something out
Works out
startTimeapp/(ee)/api/stripe/integration/webhook/route.ts:37
-
Works something out
Works out
pathnameapp/(ee)/api/stripe/integration/webhook/route.ts:38
-
Works something out
Works out
bufapp/(ee)/api/stripe/integration/webhook/route.ts:39
-
Works something out
Works out
sigapp/(ee)/api/stripe/integration/webhook/route.ts:40
-
Works something out
Works out
webhookSecretapp/(ee)/api/stripe/integration/webhook/route.ts:43
-
Works something out
Works out
modeapp/(ee)/api/stripe/integration/webhook/route.ts:44
-
Branches
Depending on pathname.endsWith("/test")
app/(ee)/api/stripe/integration/webhook/route.ts:46
-
Stops here if this fails
Checks !sig || !webhookSecret — otherwise it stops here
app/(ee)/api/stripe/integration/webhook/route.ts:57
-
Works something out
Works out
eventapp/(ee)/api/stripe/integration/webhook/route.ts:63
-
Changes something
Verifies the request really came from Stripe
app/(ee)/api/stripe/integration/webhook/route.ts:64
-
Stops here if this fails
Checks !relevantEvents.has(event.type) — otherwise it stops here
app/(ee)/api/stripe/integration/webhook/route.ts:80
-
Stops here if this fails
Checks !event.livemode && mode === "live" — otherwise it stops here
app/(ee)/api/stripe/integration/webhook/route.ts:91
-
Stops here if this fails
Checks !event.account — otherwise it stops here
app/(ee)/api/stripe/integration/webhook/route.ts:100
-
Changes something
Reads one row from
projectapp/(ee)/api/stripe/integration/webhook/route.ts:108
-
Stops here if this fails
Checks !workspace — otherwise it stops here
app/(ee)/api/stripe/integration/webhook/route.ts:120
-
Works something out
Works out
resultapp/(ee)/api/stripe/integration/webhook/route.ts:127
-
Changes something
Checks who is asking, via
checkoutSessionCompleted()app/(ee)/api/stripe/integration/webhook/route.ts:131
-
Works something out
Works out
responseBodyapp/(ee)/api/stripe/integration/webhook/route.ts:209
-
Answers
Answers the request
app/(ee)/api/stripe/integration/webhook/route.ts:227
Depends on configuration
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/cron/partners/merge-accounts
Other software sends something in here.
What it does
2 steps-
Works something out
Works out
userIdapp/(ee)/api/cron/partners/merge-accounts/route.ts:33
-
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
- Reads rows from
Depends on configuration
VERCEL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/cron/import/tolt
Other software sends something in here.
What it does
1 step-
Changes something
Checks who is asking, via
verifyQstashSignature()app/(ee)/api/cron/import/tolt/route.ts:15
Depends on configuration
VERCEL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · PUT
PUT /api/partners/links/upsert
Other software replaces something here.
What it does
10 steps-
Works something out
Works out
programIdapp/(ee)/api/partners/links/upsert/route.ts:28
-
Works something out
Works out
partnerIdapp/(ee)/api/partners/links/upsert/route.ts:30
-
Works something out
Works out
programapp/(ee)/api/partners/links/upsert/route.ts:35
-
Stops here if this fails
Checks !program.domain || !program.url — otherwise it throws an error
app/(ee)/api/partners/links/upsert/route.ts:40
-
Changes something
Reads one row from
programEnrollmentapp/(ee)/api/partners/links/upsert/route.ts:48
-
Stops here if this fails
Checks !partner — otherwise it throws an error
app/(ee)/api/partners/links/upsert/route.ts:62
-
Works something out
Works out
partnerGroupapp/(ee)/api/partners/links/upsert/route.ts:69
-
Stops here if this fails
Checks !partnerGroup — otherwise it throws an error
app/(ee)/api/partners/links/upsert/route.ts:72
-
Changes something
Reads the first matching row from
linkapp/(ee)/api/partners/links/upsert/route.ts:84
-
Stops here if this fails
Checks link — otherwise it stops here
app/(ee)/api/partners/links/upsert/route.ts:94
Depends on configuration
EDGE_CONFIG, so it may not behave the same in production as it does locally.
STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
NODE_ENV, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/partners/links
Other software sends something in here.
What it does
13 steps-
Works something out
Works out
programIdapp/(ee)/api/partners/links/route.ts:72
-
Works something out
Works out
partnerIdapp/(ee)/api/partners/links/route.ts:74
-
Works something out
Works out
programapp/(ee)/api/partners/links/route.ts:77
-
Stops here if this fails
Checks !program.domain || !program.url — otherwise it throws an error
app/(ee)/api/partners/links/route.ts:82
-
Changes something
Reads one row from
programEnrollmentapp/(ee)/api/partners/links/route.ts:92
-
Stops here if this fails
Checks !partner — otherwise it throws an error
app/(ee)/api/partners/links/route.ts:106
-
Works something out
Works out
partnerGroupapp/(ee)/api/partners/links/route.ts:113
-
Stops here if this fails
Checks !partnerGroup — otherwise it throws an error
app/(ee)/api/partners/links/route.ts:116
-
Works something out
Works out
linkUrlapp/(ee)/api/partners/links/route.ts:125
-
Works something out
Works out
linkapp/(ee)/api/partners/links/route.ts:127
-
Stops here if this fails
Checks error != null — otherwise it throws an error
app/(ee)/api/partners/links/route.ts:150
-
Works something out
Works out
partnerLinkapp/(ee)/api/partners/links/route.ts:157
-
Answers
Answers the request
app/(ee)/api/partners/links/route.ts:167
Depends on configuration
EDGE_CONFIG, so it may not behave the same in production as it does locally.
STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
NODE_ENV, so it may not behave the same in production as it does locally.
Endpoint · PUT
PUT /api/links/upsert
Other software replaces something here.
What it does
4 steps-
Works something out
Works out
bodyRawapp/api/links/upsert/route.ts:25
-
Works something out
Works out
bodyapp/api/links/upsert/route.ts:26
-
Changes something
Reads the first matching row from
linkapp/api/links/upsert/route.ts:28
-
Stops here if this fails
Checks link — otherwise it stops here
- Reads rows from
tag
app/api/links/upsert/route.ts:35
- Reads rows from
Depends on configuration
EDGE_CONFIG, so it may not behave the same in production as it does locally.
STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
NODE_ENV, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/links
Other software sends something in here.
What it does
6 steps-
Branches
Depending on workspace
app/api/links/route.ts:57
-
Works something out
Works out
bodyapp/api/links/route.ts:61
-
Stops here if this fails
Checks !session — otherwise it throws an error
app/api/links/route.ts:65
-
Works something out
Works out
linkapp/api/links/route.ts:78
-
Stops here if this fails
Checks error != null — otherwise it throws an error
app/api/links/route.ts:84
-
Branches
Attempts the work, catching failures
app/api/links/route.ts:91
Depends on configuration
EDGE_CONFIG, so it may not behave the same in production as it does locally.
STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
NODE_ENV, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/partner-profile/programs/[programId]/links
Other software sends something in here.
What it does
12 steps-
Works something out
Works out
urlapp/(ee)/api/partner-profile/programs/[programId]/links/route.ts:50
-
Works something out
Works out
programapp/(ee)/api/partner-profile/programs/[programId]/links/route.ts:54
-
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
-
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
-
Stops here if this fails
Checks !group — otherwise it throws an error
app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:85
-
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
-
Changes something
Reads one row from
utmTemplateapp/(ee)/api/partner-profile/programs/[programId]/links/route.ts:103
-
Works something out
Works out
linkUrlapp/(ee)/api/partner-profile/programs/[programId]/links/route.ts:111
-
Works something out
Works out
linkapp/(ee)/api/partner-profile/programs/[programId]/links/route.ts:113
-
Stops here if this fails
Checks error != null — otherwise it throws an error
app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:142
-
Works something out
Works out
partnerLinkapp/(ee)/api/partner-profile/programs/[programId]/links/route.ts:149
-
Answers
Answers the request
app/(ee)/api/partner-profile/programs/[programId]/links/route.ts:151
Depends on configuration
EDGE_CONFIG, so it may not behave the same in production as it does locally.
STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/workspaces/[idOrSlug]/billing/upgrade
Other software sends something in here.
What it does
7 steps-
Works something out
Works out
planapp/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:25
-
Works something out
Works out
lookupKeyapp/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:29
-
Works something out
Works out
pricesapp/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:32
-
Stops here if this fails
Checks prices.data.length === 0 — otherwise it throws an error
app/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:36
-
Works something out
Works out
existingSubscriptionapp/api/workspaces/[idOrSlug]/billing/upgrade/route.ts:43
-
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
-
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
VERCEL, so it may not behave the same in production as it does locally.
VERCEL_ENV, so it may not behave the same in production as it does locally.
NODE_ENV, so it may not behave the same in production as it does locally.
EDGE_CONFIG, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/embed/referrals/links
Other software sends something in here.
What it does
13 steps-
Works something out
Works out
urlapp/(ee)/api/embed/referrals/links/route.ts:26
-
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
-
Stops here if this fails
Checks !program.domain || !program.url — otherwise it throws an error
app/(ee)/api/embed/referrals/links/route.ts:37
-
Stops here if this fails
Checks links.length >= group.maxPartnerLinks — otherwise it throws an error
app/(ee)/api/embed/referrals/links/route.ts:45
-
Changes something
Reads the first matching row from
projectUsers- Reads one row from
partnerGroup
app/(ee)/api/embed/referrals/links/route.ts:54
- Reads one row from
-
Stops here if this fails
Checks !partnerGroup — otherwise it throws an error
app/(ee)/api/embed/referrals/links/route.ts:85
-
Works something out
Works out
linkUrlapp/(ee)/api/embed/referrals/links/route.ts:92
-
Works something out
Works out
linkapp/(ee)/api/embed/referrals/links/route.ts:94
-
Stops here if this fails
Checks error != null — otherwise it throws an error
app/(ee)/api/embed/referrals/links/route.ts:122
-
Works something out
Works out
partnerLinkapp/(ee)/api/embed/referrals/links/route.ts:129
-
Works something out
Works out
workspaceapp/(ee)/api/embed/referrals/links/route.ts:132
-
Branches
Depending on workspace
app/(ee)/api/embed/referrals/links/route.ts:133
-
Answers
Answers the request
app/(ee)/api/embed/referrals/links/route.ts:143
Depends on configuration
STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
EDGE_CONFIG, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
NODE_ENV, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/cron/groups/remap-default-links
Other software sends something in here.
What it does
1 step-
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
- Reads one row from
Depends on configuration
VERCEL, so it may not behave the same in production as it does locally.
STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/admin/partners/delete-account
Other software sends something in here.
What it does
6 steps-
Works something out
Works out
emailapp/(ee)/api/admin/partners/delete-account/route.ts:12
-
Changes something
Reads one row from
partnerapp/(ee)/api/admin/partners/delete-account/route.ts:14
-
Stops here if this fails
Checks !partner — otherwise it stops here
app/(ee)/api/admin/partners/delete-account/route.ts:39
-
Stops here if this fails
Checks partner.stripeConnectId — otherwise it stops here
app/(ee)/api/admin/partners/delete-account/route.ts:43
-
Stops here if this fails
Checks deletePartnerAccount — otherwise it stops here
app/(ee)/api/admin/partners/delete-account/route.ts:86
-
Answers
Answers the request
app/(ee)/api/admin/partners/delete-account/route.ts:139
Depends on configuration
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/cron/groups/create-default-links
Other software sends something in here.
What it does
1 step-
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
- Reads one row from
Depends on configuration
VERCEL, so it may not behave the same in production as it does locally.
STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/links/bulk
Other software sends something in here.
What it does
13 steps-
Stops here if this fails
Checks !workspace — otherwise it throws an error
app/api/links/bulk/route.ts:37
-
Works something out
Works out
linksapp/api/links/bulk/route.ts:47
-
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
-
Works something out
Works out
duplicatesapp/api/links/bulk/route.ts:64
-
Stops here if this fails
Checks duplicates.length > 0 — otherwise it throws an error
app/api/links/bulk/route.ts:72
-
Works something out
Works out
processedLinksapp/api/links/bulk/route.ts:81
-
Works something out
Works out
validLinksapp/api/links/bulk/route.ts:93
-
Works something out
Works out
errorLinksapp/api/links/bulk/route.ts:97
-
Changes something
Reads rows from
tagapp/api/links/bulk/route.ts:105
-
Stops here if this fails
Checks checkIfLinksHaveFolders(validLinks) — otherwise it stops here
app/api/links/bulk/route.ts:171
-
Stops here if this fails
Checks checkIfLinksHaveWebhooks(validLinks) — otherwise it throws an error
- Reads rows from
webhook
app/api/links/bulk/route.ts:218
- Reads rows from
-
Works something out
Works out
validLinksResponseapp/api/links/bulk/route.ts:253
-
Answers
Answers the request
app/api/links/bulk/route.ts:256
Depends on configuration
EDGE_CONFIG, so it may not behave the same in production as it does locally.
STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/workspaces/[idOrSlug]/import/rebrandly
Other software sends something in here.
What it does
7 steps-
Works something out
Works out
selectedDomainsapp/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:97
-
Changes something
Checks who is asking, via
verifyFolderAccess()app/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:100
-
Changes something
Reads rows from
domainapp/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:109
-
Works something out
Works out
domainsNotInWorkspaceapp/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:116
-
Changes something
Adds multiple rows to
domainapp/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:119
-
Works something out
Works out
responseapp/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:144
-
Answers
Answers the request
app/api/workspaces/[idOrSlug]/import/rebrandly/route.ts:160
Depends on configuration
EDGE_CONFIG, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/workspaces/[idOrSlug]/import/short
Other software sends something in here.
What it does
7 steps-
Works something out
Works out
selectedDomainsapp/api/workspaces/[idOrSlug]/import/short/route.ts:81
-
Changes something
Checks who is asking, via
verifyFolderAccess()app/api/workspaces/[idOrSlug]/import/short/route.ts:83
-
Changes something
Reads rows from
domainapp/api/workspaces/[idOrSlug]/import/short/route.ts:92
-
Works something out
Works out
domainsNotInWorkspaceapp/api/workspaces/[idOrSlug]/import/short/route.ts:99
-
Changes something
Adds multiple rows to
domainapp/api/workspaces/[idOrSlug]/import/short/route.ts:102
-
Works something out
Works out
responseapp/api/workspaces/[idOrSlug]/import/short/route.ts:127
-
Answers
Answers the request
app/api/workspaces/[idOrSlug]/import/short/route.ts:142
Depends on configuration
EDGE_CONFIG, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · DELETE
DELETE /api/workspaces/[idOrSlug]
Other software asks to remove something here.
What it does
2 steps-
Stops here if this fails
Checks workspace.defaultProgramId — otherwise it throws an error
app/api/workspaces/[idOrSlug]/route.ts:312
-
Answers
Answers the request
app/api/workspaces/[idOrSlug]/route.ts:322
Depends on configuration
EDGE_CONFIG, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · PATCH
PATCH /api/links/[linkId]
Other software changes something here.
What it does
11 steps-
Works something out
Works out
linkapp/api/links/[linkId]/route.ts:76
-
Works something out
Works out
bodyapp/api/links/[linkId]/route.ts:81
-
Changes something
Checks who is asking, via
verifyFolderAccess()app/api/links/[linkId]/route.ts:86
-
Works something out
Works out
updatedLinkapp/api/links/[linkId]/route.ts:111
-
Stops here if this fails
Checks deepEqual(link, updatedLink) — otherwise it stops here
app/api/links/[linkId]/route.ts:132
-
Stops here if this fails
Checks updatedLink.projectId !== link?.projectId — otherwise it throws an error
app/api/links/[linkId]/route.ts:136
-
Works something out
Works out
skipKeyChecksapp/api/links/[linkId]/route.ts:145
-
Works something out
Works out
skipExternalIdChecksapp/api/links/[linkId]/route.ts:150
-
Works something out
Works out
processedLinkapp/api/links/[linkId]/route.ts:153
-
Stops here if this fails
Checks error — otherwise it throws an error
app/api/links/[linkId]/route.ts:165
-
Branches
Attempts the work, catching failures
app/api/links/[linkId]/route.ts:172
Depends on configuration
EDGE_CONFIG, so it may not behave the same in production as it does locally.
STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
NODE_ENV, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/domains
Other software sends something in here.
What it does
10 steps-
Works something out
Works out
bodyapp/api/domains/route.ts:98
-
Works something out
Works out
slugapp/api/domains/route.ts:99
-
Stops here if this fails
Checks workspace.plan === "free" — otherwise it throws an error
app/api/domains/route.ts:111
-
Works something out
Works out
validDomainapp/api/domains/route.ts:138
-
Stops here if this fails
Checks validDomain.error && validDomain.code — otherwise it throws an error
app/api/domains/route.ts:140
-
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
-
Works something out
Works out
domainIdapp/api/domains/route.ts:159
-
Works something out
Works out
logoUploadedapp/api/domains/route.ts:161
-
Works something out
Works out
domainRecordapp/api/domains/route.ts:168
-
Answers
Answers the request
app/api/domains/route.ts:254
Depends on configuration
VERCEL, so it may not behave the same in production as it does locally.
EDGE_CONFIG, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/workspaces/[idOrSlug]/import/bitly
Other software sends something in here.
What it does
7 steps-
Works something out
Works out
selectedDomainsapp/api/workspaces/[idOrSlug]/import/bitly/route.ts:63
-
Changes something
Reads rows from
domainapp/api/workspaces/[idOrSlug]/import/bitly/route.ts:65
-
Works something out
Works out
domainsNotInWorkspaceapp/api/workspaces/[idOrSlug]/import/bitly/route.ts:72
-
Changes something
Adds multiple rows to
domainapp/api/workspaces/[idOrSlug]/import/bitly/route.ts:76
-
Works something out
Works out
groupsapp/api/workspaces/[idOrSlug]/import/bitly/route.ts:104
-
Works something out
Works out
responseapp/api/workspaces/[idOrSlug]/import/bitly/route.ts:120
-
Answers
Answers the request
app/api/workspaces/[idOrSlug]/import/bitly/route.ts:138
Depends on configuration
EDGE_CONFIG, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
PLANETSCALE_DATABASE_URL, so it may not behave the same in production as it does locally.
DATABASE_URL, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · DELETE
DELETE /api/groups/[groupIdOrSlug]
Other software asks to remove something here.
What it does
11 steps-
Works something out
Works out
programIdapp/(ee)/api/groups/[groupIdOrSlug]/route.ts:265
-
Works something out
Works out
groupIdOrSlugapp/(ee)/api/groups/[groupIdOrSlug]/route.ts:266
-
Stops here if this fails
Checks group.programId !== programId — otherwise it throws an error
app/(ee)/api/groups/[groupIdOrSlug]/route.ts:294
-
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
-
Changes something
Reads rows from
programEnrollmentapp/(ee)/api/groups/[groupIdOrSlug]/route.ts:308
-
Works something out
Works out
shouldDeleteGroupRewardsapp/(ee)/api/groups/[groupIdOrSlug]/route.ts:329
-
Works something out
Works out
groupRewardIdsapp/(ee)/api/groups/[groupIdOrSlug]/route.ts:331
-
Branches
Depending on groupRewardIds.length > 0
app/(ee)/api/groups/[groupIdOrSlug]/route.ts:338
-
Changes something
Deletes multiple rows from
reward- Deletes rows from something chosen at runtime
app/(ee)/api/groups/[groupIdOrSlug]/route.ts:353
-
Branches
Depending on deletedGroup
app/(ee)/api/groups/[groupIdOrSlug]/route.ts:388
-
Answers
Answers the request
app/(ee)/api/groups/[groupIdOrSlug]/route.ts:414
Depends on configuration
EDGE_CONFIG, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/cron/import/csv
Other software sends something in here.
What it does
1 step-
Changes something
Checks who is asking, via
verifyQstashSignature()app/(ee)/api/cron/import/csv/route.ts:59
Depends on configuration
VERCEL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_URL, so it may not behave the same in production as it does locally.
UPSTASH_REDIS_REST_TOKEN, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
Endpoint · POST
POST /api/workflows/partner-approved
Other software sends something in here.
What it does
8 steps-
Works something out
Works out
inputapp/(ee)/api/workflows/partner-approved/route.ts:57
-
Works something out
Works out
programIdapp/(ee)/api/workflows/partner-approved/route.ts:58
-
Works something out
Works out
programapp/(ee)/api/workflows/partner-approved/route.ts:60
-
Works something out
Works out
groupIdapp/(ee)/api/workflows/partner-approved/route.ts:75
-
Works something out
Works out
allPartnerLinksapp/(ee)/api/workflows/partner-approved/route.ts:77
-
Stops here if this fails
Checks program.id === NETWORK_PROGRAM_ID — otherwise it stops here
app/(ee)/api/workflows/partner-approved/route.ts:169
-
Changes something
Reads rows from
partnerUser- Sends several emails at once
app/(ee)/api/workflows/partner-approved/route.ts:186
-
Changes something
Reads rows from
partnerPlatformapp/(ee)/api/workflows/partner-approved/route.ts:268
Depends on configuration
STORAGE_SECRET_ACCESS_KEY, so it may not behave the same in production as it does locally.
NODE_ENV, so it may not behave the same in production as it does locally.
QSTASH_URL, so it may not behave the same in production as it does locally.
QSTASH_TOKEN, so it may not behave the same in production as it does locally.
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
These name it directly, so they break the moment it is gone.
and 305 more
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.
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.
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
313tokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokenPUT /api/partners/links/upsert
Reads one row from tokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentokentable
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
These name it directly, so they break the moment it is gone.
and 285 more
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.
and 3 more
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.
and 106 more
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
293projectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectPOST /api/cron/cleanup/e2e-tests
Changes multiple rows in projectPOST /api/cron/cleanup/unenrolled-partners
Changes multiple rows in projectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectChanges multiple rows in projectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectPUT /api/partners/links/upsert
Reads one row from projectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectPOST /api/stripe/webhook
Reads one row from projectReads the first matching row from projectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojectprojecttable
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
These name it directly, so they break the moment it is gone.
and 249 more
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.
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.
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
257projectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInvitePUT /api/partners/links/upsert
Reads one row from projectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteReads one row from projectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInviteprojectInvitetable
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
These name it directly, so they break the moment it is gone.
and 247 more
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.
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.
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
255restrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenPUT /api/partners/links/upsert
Reads one row from restrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenReads rows from restrictedTokenrestrictedTokenReads rows from restrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenReads one row from restrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenDeletes multiple rows from restrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenrestrictedTokenReads one row from restrictedTokentable
link
What breaks if you change it
Rename or remove this table and 129 behaviours break.
11 places can delete from it. Data removed here is gone for everything above.
36 places write to it — change its shape and each of those needs updating too.
What happens next
If you remove or rename link…
377 behaviours affected in total
These name it directly, so they break the moment it is gone.
and 121 more
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.
and 7 more
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.
and 240 more
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
129linklinkChanges multiple rows in linklinklinklinklinklinkChanges multiple rows in linklinkChanges multiple rows in linklinklinklinkPOST /api/cron/cleanup/e2e-tests
Reads rows from linkDeletes multiple rows from linklinkDeletes multiple rows from linklinklinklinklinkChanges multiple rows in linklinkChanges multiple rows in linklinklinklinklinkReads rows from linklinkChanges multiple rows in linklinkAdds multiple rows to linkReads rows from linkPOST /api/cron/groups/remap-default-links
Changes multiple rows in linkReads one row from linkAdds multiple rows to linkReads rows from linklinkReads one row from linklinklinklinkReads rows from linklinkReads one row from linkAdds multiple rows to linklinkReads rows from linklinklinkAdds multiple rows to linklinkReads rows from linkReads the first matching row from linklinkAdds multiple rows to linklinkDeletes multiple rows from linkPOST /api/cron/import/tolt
Reads one row from linkReads rows from linkDeletes multiple rows from linklinklinklinkReads rows from linklinklinklinkPOST /api/cron/partners/merge-accounts
Changes multiple rows in linkReads rows from linklinklinkReads rows from linklinklinkAdds multiple rows to linklinklinklinkDeletes multiple rows from linklinklinklinklinklinklinklinklinklinkReads rows from linklinkReads rows from linklinkChanges multiple rows in linkDeletes multiple rows from linklinklinklinklinklinklinklinklinklinklinklinklinklinklinklinkPUT /api/partners/links/upsert
Reads the first matching row from linkReads one row from linklinkReads rows from linklinklinklinkPOST /api/stripe/webhook
Reads rows from linkChanges multiple rows in linklinklinklinklinklinklinklinkAdds multiple rows to linkReads rows from linkReads the first matching row from linklinkReads rows from linklinkReads rows from linklinkReads rows from linklinkReads one row from linklinklinklinklinkChanges multiple rows in linklinkAdds multiple rows to linkReads rows from linklinkReads one row from linklinkDeletes multiple rows from linklinkReads rows from linklinklinkReads rows from linklinklinkChanges multiple rows in linklinkReads one row from linklinklinklinklinklinklinklinklinklinkReads rows from linklinklinklinkReads rows from linkPOST /api/workspaces/[idOrSlug]/import/rebrandly
Adds multiple rows to linkReads rows from linkPOST /api/workspaces/[idOrSlug]/import/short
Adds multiple rows to linkReads rows from linklinkAdds multiple rows to linklinklinklinklinklinkAdds multiple rows to linkReads rows from linklinklinkReads one row from linktable
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
These name it directly, so they break the moment it is gone.
and 117 more
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.
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.
and 14 more
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
125programEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentDeletes multiple rows from programEnrollmentprogramEnrollmentDeletes multiple rows from programEnrollmentPOST /api/cron/cleanup/e2e-tests
Reads rows from programEnrollmentDeletes multiple rows from programEnrollmentprogramEnrollmentDeletes multiple rows from programEnrollmentprogramEnrollmentDeletes multiple rows from programEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentPOST /api/cron/groups/remap-default-links
Reads rows from programEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads rows from programEnrollmentPOST /api/cron/import/tolt
Reads rows from programEnrollmentDeletes multiple rows from programEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentChanges multiple rows in programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentprogramEnrollmentPOST /api/cron/partners/merge-accounts
Changes multiple rows in programEnrollmentprogramEnrollmentprogramEnrollmentChanges multiple rows in programEnrollmentprogramEnrollmentChanges multiple rows in programEnrollmentprogramEnrollmentChanges multiple rows in programEnrollmentprogramEnrollmentprogramEnrollmentReads rows from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentprogramEnrollmentReads rows from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentprogramEnrollmentChanges multiple rows in programEnrollmentprogramEnrollmentChanges multiple rows in programEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads one row from programEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentDeletes multiple rows from programEnrollmentprogramEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentReads rows from programEnrollmentChanges multiple rows in programEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentPUT /api/partners/links/upsert
Reads one row from programEnrollmentprogramEnrollmentprogramEnrollmentReads one row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentChanges multiple rows in programEnrollmentprogramEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentReads rows from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentprogramEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentprogramEnrollmentReads one row from programEnrollmentprogramEnrollmentprogramEnrollmentReads the first matching row from programEnrollmentservice
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
These call it directly. Whatever they were doing with it will fail.
and 79 more
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.
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.
and 40 more
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
87table
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
These name it directly, so they break the moment it is gone.
and 62 more
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.
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.
and 31 more
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
70projectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersReads one row from projectUsersprojectUsersReads one row from projectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUsersprojectUserstable
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
These name it directly, so they break the moment it is gone.
and 57 more
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.
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
65programprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramPOST /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 programprogramReads one row from programReads the first matching row from programprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramPUT /api/partners/links/upsert
Reads one row from programprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramprogramPUT /api/links/upsert
Reads one row from programPATCH /api/links/[linkId]
Reads one row from programprogramprogramprogramtable
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
These name it directly, so they break the moment it is gone.
and 57 more
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
65partnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserReads one row from partnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserReads one row from partnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUserpartnerUsertable
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
These name it directly, so they break the moment it is gone.
and 54 more
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.
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.
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
62partnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerPOST /api/cron/cleanup/unenrolled-partners
Reads rows from partnerpartnerpartnerpartnerDeletes multiple rows from partnerPOST /api/cron/import/tolt
Reads rows from partnerDeletes multiple rows from partnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerChanges multiple rows in partnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerpartnerReads the first matching row from partnerpartnerpartnerpartnertable
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
These name it directly, so they break the moment it is gone.
and 46 more
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.
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.
and 56 more
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
54domaindomaindomainReads one row from domaindomaindomaindomainReads the first matching row from domainReads one row from domaindomaindomainPOST /api/cron/groups/remap-default-links
Reads rows from domainPOST /api/cron/import/csv
Reads rows from domainAdds multiple rows to domaindomaindomaindomainDeletes multiple rows from domaindomainReads one row from domaindomaindomaindomaindomaindomaindomainPUT /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 domaindomainReads one row from domaindomaindomaindomaindomainReads one row from domaindomaindomainReads the first matching row from domainReads rows from domaindomainReads rows from domaindomaindomaindomaindomaindomaindomaindomaindomaindomainPUT /api/links/upsert
Reads rows from domainPATCH /api/links/[linkId]
Reads rows from domaindomaindomaindomainAdds 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 domaindomaindomaindomaindomaindomaindomaindomaintable
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
These name it directly, so they break the moment it is gone.
and 45 more
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.
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.
and 33 more
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
53folderfolderReads rows from folderfolderfolderfolderfolderfolderDeletes multiple rows from folderfolderfolderfolderfolderReads rows from folderfolderfolderfolderfolderfolderfolderfolderfolderPUT /api/partners/links/upsert
Reads one row from folderPOST /api/stripe/webhook
Reads rows from folderChanges multiple rows in folderReads one row from folderfolderReads rows from folderfolderReads rows from folderfolderReads rows from folderfolderfolderfolderfolderfolderfolderfolderfolderfolderReads rows from folderfolderReads rows from folderfolderfolderReads rows from folderfolderReads rows from folderfolderfolderReads rows from folderfolderPUT /api/links/upsert
Reads one row from folderfolderfolderfolderfolderfolderfolderfolderfolderfolderfolderPOST /api/workspaces/[idOrSlug]/import/short
Reads one row from folderfoldertable
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
These name it directly, so they break the moment it is gone.
and 40 more
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
48tagtagDeletes multiple rows from tagPOST /api/cron/groups/create-default-links
Reads rows from tagPOST /api/cron/groups/remap-default-links
Reads rows from tagtagReads rows from tagDeletes multiple rows from tagtagAdds multiple rows to tagtagtagAdds multiple rows to tagDeletes multiple rows from tagtagtagAdds multiple rows to tagtagtagtagtagtagtagtagtagtagtagtagtagtagtagtagPUT /api/partners/links/upsert
Reads rows from tagtagtagtagtagtagtagtagtagtagPUT /api/links/upsert
Reads rows from tagtagtagtagtagtagtagReads one row from tagtagtagPOST /api/workspaces/[idOrSlug]/import/rebrandly
Reads rows from tagPOST /api/workspaces/[idOrSlug]/import/short
Reads rows from tagtagtagtable
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
These name it directly, so they break the moment it is gone.
and 38 more
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.
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.
and 7 more
Only names written literally in the code are here at all. Anything reached dynamically is missing from every wave.
Everything that reaches it
46webhookwebhookwebhookwebhookwebhookPOST /api/cron/groups/remap-default-links
Reads rows from webhookPOST /api/cron/import/csv
Reads rows from webhookwebhookwebhookwebhookwebhookwebhookwebhookwebhookwebhookwebhookwebhookPUT /api/partners/links/upsert
Reads rows from webhookwebhookwebhookwebhookwebhookPOST /api/stripe/webhook
Changes multiple rows in webhookwebhookwebhookwebhookwebhookwebhookwebhookPOST /api/links/bulk
Reads rows from webhookwebhookwebhookPUT /api/links/upsert
Reads rows from webhookPATCH /api/links/[linkId]
Reads rows from webhookwebhookwebhookwebhookwebhookwebhookReads rows from webhookwebhookwebhookReads rows from webhookwebhookReads rows from webhookwebhookwebhookwebhookwebhook71 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.
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.