# API endpoint declaration inventory

This appendix preserves every statically detected endpoint declaration on `main` and `dev`. Paths are the route-local declarations when a framework applies a router prefix elsewhere. Use the source file and line as the audit trail.

## kinship-shared · main (142)

| Method | Declared path | Router | Source |
|---|---|---|---|
| GET | `/api/agent-service/{path...}` | next-route | `app/api/agent-service/[...path]/route.ts:101` |
| POST | `/api/agent-service/{path...}` | next-route | `app/api/agent-service/[...path]/route.ts:109` |
| PATCH | `/api/agent-service/{path...}` | next-route | `app/api/agent-service/[...path]/route.ts:117` |
| PUT | `/api/agent-service/{path...}` | next-route | `app/api/agent-service/[...path]/route.ts:125` |
| DELETE | `/api/agent-service/{path...}` | next-route | `app/api/agent-service/[...path]/route.ts:133` |
| GET | `/api/agent-tools/debug` | next-route | `app/api/agent-tools/debug/route.ts:9` |
| POST | `/api/agent-tools/refresh` | next-route | `app/api/agent-tools/refresh/route.ts:5` |
| GET | `/api/agent-tools/refresh` | next-route | `app/api/agent-tools/refresh/route.ts:73` |
| GET | `/api/agent-tools` | next-route | `app/api/agent-tools/route.ts:26` |
| POST | `/api/agent-tools` | next-route | `app/api/agent-tools/route.ts:113` |
| GET | `/api/agents/{id}` | next-route | `app/api/agents/[id]/route.ts:7` |
| PUT | `/api/agents/{id}` | next-route | `app/api/agents/[id]/route.ts:46` |
| DELETE | `/api/agents/{id}` | next-route | `app/api/agents/[id]/route.ts:83` |
| POST | `/api/agents/{id}/set-ally` | next-route | `app/api/agents/[id]/set-ally/route.ts:7` |
| POST | `/api/agents/{id}/unset-ally` | next-route | `app/api/agents/[id]/unset-ally/route.ts:7` |
| GET | `/api/agents/ally` | next-route | `app/api/agents/ally/route.ts:7` |
| GET | `/api/agents/check-presence` | next-route | `app/api/agents/check-presence/route.ts:8` |
| GET | `/api/agents` | next-route | `app/api/agents/route.ts:7` |
| POST | `/api/agents` | next-route | `app/api/agents/route.ts:42` |
| POST | `/api/chatmessages/stream` | next-route | `app/api/chatmessages/stream/route.ts:11` |
| GET | `/api/cron/check-ico-deadlines` | next-route | `app/api/cron/check-ico-deadlines/route.ts:24` |
| GET | `/api/knowledge/{id}` | next-route | `app/api/knowledge/[id]/route.ts:6` |
| PUT | `/api/knowledge/{id}` | next-route | `app/api/knowledge/[id]/route.ts:31` |
| POST | `/api/knowledge/gdrive-import` | next-route | `app/api/knowledge/gdrive-import/route.ts:41` |
| GET | `/api/knowledge` | next-route | `app/api/knowledge/route.ts:19` |
| POST | `/api/knowledge` | next-route | `app/api/knowledge/route.ts:51` |
| POST | `/api/login` | next-route | `app/api/login/route.ts:9` |
| POST | `/api/markets/{slug}/join` | next-route | `app/api/markets/[slug]/join/route.ts:17` |
| GET | `/api/markets/{slug}/proposals` | next-route | `app/api/markets/[slug]/proposals/route.ts:8` |
| GET | `/api/markets/{slug}` | next-route | `app/api/markets/[slug]/route.ts:22` |
| GET | `/api/markets` | next-route | `app/api/markets/route.ts:26` |
| GET | `/api/oauth/{provider}/callback` | next-route | `app/api/oauth/[provider]/callback/route.ts:23` |
| GET | `/api/oauth/{provider}` | next-route | `app/api/oauth/[provider]/route.ts:37` |
| GET | `/api/openapi.yaml` | next-route | `app/api/openapi.yaml/route.ts:11` |
| POST | `/api/operators/generate-prompt` | next-route | `app/api/operators/generate-prompt/route.ts:34` |
| POST | `/api/payload/sites` | next-route | `app/api/payload/sites/route.ts:12` |
| GET | `/api/payload/sites` | next-route | `app/api/payload/sites/route.ts:29` |
| GET | `/api/prompts` | next-route | `app/api/prompts/route.ts:18` |
| POST | `/api/prompts` | next-route | `app/api/prompts/route.ts:50` |
| POST | `/api/proposals/{id}/vote/build` | next-route | `app/api/proposals/[id]/vote/build/route.ts:8` |
| GET | `/api/proposals/{id}/vote` | next-route | `app/api/proposals/[id]/vote/route.ts:13` |
| POST | `/api/proposals/{id}/vote` | next-route | `app/api/proposals/[id]/vote/route.ts:42` |
| GET | `/api/upload-image/{id}` | next-route | `app/api/upload-image/[id]/route.ts:7` |
| POST | `/api/upload-image` | next-route | `app/api/upload-image/route.ts:79` |
| PATCH | `/api/v1/alliances/{id}/members/{memberId}` | next-route | `app/api/v1/alliances/[id]/members/[memberId]/route.ts:58` |
| DELETE | `/api/v1/alliances/{id}/members/{memberId}` | next-route | `app/api/v1/alliances/[id]/members/[memberId]/route.ts:113` |
| POST | `/api/v1/alliances/{id}/members` | next-route | `app/api/v1/alliances/[id]/members/route.ts:54` |
| GET | `/api/v1/alliances/{id}` | next-route | `app/api/v1/alliances/[id]/route.ts:34` |
| PATCH | `/api/v1/alliances/{id}` | next-route | `app/api/v1/alliances/[id]/route.ts:53` |
| GET | `/api/v1/alliances/handle-availability` | next-route | `app/api/v1/alliances/handle-availability/route.ts:18` |
| GET | `/api/v1/alliances` | next-route | `app/api/v1/alliances/route.ts:60` |
| POST | `/api/v1/alliances` | next-route | `app/api/v1/alliances/route.ts:89` |
| GET | `/api/v1/electors/{id}/balance` | next-route | `app/api/v1/electors/[id]/balance/route.ts:17` |
| POST | `/api/v1/electors/{id}/fund` | next-route | `app/api/v1/electors/[id]/fund/route.ts:22` |
| PATCH | `/api/v1/electors/{id}` | next-route | `app/api/v1/electors/[id]/route.ts:15` |
| DELETE | `/api/v1/electors/{id}` | next-route | `app/api/v1/electors/[id]/route.ts:109` |
| POST | `/api/v1/electors/{id}/withdraw` | next-route | `app/api/v1/electors/[id]/withdraw/route.ts:25` |
| POST | `/api/v1/faucet` | next-route | `app/api/v1/faucet/route.ts:27` |
| GET | `/api/v1/glossary` | next-route | `app/api/v1/glossary/route.ts:12` |
| GET | `/api/v1/launchpad/{slug}` | next-route | `app/api/v1/launchpad/[slug]/route.ts:5` |
| GET | `/api/v1/launchpad` | next-route | `app/api/v1/launchpad/route.ts:16` |
| GET | `/api/v1/market-drafts` | next-route | `app/api/v1/market-drafts/route.ts:16` |
| PUT | `/api/v1/market-drafts` | next-route | `app/api/v1/market-drafts/route.ts:33` |
| DELETE | `/api/v1/market-drafts` | next-route | `app/api/v1/market-drafts/route.ts:48` |
| GET | `/api/v1/markets/{slug}/contributions` | next-route | `app/api/v1/markets/[slug]/contributions/route.ts:5` |
| GET | `/api/v1/markets/{slug}/dao-config` | next-route | `app/api/v1/markets/[slug]/dao-config/route.ts:22` |
| POST | `/api/v1/markets/{slug}/ico/approve/build` | next-route | `app/api/v1/markets/[slug]/ico/approve/build/route.ts:13` |
| POST | `/api/v1/markets/{slug}/ico/approve/submit` | next-route | `app/api/v1/markets/[slug]/ico/approve/submit/route.ts:12` |
| POST | `/api/v1/markets/{slug}/ico/claim/build` | next-route | `app/api/v1/markets/[slug]/ico/claim/build/route.ts:11` |
| POST | `/api/v1/markets/{slug}/ico/claim/submit` | next-route | `app/api/v1/markets/[slug]/ico/claim/submit/route.ts:12` |
| POST | `/api/v1/markets/{slug}/ico/close/build` | next-route | `app/api/v1/markets/[slug]/ico/close/build/route.ts:11` |
| POST | `/api/v1/markets/{slug}/ico/close/submit` | next-route | `app/api/v1/markets/[slug]/ico/close/submit/route.ts:10` |
| POST | `/api/v1/markets/{slug}/ico/extend/build` | next-route | `app/api/v1/markets/[slug]/ico/extend/build/route.ts:13` |
| POST | `/api/v1/markets/{slug}/ico/extend/submit` | next-route | `app/api/v1/markets/[slug]/ico/extend/submit/route.ts:12` |
| POST | `/api/v1/markets/{slug}/ico/fund/build` | next-route | `app/api/v1/markets/[slug]/ico/fund/build/route.ts:11` |
| POST | `/api/v1/markets/{slug}/ico/fund/submit` | next-route | `app/api/v1/markets/[slug]/ico/fund/submit/route.ts:12` |
| POST | `/api/v1/markets/{slug}/ico/initialize/build` | next-route | `app/api/v1/markets/[slug]/ico/initialize/build/route.ts:15` |
| POST | `/api/v1/markets/{slug}/ico/initialize/submit` | next-route | `app/api/v1/markets/[slug]/ico/initialize/submit/route.ts:12` |
| POST | `/api/v1/markets/{slug}/ico/refund/build` | next-route | `app/api/v1/markets/[slug]/ico/refund/build/route.ts:13` |
| POST | `/api/v1/markets/{slug}/ico/refund/submit` | next-route | `app/api/v1/markets/[slug]/ico/refund/submit/route.ts:10` |
| POST | `/api/v1/markets/{slug}/ico/settle/build` | next-route | `app/api/v1/markets/[slug]/ico/settle/build/route.ts:16` |
| POST | `/api/v1/markets/{slug}/ico/settle/submit` | next-route | `app/api/v1/markets/[slug]/ico/settle/submit/route.ts:18` |
| POST | `/api/v1/markets/{slug}/ico/start/build` | next-route | `app/api/v1/markets/[slug]/ico/start/build/route.ts:13` |
| POST | `/api/v1/markets/{slug}/ico/start/submit` | next-route | `app/api/v1/markets/[slug]/ico/start/submit/route.ts:12` |
| POST | `/api/v1/markets/{slug}/join` | next-route | `app/api/v1/markets/[slug]/join/route.ts:19` |
| POST | `/api/v1/markets/{slug}/launch/build` | next-route | `app/api/v1/markets/[slug]/launch/build/route.ts:35` |
| POST | `/api/v1/markets/{slug}/launch` | next-route | `app/api/v1/markets/[slug]/launch/route.ts:25` |
| POST | `/api/v1/markets/{slug}/launch/submit` | next-route | `app/api/v1/markets/[slug]/launch/submit/route.ts:32` |
| GET | `/api/v1/markets/{slug}/launch-status` | next-route | `app/api/v1/markets/[slug]/launch-status/route.ts:24` |
| POST | `/api/v1/markets/{slug}/members/{wallet}/remove` | next-route | `app/api/v1/markets/[slug]/members/[wallet]/remove/route.ts:22` |
| GET | `/api/v1/markets/{slug}/membership` | next-route | `app/api/v1/markets/[slug]/membership/route.ts:29` |
| DELETE | `/api/v1/markets/{slug}/membership` | next-route | `app/api/v1/markets/[slug]/membership/route.ts:76` |
| POST | `/api/v1/markets/{slug}/objectives/{objectiveId}/elector` | next-route | `app/api/v1/markets/[slug]/objectives/[objectiveId]/elector/route.ts:27` |
| GET | `/api/v1/markets/{slug}/objectives` | next-route | `app/api/v1/markets/[slug]/objectives/route.ts:26` |
| POST | `/api/v1/markets/{slug}/objectives` | next-route | `app/api/v1/markets/[slug]/objectives/route.ts:90` |
| GET | `/api/v1/markets/{slug}/operators` | next-route | `app/api/v1/markets/[slug]/operators/route.ts:34` |
| POST | `/api/v1/markets/{slug}/operators` | next-route | `app/api/v1/markets/[slug]/operators/route.ts:76` |
| POST | `/api/v1/markets/{slug}/proposals/liquidity` | next-route | `app/api/v1/markets/[slug]/proposals/liquidity/route.ts:20` |
| POST | `/api/v1/markets/{slug}/proposals/metadata` | next-route | `app/api/v1/markets/[slug]/proposals/metadata/route.ts:14` |
| POST | `/api/v1/markets/{slug}/proposals/mint` | next-route | `app/api/v1/markets/[slug]/proposals/mint/route.ts:15` |
| POST | `/api/v1/markets/{slug}/proposals/param/build-instruction` | next-route | `app/api/v1/markets/[slug]/proposals/param/build-instruction/route.ts:41` |
| POST | `/api/v1/markets/{slug}/proposals/param` | next-route | `app/api/v1/markets/[slug]/proposals/param/route.ts:14` |
| POST | `/api/v1/markets/{slug}/proposals/perf` | next-route | `app/api/v1/markets/[slug]/proposals/perf/route.ts:15` |
| GET | `/api/v1/markets/{slug}/proposals` | next-route | `app/api/v1/markets/[slug]/proposals/route.ts:11` |
| POST | `/api/v1/markets/{slug}/proposals/spend` | next-route | `app/api/v1/markets/[slug]/proposals/spend/route.ts:17` |
| GET | `/api/v1/markets/{slug}` | next-route | `app/api/v1/markets/[slug]/route.ts:29` |
| PATCH | `/api/v1/markets/{slug}` | next-route | `app/api/v1/markets/[slug]/route.ts:209` |
| DELETE | `/api/v1/markets/{slug}` | next-route | `app/api/v1/markets/[slug]/route.ts:268` |
| GET | `/api/v1/markets/{slug}/settings/dimensions` | next-route | `app/api/v1/markets/[slug]/settings/dimensions/route.ts:16` |
| GET | `/api/v1/markets/{slug}/settings/identity` | next-route | `app/api/v1/markets/[slug]/settings/identity/route.ts:19` |
| PATCH | `/api/v1/markets/{slug}/settings/identity` | next-route | `app/api/v1/markets/[slug]/settings/identity/route.ts:43` |
| GET | `/api/v1/markets/{slug}/settings/mechanism` | next-route | `app/api/v1/markets/[slug]/settings/mechanism/route.ts:46` |
| PATCH | `/api/v1/markets/{slug}/settings/mechanism` | next-route | `app/api/v1/markets/[slug]/settings/mechanism/route.ts:85` |
| GET | `/api/v1/markets/{slug}/tokens` | next-route | `app/api/v1/markets/[slug]/tokens/route.ts:13` |
| GET | `/api/v1/markets/{slug}/treasury/movements` | next-route | `app/api/v1/markets/[slug]/treasury/movements/route.ts:28` |
| POST | `/api/v1/markets/{slug}/treasury/quick-send/build` | next-route | `app/api/v1/markets/[slug]/treasury/quick-send/build/route.ts:28` |
| POST | `/api/v1/markets/{slug}/treasury/quick-send/submit` | next-route | `app/api/v1/markets/[slug]/treasury/quick-send/submit/route.ts:27` |
| GET | `/api/v1/markets/{slug}/treasury` | next-route | `app/api/v1/markets/[slug]/treasury/route.ts:16` |
| GET | `/api/v1/markets` | next-route | `app/api/v1/markets/route.ts:42` |
| POST | `/api/v1/markets` | next-route | `app/api/v1/markets/route.ts:210` |
| GET | `/api/v1/me/markets` | next-route | `app/api/v1/me/markets/route.ts:21` |
| GET | `/api/v1/mint-info` | next-route | `app/api/v1/mint-info/route.ts:44` |
| GET | `/api/v1/objective-templates` | next-route | `app/api/v1/objective-templates/route.ts:16` |
| GET | `/api/v1/objectives/{id}` | next-route | `app/api/v1/objectives/[id]/route.ts:15` |
| PATCH | `/api/v1/objectives/{id}` | next-route | `app/api/v1/objectives/[id]/route.ts:50` |
| DELETE | `/api/v1/objectives/{id}` | next-route | `app/api/v1/objectives/[id]/route.ts:161` |
| GET | `/api/v1/objectives` | next-route | `app/api/v1/objectives/route.ts:32` |
| POST | `/api/v1/objectives` | next-route | `app/api/v1/objectives/route.ts:157` |
| DELETE | `/api/v1/operators/{id}` | next-route | `app/api/v1/operators/[id]/route.ts:16` |
| GET | `/api/v1/operators/{id}/runs` | next-route | `app/api/v1/operators/[id]/runs/route.ts:25` |
| POST | `/api/v1/proposals/{id}/advance` | next-route | `app/api/v1/proposals/[id]/advance/route.ts:119` |
| POST | `/api/v1/proposals/{id}/cancel` | next-route | `app/api/v1/proposals/[id]/cancel/route.ts:21` |
| POST | `/api/v1/proposals/{id}/intents/{electorId}/override` | next-route | `app/api/v1/proposals/[id]/intents/[electorId]/override/route.ts:23` |
| DELETE | `/api/v1/proposals/{id}/intents/{electorId}` | next-route | `app/api/v1/proposals/[id]/intents/[electorId]/route.ts:15` |
| PATCH | `/api/v1/proposals/{id}/launch-context` | next-route | `app/api/v1/proposals/[id]/launch-context/route.ts:12` |
| GET | `/api/v1/proposals/{id}/my-intent` | next-route | `app/api/v1/proposals/[id]/my-intent/route.ts:27` |
| PATCH | `/api/v1/proposals/{id}/onchain` | next-route | `app/api/v1/proposals/[id]/onchain/route.ts:25` |
| GET | `/api/v1/proposals/{id}/resume` | next-route | `app/api/v1/proposals/[id]/resume/route.ts:12` |
| POST | `/api/v1/proposals/{id}/vote/build` | next-route | `app/api/v1/proposals/[id]/vote/build/route.ts:20` |
| POST | `/api/v1/proposals/{id}/vote` | next-route | `app/api/v1/proposals/[id]/vote/route.ts:16` |
| GET | `/api/v1/proposals/{id}/vote` | next-route | `app/api/v1/proposals/[id]/vote/route.ts:136` |
| POST | `/api/wb` | next-route | `app/api/wb/route.ts:54` |

