feat(bsky): bookmarks, multipart video, searchPostsV2 and the new app.bsky surface #127

Closed
opened 2026-09-24 12:39:07 +00:00 by Grandiras · 0 comments
Owner

Part of the v0.7.0 update cycle (wave 5). New app.bsky.* surface. Coverage today is 67 of 137 upstream endpoints and records. Write every model with the typed identifiers, open unions and extension data established earlier in this cycle. Every NSID and property must pass the drift test.

Must

  • app.bsky.bookmark.createBookmark / deleteBookmark / getBookmarks (+ Enumerate).
  • Multipart video upload (upstream 2026-08-12): startUpload, uploadPart (octet-stream body + jobId/partNumber), finishUpload, getUploadStatus, abortUpload, plus a convenience UploadVideoAsync(Stream, …) that chunks, retries parts and polls the job. JobStatus gets the new states and failureCode. Document the 300 MB limit.
  • app.bsky.feed.searchPostsV2 (all filters, detectedQueryLanguages).
  • app.bsky.notification.unregisterPush.

Should

  • Notifications: getPreferences, putPreferencesV2, listActivitySubscriptions, putActivitySubscription, and the declaration record.
  • Records: graph.referencelistoptout, graph.verification, actor.status, actor.contentVisibilityDeclaration.
  • Graph: getListsWithMembership, getStarterPacksWithMembership, searchStarterPacksV2.
  • Embeds: embed.getEmbedExternalView.
  • Drafts: app.bsky.draft.* (4).
  • Feeds: feed.sendInteractions.
  • Threads: unspecced.getPostThreadV2 / getPostThreadOtherV2, which the app uses for threads.
  • Age assurance: app.bsky.ageassurance.begin / getConfig / getState.

Register new sub-clients on client.Bsky. Add unit tests per endpoint (request shape and response binding against upstream-shaped fixtures). CHANGELOG Added.

Part of the v0.7.0 update cycle (wave 5). New `app.bsky.*` surface. Coverage today is 67 of 137 upstream endpoints and records. Write every model with the typed identifiers, open unions and extension data established earlier in this cycle. Every NSID and property must pass the drift test. ## Must - [ ] `app.bsky.bookmark.createBookmark` / `deleteBookmark` / `getBookmarks` (+ `Enumerate`). - [ ] Multipart video upload (upstream 2026-08-12): `startUpload`, `uploadPart` (octet-stream body + `jobId`/`partNumber`), `finishUpload`, `getUploadStatus`, `abortUpload`, plus a convenience `UploadVideoAsync(Stream, …)` that chunks, retries parts and polls the job. `JobStatus` gets the new states and `failureCode`. Document the 300 MB limit. - [ ] `app.bsky.feed.searchPostsV2` (all filters, `detectedQueryLanguages`). - [ ] `app.bsky.notification.unregisterPush`. ## Should - [ ] Notifications: `getPreferences`, `putPreferencesV2`, `listActivitySubscriptions`, `putActivitySubscription`, and the `declaration` record. - [ ] Records: `graph.referencelistoptout`, `graph.verification`, `actor.status`, `actor.contentVisibilityDeclaration`. - [ ] Graph: `getListsWithMembership`, `getStarterPacksWithMembership`, `searchStarterPacksV2`. - [ ] Embeds: `embed.getEmbedExternalView`. - [ ] Drafts: `app.bsky.draft.*` (4). - [ ] Feeds: `feed.sendInteractions`. - [ ] Threads: `unspecced.getPostThreadV2` / `getPostThreadOtherV2`, which the app uses for threads. - [ ] Age assurance: `app.bsky.ageassurance.begin` / `getConfig` / `getState`. Register new sub-clients on `client.Bsky`. Add unit tests per endpoint (request shape and response binding against upstream-shaped fixtures). CHANGELOG `Added`.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Grandiras/ATProto.NET#127
No description provided.