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.