## kinship-shared · dev (147)

| Method | Declared path | Router | Source |
|---|---|---|---|
| GET | `/api/agent-service/{path...}` | next-route | `app/api/agent-service/[...path]/route.ts:101` |
| POST | `/api/agent-service/{path...}` | next-route | `app/api/agent-service/[...path]/route.ts:109` |
| PATCH | `/api/agent-service/{path...}` | next-route | `app/api/agent-service/[...path]/route.ts:117` |
| PUT | `/api/agent-service/{path...}` | next-route | `app/api/agent-service/[...path]/route.ts:125` |
| DELETE | `/api/agent-service/{path...}` | next-route | `app/api/agent-service/[...path]/route.ts:133` |
| GET | `/api/agent-tools/debug` | next-route | `app/api/agent-tools/debug/route.ts:9` |
| POST | `/api/agent-tools/refresh` | next-route | `app/api/agent-tools/refresh/route.ts:5` |
| GET | `/api/agent-tools/refresh` | next-route | `app/api/agent-tools/refresh/route.ts:73` |
| GET | `/api/agent-tools` | next-route | `app/api/agent-tools/route.ts:26` |
| POST | `/api/agent-tools` | next-route | `app/api/agent-tools/route.ts:113` |
| GET | `/api/agents/{id}` | next-route | `app/api/agents/[id]/route.ts:7` |
| PUT | `/api/agents/{id}` | next-route | `app/api/agents/[id]/route.ts:46` |
| DELETE | `/api/agents/{id}` | next-route | `app/api/agents/[id]/route.ts:83` |
| POST | `/api/agents/{id}/set-ally` | next-route | `app/api/agents/[id]/set-ally/route.ts:7` |
| POST | `/api/agents/{id}/unset-ally` | next-route | `app/api/agents/[id]/unset-ally/route.ts:7` |
| GET | `/api/agents/ally` | next-route | `app/api/agents/ally/route.ts:7` |
| GET | `/api/agents/check-presence` | next-route | `app/api/agents/check-presence/route.ts:8` |
| GET | `/api/agents` | next-route | `app/api/agents/route.ts:7` |
| POST | `/api/agents` | next-route | `app/api/agents/route.ts:42` |
| POST | `/api/chatmessages/stream` | next-route | `app/api/chatmessages/stream/route.ts:11` |
| GET | `/api/cron/check-ico-deadlines` | next-route | `app/api/cron/check-ico-deadlines/route.ts:24` |
| GET | `/api/knowledge/{id}` | next-route | `app/api/knowledge/[id]/route.ts:6` |
| PUT | `/api/knowledge/{id}` | next-route | `app/api/knowledge/[id]/route.ts:31` |
| POST | `/api/knowledge/gdrive-import` | next-route | `app/api/knowledge/gdrive-import/route.ts:41` |
| GET | `/api/knowledge` | next-route | `app/api/knowledge/route.ts:19` |
| POST | `/api/knowledge` | next-route | `app/api/knowledge/route.ts:51` |
| POST | `/api/login` | next-route | `app/api/login/route.ts:9` |
| POST | `/api/markets/{slug}/join` | next-route | `app/api/markets/[slug]/join/route.ts:17` |
| GET | `/api/markets/{slug}/proposals` | next-route | `app/api/markets/[slug]/proposals/route.ts:8` |
| GET | `/api/markets/{slug}` | next-route | `app/api/markets/[slug]/route.ts:22` |
| GET | `/api/markets` | next-route | `app/api/markets/route.ts:26` |
| GET | `/api/oauth/{provider}/callback` | next-route | `app/api/oauth/[provider]/callback/route.ts:23` |
| GET | `/api/oauth/{provider}` | next-route | `app/api/oauth/[provider]/route.ts:37` |
| GET | `/api/openapi.yaml` | next-route | `app/api/openapi.yaml/route.ts:11` |
| POST | `/api/operators/generate-prompt` | next-route | `app/api/operators/generate-prompt/route.ts:34` |
| POST | `/api/payload/sites` | next-route | `app/api/payload/sites/route.ts:12` |
| GET | `/api/payload/sites` | next-route | `app/api/payload/sites/route.ts:29` |
| GET | `/api/prompts` | next-route | `app/api/prompts/route.ts:18` |
| POST | `/api/prompts` | next-route | `app/api/prompts/route.ts:50` |
| POST | `/api/proposals/{id}/vote/build` | next-route | `app/api/proposals/[id]/vote/build/route.ts:8` |
| GET | `/api/proposals/{id}/vote` | next-route | `app/api/proposals/[id]/vote/route.ts:13` |
| POST | `/api/proposals/{id}/vote` | next-route | `app/api/proposals/[id]/vote/route.ts:42` |
| GET | `/api/upload-image/{id}` | next-route | `app/api/upload-image/[id]/route.ts:7` |
| POST | `/api/upload-image` | next-route | `app/api/upload-image/route.ts:79` |
| PATCH | `/api/v1/alliances/{id}/members/{memberId}` | next-route | `app/api/v1/alliances/[id]/members/[memberId]/route.ts:58` |
| DELETE | `/api/v1/alliances/{id}/members/{memberId}` | next-route | `app/api/v1/alliances/[id]/members/[memberId]/route.ts:113` |
| POST | `/api/v1/alliances/{id}/members` | next-route | `app/api/v1/alliances/[id]/members/route.ts:54` |
| GET | `/api/v1/alliances/{id}` | next-route | `app/api/v1/alliances/[id]/route.ts:34` |
| PATCH | `/api/v1/alliances/{id}` | next-route | `app/api/v1/alliances/[id]/route.ts:53` |
| GET | `/api/v1/alliances/handle-availability` | next-route | `app/api/v1/alliances/handle-availability/route.ts:18` |
| GET | `/api/v1/alliances` | next-route | `app/api/v1/alliances/route.ts:60` |
| POST | `/api/v1/alliances` | next-route | `app/api/v1/alliances/route.ts:89` |
| GET | `/api/v1/dunas/genesis` | next-route | `app/api/v1/dunas/genesis/route.ts:13` |
| GET | `/api/v1/dunas` | next-route | `app/api/v1/dunas/route.ts:28` |
| POST | `/api/v1/dunas` | next-route | `app/api/v1/dunas/route.ts:84` |
| GET | `/api/v1/electors/{id}/balance` | next-route | `app/api/v1/electors/[id]/balance/route.ts:17` |
| POST | `/api/v1/electors/{id}/fund` | next-route | `app/api/v1/electors/[id]/fund/route.ts:22` |
| PATCH | `/api/v1/electors/{id}` | next-route | `app/api/v1/electors/[id]/route.ts:15` |
| DELETE | `/api/v1/electors/{id}` | next-route | `app/api/v1/electors/[id]/route.ts:109` |
| POST | `/api/v1/electors/{id}/withdraw` | next-route | `app/api/v1/electors/[id]/withdraw/route.ts:25` |
| POST | `/api/v1/faucet` | next-route | `app/api/v1/faucet/route.ts:27` |
| GET | `/api/v1/glossary` | next-route | `app/api/v1/glossary/route.ts:12` |
| GET | `/api/v1/launchpad/{slug}` | next-route | `app/api/v1/launchpad/[slug]/route.ts:5` |
| GET | `/api/v1/launchpad` | next-route | `app/api/v1/launchpad/route.ts:16` |
| GET | `/api/v1/market-drafts` | next-route | `app/api/v1/market-drafts/route.ts:16` |
| PUT | `/api/v1/market-drafts` | next-route | `app/api/v1/market-drafts/route.ts:33` |
| DELETE | `/api/v1/market-drafts` | next-route | `app/api/v1/market-drafts/route.ts:48` |
| GET | `/api/v1/markets/{slug}/contributions` | next-route | `app/api/v1/markets/[slug]/contributions/route.ts:5` |
| GET | `/api/v1/markets/{slug}/dao-config` | next-route | `app/api/v1/markets/[slug]/dao-config/route.ts:22` |
| POST | `/api/v1/markets/{slug}/ico/approve/build` | next-route | `app/api/v1/markets/[slug]/ico/approve/build/route.ts:13` |
| POST | `/api/v1/markets/{slug}/ico/approve/submit` | next-route | `app/api/v1/markets/[slug]/ico/approve/submit/route.ts:12` |
| POST | `/api/v1/markets/{slug}/ico/claim/build` | next-route | `app/api/v1/markets/[slug]/ico/claim/build/route.ts:11` |
| POST | `/api/v1/markets/{slug}/ico/claim/submit` | next-route | `app/api/v1/markets/[slug]/ico/claim/submit/route.ts:12` |
| POST | `/api/v1/markets/{slug}/ico/close/build` | next-route | `app/api/v1/markets/[slug]/ico/close/build/route.ts:11` |
| POST | `/api/v1/markets/{slug}/ico/close/submit` | next-route | `app/api/v1/markets/[slug]/ico/close/submit/route.ts:10` |
| POST | `/api/v1/markets/{slug}/ico/extend/build` | next-route | `app/api/v1/markets/[slug]/ico/extend/build/route.ts:13` |
| POST | `/api/v1/markets/{slug}/ico/extend/submit` | next-route | `app/api/v1/markets/[slug]/ico/extend/submit/route.ts:12` |
| POST | `/api/v1/markets/{slug}/ico/fund/build` | next-route | `app/api/v1/markets/[slug]/ico/fund/build/route.ts:11` |
| POST | `/api/v1/markets/{slug}/ico/fund/submit` | next-route | `app/api/v1/markets/[slug]/ico/fund/submit/route.ts:12` |
| POST | `/api/v1/markets/{slug}/ico/initialize/build` | next-route | `app/api/v1/markets/[slug]/ico/initialize/build/route.ts:15` |
| POST | `/api/v1/markets/{slug}/ico/initialize/submit` | next-route | `app/api/v1/markets/[slug]/ico/initialize/submit/route.ts:12` |
| POST | `/api/v1/markets/{slug}/ico/refund/build` | next-route | `app/api/v1/markets/[slug]/ico/refund/build/route.ts:13` |
| POST | `/api/v1/markets/{slug}/ico/refund/submit` | next-route | `app/api/v1/markets/[slug]/ico/refund/submit/route.ts:10` |
| POST | `/api/v1/markets/{slug}/ico/settle/build` | next-route | `app/api/v1/markets/[slug]/ico/settle/build/route.ts:16` |
| POST | `/api/v1/markets/{slug}/ico/settle/submit` | next-route | `app/api/v1/markets/[slug]/ico/settle/submit/route.ts:18` |
| POST | `/api/v1/markets/{slug}/ico/start/build` | next-route | `app/api/v1/markets/[slug]/ico/start/build/route.ts:13` |
| POST | `/api/v1/markets/{slug}/ico/start/submit` | next-route | `app/api/v1/markets/[slug]/ico/start/submit/route.ts:12` |
| POST | `/api/v1/markets/{slug}/join` | next-route | `app/api/v1/markets/[slug]/join/route.ts:19` |
| POST | `/api/v1/markets/{slug}/launch/build` | next-route | `app/api/v1/markets/[slug]/launch/build/route.ts:35` |
| POST | `/api/v1/markets/{slug}/launch` | next-route | `app/api/v1/markets/[slug]/launch/route.ts:25` |
| POST | `/api/v1/markets/{slug}/launch/submit` | next-route | `app/api/v1/markets/[slug]/launch/submit/route.ts:32` |
| GET | `/api/v1/markets/{slug}/launch-status` | next-route | `app/api/v1/markets/[slug]/launch-status/route.ts:24` |
| POST | `/api/v1/markets/{slug}/members/{wallet}/remove` | next-route | `app/api/v1/markets/[slug]/members/[wallet]/remove/route.ts:22` |
| GET | `/api/v1/markets/{slug}/membership` | next-route | `app/api/v1/markets/[slug]/membership/route.ts:29` |
| DELETE | `/api/v1/markets/{slug}/membership` | next-route | `app/api/v1/markets/[slug]/membership/route.ts:76` |
| POST | `/api/v1/markets/{slug}/objectives/{objectiveId}/elector` | next-route | `app/api/v1/markets/[slug]/objectives/[objectiveId]/elector/route.ts:27` |
| GET | `/api/v1/markets/{slug}/objectives` | next-route | `app/api/v1/markets/[slug]/objectives/route.ts:26` |
| POST | `/api/v1/markets/{slug}/objectives` | next-route | `app/api/v1/markets/[slug]/objectives/route.ts:90` |
| GET | `/api/v1/markets/{slug}/operators` | next-route | `app/api/v1/markets/[slug]/operators/route.ts:34` |
| POST | `/api/v1/markets/{slug}/operators` | next-route | `app/api/v1/markets/[slug]/operators/route.ts:76` |
| POST | `/api/v1/markets/{slug}/proposals/liquidity` | next-route | `app/api/v1/markets/[slug]/proposals/liquidity/route.ts:20` |
| POST | `/api/v1/markets/{slug}/proposals/metadata` | next-route | `app/api/v1/markets/[slug]/proposals/metadata/route.ts:14` |
| POST | `/api/v1/markets/{slug}/proposals/mint` | next-route | `app/api/v1/markets/[slug]/proposals/mint/route.ts:15` |
| POST | `/api/v1/markets/{slug}/proposals/param/build-instruction` | next-route | `app/api/v1/markets/[slug]/proposals/param/build-instruction/route.ts:41` |
| POST | `/api/v1/markets/{slug}/proposals/param` | next-route | `app/api/v1/markets/[slug]/proposals/param/route.ts:14` |
| POST | `/api/v1/markets/{slug}/proposals/perf` | next-route | `app/api/v1/markets/[slug]/proposals/perf/route.ts:15` |
| GET | `/api/v1/markets/{slug}/proposals` | next-route | `app/api/v1/markets/[slug]/proposals/route.ts:11` |
| POST | `/api/v1/markets/{slug}/proposals/spend` | next-route | `app/api/v1/markets/[slug]/proposals/spend/route.ts:17` |
| GET | `/api/v1/markets/{slug}` | next-route | `app/api/v1/markets/[slug]/route.ts:29` |
| PATCH | `/api/v1/markets/{slug}` | next-route | `app/api/v1/markets/[slug]/route.ts:209` |
| DELETE | `/api/v1/markets/{slug}` | next-route | `app/api/v1/markets/[slug]/route.ts:268` |
| GET | `/api/v1/markets/{slug}/settings/dimensions` | next-route | `app/api/v1/markets/[slug]/settings/dimensions/route.ts:16` |
| GET | `/api/v1/markets/{slug}/settings/identity` | next-route | `app/api/v1/markets/[slug]/settings/identity/route.ts:19` |
| PATCH | `/api/v1/markets/{slug}/settings/identity` | next-route | `app/api/v1/markets/[slug]/settings/identity/route.ts:43` |
| GET | `/api/v1/markets/{slug}/settings/mechanism` | next-route | `app/api/v1/markets/[slug]/settings/mechanism/route.ts:46` |
| PATCH | `/api/v1/markets/{slug}/settings/mechanism` | next-route | `app/api/v1/markets/[slug]/settings/mechanism/route.ts:85` |
| GET | `/api/v1/markets/{slug}/tokens` | next-route | `app/api/v1/markets/[slug]/tokens/route.ts:13` |
| GET | `/api/v1/markets/{slug}/treasury/movements` | next-route | `app/api/v1/markets/[slug]/treasury/movements/route.ts:28` |
| POST | `/api/v1/markets/{slug}/treasury/quick-send/build` | next-route | `app/api/v1/markets/[slug]/treasury/quick-send/build/route.ts:28` |
| POST | `/api/v1/markets/{slug}/treasury/quick-send/submit` | next-route | `app/api/v1/markets/[slug]/treasury/quick-send/submit/route.ts:27` |
| GET | `/api/v1/markets/{slug}/treasury` | next-route | `app/api/v1/markets/[slug]/treasury/route.ts:16` |
| GET | `/api/v1/markets` | next-route | `app/api/v1/markets/route.ts:42` |
| POST | `/api/v1/markets` | next-route | `app/api/v1/markets/route.ts:210` |
| GET | `/api/v1/me/markets` | next-route | `app/api/v1/me/markets/route.ts:21` |
| GET | `/api/v1/me/redemptions` | next-route | `app/api/v1/me/redemptions/route.ts:10` |
| GET | `/api/v1/mint-info` | next-route | `app/api/v1/mint-info/route.ts:44` |
| GET | `/api/v1/objective-templates` | next-route | `app/api/v1/objective-templates/route.ts:16` |
| GET | `/api/v1/objectives/{id}` | next-route | `app/api/v1/objectives/[id]/route.ts:15` |
| PATCH | `/api/v1/objectives/{id}` | next-route | `app/api/v1/objectives/[id]/route.ts:50` |
| DELETE | `/api/v1/objectives/{id}` | next-route | `app/api/v1/objectives/[id]/route.ts:161` |
| GET | `/api/v1/objectives` | next-route | `app/api/v1/objectives/route.ts:32` |
| POST | `/api/v1/objectives` | next-route | `app/api/v1/objectives/route.ts:157` |
| DELETE | `/api/v1/operators/{id}` | next-route | `app/api/v1/operators/[id]/route.ts:16` |
| GET | `/api/v1/operators/{id}/runs` | next-route | `app/api/v1/operators/[id]/runs/route.ts:25` |
| POST | `/api/v1/proposals/{id}/advance` | next-route | `app/api/v1/proposals/[id]/advance/route.ts:123` |
| POST | `/api/v1/proposals/{id}/cancel` | next-route | `app/api/v1/proposals/[id]/cancel/route.ts:22` |
| POST | `/api/v1/proposals/{id}/intents/{electorId}/override` | next-route | `app/api/v1/proposals/[id]/intents/[electorId]/override/route.ts:23` |
| DELETE | `/api/v1/proposals/{id}/intents/{electorId}` | next-route | `app/api/v1/proposals/[id]/intents/[electorId]/route.ts:15` |
| PATCH | `/api/v1/proposals/{id}/launch-context` | next-route | `app/api/v1/proposals/[id]/launch-context/route.ts:12` |
| GET | `/api/v1/proposals/{id}/my-intent` | next-route | `app/api/v1/proposals/[id]/my-intent/route.ts:27` |
| PATCH | `/api/v1/proposals/{id}/onchain` | next-route | `app/api/v1/proposals/[id]/onchain/route.ts:25` |
| POST | `/api/v1/proposals/{id}/redeem` | next-route | `app/api/v1/proposals/[id]/redeem/route.ts:13` |
| GET | `/api/v1/proposals/{id}/resume` | next-route | `app/api/v1/proposals/[id]/resume/route.ts:12` |
| POST | `/api/v1/proposals/{id}/vote/build` | next-route | `app/api/v1/proposals/[id]/vote/build/route.ts:21` |
| POST | `/api/v1/proposals/{id}/vote` | next-route | `app/api/v1/proposals/[id]/vote/route.ts:17` |
| GET | `/api/v1/proposals/{id}/vote` | next-route | `app/api/v1/proposals/[id]/vote/route.ts:137` |
| POST | `/api/wb` | next-route | `app/api/wb/route.ts:54` |

