Page → API Map

Which backend operations each screen depends on.

The Page Route Inventory says what each screen is for; the API Endpoint Inventory says what each operation does. This joins them: for every page route, the operations reachable through what that page imports.

It answers the question a filename cannot. x-called-by on an operation names the file holding the fetch, and a component used by six screens gives one filename and no idea which six. This gives the screens.

Not every screen uses the API. A page marked as querying the database directly is a server component holding a Supabase client, which is why some rows below are short or empty — the data is there, it simply does not travel through an operation this specification describes.

It is a floor, not a census. The map is built by following imports, so a page that reaches an operation through a dynamic import, a URL assembled at runtime, or a server action passed by reference will not appear here. Nor will a call whose HTTP verb is computed rather than written down — the page reaches the path, but which operation it reaches is not knowable from the source, and a guess printed in this table would read as a fact. Everything listed is real; a blank is not proof of absence.

31 of 45 page routes reach at least one of the 84 operations below.

/

No backend operation is reachable from this page’s imports.

/api-docs

No backend operation is reachable from this page’s imports.

/auth/confirm-email

No backend operation is reachable from this page’s imports.

/auth/reset-password

No backend operation is reachable from this page’s imports.

/auth/update-password

Queries the database directly — this is a server component using the Supabase client, not the app’s own API.

/datasets

Also queries the database directly through the Supabase client.

Operation Also called from
POST /workspaces/events 22 other page(s)

/datasets/<slug>

Also queries the database directly through the Supabase client.

Operation Also called from
DELETE /annotations/{id} 4 other page(s)
DELETE /datasets/{slug}/notes/{noteId} 5 other page(s)
DELETE /images/{id}/asset-link 4 other page(s)
GET /annotation-categories 7 other page(s)
GET /annotations 4 other page(s)
GET /datasets/{slug}/3d-config 4 other page(s)
GET /datasets/{slug}/categories 3 other page(s)
GET /datasets/{slug}/gas-readings 1 other page(s)
GET /datasets/{slug}/gps-images 3 other page(s)
GET /datasets/{slug}/groups 3 other page(s)
GET /datasets/{slug}/notes 4 other page(s)
GET /equipment 4 other page(s)
GET /equipment/positions 3 other page(s)
GET /equipment/{id} 3 other page(s)
GET /images/extract-metadata 4 other page(s)
GET /images/search 4 other page(s)
GET /images/suggestions 4 other page(s)
GET /images/{id} 14 other page(s)
GET /images/{id}/asset-link 4 other page(s)
GET /images/{id}/gas-readings 4 other page(s)
GET /images/{id}/pair 4 other page(s)
GET /images/{id}/suggestions 4 other page(s)
GET /organizations/get-user-organizations 4 other page(s)
PATCH /annotations/{id} 4 other page(s)
PATCH /datasets/{slug} 5 other page(s)
PATCH /datasets/{slug}/notes/{noteId} 6 other page(s)
PATCH /images/{id}/tags 4 other page(s)
POST /annotation-review-decisions 4 other page(s)
POST /aps/upload 3 other page(s)
POST /datasets/update 5 other page(s)
POST /datasets/{slug}/image-url 6 other page(s)
POST /datasets/{slug}/index-images 3 other page(s)
POST /datasets/{slug}/notes 6 other page(s)
POST /datasets/{slug}/notes/{noteId}/pdf 5 other page(s)
POST /datasets/{slug}/sign-video 4 other page(s)
POST /gallery/assets/{assetId}/viewer-events 4 other page(s)
POST /images/extract-metadata only this page
POST /images/{id}/analyze 4 other page(s)
POST /images/{id}/annotations 4 other page(s)
POST /workspaces/events 22 other page(s)
PUT /datasets/{slug}/3d-config 4 other page(s)

/datasets/<slug>/settings

Also queries the database directly through the Supabase client.

Operation Also called from
POST /datasets/update 5 other page(s)

/datasets/create

Operation Also called from
GET /organizations/get-user-organizations 4 other page(s)
POST /datasets/create only this page
POST /datasets/{slug}/index-images 3 other page(s)
POST /storage/validate-azure only this page

/datasets/org/<id>

Also queries the database directly through the Supabase client.

Operation Also called from
DELETE /datasets/{slug} only this page
GET /organizations/get-user-organizations 4 other page(s)
POST /datasets/{slug}/image-url 6 other page(s)
POST /datasets/{slug}/index-images 3 other page(s)
POST /workspaces/events 22 other page(s)

