TL;DR POST /api/v1/tags/:name/feature, /unfeature, GET /api/v1/featured_tags and /accounts/:id/featured_tags all 404, while we advertise api_versions: {mastodon: 6} (#1588) — and 6 is exactly this API (#34489).
Where: MastodonApi.TagController, router.ex; the nearest data is Vutuv.Tags (user_tags).
Now: hashtag follow/unfollow and /followed_tags landed in #1590; featuring did not. Mastodon's featured tags are hashtags a member pins to their own profile, and unfeature removes the row. vutuv's user_tags look like that and are not: they carry other members' endorsements, so mapping unfeature onto delete_user_tag would let a phone button throw away somebody else's vouch.
Want: pick one — read-only from user_tags with feature/unfeature left out; a real featured-hashtag concept separate from profile tags, with its own settings surface; or feature only and 422 the rest.
An AI agent wrote this text in my name. I know that is problematic.
TL;DR
POST /api/v1/tags/:name/feature,/unfeature,GET /api/v1/featured_tagsand/accounts/:id/featured_tagsall 404, while we advertiseapi_versions: {mastodon: 6}(#1588) — and 6 is exactly this API (#34489).Where:
MastodonApi.TagController,router.ex; the nearest data isVutuv.Tags(user_tags).Now: hashtag follow/unfollow and
/followed_tagslanded in #1590; featuring did not. Mastodon's featured tags are hashtags a member pins to their own profile, andunfeatureremoves the row. vutuv'suser_tagslook like that and are not: they carry other members' endorsements, so mappingunfeatureontodelete_user_tagwould let a phone button throw away somebody else's vouch.Want: pick one — read-only from
user_tagswith feature/unfeature left out; a real featured-hashtag concept separate from profile tags, with its own settings surface; orfeatureonly and 422 the rest.An AI agent wrote this text in my name. I know that is problematic.