## kinship-agent-be · main (173)

| Method | Declared path | Router | Source |
|---|---|---|---|
| GET | `/` | router | `app/api/agents.py:70` |
| GET | `/public` | router | `app/api/agents.py:147` |
| GET | `/accessible` | router | `app/api/agents.py:232` |
| GET | `/empower` | router | `app/api/agents.py:446` |
| GET | `/handle-availability` | router | `app/api/agents.py:514` |
| GET | `/ally` | router | `app/api/agents.py:580` |
| GET | `/unassigned/workers` | router | `app/api/agents.py:611` |
| GET | `/{agent_id}` | router | `app/api/agents.py:653` |
| POST | `/presence` | router | `app/api/agents.py:676` |
| POST | `/worker` | router | `app/api/agents.py:781` |
| PATCH | `/{agent_id}` | router | `app/api/agents.py:843` |
| DELETE | `/{agent_id}` | router | `app/api/agents.py:978` |
| GET | `/{presence_id}/workers` | router | `app/api/agents.py:1191` |
| POST | `/{agent_id}/publish` | router | `app/api/agents.py:1253` |
| POST | `/{agent_id}/unpublish` | router | `app/api/agents.py:1268` |
| POST | `/{agent_id}/archive` | router | `app/api/agents.py:1283` |
| POST | `/{agent_id}/set-primary-member` | router | `app/api/agents.py:1298` |
| POST | `/{agent_id}/unset-primary-member` | router | `app/api/agents.py:1325` |
| POST | `/{agent_id}/set-ally` | router | `app/api/agents.py:1345` |
| POST | `/{agent_id}/unset-ally` | router | `app/api/agents.py:1405` |
| POST | `/members/{agent_id}/hide` | router | `app/api/agents.py:1432` |
| POST | `/members/{agent_id}/unhide` | router | `app/api/agents.py:1464` |
| GET | `/members/hidden` | router | `app/api/agents.py:1486` |
| POST | `/members/{agent_id}/connect` | router | `app/api/agents.py:1504` |
| POST | `/members/{agent_id}/disconnect` | router | `app/api/agents.py:1536` |
| GET | `/members/connections` | router | `app/api/agents.py:1558` |
| GET | `/members/connections/details` | router | `app/api/agents.py:1571` |
| POST | `/{agent_id}/generate` | router | `app/api/agents.py:1661` |
| POST | `/predefined/bluesky` | router | `app/api/agents.py:1721` |
| GET | `/predefined/bluesky/accounts` | router | `app/api/agents.py:2020` |
| POST | `/predefined/bluesky/{presence_id}/switch-account` | router | `app/api/agents.py:2079` |
| POST | `/{agent_id}/pause` | router | `app/api/agents.py:2200` |
| POST | `/{agent_id}/resume` | router | `app/api/agents.py:2241` |
| POST | `/predefined/executive-avatar` | router | `app/api/agents.py:2301` |
| GET | `/predefined/executive-avatar/accounts` | router | `app/api/agents.py:2470` |
| GET | `/prefill/executive-avatar` | router | `app/api/agents.py:2555` |
| POST | `/members/{agent_id}/tool-mapping` | router | `app/api/agents.py:2694` |
| GET | `/members/{agent_id}/tool-mapping` | router | `app/api/agents.py:2766` |
| DELETE | `/members/{agent_id}/tool-mapping/{mapping_id}` | router | `app/api/agents.py:2797` |
| GET | `/` | router | `app/api/approvals.py:72` |
| GET | `/stats` | router | `app/api/approvals.py:129` |
| GET | `/{approval_id}` | router | `app/api/approvals.py:191` |
| PATCH | `/{approval_id}/approve` | router | `app/api/approvals.py:209` |
| PATCH | `/{approval_id}/reject` | router | `app/api/approvals.py:250` |
| POST | `/sessions` | router | `app/api/chat.py:58` |
| GET | `/sessions` | router | `app/api/chat.py:105` |
| GET | `/sessions/{session_id}` | router | `app/api/chat.py:138` |
| DELETE | `/sessions/{session_id}` | router | `app/api/chat.py:156` |
| GET | `/messages` | router | `app/api/chat.py:184` |
| POST | `/messages` | router | `app/api/chat.py:209` |
| POST | `/messages/stream` | router | `app/api/chat.py:369` |
| POST | `/presence/{presence_id}/process` | router | `app/api/chat.py:477` |
| POST | `/presence/{presence_id}/stream` | router | `app/api/chat.py:547` |
| POST | `/messages/stream/v2` | router | `app/api/chat.py:630` |
| GET | `/providers` | router | `app/api/chat.py:762` |
| POST | `/stream` | router | `app/api/chatmessages.py:96` |
| POST | `/` | router | `app/api/chatmessages.py:310` |
| GET | `/status` | router | `app/api/chatmessages.py:427` |
| POST | `/` | router | `app/api/codes.py:56` |
| GET | `/` | router | `app/api/codes.py:167` |
| GET | `/accessible` | router | `app/api/codes.py:220` |
| GET | `/permitted-contexts` | router | `app/api/codes.py:430` |
| GET | `/accessible-contexts` | router | `app/api/codes.py:573` |
| GET | `/{code_id}` | router | `app/api/codes.py:696` |
| PATCH | `/{code_id}` | router | `app/api/codes.py:708` |
| DELETE | `/{code_id}` | router | `app/api/codes.py:736` |
| PATCH | `/{code_id}/toggle` | router | `app/api/codes.py:753` |
| GET | `/validate/{code}` | router | `app/api/codes.py:775` |
| POST | `/{code_id}/redeem` | router | `app/api/codes.py:793` |
| GET | `/{code_id}/redemptions` | router | `app/api/codes.py:819` |
| DELETE | `/redemptions/{redemption_id}` | router | `app/api/codes.py:909` |
| GET | `/c/{code}/preview` | router | `app/api/codes.py:937` |
| POST | `/c/{code}/redeem` | router | `app/api/codes.py:960` |
| GET | `/context/{context_id}` | router | `app/api/codes.py:1038` |
| POST | `/{code_id}/send-invite` | router | `app/api/codes.py:1063` |
| POST | `/{code_id}/send-push-invite` | router | `app/api/codes.py:1101` |
| GET | `/membership/{context_id}/{wallet}` | router | `app/api/codes.py:1241` |
| GET | `/members/{context_id}` | router | `app/api/codes.py:1275` |
| GET | `/my-presences/{wallet}` | router | `app/api/codes.py:1303` |
| GET | `/wallet/{wallet}/gathering-games` | router | `app/api/codes.py:1332` |
| GET | `/` | context_router | `app/api/context.py:36` |
| GET | `/{context_id}` | context_router | `app/api/context.py:69` |
| GET | `/slug/{slug}` | context_router | `app/api/context.py:81` |
| GET | `/handle/{handle}` | context_router | `app/api/context.py:93` |
| GET | `/{context_id}/nested` | context_router | `app/api/context.py:105` |
| POST | `/` | context_router | `app/api/context.py:118` |
| PATCH | `/{context_id}` | context_router | `app/api/context.py:162` |
| DELETE | `/{context_id}` | context_router | `app/api/context.py:201` |
| POST | `/{context_id}/publish` | context_router | `app/api/context.py:220` |
| POST | `/{context_id}/unpublish` | context_router | `app/api/context.py:239` |
| POST | `/{context_id}/archive` | context_router | `app/api/context.py:258` |
| POST | `/{context_id}/join` | context_router | `app/api/context.py:277` |
| GET | `/` | nested_context_router | `app/api/context.py:315` |
| GET | `/{nested_context_id}` | nested_context_router | `app/api/context.py:336` |
| GET | `/handle/{handle}` | nested_context_router | `app/api/context.py:348` |
| POST | `/` | nested_context_router | `app/api/context.py:360` |
| PATCH | `/{nested_context_id}` | nested_context_router | `app/api/context.py:407` |
| DELETE | `/{nested_context_id}` | nested_context_router | `app/api/context.py:446` |
| POST | `/{nested_context_id}/publish` | nested_context_router | `app/api/context.py:465` |
| POST | `/{nested_context_id}/unpublish` | nested_context_router | `app/api/context.py:484` |
| POST | `/{nested_context_id}/archive` | nested_context_router | `app/api/context.py:503` |
| GET | `/{presence_id}/{user_wallet}` | router | `app/api/conversations.py:29` |
| GET | `/user/{user_wallet}` | router | `app/api/conversations.py:66` |
| DELETE | `/{presence_id}/{user_wallet}/messages` | router | `app/api/conversations.py:102` |
| DELETE | `/{presence_id}/{user_wallet}` | router | `app/api/conversations.py:142` |
| GET | `/health` | router | `app/api/graph.py:31` |
| POST | `/sync/agents` | router | `app/api/graph.py:50` |
| POST | `/sync/members` | router | `app/api/graph.py:75` |
| POST | `/sync/governance` | router | `app/api/graph.py:91` |
| POST | `/sync/all` | router | `app/api/graph.py:107` |
| GET | `/` | router | `app/api/knowledge.py:86` |
| GET | `/{kb_id}` | router | `app/api/knowledge.py:149` |
| POST | `/` | router | `app/api/knowledge.py:183` |
| POST | `/{kb_id}/upload` | router | `app/api/knowledge.py:224` |
| POST | `/{kb_id}/items/{item_id}/ingest` | router | `app/api/knowledge.py:439` |
| DELETE | `/{kb_id}/items/{item_id}` | router | `app/api/knowledge.py:548` |
| PATCH | `/{kb_id}` | router | `app/api/knowledge.py:600` |
| DELETE | `/{kb_id}` | router | `app/api/knowledge.py:636` |
| POST | `/{kb_id}/search` | router | `app/api/knowledge.py:671` |
| GET | `/{wallet}` | router | `app/api/notifications.py:25` |
| PUT | `/{notification_id}/read` | router | `app/api/notifications.py:70` |
| PUT | `/{wallet}/read-all` | router | `app/api/notifications.py:92` |
| GET | `/{provider}/init` | router | `app/api/oauth.py:112` |
| GET | `/{provider}/callback` | router | `app/api/oauth.py:173` |
| GET | `/{wallet}` | router | `app/api/onboarding.py:91` |
| POST | `/{wallet}` | router | `app/api/onboarding.py:111` |
| PUT | `/{wallet}` | router | `app/api/onboarding.py:153` |
| PUT | `/{wallet}/complete` | router | `app/api/onboarding.py:183` |
| DELETE | `/{wallet}` | router | `app/api/onboarding.py:206` |
| POST | `/validate-goal` | router | `app/api/prompts.py:137` |
| POST | `/generate` | router | `app/api/prompts.py:155` |
| GET | `/` | router | `app/api/prompts.py:213` |
| GET | `/{prompt_id}` | router | `app/api/prompts.py:262` |
| POST | `/` | router | `app/api/prompts.py:285` |
| PATCH | `/{prompt_id}` | router | `app/api/prompts.py:329` |
| PUT | `/{prompt_id}` | router | `app/api/prompts.py:365` |
| DELETE | `/{prompt_id}` | router | `app/api/prompts.py:382` |
| GET | `/` | router | `app/api/roles.py:25` |
| GET | `/{role_id}` | router | `app/api/roles.py:44` |
| POST | `/` | router | `app/api/roles.py:56` |
| PATCH | `/{role_id}` | router | `app/api/roles.py:83` |
| DELETE | `/{role_id}` | router | `app/api/roles.py:108` |
| GET | `/context/{context_id}` | router | `app/api/roles.py:125` |
| POST | `/generate-content` | router | `app/api/skills.py:130` |
| POST | `/parse-schedule` | router | `app/api/skills.py:199` |
| GET | `/` | router | `app/api/skills.py:220` |
| POST | `/` | router | `app/api/skills.py:278` |
| PATCH | `/{skill_id}` | router | `app/api/skills.py:386` |
| PATCH | `/{skill_id}/status` | router | `app/api/skills.py:475` |
| DELETE | `/{skill_id}` | router | `app/api/skills.py:534` |
| POST | `/{skill_id}/run` | router | `app/api/skills.py:603` |
| GET | `/{skill_id}/running` | router | `app/api/skills.py:669` |
| GET | `/running-all` | router | `app/api/skills.py:681` |
| GET | `/executions/{exec_id}/trace` | router | `app/api/skills.py:692` |
| POST | `/executions/{exec_id}/cancel` | router | `app/api/skills.py:702` |
| GET | `/{skill_id}/stats` | router | `app/api/skills.py:720` |
| GET | `/{skill_id}/history` | router | `app/api/skills.py:804` |
| GET | `/debug/scheduler` | router | `app/api/skills.py:872` |
| POST | `/verify` | router | `app/api/tools.py:65` |
| GET | `/available` | router | `app/api/tools.py:299` |
| GET | `/mcp/status` | router | `app/api/tools.py:388` |
| GET | `/mcp/{tool_name}/tools` | router | `app/api/tools.py:418` |
| POST | `/mcp/{tool_name}/test` | router | `app/api/tools.py:458` |
| POST | `/save` | router | `app/api/tools.py:509` |
| GET | `/saved` | router | `app/api/tools.py:636` |
| GET | `/saved/by-wallet` | router | `app/api/tools.py:671` |
| DELETE | `/saved/{identifier}` | router | `app/api/tools.py:732` |
| GET | `/health` | router | `app/api/voice.py:58` |
| GET | `/capabilities` | router | `app/api/voice.py:73` |
| WEBSOCKET | `/session` | router | `app/api/voice.py:113` |
| GET | `/sessions/active` | router | `app/api/voice.py:434` |
| GET | `/health` | app | `app/main.py:301` |
| GET | `/` | app | `app/main.py:317` |