/debug/cesium-token

No backend operation is reachable from this page’s imports.

/forbidden

No backend operation is reachable from this page’s imports.

/login

No backend operation is reachable from this page’s imports.

/onboarding

Queries the database directly — this is a server component using the Supabase client, not the app’s own API.

/organizations

Also queries the database directly through the Supabase client.

Operation Also called from
POST /workspaces/events 22 other page(s)

/organizations/<id>

Also queries the database directly through the Supabase client.

Operation Also called from
GET /organizations/get-members only this page
POST /organizations/add-member only this page
POST /organizations/delete only this page
POST /organizations/remove-member only this page
POST /organizations/rename only this page
POST /organizations/update-member-role only this page
POST /workspaces/events 22 other page(s)

/organizations/create

Operation Also called from
POST /organizations/create only this page

/profile

Queries the database directly — this is a server component using the Supabase client, not the app’s own API.

/progress

Also queries the database directly through the Supabase client.

Operation Also called from
GET /equipment-damage-mechanisms 5 other page(s)
GET /images 5 other page(s)

/settings

Also queries the database directly through the Supabase client.

Operation Also called from
GET /systems only this page
POST /tts/synthesize only this page

/signup

No backend operation is reachable from this page’s imports.

/w/data-explorer/anomalies

Also queries the database directly through the Supabase client.

Operation Also called from
GET /anomalies/dataset-distribution 1 other page(s)
GET /equipment-damage-mechanisms 5 other page(s)
GET /images 5 other page(s)
POST /workspaces/events 22 other page(s)

/w/data-explorer/anomalies/map

Also queries the database directly through the Supabase client.

Operation Also called from
DELETE /annotations/{id} 4 other page(s)
DELETE /datasets/{slug}/notes/{noteId} 5 other page(s)
DELETE /images/{id}/asset-link 4 other page(s)
GET /annotation-categories 7 other page(s)
GET /annotations 4 other page(s)
GET /datasets 1 other page(s)
GET /datasets/{slug}/3d-config 4 other page(s)
GET /datasets/{slug}/notes 4 other page(s)
GET /equipment 4 other page(s)
GET /images/extract-metadata 4 other page(s)
GET /images/search 4 other page(s)
GET /images/suggestions 4 other page(s)
GET /images/{id} 14 other page(s)
GET /images/{id}/asset-link 4 other page(s)
GET /images/{id}/gas-readings 4 other page(s)
GET /images/{id}/pair 4 other page(s)
GET /images/{id}/suggestions 4 other page(s)
GET /organizations/get-user-organizations 4 other page(s)
PATCH /annotations/{id} 4 other page(s)
PATCH /datasets/{slug} 5 other page(s)
PATCH /datasets/{slug}/notes/{noteId} 6 other page(s)
PATCH /images/{id}/tags 4 other page(s)
POST /annotation-review-decisions 4 other page(s)
POST /datasets/update 5 other page(s)
POST /datasets/{slug}/image-url 6 other page(s)
POST /datasets/{slug}/notes 6 other page(s)
POST /datasets/{slug}/notes/{noteId}/pdf 5 other page(s)
POST /datasets/{slug}/sign-video 4 other page(s)
POST /gallery/assets/{assetId}/viewer-events 4 other page(s)
POST /images/{id}/analyze 4 other page(s)
POST /images/{id}/annotations 4 other page(s)
PUT /datasets/{slug}/3d-config 4 other page(s)

/w/data-explorer/ask

Operation Also called from
POST /workspaces/events 22 other page(s)

/w/data-explorer/assets

Also queries the database directly through the Supabase client.

