# Social Listening topic request paths

The actual browser walkthrough found that editing a saved topic returned **Not Found**. Create/list worked, but **Save changes** requested `PUT /social/topics//<id>` and the API returned 404. The extra include phrase therefore disappeared after reload.

## Repair

In `websitemint/packages/ui/src/components/crm/social/modern-social-listening.tsx`, topic save, enabled toggle and delete now pass an encoded ID without a leading slash to `processData`. The shared `getResourcePath` already inserts that separator. Per-topic backfill uses the same encoded segment followed by `/backfill`; its endpoint base in `api-endpoints.ts` is now `social/topics`, matching `POST /social/topics/:id/backfill` instead of adding `backfill` twice.

Only those request arguments and the one backfill endpoint base were changed. Existing unrelated source changes were preserved. No backend restart or production change is required for this source patch.

## Validation

From the docs checkout:

```sh
node tutorials-plan/application-fixes/assets/social-topic-paths/verify.cjs
```

[12 checks passed](assets/social-topic-paths/verification.txt). The verifier reads actual component call expressions, executes the actual shared path builder and checks the controller's route declarations. It covers normal and URL-sensitive IDs for save/toggle/delete/backfill; its negative control reproduces the original double slash. It invokes no HTTP, provider, database or job. `git diff --check` passed for the edited files.

Actual browser: captured the original 404; after the patch, **Save changes** succeeded and closed the editor. The fresh course execution record contains the final readback status and screenshots. Toggle, delete and backfill have route-contract verification only; the walkthrough does not delete its fixture or run backfill.