## kinship-agent-be · dev (178)

| Method | Declared path | Router | Source |
|---|---|---|---|
| GET | `/` | router | `app/api/agents.py:71` |
| GET | `/public` | router | `app/api/agents.py:147` |
| GET | `/accessible` | router | `app/api/agents.py:232` |
| GET | `/empower` | router | `app/api/agents.py:446` |
| GET | `/handle-availability` | router | `app/api/agents.py:514` |
| GET | `/ally` | router | `app/api/agents.py:580` |
| GET | `/unassigned/workers` | router | `app/api/agents.py:611` |
| GET | `/{agent_id}` | router | `app/api/agents.py:653` |
| POST | `/presence` | router | `app/api/agents.py:676` |
| POST | `/worker` | router | `app/api/agents.py:822` |
| PATCH | `/{agent_id}` | router | `app/api/agents.py:884` |
| DELETE | `/{agent_id}` | router | `app/api/agents.py:1019` |
| GET | `/{presence_id}/workers` | router | `app/api/agents.py:1232` |
| POST | `/{agent_id}/publish` | router | `app/api/agents.py:1294` |
| POST | `/{agent_id}/unpublish` | router | `app/api/agents.py:1309` |
| POST | `/{agent_id}/archive` | router | `app/api/agents.py:1324` |
| POST | `/{agent_id}/set-primary-member` | router | `app/api/agents.py:1339` |
| POST | `/{agent_id}/unset-primary-member` | router | `app/api/agents.py:1366` |
| POST | `/{agent_id}/set-ally` | router | `app/api/agents.py:1386` |
| POST | `/{agent_id}/unset-ally` | router | `app/api/agents.py:1449` |
| POST | `/members/{agent_id}/hide` | router | `app/api/agents.py:1477` |
| POST | `/members/{agent_id}/unhide` | router | `app/api/agents.py:1509` |
| GET | `/members/hidden` | router | `app/api/agents.py:1531` |
| POST | `/members/{agent_id}/connect` | router | `app/api/agents.py:1549` |
| POST | `/members/{agent_id}/disconnect` | router | `app/api/agents.py:1581` |
| GET | `/members/connections` | router | `app/api/agents.py:1603` |
| GET | `/members/connections/details` | router | `app/api/agents.py:1616` |
| POST | `/{agent_id}/generate` | router | `app/api/agents.py:1706` |
| POST | `/predefined/bluesky` | router | `app/api/agents.py:1766` |
| GET | `/predefined/bluesky/accounts` | router | `app/api/agents.py:2075` |
| POST | `/predefined/bluesky/{presence_id}/switch-account` | router | `app/api/agents.py:2134` |
| POST | `/{agent_id}/pause` | router | `app/api/agents.py:2276` |
| POST | `/{agent_id}/resume` | router | `app/api/agents.py:2317` |
| POST | `/predefined/executive-avatar` | router | `app/api/agents.py:2377` |
| GET | `/predefined/executive-avatar/accounts` | router | `app/api/agents.py:2545` |
| GET | `/prefill/executive-avatar` | router | `app/api/agents.py:2630` |
| POST | `/members/{agent_id}/tool-mapping` | router | `app/api/agents.py:2769` |
| GET | `/members/{agent_id}/tool-mapping` | router | `app/api/agents.py:2841` |
| DELETE | `/members/{agent_id}/tool-mapping/{mapping_id}` | router | `app/api/agents.py:2872` |
| GET | `/` | router | `app/api/approvals.py:72` |
| GET | `/stats` | router | `app/api/approvals.py:129` |
| GET | `/{approval_id}` | router | `app/api/approvals.py:191` |
| PATCH | `/{approval_id}/approve` | router | `app/api/approvals.py:209` |
| PATCH | `/{approval_id}/reject` | router | `app/api/approvals.py:250` |
| PATCH | `/{approval_id}/retry` | router | `app/api/approvals.py:274` |
| POST | `/sessions` | router | `app/api/chat.py:58` |
| GET | `/sessions` | router | `app/api/chat.py:105` |
| GET | `/sessions/{session_id}` | router | `app/api/chat.py:138` |
| DELETE | `/sessions/{session_id}` | router | `app/api/chat.py:156` |
| GET | `/messages` | router | `app/api/chat.py:184` |
| POST | `/messages` | router | `app/api/chat.py:209` |
| POST | `/messages/stream` | router | `app/api/chat.py:369` |
| POST | `/presence/{presence_id}/process` | router | `app/api/chat.py:477` |
| POST | `/presence/{presence_id}/stream` | router | `app/api/chat.py:547` |
| POST | `/messages/stream/v2` | router | `app/api/chat.py:633` |
| GET | `/providers` | router | `app/api/chat.py:768` |
| POST | `/stream` | router | `app/api/chatmessages.py:151` |
| POST | `/` | router | `app/api/chatmessages.py:406` |
| GET | `/status` | router | `app/api/chatmessages.py:530` |
| POST | `/` | router | `app/api/codes.py:56` |
| GET | `/` | router | `app/api/codes.py:167` |
| GET | `/accessible` | router | `app/api/codes.py:220` |
| GET | `/permitted-contexts` | router | `app/api/codes.py:430` |
| GET | `/accessible-contexts` | router | `app/api/codes.py:573` |
| GET | `/{code_id}` | router | `app/api/codes.py:696` |
| PATCH | `/{code_id}` | router | `app/api/codes.py:708` |
| DELETE | `/{code_id}` | router | `app/api/codes.py:736` |
| PATCH | `/{code_id}/toggle` | router | `app/api/codes.py:753` |
| GET | `/validate/{code}` | router | `app/api/codes.py:775` |
| POST | `/{code_id}/redeem` | router | `app/api/codes.py:793` |
| GET | `/{code_id}/redemptions` | router | `app/api/codes.py:819` |
| DELETE | `/redemptions/{redemption_id}` | router | `app/api/codes.py:909` |
| GET | `/c/{code}/preview` | router | `app/api/codes.py:937` |
| POST | `/c/{code}/redeem` | router | `app/api/codes.py:960` |
| GET | `/context/{context_id}` | router | `app/api/codes.py:1038` |
| POST | `/{code_id}/send-invite` | router | `app/api/codes.py:1063` |
| POST | `/{code_id}/send-push-invite` | router | `app/api/codes.py:1101` |
| GET | `/membership/{context_id}/{wallet}` | router | `app/api/codes.py:1241` |
| GET | `/members/{context_id}` | router | `app/api/codes.py:1275` |
| GET | `/my-presences/{wallet}` | router | `app/api/codes.py:1303` |
| GET | `/wallet/{wallet}/gathering-games` | router | `app/api/codes.py:1332` |
| GET | `/` | context_router | `app/api/context.py:36` |
| GET | `/{context_id}` | context_router | `app/api/context.py:71` |
| GET | `/slug/{slug}` | context_router | `app/api/context.py:83` |
| GET | `/handle/{handle}` | context_router | `app/api/context.py:95` |
| GET | `/{context_id}/nested` | context_router | `app/api/context.py:107` |
| POST | `/` | context_router | `app/api/context.py:120` |
| PATCH | `/{context_id}` | context_router | `app/api/context.py:164` |
| DELETE | `/{context_id}` | context_router | `app/api/context.py:203` |
| POST | `/{context_id}/publish` | context_router | `app/api/context.py:222` |
| POST | `/{context_id}/unpublish` | context_router | `app/api/context.py:241` |
| POST | `/{context_id}/archive` | context_router | `app/api/context.py:260` |
| POST | `/{context_id}/join` | context_router | `app/api/context.py:279` |
| GET | `/` | nested_context_router | `app/api/context.py:317` |
| GET | `/{nested_context_id}` | nested_context_router | `app/api/context.py:338` |
| GET | `/handle/{handle}` | nested_context_router | `app/api/context.py:350` |
| POST | `/` | nested_context_router | `app/api/context.py:362` |
| PATCH | `/{nested_context_id}` | nested_context_router | `app/api/context.py:409` |
| DELETE | `/{nested_context_id}` | nested_context_router | `app/api/context.py:448` |
| POST | `/{nested_context_id}/publish` | nested_context_router | `app/api/context.py:467` |
| POST | `/{nested_context_id}/unpublish` | nested_context_router | `app/api/context.py:486` |
| POST | `/{nested_context_id}/archive` | nested_context_router | `app/api/context.py:505` |
| GET | `/{presence_id}/{user_wallet}` | router | `app/api/conversations.py:29` |
| GET | `/user/{user_wallet}` | router | `app/api/conversations.py:66` |
| DELETE | `/{presence_id}/{user_wallet}/messages` | router | `app/api/conversations.py:102` |
| DELETE | `/{presence_id}/{user_wallet}` | router | `app/api/conversations.py:142` |
| GET | `/health` | router | `app/api/graph.py:39` |
| POST | `/sync/agents` | router | `app/api/graph.py:58` |
| POST | `/sync/members` | router | `app/api/graph.py:83` |
| POST | `/sync/governance` | router | `app/api/graph.py:99` |
| POST | `/sync/all` | router | `app/api/graph.py:115` |
| POST | `/events` | router | `app/api/graph.py:153` |
| POST | `/events/batch` | router | `app/api/graph.py:177` |
| GET | `/` | router | `app/api/knowledge.py:93` |
| GET | `/{kb_id}` | router | `app/api/knowledge.py:156` |
| POST | `/` | router | `app/api/knowledge.py:190` |
| POST | `/{kb_id}/upload` | router | `app/api/knowledge.py:231` |
| POST | `/{kb_id}/items/{item_id}/ingest` | router | `app/api/knowledge.py:441` |
| POST | `/{kb_id}/ingest-text` | router | `app/api/knowledge.py:545` |
| DELETE | `/{kb_id}/items/{item_id}` | router | `app/api/knowledge.py:646` |
| PATCH | `/{kb_id}` | router | `app/api/knowledge.py:692` |
| DELETE | `/{kb_id}` | router | `app/api/knowledge.py:728` |
| POST | `/{kb_id}/search` | router | `app/api/knowledge.py:761` |
| GET | `/{wallet}` | router | `app/api/notifications.py:25` |
| PUT | `/{notification_id}/read` | router | `app/api/notifications.py:70` |
| PUT | `/{wallet}/read-all` | router | `app/api/notifications.py:92` |
| GET | `/{provider}/init` | router | `app/api/oauth.py:112` |
| GET | `/{provider}/callback` | router | `app/api/oauth.py:173` |
| GET | `/{wallet}` | router | `app/api/onboarding.py:91` |
| POST | `/{wallet}` | router | `app/api/onboarding.py:111` |
| PUT | `/{wallet}` | router | `app/api/onboarding.py:153` |
| PUT | `/{wallet}/complete` | router | `app/api/onboarding.py:183` |
| DELETE | `/{wallet}` | router | `app/api/onboarding.py:206` |
| POST | `/validate-goal` | router | `app/api/prompts.py:137` |
| POST | `/generate` | router | `app/api/prompts.py:155` |
| GET | `/` | router | `app/api/prompts.py:213` |
| GET | `/{prompt_id}` | router | `app/api/prompts.py:262` |
| POST | `/` | router | `app/api/prompts.py:285` |
| PATCH | `/{prompt_id}` | router | `app/api/prompts.py:329` |
| PUT | `/{prompt_id}` | router | `app/api/prompts.py:365` |
| DELETE | `/{prompt_id}` | router | `app/api/prompts.py:382` |
| GET | `/` | router | `app/api/roles.py:25` |
| GET | `/{role_id}` | router | `app/api/roles.py:44` |
| POST | `/` | router | `app/api/roles.py:56` |
| PATCH | `/{role_id}` | router | `app/api/roles.py:83` |
| DELETE | `/{role_id}` | router | `app/api/roles.py:108` |
| GET | `/context/{context_id}` | router | `app/api/roles.py:125` |
| POST | `/generate-content` | router | `app/api/skills.py:130` |
| POST | `/parse-schedule` | router | `app/api/skills.py:199` |
| GET | `/` | router | `app/api/skills.py:220` |
| POST | `/` | router | `app/api/skills.py:278` |
| PATCH | `/{skill_id}` | router | `app/api/skills.py:386` |
| PATCH | `/{skill_id}/status` | router | `app/api/skills.py:475` |
| DELETE | `/{skill_id}` | router | `app/api/skills.py:534` |
| POST | `/{skill_id}/run` | router | `app/api/skills.py:603` |
| GET | `/{skill_id}/running` | router | `app/api/skills.py:669` |
| GET | `/running-all` | router | `app/api/skills.py:681` |
| GET | `/executions/{exec_id}/trace` | router | `app/api/skills.py:692` |
| POST | `/executions/{exec_id}/cancel` | router | `app/api/skills.py:702` |
| GET | `/{skill_id}/stats` | router | `app/api/skills.py:720` |
| GET | `/{skill_id}/history` | router | `app/api/skills.py:804` |
| GET | `/debug/scheduler` | router | `app/api/skills.py:872` |
| POST | `/verify` | router | `app/api/tools.py:65` |
| GET | `/available` | router | `app/api/tools.py:302` |
| GET | `/mcp/status` | router | `app/api/tools.py:391` |
| GET | `/mcp/{tool_name}/tools` | router | `app/api/tools.py:421` |
| POST | `/mcp/{tool_name}/test` | router | `app/api/tools.py:461` |
| POST | `/save` | router | `app/api/tools.py:512` |
| GET | `/saved` | router | `app/api/tools.py:644` |
| GET | `/saved/by-wallet` | router | `app/api/tools.py:679` |
| DELETE | `/saved/{identifier}` | router | `app/api/tools.py:740` |
| GET | `/{wallet}` | router | `app/api/usage.py:22` |
| GET | `/health` | router | `app/api/voice.py:58` |
| GET | `/capabilities` | router | `app/api/voice.py:73` |
| WEBSOCKET | `/session` | router | `app/api/voice.py:113` |
| GET | `/sessions/active` | router | `app/api/voice.py:434` |
| GET | `/health` | app | `app/main.py:355` |
| GET | `/` | app | `app/main.py:371` |