Operation Also called from
DELETE /annotations/{id} 4 other page(s)
DELETE /datasets/{slug}/notes/{noteId} 5 other page(s)
DELETE /images/{id}/asset-link 4 other page(s)
GET /annotation-categories 7 other page(s)
GET /annotations 4 other page(s)
GET /aps/model 3 other page(s)
GET /damage-mechanisms 3 other page(s)
GET /datasets/{slug} 12 other page(s)
GET /datasets/{slug}/3d-config 4 other page(s)
GET /datasets/{slug}/cad-objects 1 other page(s)
GET /datasets/{slug}/categories 3 other page(s)
GET /datasets/{slug}/gps-images 3 other page(s)
GET /datasets/{slug}/groups 3 other page(s)
GET /datasets/{slug}/notes 4 other page(s)
GET /equipment 4 other page(s)
GET /equipment/positions 3 other page(s)
GET /equipment/{id} 3 other page(s)
GET /images/extract-metadata 4 other page(s)
GET /images/search 4 other page(s)
GET /images/suggestions 4 other page(s)
GET /images/{id} 14 other page(s)
GET /images/{id}/asset-link 4 other page(s)
GET /images/{id}/gas-readings 4 other page(s)
GET /images/{id}/pair 4 other page(s)
GET /images/{id}/suggestions 4 other page(s)
PATCH /annotations/{id} 4 other page(s)
PATCH /datasets/{slug} 5 other page(s)
PATCH /datasets/{slug}/notes/{noteId} 6 other page(s)
PATCH /equipment-damage-mechanisms/{id} 2 other page(s)
PATCH /equipment-damage-mechanisms/{id}/decision 2 other page(s)
PATCH /equipment-damage-mechanisms/{id}/evidence 1 other page(s)
PATCH /images/{id}/tags 4 other page(s)
POST /annotation-review-decisions 4 other page(s)
POST /aps/upload 3 other page(s)
POST /auth/generate-jwt-from-session 2 other page(s)
POST /datasets/update 5 other page(s)
POST /datasets/{slug}/image-url 6 other page(s)
POST /datasets/{slug}/notes 6 other page(s)
POST /datasets/{slug}/notes/{noteId}/pdf 5 other page(s)
POST /datasets/{slug}/sign-video 4 other page(s)
POST /equipment-damage-mechanisms 2 other page(s)
POST /gallery/assets/{assetId}/viewer-events 4 other page(s)
POST /images/{id}/analyze 4 other page(s)
POST /images/{id}/annotations 4 other page(s)
POST /thumbnails/generate 12 other page(s)
POST /workspaces/events 22 other page(s)
PUT /datasets/{slug}/3d-config 4 other page(s)

/w/data-explorer/cad-viewer

Also queries the database directly through the Supabase client.

Operation Also called from
GET /organizations/get-user-organizations 4 other page(s)
POST /aps/upload 3 other page(s)
POST /workspaces/events 22 other page(s)

/w/data-explorer/campaigns

Also queries the database directly through the Supabase client.

Operation Also called from
PATCH /datasets/{slug}/lifecycle 1 other page(s)
POST /workspaces/events 22 other page(s)

/w/data-explorer/categories

Also queries the database directly through the Supabase client.

Operation Also called from
GET /annotation-categories 7 other page(s)
GET /datasets/{slug} 12 other page(s)
GET /images/{id} 14 other page(s)
PATCH /annotation-categories/{id} only this page
POST /annotation-categories only this page
POST /thumbnails/generate 12 other page(s)
POST /workspaces/events 22 other page(s)

/w/data-explorer/insights

Also queries the database directly through the Supabase client.

Operation Also called from
DELETE /datasets/{slug}/notes/{noteId} 5 other page(s)
DELETE /datasets/{slug}/notes/{noteId}/pdf only this page
GET /annotation-categories 7 other page(s)
GET /damage-mechanisms 3 other page(s)
GET /datasets 1 other page(s)
GET /note-tags only this page
GET /notes only this page
PATCH /datasets/{slug} 5 other page(s)
PATCH /datasets/{slug}/notes/{noteId} 6 other page(s)
POST /datasets/{slug}/notes 6 other page(s)
POST /datasets/{slug}/notes/{noteId}/pdf 5 other page(s)
POST /equipment-damage-mechanisms 2 other page(s)
POST /workspaces/events 22 other page(s)

/w/data-explorer/new-dataset

Also queries the database directly through the Supabase client.

Operation Also called from
GET /datasets/{slug} 12 other page(s)
GET /images/{id} 14 other page(s)
POST /datasets/list-bucket only this page
POST /datasets/onboarding only this page
POST /datasets/verify-storage only this page
POST /datasets/{slug}/index-images 3 other page(s)
POST /thumbnails/generate 12 other page(s)
POST /workspaces/events 22 other page(s)

/w/data-explorer/operations

No backend operation is reachable from this page’s imports.

/w/data-explorer/organisations

No backend operation is reachable from this page’s imports.

/w/data-explorer/organizations

Also queries the database directly through the Supabase client.

Operation Also called from
POST /workspaces/events 22 other page(s)

/w/data-explorer/storage

Also queries the database directly through the Supabase client.

