Summary
Ten app.bsky.unspecced.* lexicons are present upstream but missing from ATProtoKit, spanning two product surfaces: the post thread v2 algorithm and the Explore/onboarding per-rail user suggestions. Each maps cleanly onto an already-wrapped unspecced sibling, so the additions are mechanical. (getAgeAssuranceState and searchStarterPacksSkeleton were dropped from this request — they are already wrapped in ATProtoKit.)
Pain points
- Onboarding rail (
getOnboardingSuggestedUsersSkeleton + getSuggestedOnboardingUsers) — no typed access to the onboarding "who to follow" surface.
- Post thread v2 (
getPostThreadOtherV2 / getPostThreadV2) is the new threaded view algorithm. Clients on the typed pipeline are stuck on the v1 app.bsky.feed.getPostThread.
- Explore per-rail suggestions — Bluesky's Explore tab has separate rails (Discover / Explore / SeeMore) each backed by a dedicated
getSuggestedUsersFor* (+ Skeleton) endpoint. Without these, third-party clients can only show the generic getSuggestedUsers rail.
Considered Alternatives
Raw XRPC per call site — works but every consumer reimplements the same wrapper shape, and unspecced host routing has to be handled correctly each time.
Is this a breaking change?
No
Library Examples
N/A
Additional Context
Missing lexicons
| Lexicon |
Suggested wrapper |
app.bsky.unspecced.getOnboardingSuggestedUsersSkeleton |
getOnboardingSuggestedUsersSkeleton(...) |
app.bsky.unspecced.getPostThreadOtherV2 |
getPostThreadOtherV2(uri:...) |
app.bsky.unspecced.getPostThreadV2 |
getPostThreadV2(uri:...) |
app.bsky.unspecced.getSuggestedOnboardingUsers |
getSuggestedOnboardingUsers(...) |
app.bsky.unspecced.getSuggestedUsersForDiscover |
getSuggestedUsersForDiscover(...) |
app.bsky.unspecced.getSuggestedUsersForDiscoverSkeleton |
getSuggestedUsersForDiscoverSkeleton(...) |
app.bsky.unspecced.getSuggestedUsersForExplore |
getSuggestedUsersForExplore(...) |
app.bsky.unspecced.getSuggestedUsersForExploreSkeleton |
getSuggestedUsersForExploreSkeleton(...) |
app.bsky.unspecced.getSuggestedUsersForSeeMore |
getSuggestedUsersForSeeMore(...) |
app.bsky.unspecced.getSuggestedUsersForSeeMoreSkeleton |
getSuggestedUsersForSeeMoreSkeleton(...) |
References
Summary
Ten
app.bsky.unspecced.*lexicons are present upstream but missing from ATProtoKit, spanning two product surfaces: the post thread v2 algorithm and the Explore/onboarding per-rail user suggestions. Each maps cleanly onto an already-wrappedunspeccedsibling, so the additions are mechanical. (getAgeAssuranceStateandsearchStarterPacksSkeletonwere dropped from this request — they are already wrapped in ATProtoKit.)Pain points
getOnboardingSuggestedUsersSkeleton+getSuggestedOnboardingUsers) — no typed access to the onboarding "who to follow" surface.getPostThreadOtherV2/getPostThreadV2) is the new threaded view algorithm. Clients on the typed pipeline are stuck on the v1app.bsky.feed.getPostThread.getSuggestedUsersFor*(+ Skeleton) endpoint. Without these, third-party clients can only show the genericgetSuggestedUsersrail.Considered Alternatives
Raw XRPC per call site — works but every consumer reimplements the same wrapper shape, and
unspeccedhost routing has to be handled correctly each time.Is this a breaking change?
No
Library Examples
N/A
Additional Context
Missing lexicons
app.bsky.unspecced.getOnboardingSuggestedUsersSkeletongetOnboardingSuggestedUsersSkeleton(...)app.bsky.unspecced.getPostThreadOtherV2getPostThreadOtherV2(uri:...)app.bsky.unspecced.getPostThreadV2getPostThreadV2(uri:...)app.bsky.unspecced.getSuggestedOnboardingUsersgetSuggestedOnboardingUsers(...)app.bsky.unspecced.getSuggestedUsersForDiscovergetSuggestedUsersForDiscover(...)app.bsky.unspecced.getSuggestedUsersForDiscoverSkeletongetSuggestedUsersForDiscoverSkeleton(...)app.bsky.unspecced.getSuggestedUsersForExploregetSuggestedUsersForExplore(...)app.bsky.unspecced.getSuggestedUsersForExploreSkeletongetSuggestedUsersForExploreSkeleton(...)app.bsky.unspecced.getSuggestedUsersForSeeMoregetSuggestedUsersForSeeMore(...)app.bsky.unspecced.getSuggestedUsersForSeeMoreSkeletongetSuggestedUsersForSeeMoreSkeleton(...)References
Sources/ATProtoKit/Models/Lexicons/app.bsky/Unspecced/,Sources/ATProtoKit/APIReference/AppBskyAPI/