## kinship-knowledge · main (195)

| Method | Declared path | Router | Source |
|---|---|---|---|
| POST | `/games/{game_id}` | router | `app/api/achievement_routes.py:39` |
| GET | `/games/{game_id}` | router | `app/api/achievement_routes.py:71` |
| GET | `/{achievement_id}` | router | `app/api/achievement_routes.py:112` |
| PUT | `/{achievement_id}` | router | `app/api/achievement_routes.py:145` |
| DELETE | `/{achievement_id}` | router | `app/api/achievement_routes.py:180` |
| POST | `/games/{game_id}/defaults` | router | `app/api/achievement_routes.py:189` |
| GET | `/games/{game_id}/player/{player_id}` | router | `app/api/achievement_routes.py:230` |
| GET | `/games/{game_id}/player/{player_id}/summary` | router | `app/api/achievement_routes.py:245` |
| GET | `/games/{game_id}/player/{player_id}/unseen` | router | `app/api/achievement_routes.py:257` |
| POST | `/{achievement_id}/unlock` | router | `app/api/achievement_routes.py:269` |
| POST | `/{achievement_id}/progress` | router | `app/api/achievement_routes.py:281` |
| POST | `/{achievement_id}/seen` | router | `app/api/achievement_routes.py:293` |
| POST | `/check` | router | `app/api/achievement_routes.py:309` |
| GET | `/` | actors_router | `app/api/actors.py:121` |
| POST | `/` | actors_router | `app/api/actors.py:152` |
| GET | `/{actor_id}` | actors_router | `app/api/actors.py:157` |
| PUT | `/{actor_id}` | actors_router | `app/api/actors.py:162` |
| DELETE | `/{actor_id}` | actors_router | `app/api/actors.py:169` |
| GET | `/` | npcs_router | `app/api/actors.py:177` |
| POST | `/` | npcs_router | `app/api/actors.py:205` |
| GET | `/{npc_id}` | npcs_router | `app/api/actors.py:210` |
| PUT | `/{npc_id}` | npcs_router | `app/api/actors.py:215` |
| DELETE | `/{npc_id}` | npcs_router | `app/api/actors.py:222` |
| POST | `/sessions/start` | router | `app/api/analytics.py:67` |
| POST | `/sessions/end` | router | `app/api/analytics.py:97` |
| GET | `/sessions/{session_id}` | router | `app/api/analytics.py:158` |
| POST | `/events` | router | `app/api/analytics.py:177` |
| POST | `/events/batch` | router | `app/api/analytics.py:212` |
| GET | `/progress/{player_id}/{game_id}` | router | `app/api/analytics.py:254` |
| POST | `/progress` | router | `app/api/analytics.py:277` |
| GET | `/games/{game_id}/overview` | router | `app/api/analytics.py:370` |
| GET | `/games/{game_id}/scenes` | router | `app/api/analytics.py:492` |
| GET | `/games/{game_id}/challenges` | router | `app/api/analytics.py:559` |
| GET | `/games/{game_id}/hearts` | router | `app/api/analytics.py:638` |
| GET | `/games/{game_id}` | router | `app/api/analytics.py:695` |
| GET | `/` | app | `app/api/api.py:112` |
| GET | `/health` | app | `app/api/api.py:121` |
| POST | `/api/generate/game` | app | `app/api/api.py:134` |
| POST | `/api/generate/npc` | app | `app/api/api.py:164` |
| POST | `/api/generate/challenge` | app | `app/api/api.py:191` |
| POST | `/api/generate/dialogue` | app | `app/api/api.py:225` |
| POST | `/api/generate/quest` | app | `app/api/api.py:253` |
| GET | `/api/example/manifest` | app | `app/api/api.py:280` |
| POST | `/api/validate/manifest` | app | `app/api/api.py:292` |
| POST | `/sync` | router | `app/api/asset_embed.py:10` |
| POST | `/embed-assets-only` | router | `app/api/asset_embed.py:44` |
| GET | `/status` | router | `app/api/asset_embed.py:63` |
| GET | `/list` | router | `app/api/asset_embed.py:78` |
| POST | `/test-retrieval` | router | `app/api/asset_embed.py:292` |
| POST | `/design/regenerate` | router | `app/api/asset_embed.py:319` |
| DELETE | `/clear-all` | router | `app/api/asset_embed.py:326` |
| DELETE | `/asset/{asset_id}` | router | `app/api/asset_embed.py:356` |
| GET | `/asset/{asset_id}` | router | `app/api/asset_embed.py:368` |
| GET | `/assets/list` | router | `app/api/asset_embed.py:413` |
| GET | `/design/list` | router | `app/api/asset_embed.py:596` |
| POST | `/rebuild-all` | router | `app/api/asset_embed.py:741` |
| POST | `/generate/{asset_id}` | router | `app/api/asset_knowledge.py:10` |
| POST | `/generate-all` | router | `app/api/asset_knowledge.py:42` |
| POST | `/sync` | router | `app/api/asset_knowledge.py:75` |
| GET | `/coverage` | router | `app/api/asset_knowledge.py:149` |
| GET | `/` | router | `app/api/challenges.py:75` |
| POST | `/` | router | `app/api/challenges.py:139` |
| GET | `/{id}` | router | `app/api/challenges.py:144` |
| PUT | `/{id}` | router | `app/api/challenges.py:152` |
| DELETE | `/{id}` | router | `app/api/challenges.py:162` |
| POST | `/plan/converse` | router | `app/api/game_generation_api.py:811` |
| POST | `/generate` | router | `app/api/game_generation_api.py:924` |
| POST | `/validate` | router | `app/api/game_generation_api.py:1003` |
| GET | `/info` | router | `app/api/game_generation_api.py:1025` |
| POST | `/api/games/plan/converse` | router | `app/api/game_plan.py:538` |
| POST | `/api/games/plan/confirm` | router | `app/api/game_plan.py:1371` |
| DELETE | `/api/games/plan/clear` | router | `app/api/game_plan.py:1766` |
| POST | `/api/games/plan/preview` | router | `app/api/game_plan.py:1794` |
| POST | `/api/games/plan/converse` | router | `app/api/game_plan_updates.py:64` |
| GET | `/stats` | router | `app/api/hearts.py:16` |
| GET | `/facets` | router | `app/api/hearts.py:58` |
| GET | `/facets/{key}` | router | `app/api/hearts.py:63` |
| PUT | `/facets/{key}` | router | `app/api/hearts.py:69` |
| GET | `/rubric` | router | `app/api/hearts.py:77` |
| PUT | `/rubric` | router | `app/api/hearts.py:82` |
| POST | `/seed` | router | `app/api/hearts.py:100` |
| GET | `/` | router | `app/api/knowledge.py:17` |
| POST | `/` | router | `app/api/knowledge.py:38` |
| POST | `/upload` | router | `app/api/knowledge.py:44` |
| POST | `/ingest` | router | `app/api/knowledge.py:113` |
| POST | `/{id}/ingest` | router | `app/api/knowledge.py:122` |
| GET | `/{id}` | router | `app/api/knowledge.py:139` |
| PUT | `/{id}` | router | `app/api/knowledge.py:148` |
| DELETE | `/{id}` | router | `app/api/knowledge.py:159` |
| POST | `/generate/game` | router | `app/api/knowledge_engine.py:577` |
| POST | `/generate/npc` | router | `app/api/knowledge_engine.py:598` |
| POST | `/generate/dialogue` | router | `app/api/knowledge_engine.py:612` |
| POST | `/generate/quest` | router | `app/api/knowledge_engine.py:626` |
| POST | `/generate/interactions` | router | `app/api/knowledge_engine.py:637` |
| POST | `/evaluate/context` | router | `app/api/knowledge_engine.py:647` |
| POST | `/games/{game_id}` | router | `app/api/leaderboard_routes.py:35` |
| GET | `/games/{game_id}` | router | `app/api/leaderboard_routes.py:45` |
| GET | `/{leaderboard_id}/config` | router | `app/api/leaderboard_routes.py:54` |
| PUT | `/{leaderboard_id}` | router | `app/api/leaderboard_routes.py:64` |
| DELETE | `/{leaderboard_id}` | router | `app/api/leaderboard_routes.py:76` |
| POST | `/games/{game_id}/defaults` | router | `app/api/leaderboard_routes.py:85` |
| GET | `/{leaderboard_id}` | router | `app/api/leaderboard_routes.py:101` |
| GET | `/{leaderboard_id}/top` | router | `app/api/leaderboard_routes.py:120` |
| GET | `/{leaderboard_id}/player/{player_id}` | router | `app/api/leaderboard_routes.py:135` |
| GET | `/{leaderboard_id}/player/{player_id}/rank` | router | `app/api/leaderboard_routes.py:158` |
| GET | `/{leaderboard_id}/player/{player_id}/nearby` | router | `app/api/leaderboard_routes.py:178` |
| POST | `/{leaderboard_id}/scores` | router | `app/api/leaderboard_routes.py:203` |
| POST | `/{leaderboard_id}/scores/increment` | router | `app/api/leaderboard_routes.py:215` |
| GET | `/games/{game_id}/player/{player_id}/summary` | router | `app/api/leaderboard_routes.py:236` |
| POST | `/{leaderboard_id}/snapshot` | router | `app/api/leaderboard_routes.py:253` |
| POST | `/games/{game_id}/reset-period` | router | `app/api/leaderboard_routes.py:273` |
| GET | `/` | router | `app/api/npcs.py:16` |
| POST | `/` | router | `app/api/npcs.py:36` |
| GET | `/{npc_id}` | router | `app/api/npcs.py:41` |
| PUT | `/{npc_id}` | router | `app/api/npcs.py:49` |
| DELETE | `/{npc_id}` | router | `app/api/npcs.py:57` |
| POST | `/generate` | router | `app/api/pipeline_routes.py:190` |
| POST | `/edit` | router | `app/api/pipeline_routes.py:473` |
| GET | `/state/{game_id}` | router | `app/api/pipeline_routes.py:550` |
| DELETE | `/state/{game_id}` | router | `app/api/pipeline_routes.py:601` |
| POST | `/state/{game_id}/undo` | router | `app/api/pipeline_routes.py:618` |
| POST | `/state/{game_id}/redo` | router | `app/api/pipeline_routes.py:686` |
| GET | `/states` | router | `app/api/pipeline_routes.py:752` |
| POST | `/validate` | router | `app/api/pipeline_routes.py:798` |
| GET | `/mechanics` | router | `app/api/pipeline_routes.py:845` |
| GET | `/mechanics/{mechanic_id}` | router | `app/api/pipeline_routes.py:872` |
| GET | `/templates` | router | `app/api/pipeline_routes.py:930` |
| GET | `/npc-roles` | router | `app/api/pipeline_routes.py:966` |
| GET | `/goal-types` | router | `app/api/pipeline_routes.py:987` |
| GET | `/audience-types` | router | `app/api/pipeline_routes.py:1001` |
| GET | `/difficulty-curves` | router | `app/api/pipeline_routes.py:1013` |
| GET | `/info` | router | `app/api/pipeline_routes.py:1048` |
| POST | `/` | router | `app/api/players.py:12` |
| GET | `/{player_id}` | router | `app/api/players.py:27` |
| GET | `/by-user/{user_id}` | router | `app/api/players.py:33` |
| PUT | `/{player_id}` | router | `app/api/players.py:42` |
| GET | `/{player_id}/history` | router | `app/api/players.py:53` |
| GET | `/{game_id}/{wallet_user_id}` | router | `app/api/progress_routes.py:144` |
| POST | `/` | router | `app/api/progress_routes.py:209` |
| DELETE | `/{game_id}/{wallet_user_id}` | router | `app/api/progress_routes.py:355` |
| GET | `/` | router | `app/api/prompts.py:21` |
| POST | `/` | router | `app/api/prompts.py:47` |
| GET | `/{id}` | router | `app/api/prompts.py:53` |
| PUT | `/{id}` | router | `app/api/prompts.py:61` |
| DELETE | `/{id}` | router | `app/api/prompts.py:72` |
| GET | `/` | router | `app/api/quests.py:14` |
| POST | `/` | router | `app/api/quests.py:41` |
| GET | `/{id}` | router | `app/api/quests.py:46` |
| PUT | `/{id}` | router | `app/api/quests.py:54` |
| DELETE | `/{id}` | router | `app/api/quests.py:62` |
| GET | `/` | router | `app/api/routes.py:14` |
| POST | `/` | router | `app/api/routes.py:39` |
| GET | `/{id}` | router | `app/api/routes.py:44` |
| PUT | `/{id}` | router | `app/api/routes.py:52` |
| DELETE | `/{id}` | router | `app/api/routes.py:60` |
| POST | `/api/runtime/dialogue` | router | `app/api/runtime.py:18` |
| POST | `/api/scenes/generate` | router | `app/api/runtime.py:38` |
| GET | `/api/runtime/scenes/{scene_id}/manifest` | router | `app/api/runtime.py:60` |
| GET | `/api/runtime/player/{player_id}` | router | `app/api/runtime.py:79` |
| GET | `/play/{scene_id}` | router | `app/api/runtime.py:100` |
| POST | `/api/scenes/converse` | router | `app/api/scene_converse.py:83` |
| GET | `/api/scenes/platform-capabilities/{platform_id}` | router | `app/api/scene_converse.py:118` |
| POST | `/api/scenes/generate-full` | router | `app/api/scene_gen.py:26` |
| POST | `/api/scenes/refine` | router | `app/api/scene_gen.py:42` |
| POST | `/api/scenes/save-generated` | router | `app/api/scene_gen.py:149` |
| POST | `/` | router | `app/api/score_routes.py:132` |
| GET | `/leaderboard/{game_id}` | router | `app/api/score_routes.py:182` |
| GET | `/leaderboard/{game_id}/player/{player_id}` | router | `app/api/score_routes.py:254` |
| GET | `/player/{player_id}` | router | `app/api/score_routes.py:309` |
| GET | `/leaderboard/{game_id}/player/{player_id}/nearby` | router | `app/api/score_routes.py:343` |
| POST | `/analyze-sprite` | router | `app/api/sprite_analysis.py:28` |
| GET | `/players/{wallet_user_id}` | router | `app/api/wallet_score_routes.py:39` |
| POST | `/players` | router | `app/api/wallet_score_routes.py:56` |
| PUT | `/players/{wallet_user_id}` | router | `app/api/wallet_score_routes.py:82` |
| POST | `/scores` | router | `app/api/wallet_score_routes.py:114` |
| POST | `/scores/batch` | router | `app/api/wallet_score_routes.py:145` |
| GET | `/leaderboard/{game_id}` | router | `app/api/wallet_score_routes.py:170` |
| GET | `/leaderboard/{game_id}/top` | router | `app/api/wallet_score_routes.py:201` |
| GET | `/scoreboard/{game_id}/{wallet_user_id}` | router | `app/api/wallet_score_routes.py:224` |
| GET | `/leaderboard/{game_id}/rank/{wallet_user_id}` | router | `app/api/wallet_score_routes.py:250` |
| GET | `/leaderboard/{game_id}/nearby/{wallet_user_id}` | router | `app/api/wallet_score_routes.py:271` |
| GET | `/scores/{game_id}/{wallet_user_id}/history` | router | `app/api/wallet_score_routes.py:305` |
| GET | `/stats/{game_id}` | router | `app/api/wallet_score_routes.py:350` |
| DELETE | `/scores/{game_id}/{wallet_user_id}` | router | `app/api/wallet_score_routes.py:388` |
| POST | `/api/webhooks/asset-changed` | router | `app/api/webhooks.py:21` |
| WEBSOCKET | `/studio/{game_id}` | router | `app/api/websocket_routes.py:32` |
| WEBSOCKET | `/player/{game_id}/{player_id}` | router | `app/api/websocket_routes.py:105` |
| GET | `/games/{game_id}/active-players` | router | `app/api/websocket_routes.py:188` |
| GET | `/games/{game_id}/stats` | router | `app/api/websocket_routes.py:199` |
| GET | `/games/{game_id}/recent-events` | router | `app/api/websocket_routes.py:206` |
| POST | `/games/{game_id}/broadcast` | router | `app/api/websocket_routes.py:217` |
| POST | `/api/player/events/batch` | router | `app/api/websocket_routes.py:247` |
| GET | `/health` | app | `app/main.py:144` |
| GET | `/api/stats` | app | `app/main.py:157` |
| WEBSOCKET | `/ws/scene/{scene_id}` | router | `app/realtime/handlers.py:20` |