Operation Also called from
GET /aps/model 3 other page(s)
GET /datasets/{slug} 12 other page(s)
GET /datasets/{slug}/images 2 other page(s)
GET /images/{id} 14 other page(s)
GET /reports/{id}/download 2 other page(s)
GET /storage/reference-files 1 other page(s)
POST /storage/list-files 1 other page(s)
POST /thumbnails/generate 12 other page(s)
POST /workspaces/events 22 other page(s)

/w/integrity/actions

Also queries the database directly through the Supabase client.

Operation Also called from
GET /datasets/{slug} 12 other page(s)
GET /images/{id} 14 other page(s)
PATCH /datasets/{slug}/notes/{noteId} 6 other page(s)
POST /datasets/{slug}/notes 6 other page(s)
POST /idms/push only this page
POST /thumbnails/generate 12 other page(s)

/w/integrity/ask

Operation Also called from
POST /workspaces/events 22 other page(s)

/w/integrity/assets

Also queries the database directly through the Supabase client.

Operation Also called from
DELETE /annotations/{id} 4 other page(s)
DELETE /datasets/{slug}/notes/{noteId} 5 other page(s)
DELETE /images/{id}/asset-link 4 other page(s)
GET /annotation-categories 7 other page(s)
GET /annotations 4 other page(s)
GET /aps/model 3 other page(s)
GET /damage-mechanisms 3 other page(s)
GET /datasets/{slug} 12 other page(s)
GET /datasets/{slug}/3d-config 4 other page(s)
GET /datasets/{slug}/cad-objects 1 other page(s)
GET /datasets/{slug}/categories 3 other page(s)
GET /datasets/{slug}/gps-images 3 other page(s)
GET /datasets/{slug}/groups 3 other page(s)
GET /datasets/{slug}/notes 4 other page(s)
GET /equipment 4 other page(s)
GET /equipment/positions 3 other page(s)
GET /equipment/{id} 3 other page(s)
GET /images/extract-metadata 4 other page(s)
GET /images/search 4 other page(s)
GET /images/suggestions 4 other page(s)
GET /images/{id} 14 other page(s)
GET /images/{id}/asset-link 4 other page(s)
GET /images/{id}/gas-readings 4 other page(s)
GET /images/{id}/pair 4 other page(s)
GET /images/{id}/suggestions 4 other page(s)
PATCH /annotations/{id} 4 other page(s)
PATCH /datasets/{slug} 5 other page(s)
PATCH /datasets/{slug}/notes/{noteId} 6 other page(s)
PATCH /equipment-damage-mechanisms/{id} 2 other page(s)
PATCH /equipment-damage-mechanisms/{id}/decision 2 other page(s)
PATCH /equipment-damage-mechanisms/{id}/evidence 1 other page(s)
PATCH /images/{id}/tags 4 other page(s)
POST /annotation-review-decisions 4 other page(s)
POST /aps/upload 3 other page(s)
POST /auth/generate-jwt-from-session 2 other page(s)
POST /datasets/update 5 other page(s)
POST /datasets/{slug}/image-url 6 other page(s)
POST /datasets/{slug}/notes 6 other page(s)
POST /datasets/{slug}/notes/{noteId}/pdf 5 other page(s)
POST /datasets/{slug}/sign-video 4 other page(s)
POST /equipment-damage-mechanisms 2 other page(s)
POST /gallery/assets/{assetId}/viewer-events 4 other page(s)
POST /images/{id}/analyze 4 other page(s)
POST /images/{id}/annotations 4 other page(s)
POST /thumbnails/generate 12 other page(s)
POST /workspaces/events 22 other page(s)
PUT /datasets/{slug}/3d-config 4 other page(s)

/w/integrity/campaigns

Also queries the database directly through the Supabase client.

Operation Also called from
GET /datasets/{slug} 12 other page(s)
GET /equipment-damage-mechanisms 5 other page(s)
GET /images 5 other page(s)
GET /images/{id} 14 other page(s)
PATCH /datasets/{slug}/lifecycle 1 other page(s)
POST /thumbnails/generate 12 other page(s)
POST /workspaces/events 22 other page(s)

/w/integrity/evidence-explorer

Also queries the database directly through the Supabase client.