## kinship-knowledge · dev (195)

| Method | Declared path | Router | Source |
|---|---|---|---|
| POST | `/games/{game_id}` | router | `app/api/achievement_routes.py:39` |
| GET | `/games/{game_id}` | router | `app/api/achievement_routes.py:71` |
| GET | `/{achievement_id}` | router | `app/api/achievement_routes.py:112` |
| PUT | `/{achievement_id}` | router | `app/api/achievement_routes.py:145` |
| DELETE | `/{achievement_id}` | router | `app/api/achievement_routes.py:180` |
| POST | `/games/{game_id}/defaults` | router | `app/api/achievement_routes.py:189` |
| GET | `/games/{game_id}/player/{player_id}` | router | `app/api/achievement_routes.py:230` |
| GET | `/games/{game_id}/player/{player_id}/summary` | router | `app/api/achievement_routes.py:245` |
| GET | `/games/{game_id}/player/{player_id}/unseen` | router | `app/api/achievement_routes.py:257` |
| POST | `/{achievement_id}/unlock` | router | `app/api/achievement_routes.py:269` |
| POST | `/{achievement_id}/progress` | router | `app/api/achievement_routes.py:281` |
| POST | `/{achievement_id}/seen` | router | `app/api/achievement_routes.py:293` |
| POST | `/check` | router | `app/api/achievement_routes.py:309` |
| GET | `/` | actors_router | `app/api/actors.py:121` |
| POST | `/` | actors_router | `app/api/actors.py:152` |
| GET | `/{actor_id}` | actors_router | `app/api/actors.py:157` |
| PUT | `/{actor_id}` | actors_router | `app/api/actors.py:162` |
| DELETE | `/{actor_id}` | actors_router | `app/api/actors.py:169` |
| GET | `/` | npcs_router | `app/api/actors.py:177` |
| POST | `/` | npcs_router | `app/api/actors.py:205` |
| GET | `/{npc_id}` | npcs_router | `app/api/actors.py:210` |
| PUT | `/{npc_id}` | npcs_router | `app/api/actors.py:215` |
| DELETE | `/{npc_id}` | npcs_router | `app/api/actors.py:222` |
| POST | `/sessions/start` | router | `app/api/analytics.py:67` |
| POST | `/sessions/end` | router | `app/api/analytics.py:97` |
| GET | `/sessions/{session_id}` | router | `app/api/analytics.py:158` |
| POST | `/events` | router | `app/api/analytics.py:177` |
| POST | `/events/batch` | router | `app/api/analytics.py:212` |
| GET | `/progress/{player_id}/{game_id}` | router | `app/api/analytics.py:254` |
| POST | `/progress` | router | `app/api/analytics.py:277` |
| GET | `/games/{game_id}/overview` | router | `app/api/analytics.py:370` |
| GET | `/games/{game_id}/scenes` | router | `app/api/analytics.py:492` |
| GET | `/games/{game_id}/challenges` | router | `app/api/analytics.py:559` |
| GET | `/games/{game_id}/hearts` | router | `app/api/analytics.py:638` |
| GET | `/games/{game_id}` | router | `app/api/analytics.py:695` |
| GET | `/` | app | `app/api/api.py:112` |
| GET | `/health` | app | `app/api/api.py:121` |
| POST | `/api/generate/game` | app | `app/api/api.py:134` |
| POST | `/api/generate/npc` | app | `app/api/api.py:164` |
| POST | `/api/generate/challenge` | app | `app/api/api.py:191` |
| POST | `/api/generate/dialogue` | app | `app/api/api.py:225` |
| POST | `/api/generate/quest` | app | `app/api/api.py:253` |
| GET | `/api/example/manifest` | app | `app/api/api.py:280` |
| POST | `/api/validate/manifest` | app | `app/api/api.py:292` |
| POST | `/sync` | router | `app/api/asset_embed.py:10` |
| POST | `/embed-assets-only` | router | `app/api/asset_embed.py:44` |
| GET | `/status` | router | `app/api/asset_embed.py:63` |
| GET | `/list` | router | `app/api/asset_embed.py:78` |
| POST | `/test-retrieval` | router | `app/api/asset_embed.py:292` |
| POST | `/design/regenerate` | router | `app/api/asset_embed.py:319` |
| DELETE | `/clear-all` | router | `app/api/asset_embed.py:326` |
| DELETE | `/asset/{asset_id}` | router | `app/api/asset_embed.py:356` |
| GET | `/asset/{asset_id}` | router | `app/api/asset_embed.py:368` |
| GET | `/assets/list` | router | `app/api/asset_embed.py:413` |
| GET | `/design/list` | router | `app/api/asset_embed.py:596` |
| POST | `/rebuild-all` | router | `app/api/asset_embed.py:741` |
| POST | `/generate/{asset_id}` | router | `app/api/asset_knowledge.py:10` |
| POST | `/generate-all` | router | `app/api/asset_knowledge.py:42` |
| POST | `/sync` | router | `app/api/asset_knowledge.py:75` |
| GET | `/coverage` | router | `app/api/asset_knowledge.py:149` |
| GET | `/` | router | `app/api/challenges.py:75` |
| POST | `/` | router | `app/api/challenges.py:139` |
| GET | `/{id}` | router | `app/api/challenges.py:144` |
| PUT | `/{id}` | router | `app/api/challenges.py:152` |
| DELETE | `/{id}` | router | `app/api/challenges.py:162` |
| POST | `/plan/converse` | router | `app/api/game_generation_api.py:811` |
| POST | `/generate` | router | `app/api/game_generation_api.py:924` |
| POST | `/validate` | router | `app/api/game_generation_api.py:1003` |
| GET | `/info` | router | `app/api/game_generation_api.py:1025` |
| POST | `/api/games/plan/converse` | router | `app/api/game_plan.py:538` |
| POST | `/api/games/plan/confirm` | router | `app/api/game_plan.py:1371` |
| DELETE | `/api/games/plan/clear` | router | `app/api/game_plan.py:1766` |
| POST | `/api/games/plan/preview` | router | `app/api/game_plan.py:1794` |
| POST | `/api/games/plan/converse` | router | `app/api/game_plan_updates.py:64` |
| GET | `/stats` | router | `app/api/hearts.py:16` |
| GET | `/facets` | router | `app/api/hearts.py:58` |
| GET | `/facets/{key}` | router | `app/api/hearts.py:63` |
| PUT | `/facets/{key}` | router | `app/api/hearts.py:69` |
| GET | `/rubric` | router | `app/api/hearts.py:77` |
| PUT | `/rubric` | router | `app/api/hearts.py:82` |
| POST | `/seed` | router | `app/api/hearts.py:100` |
| GET | `/` | router | `app/api/knowledge.py:17` |
| POST | `/` | router | `app/api/knowledge.py:38` |
| POST | `/upload` | router | `app/api/knowledge.py:44` |
| POST | `/ingest` | router | `app/api/knowledge.py:113` |
| POST | `/{id}/ingest` | router | `app/api/knowledge.py:122` |
| GET | `/{id}` | router | `app/api/knowledge.py:139` |
| PUT | `/{id}` | router | `app/api/knowledge.py:148` |
| DELETE | `/{id}` | router | `app/api/knowledge.py:159` |
| POST | `/generate/game` | router | `app/api/knowledge_engine.py:577` |
| POST | `/generate/npc` | router | `app/api/knowledge_engine.py:598` |
| POST | `/generate/dialogue` | router | `app/api/knowledge_engine.py:612` |
| POST | `/generate/quest` | router | `app/api/knowledge_engine.py:626` |
| POST | `/generate/interactions` | router | `app/api/knowledge_engine.py:637` |
| POST | `/evaluate/context` | router | `app/api/knowledge_engine.py:647` |
| POST | `/games/{game_id}` | router | `app/api/leaderboard_routes.py:35` |
| GET | `/games/{game_id}` | router | `app/api/leaderboard_routes.py:45` |
| GET | `/{leaderboard_id}/config` | router | `app/api/leaderboard_routes.py:54` |
| PUT | `/{leaderboard_id}` | router | `app/api/leaderboard_routes.py:64` |
| DELETE | `/{leaderboard_id}` | router | `app/api/leaderboard_routes.py:76` |
| POST | `/games/{game_id}/defaults` | router | `app/api/leaderboard_routes.py:85` |
| GET | `/{leaderboard_id}` | router | `app/api/leaderboard_routes.py:101` |
| GET | `/{leaderboard_id}/top` | router | `app/api/leaderboard_routes.py:120` |
| GET | `/{leaderboard_id}/player/{player_id}` | router | `app/api/leaderboard_routes.py:135` |
| GET | `/{leaderboard_id}/player/{player_id}/rank` | router | `app/api/leaderboard_routes.py:158` |
| GET | `/{leaderboard_id}/player/{player_id}/nearby` | router | `app/api/leaderboard_routes.py:178` |
| POST | `/{leaderboard_id}/scores` | router | `app/api/leaderboard_routes.py:203` |
| POST | `/{leaderboard_id}/scores/increment` | router | `app/api/leaderboard_routes.py:215` |
| GET | `/games/{game_id}/player/{player_id}/summary` | router | `app/api/leaderboard_routes.py:236` |
| POST | `/{leaderboard_id}/snapshot` | router | `app/api/leaderboard_routes.py:253` |
| POST | `/games/{game_id}/reset-period` | router | `app/api/leaderboard_routes.py:273` |
| GET | `/` | router | `app/api/npcs.py:16` |
| POST | `/` | router | `app/api/npcs.py:36` |
| GET | `/{npc_id}` | router | `app/api/npcs.py:41` |
| PUT | `/{npc_id}` | router | `app/api/npcs.py:49` |
| DELETE | `/{npc_id}` | router | `app/api/npcs.py:57` |
| POST | `/generate` | router | `app/api/pipeline_routes.py:190` |
| POST | `/edit` | router | `app/api/pipeline_routes.py:473` |
| GET | `/state/{game_id}` | router | `app/api/pipeline_routes.py:550` |
| DELETE | `/state/{game_id}` | router | `app/api/pipeline_routes.py:601` |
| POST | `/state/{game_id}/undo` | router | `app/api/pipeline_routes.py:618` |
| POST | `/state/{game_id}/redo` | router | `app/api/pipeline_routes.py:686` |
| GET | `/states` | router | `app/api/pipeline_routes.py:752` |
| POST | `/validate` | router | `app/api/pipeline_routes.py:798` |
| GET | `/mechanics` | router | `app/api/pipeline_routes.py:845` |
| GET | `/mechanics/{mechanic_id}` | router | `app/api/pipeline_routes.py:872` |
| GET | `/templates` | router | `app/api/pipeline_routes.py:930` |
| GET | `/npc-roles` | router | `app/api/pipeline_routes.py:966` |
| GET | `/goal-types` | router | `app/api/pipeline_routes.py:987` |
| GET | `/audience-types` | router | `app/api/pipeline_routes.py:1001` |
| GET | `/difficulty-curves` | router | `app/api/pipeline_routes.py:1013` |
| GET | `/info` | router | `app/api/pipeline_routes.py:1048` |
| POST | `/` | router | `app/api/players.py:12` |
| GET | `/{player_id}` | router | `app/api/players.py:27` |
| GET | `/by-user/{user_id}` | router | `app/api/players.py:33` |
| PUT | `/{player_id}` | router | `app/api/players.py:42` |
| GET | `/{player_id}/history` | router | `app/api/players.py:53` |
| GET | `/{game_id}/{wallet_user_id}` | router | `app/api/progress_routes.py:144` |
| POST | `/` | router | `app/api/progress_routes.py:209` |
| DELETE | `/{game_id}/{wallet_user_id}` | router | `app/api/progress_routes.py:355` |
| GET | `/` | router | `app/api/prompts.py:21` |
| POST | `/` | router | `app/api/prompts.py:47` |
| GET | `/{id}` | router | `app/api/prompts.py:53` |
| PUT | `/{id}` | router | `app/api/prompts.py:61` |
| DELETE | `/{id}` | router | `app/api/prompts.py:72` |
| GET | `/` | router | `app/api/quests.py:14` |
| POST | `/` | router | `app/api/quests.py:41` |
| GET | `/{id}` | router | `app/api/quests.py:46` |
| PUT | `/{id}` | router | `app/api/quests.py:54` |
| DELETE | `/{id}` | router | `app/api/quests.py:62` |
| GET | `/` | router | `app/api/routes.py:14` |
| POST | `/` | router | `app/api/routes.py:39` |
| GET | `/{id}` | router | `app/api/routes.py:44` |
| PUT | `/{id}` | router | `app/api/routes.py:52` |
| DELETE | `/{id}` | router | `app/api/routes.py:60` |
| POST | `/api/runtime/dialogue` | router | `app/api/runtime.py:18` |
| POST | `/api/scenes/generate` | router | `app/api/runtime.py:38` |
| GET | `/api/runtime/scenes/{scene_id}/manifest` | router | `app/api/runtime.py:60` |
| GET | `/api/runtime/player/{player_id}` | router | `app/api/runtime.py:79` |
| GET | `/play/{scene_id}` | router | `app/api/runtime.py:100` |
| POST | `/api/scenes/converse` | router | `app/api/scene_converse.py:83` |
| GET | `/api/scenes/platform-capabilities/{platform_id}` | router | `app/api/scene_converse.py:118` |
| POST | `/api/scenes/generate-full` | router | `app/api/scene_gen.py:26` |
| POST | `/api/scenes/refine` | router | `app/api/scene_gen.py:42` |
| POST | `/api/scenes/save-generated` | router | `app/api/scene_gen.py:149` |
| POST | `/` | router | `app/api/score_routes.py:132` |
| GET | `/leaderboard/{game_id}` | router | `app/api/score_routes.py:182` |
| GET | `/leaderboard/{game_id}/player/{player_id}` | router | `app/api/score_routes.py:254` |
| GET | `/player/{player_id}` | router | `app/api/score_routes.py:309` |
| GET | `/leaderboard/{game_id}/player/{player_id}/nearby` | router | `app/api/score_routes.py:343` |
| POST | `/analyze-sprite` | router | `app/api/sprite_analysis.py:28` |
| GET | `/players/{wallet_user_id}` | router | `app/api/wallet_score_routes.py:39` |
| POST | `/players` | router | `app/api/wallet_score_routes.py:56` |
| PUT | `/players/{wallet_user_id}` | router | `app/api/wallet_score_routes.py:82` |
| POST | `/scores` | router | `app/api/wallet_score_routes.py:114` |
| POST | `/scores/batch` | router | `app/api/wallet_score_routes.py:145` |
| GET | `/leaderboard/{game_id}` | router | `app/api/wallet_score_routes.py:170` |
| GET | `/leaderboard/{game_id}/top` | router | `app/api/wallet_score_routes.py:201` |
| GET | `/scoreboard/{game_id}/{wallet_user_id}` | router | `app/api/wallet_score_routes.py:224` |
| GET | `/leaderboard/{game_id}/rank/{wallet_user_id}` | router | `app/api/wallet_score_routes.py:250` |
| GET | `/leaderboard/{game_id}/nearby/{wallet_user_id}` | router | `app/api/wallet_score_routes.py:271` |
| GET | `/scores/{game_id}/{wallet_user_id}/history` | router | `app/api/wallet_score_routes.py:305` |
| GET | `/stats/{game_id}` | router | `app/api/wallet_score_routes.py:350` |
| DELETE | `/scores/{game_id}/{wallet_user_id}` | router | `app/api/wallet_score_routes.py:388` |
| POST | `/api/webhooks/asset-changed` | router | `app/api/webhooks.py:21` |
| WEBSOCKET | `/studio/{game_id}` | router | `app/api/websocket_routes.py:32` |
| WEBSOCKET | `/player/{game_id}/{player_id}` | router | `app/api/websocket_routes.py:105` |
| GET | `/games/{game_id}/active-players` | router | `app/api/websocket_routes.py:188` |
| GET | `/games/{game_id}/stats` | router | `app/api/websocket_routes.py:199` |
| GET | `/games/{game_id}/recent-events` | router | `app/api/websocket_routes.py:206` |
| POST | `/games/{game_id}/broadcast` | router | `app/api/websocket_routes.py:217` |
| POST | `/api/player/events/batch` | router | `app/api/websocket_routes.py:247` |
| GET | `/health` | app | `app/main.py:144` |
| GET | `/api/stats` | app | `app/main.py:157` |
| WEBSOCKET | `/ws/scene/{scene_id}` | router | `app/realtime/handlers.py:20` |

## kinship-assets · main (55)

| Method | Declared path | Router | Source |
|---|---|---|---|
| GET | `/` | router | `src/routes/assets.ts:93` |
| GET | `/:id` | router | `src/routes/assets.ts:138` |
| POST | `/` | router | `src/routes/assets.ts:200` |
| PATCH | `/:id` | router | `src/routes/assets.ts:281` |
| DELETE | `/:id` | router | `src/routes/assets.ts:317` |
| GET | `/:id/animation` | router | `src/routes/assets.ts:354` |
| GET | `/:id/metadata` | router | `src/routes/assets.ts:387` |
| POST | `/:id/metadata` | router | `src/routes/assets.ts:410` |
| PATCH | `/:id/metadata` | router | `src/routes/assets.ts:437` |
| GET | `/by-facet/:facet` | router | `src/routes/assets.ts:459` |
| GET | `/:id/audit` | router | `src/routes/assets.ts:473` |
| GET | `/knowledge/stats` | router | `src/routes/assets.ts:491` |
| GET | `/:id/knowledge` | router | `src/routes/assets.ts:505` |
| PUT | `/:id/knowledge` | router | `src/routes/assets.ts:523` |
| DELETE | `/:id/knowledge` | router | `src/routes/assets.ts:545` |
| POST | `/backfill-dimensions` | router | `src/routes/assets.ts:563` |
| POST | `/backfill-platform` | router | `src/routes/assets.ts:620` |
| GET | `/` | router | `src/routes/games.ts:41` |
| GET | `/user/:userId` | router | `src/routes/games.ts:102` |
| POST | `/by-ids` | router | `src/routes/games.ts:150` |
| GET | `/:id` | router | `src/routes/games.ts:183` |
| POST | `/` | router | `src/routes/games.ts:236` |
| PATCH | `/:id` | router | `src/routes/games.ts:264` |
| DELETE | `/:id` | router | `src/routes/games.ts:296` |
| GET | `/` | router | `src/routes/health.ts:19` |
| GET | `/` | router | `src/routes/platforms.ts:44` |
| GET | `/:id` | router | `src/routes/platforms.ts:87` |
| GET | `/slug/:slug` | router | `src/routes/platforms.ts:118` |
| GET | `/handle/:handle` | router | `src/routes/platforms.ts:149` |
| GET | `/:id/projects` | router | `src/routes/platforms.ts:179` |
| POST | `/` | router | `src/routes/platforms.ts:241` |
| PATCH | `/:id` | router | `src/routes/platforms.ts:276` |
| POST | `/:id/assign-assets` | router | `src/routes/platforms.ts:323` |
| POST | `/:id/assign-all-unassigned` | router | `src/routes/platforms.ts:356` |
| DELETE | `/:id` | router | `src/routes/platforms.ts:386` |
| GET | `/` | router | `src/routes/projects.ts:31` |
| GET | `/:id` | router | `src/routes/projects.ts:64` |
| GET | `/handle/:handle` | router | `src/routes/projects.ts:95` |
| POST | `/` | router | `src/routes/projects.ts:160` |
| PATCH | `/:id` | router | `src/routes/projects.ts:197` |
| DELETE | `/:id` | router | `src/routes/projects.ts:234` |
| GET | `/` | router | `src/routes/scenes.ts:29` |
| GET | `/:id` | router | `src/routes/scenes.ts:65` |
| GET | `/:id/manifest` | router | `src/routes/scenes.ts:114` |
| POST | `/` | router | `src/routes/scenes.ts:152` |
| PATCH | `/:id` | router | `src/routes/scenes.ts:187` |
| DELETE | `/:id` | router | `src/routes/scenes.ts:228` |
| POST | `/:id/assets/:assetId` | router | `src/routes/scenes.ts:282` |
| DELETE | `/:id/assets/:assetId` | router | `src/routes/scenes.ts:318` |
| POST | `/save` | router | `src/routes/scores.ts:61` |
| GET | `/list` | router | `src/routes/scores.ts:154` |
| DELETE | `/delete` | router | `src/routes/scores.ts:230` |
| POST | `/` | router | `src/routes/upload.ts:39` |
| DELETE | `/*` | router | `src/routes/upload.ts:92` |
| GET | `/*/signed-url` | router | `src/routes/upload.ts:135` |