Operation Also called from
DELETE /annotations/{id} 4 other page(s)
DELETE /datasets/{slug}/notes/{noteId} 5 other page(s)
DELETE /images/{id}/asset-link 4 other page(s)
GET /annotation-categories 7 other page(s)
GET /annotations 4 other page(s)
GET /datasets/{slug} 12 other page(s)
GET /datasets/{slug}/3d-config 4 other page(s)
GET /datasets/{slug}/categories 3 other page(s)
GET /datasets/{slug}/gas-readings 1 other page(s)
GET /datasets/{slug}/gps-images 3 other page(s)
GET /datasets/{slug}/groups 3 other page(s)
GET /datasets/{slug}/images 2 other page(s)
GET /datasets/{slug}/notes 4 other page(s)
GET /equipment 4 other page(s)
GET /equipment-damage-mechanisms 5 other page(s)
GET /equipment/positions 3 other page(s)
GET /equipment/{id} 3 other page(s)
GET /images 5 other page(s)
GET /images/extract-metadata 4 other page(s)
GET /images/search 4 other page(s)
GET /images/suggestions 4 other page(s)
GET /images/{id} 14 other page(s)
GET /images/{id}/asset-link 4 other page(s)
GET /images/{id}/gas-readings 4 other page(s)
GET /images/{id}/pair 4 other page(s)
GET /images/{id}/suggestions 4 other page(s)
PATCH /annotations/{id} 4 other page(s)
PATCH /datasets/{slug} 5 other page(s)
PATCH /datasets/{slug}/notes/{noteId} 6 other page(s)
PATCH /images/{id}/tags 4 other page(s)
POST /annotation-review-decisions 4 other page(s)
POST /auth/generate-jwt-from-session 2 other page(s)
POST /datasets/update 5 other page(s)
POST /datasets/{slug}/image-url 6 other page(s)
POST /datasets/{slug}/notes 6 other page(s)
POST /datasets/{slug}/notes/{noteId}/pdf 5 other page(s)
POST /datasets/{slug}/sign-video 4 other page(s)
POST /gallery/assets/{assetId}/viewer-events 4 other page(s)
POST /images/{id}/analyze 4 other page(s)
POST /images/{id}/annotations 4 other page(s)
POST /thumbnails/generate 12 other page(s)
POST /workspaces/events 22 other page(s)
PUT /datasets/{slug}/3d-config 4 other page(s)

/w/integrity/history

Also queries the database directly through the Supabase client.

Operation Also called from
GET /datasets/{slug} 12 other page(s)
GET /images/{id} 14 other page(s)
POST /thumbnails/generate 12 other page(s)

/w/integrity/insights

Also queries the database directly through the Supabase client.

Operation Also called from
GET /anomalies/dataset-distribution 1 other page(s)
GET /datasets/{slug} 12 other page(s)
GET /equipment-damage-mechanisms 5 other page(s)
GET /images 5 other page(s)
GET /images/{id} 14 other page(s)
POST /thumbnails/generate 12 other page(s)
POST /workspaces/events 22 other page(s)

/w/integrity/investigate

Also queries the database directly through the Supabase client.

Operation Also called from
GET /annotation-categories 7 other page(s)
GET /damage-mechanisms 3 other page(s)
GET /datasets/{slug} 12 other page(s)
GET /datasets/{slug}/pairs only this page
GET /equipment-damage-mechanisms 5 other page(s)
GET /images 5 other page(s)
GET /images/{id} 14 other page(s)
PATCH /equipment-damage-mechanisms/{id} 2 other page(s)
PATCH /equipment-damage-mechanisms/{id}/decision 2 other page(s)
POST /datasets/{slug}/image-url 6 other page(s)
POST /thumbnails/generate 12 other page(s)
POST /workspaces/events 22 other page(s)

/w/integrity/operations

No backend operation is reachable from this page’s imports.

/w/integrity/storage

Also queries the database directly through the Supabase client.

Operation Also called from
GET /aps/model 3 other page(s)
GET /datasets/{slug} 12 other page(s)
GET /datasets/{slug}/images 2 other page(s)
GET /images/{id} 14 other page(s)
GET /reports/{id}/download 2 other page(s)
GET /storage/reference-files 1 other page(s)
POST /storage/list-files 1 other page(s)
POST /thumbnails/generate 12 other page(s)
POST /workspaces/events 22 other page(s)

/w/integrity/worklist

Also queries the database directly through the Supabase client.

Operation Also called from
GET /datasets/{slug} 12 other page(s)
GET /images/{id} 14 other page(s)
GET /reports/{id}/download 2 other page(s)
GET /worklist only this page
POST /reports only this page
POST /thumbnails/generate 12 other page(s)
POST /workspaces/events 22 other page(s)

Generated from web/app/ by scripts/map_pages_to_api.py, which also records the same relationship on each operation in the specification as x-called-by-page.