## kinship-assets · dev (55)

| Method | Declared path | Router | Source |
|---|---|---|---|
| GET | `/` | router | `src/routes/assets.ts:93` |
| GET | `/:id` | router | `src/routes/assets.ts:138` |
| POST | `/` | router | `src/routes/assets.ts:200` |
| PATCH | `/:id` | router | `src/routes/assets.ts:281` |
| DELETE | `/:id` | router | `src/routes/assets.ts:317` |
| GET | `/:id/animation` | router | `src/routes/assets.ts:354` |
| GET | `/:id/metadata` | router | `src/routes/assets.ts:387` |
| POST | `/:id/metadata` | router | `src/routes/assets.ts:410` |
| PATCH | `/:id/metadata` | router | `src/routes/assets.ts:437` |
| GET | `/by-facet/:facet` | router | `src/routes/assets.ts:459` |
| GET | `/:id/audit` | router | `src/routes/assets.ts:473` |
| GET | `/knowledge/stats` | router | `src/routes/assets.ts:491` |
| GET | `/:id/knowledge` | router | `src/routes/assets.ts:505` |
| PUT | `/:id/knowledge` | router | `src/routes/assets.ts:523` |
| DELETE | `/:id/knowledge` | router | `src/routes/assets.ts:545` |
| POST | `/backfill-dimensions` | router | `src/routes/assets.ts:563` |
| POST | `/backfill-platform` | router | `src/routes/assets.ts:620` |
| GET | `/` | router | `src/routes/games.ts:41` |
| GET | `/user/:userId` | router | `src/routes/games.ts:102` |
| POST | `/by-ids` | router | `src/routes/games.ts:150` |
| GET | `/:id` | router | `src/routes/games.ts:183` |
| POST | `/` | router | `src/routes/games.ts:236` |
| PATCH | `/:id` | router | `src/routes/games.ts:264` |
| DELETE | `/:id` | router | `src/routes/games.ts:296` |
| GET | `/` | router | `src/routes/health.ts:19` |
| GET | `/` | router | `src/routes/platforms.ts:44` |
| GET | `/:id` | router | `src/routes/platforms.ts:87` |
| GET | `/slug/:slug` | router | `src/routes/platforms.ts:118` |
| GET | `/handle/:handle` | router | `src/routes/platforms.ts:149` |
| GET | `/:id/projects` | router | `src/routes/platforms.ts:179` |
| POST | `/` | router | `src/routes/platforms.ts:241` |
| PATCH | `/:id` | router | `src/routes/platforms.ts:276` |
| POST | `/:id/assign-assets` | router | `src/routes/platforms.ts:323` |
| POST | `/:id/assign-all-unassigned` | router | `src/routes/platforms.ts:356` |
| DELETE | `/:id` | router | `src/routes/platforms.ts:386` |
| GET | `/` | router | `src/routes/projects.ts:31` |
| GET | `/:id` | router | `src/routes/projects.ts:64` |
| GET | `/handle/:handle` | router | `src/routes/projects.ts:95` |
| POST | `/` | router | `src/routes/projects.ts:160` |
| PATCH | `/:id` | router | `src/routes/projects.ts:197` |
| DELETE | `/:id` | router | `src/routes/projects.ts:234` |
| GET | `/` | router | `src/routes/scenes.ts:29` |
| GET | `/:id` | router | `src/routes/scenes.ts:65` |
| GET | `/:id/manifest` | router | `src/routes/scenes.ts:114` |
| POST | `/` | router | `src/routes/scenes.ts:152` |
| PATCH | `/:id` | router | `src/routes/scenes.ts:187` |
| DELETE | `/:id` | router | `src/routes/scenes.ts:228` |
| POST | `/:id/assets/:assetId` | router | `src/routes/scenes.ts:282` |
| DELETE | `/:id/assets/:assetId` | router | `src/routes/scenes.ts:318` |
| POST | `/save` | router | `src/routes/scores.ts:61` |
| GET | `/list` | router | `src/routes/scores.ts:154` |
| DELETE | `/delete` | router | `src/routes/scores.ts:230` |
| POST | `/` | router | `src/routes/upload.ts:39` |
| DELETE | `/*` | router | `src/routes/upload.ts:92` |
| GET | `/*/signed-url` | router | `src/routes/upload.ts:135` |

