@atproto/ozone 0.0.8 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/api/moderation/util.d.ts +1 -1
  3. package/dist/db/index.js +300 -16
  4. package/dist/db/index.js.map +3 -3
  5. package/dist/db/migrations/20240208T213404429Z-add-tags-column-to-moderation-subject.d.ts +3 -0
  6. package/dist/db/migrations/index.d.ts +1 -0
  7. package/dist/db/schema/moderation_event.d.ts +3 -1
  8. package/dist/db/schema/moderation_subject_status.d.ts +1 -0
  9. package/dist/index.js +1193 -453
  10. package/dist/index.js.map +3 -3
  11. package/dist/lexicon/lexicons.d.ts +153 -5
  12. package/dist/lexicon/types/app/bsky/actor/defs.d.ts +1 -0
  13. package/dist/lexicon/types/app/bsky/actor/getPreferences.d.ts +2 -2
  14. package/dist/lexicon/types/app/bsky/actor/getProfile.d.ts +2 -2
  15. package/dist/lexicon/types/app/bsky/actor/getProfiles.d.ts +2 -2
  16. package/dist/lexicon/types/app/bsky/actor/getSuggestions.d.ts +2 -2
  17. package/dist/lexicon/types/app/bsky/actor/searchActors.d.ts +2 -2
  18. package/dist/lexicon/types/app/bsky/actor/searchActorsTypeahead.d.ts +2 -2
  19. package/dist/lexicon/types/app/bsky/feed/describeFeedGenerator.d.ts +2 -2
  20. package/dist/lexicon/types/app/bsky/feed/getActorFeeds.d.ts +2 -2
  21. package/dist/lexicon/types/app/bsky/feed/getActorLikes.d.ts +2 -2
  22. package/dist/lexicon/types/app/bsky/feed/getAuthorFeed.d.ts +2 -2
  23. package/dist/lexicon/types/app/bsky/feed/getFeed.d.ts +2 -2
  24. package/dist/lexicon/types/app/bsky/feed/getFeedGenerator.d.ts +2 -2
  25. package/dist/lexicon/types/app/bsky/feed/getFeedGenerators.d.ts +2 -2
  26. package/dist/lexicon/types/app/bsky/feed/getFeedSkeleton.d.ts +2 -2
  27. package/dist/lexicon/types/app/bsky/feed/getLikes.d.ts +2 -2
  28. package/dist/lexicon/types/app/bsky/feed/getListFeed.d.ts +2 -2
  29. package/dist/lexicon/types/app/bsky/feed/getPostThread.d.ts +2 -2
  30. package/dist/lexicon/types/app/bsky/feed/getPosts.d.ts +2 -2
  31. package/dist/lexicon/types/app/bsky/feed/getRepostedBy.d.ts +2 -2
  32. package/dist/lexicon/types/app/bsky/feed/getSuggestedFeeds.d.ts +2 -2
  33. package/dist/lexicon/types/app/bsky/feed/getTimeline.d.ts +2 -2
  34. package/dist/lexicon/types/app/bsky/feed/searchPosts.d.ts +2 -2
  35. package/dist/lexicon/types/app/bsky/graph/getBlocks.d.ts +2 -2
  36. package/dist/lexicon/types/app/bsky/graph/getFollowers.d.ts +2 -2
  37. package/dist/lexicon/types/app/bsky/graph/getFollows.d.ts +2 -2
  38. package/dist/lexicon/types/app/bsky/graph/getList.d.ts +2 -2
  39. package/dist/lexicon/types/app/bsky/graph/getListBlocks.d.ts +2 -2
  40. package/dist/lexicon/types/app/bsky/graph/getListMutes.d.ts +2 -2
  41. package/dist/lexicon/types/app/bsky/graph/getLists.d.ts +2 -2
  42. package/dist/lexicon/types/app/bsky/graph/getMutes.d.ts +2 -2
  43. package/dist/lexicon/types/app/bsky/graph/getRelationships.d.ts +2 -2
  44. package/dist/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.d.ts +2 -2
  45. package/dist/lexicon/types/app/bsky/notification/getUnreadCount.d.ts +2 -2
  46. package/dist/lexicon/types/app/bsky/notification/listNotifications.d.ts +2 -2
  47. package/dist/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.d.ts +2 -2
  48. package/dist/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.d.ts +2 -2
  49. package/dist/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.d.ts +2 -2
  50. package/dist/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.d.ts +2 -2
  51. package/dist/lexicon/types/com/atproto/admin/createCommunicationTemplate.d.ts +2 -2
  52. package/dist/lexicon/types/com/atproto/admin/defs.d.ts +9 -0
  53. package/dist/lexicon/types/com/atproto/admin/emitModerationEvent.d.ts +3 -3
  54. package/dist/lexicon/types/com/atproto/admin/getAccountInfo.d.ts +2 -2
  55. package/dist/lexicon/types/com/atproto/admin/getAccountInfos.d.ts +2 -2
  56. package/dist/lexicon/types/com/atproto/admin/getInviteCodes.d.ts +2 -2
  57. package/dist/lexicon/types/com/atproto/admin/getModerationEvent.d.ts +2 -2
  58. package/dist/lexicon/types/com/atproto/admin/getRecord.d.ts +2 -2
  59. package/dist/lexicon/types/com/atproto/admin/getRepo.d.ts +2 -2
  60. package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.d.ts +2 -2
  61. package/dist/lexicon/types/com/atproto/admin/listCommunicationTemplates.d.ts +2 -2
  62. package/dist/lexicon/types/com/atproto/admin/queryModerationEvents.d.ts +4 -2
  63. package/dist/lexicon/types/com/atproto/admin/queryModerationStatuses.d.ts +4 -2
  64. package/dist/lexicon/types/com/atproto/admin/searchRepos.d.ts +2 -2
  65. package/dist/lexicon/types/com/atproto/admin/sendEmail.d.ts +2 -2
  66. package/dist/lexicon/types/com/atproto/admin/updateCommunicationTemplate.d.ts +2 -2
  67. package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.d.ts +2 -2
  68. package/dist/lexicon/types/com/atproto/identity/resolveHandle.d.ts +2 -2
  69. package/dist/lexicon/types/com/atproto/label/queryLabels.d.ts +2 -2
  70. package/dist/lexicon/types/com/atproto/moderation/createReport.d.ts +2 -2
  71. package/dist/lexicon/types/com/atproto/repo/createRecord.d.ts +2 -2
  72. package/dist/lexicon/types/com/atproto/repo/describeRepo.d.ts +2 -2
  73. package/dist/lexicon/types/com/atproto/repo/getRecord.d.ts +2 -2
  74. package/dist/lexicon/types/com/atproto/repo/listRecords.d.ts +2 -2
  75. package/dist/lexicon/types/com/atproto/repo/putRecord.d.ts +2 -2
  76. package/dist/lexicon/types/com/atproto/repo/uploadBlob.d.ts +2 -2
  77. package/dist/lexicon/types/com/atproto/server/createAccount.d.ts +2 -2
  78. package/dist/lexicon/types/com/atproto/server/createAppPassword.d.ts +2 -2
  79. package/dist/lexicon/types/com/atproto/server/createInviteCode.d.ts +2 -2
  80. package/dist/lexicon/types/com/atproto/server/createInviteCodes.d.ts +2 -2
  81. package/dist/lexicon/types/com/atproto/server/createSession.d.ts +2 -2
  82. package/dist/lexicon/types/com/atproto/server/describeServer.d.ts +2 -2
  83. package/dist/lexicon/types/com/atproto/server/getAccountInviteCodes.d.ts +2 -2
  84. package/dist/lexicon/types/com/atproto/server/getSession.d.ts +2 -2
  85. package/dist/lexicon/types/com/atproto/server/listAppPasswords.d.ts +2 -2
  86. package/dist/lexicon/types/com/atproto/server/refreshSession.d.ts +2 -2
  87. package/dist/lexicon/types/com/atproto/server/requestEmailUpdate.d.ts +2 -2
  88. package/dist/lexicon/types/com/atproto/server/reserveSigningKey.d.ts +2 -2
  89. package/dist/lexicon/types/com/atproto/sync/getBlob.d.ts +2 -2
  90. package/dist/lexicon/types/com/atproto/sync/getBlocks.d.ts +2 -2
  91. package/dist/lexicon/types/com/atproto/sync/getCheckout.d.ts +2 -2
  92. package/dist/lexicon/types/com/atproto/sync/getHead.d.ts +2 -2
  93. package/dist/lexicon/types/com/atproto/sync/getLatestCommit.d.ts +2 -2
  94. package/dist/lexicon/types/com/atproto/sync/getRecord.d.ts +2 -2
  95. package/dist/lexicon/types/com/atproto/sync/getRepo.d.ts +2 -2
  96. package/dist/lexicon/types/com/atproto/sync/listBlobs.d.ts +2 -2
  97. package/dist/lexicon/types/com/atproto/sync/listRepos.d.ts +2 -2
  98. package/dist/lexicon/types/com/atproto/temp/checkSignupQueue.d.ts +2 -2
  99. package/dist/lexicon/types/com/atproto/temp/fetchLabels.d.ts +2 -2
  100. package/dist/lexicon/types/com/atproto/temp/importRepo.d.ts +2 -2
  101. package/dist/lexicon/types/com/atproto/temp/transferAccount.d.ts +2 -2
  102. package/dist/logger.d.ts +1 -0
  103. package/dist/mod-service/index.d.ts +18 -4
  104. package/dist/mod-service/lang.d.ts +15 -0
  105. package/dist/mod-service/status.d.ts +1 -1
  106. package/dist/mod-service/types.d.ts +1 -1
  107. package/dist/mod-service/views.d.ts +2 -1
  108. package/package.json +6 -6
  109. package/src/api/admin/emitModerationEvent.ts +22 -10
  110. package/src/api/admin/queryModerationEvents.ts +4 -0
  111. package/src/api/admin/queryModerationStatuses.ts +4 -0
  112. package/src/api/moderation/createReport.ts +15 -4
  113. package/src/api/moderation/util.ts +1 -0
  114. package/src/db/migrations/20240208T213404429Z-add-tags-column-to-moderation-subject.ts +31 -0
  115. package/src/db/migrations/index.ts +1 -0
  116. package/src/db/schema/moderation_event.ts +3 -0
  117. package/src/db/schema/moderation_subject_status.ts +1 -0
  118. package/src/lexicon/lexicons.ts +401 -123
  119. package/src/lexicon/types/app/bsky/actor/defs.ts +2 -0
  120. package/src/lexicon/types/app/bsky/actor/getPreferences.ts +2 -2
  121. package/src/lexicon/types/app/bsky/actor/getProfile.ts +3 -2
  122. package/src/lexicon/types/app/bsky/actor/getProfiles.ts +2 -2
  123. package/src/lexicon/types/app/bsky/actor/getSuggestions.ts +2 -2
  124. package/src/lexicon/types/app/bsky/actor/profile.ts +3 -0
  125. package/src/lexicon/types/app/bsky/actor/putPreferences.ts +1 -1
  126. package/src/lexicon/types/app/bsky/actor/searchActors.ts +2 -2
  127. package/src/lexicon/types/app/bsky/actor/searchActorsTypeahead.ts +2 -2
  128. package/src/lexicon/types/app/bsky/embed/external.ts +1 -0
  129. package/src/lexicon/types/app/bsky/embed/images.ts +4 -0
  130. package/src/lexicon/types/app/bsky/embed/record.ts +1 -0
  131. package/src/lexicon/types/app/bsky/feed/defs.ts +1 -0
  132. package/src/lexicon/types/app/bsky/feed/describeFeedGenerator.ts +2 -2
  133. package/src/lexicon/types/app/bsky/feed/getActorFeeds.ts +2 -2
  134. package/src/lexicon/types/app/bsky/feed/getActorLikes.ts +2 -2
  135. package/src/lexicon/types/app/bsky/feed/getAuthorFeed.ts +3 -2
  136. package/src/lexicon/types/app/bsky/feed/getFeed.ts +2 -2
  137. package/src/lexicon/types/app/bsky/feed/getFeedGenerator.ts +5 -2
  138. package/src/lexicon/types/app/bsky/feed/getFeedGenerators.ts +2 -2
  139. package/src/lexicon/types/app/bsky/feed/getFeedSkeleton.ts +3 -2
  140. package/src/lexicon/types/app/bsky/feed/getLikes.ts +4 -2
  141. package/src/lexicon/types/app/bsky/feed/getListFeed.ts +3 -2
  142. package/src/lexicon/types/app/bsky/feed/getPostThread.ts +5 -2
  143. package/src/lexicon/types/app/bsky/feed/getPosts.ts +3 -2
  144. package/src/lexicon/types/app/bsky/feed/getRepostedBy.ts +4 -2
  145. package/src/lexicon/types/app/bsky/feed/getSuggestedFeeds.ts +2 -2
  146. package/src/lexicon/types/app/bsky/feed/getTimeline.ts +3 -2
  147. package/src/lexicon/types/app/bsky/feed/post.ts +5 -1
  148. package/src/lexicon/types/app/bsky/feed/searchPosts.ts +2 -2
  149. package/src/lexicon/types/app/bsky/feed/threadgate.ts +1 -0
  150. package/src/lexicon/types/app/bsky/graph/block.ts +1 -0
  151. package/src/lexicon/types/app/bsky/graph/getBlocks.ts +2 -2
  152. package/src/lexicon/types/app/bsky/graph/getFollowers.ts +2 -2
  153. package/src/lexicon/types/app/bsky/graph/getFollows.ts +2 -2
  154. package/src/lexicon/types/app/bsky/graph/getList.ts +3 -2
  155. package/src/lexicon/types/app/bsky/graph/getListBlocks.ts +2 -2
  156. package/src/lexicon/types/app/bsky/graph/getListMutes.ts +2 -2
  157. package/src/lexicon/types/app/bsky/graph/getLists.ts +3 -2
  158. package/src/lexicon/types/app/bsky/graph/getMutes.ts +2 -2
  159. package/src/lexicon/types/app/bsky/graph/getRelationships.ts +4 -2
  160. package/src/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.ts +2 -2
  161. package/src/lexicon/types/app/bsky/graph/list.ts +1 -0
  162. package/src/lexicon/types/app/bsky/graph/listblock.ts +1 -0
  163. package/src/lexicon/types/app/bsky/graph/listitem.ts +2 -0
  164. package/src/lexicon/types/app/bsky/graph/muteActor.ts +1 -1
  165. package/src/lexicon/types/app/bsky/graph/muteActorList.ts +1 -1
  166. package/src/lexicon/types/app/bsky/graph/unmuteActor.ts +1 -1
  167. package/src/lexicon/types/app/bsky/graph/unmuteActorList.ts +1 -1
  168. package/src/lexicon/types/app/bsky/notification/getUnreadCount.ts +2 -2
  169. package/src/lexicon/types/app/bsky/notification/listNotifications.ts +2 -2
  170. package/src/lexicon/types/app/bsky/notification/registerPush.ts +1 -1
  171. package/src/lexicon/types/app/bsky/notification/updateSeen.ts +1 -1
  172. package/src/lexicon/types/app/bsky/richtext/facet.ts +5 -4
  173. package/src/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.ts +2 -2
  174. package/src/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.ts +2 -2
  175. package/src/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.ts +2 -2
  176. package/src/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.ts +2 -2
  177. package/src/lexicon/types/com/atproto/admin/createCommunicationTemplate.ts +2 -2
  178. package/src/lexicon/types/com/atproto/admin/defs.ts +24 -0
  179. package/src/lexicon/types/com/atproto/admin/deleteAccount.ts +1 -1
  180. package/src/lexicon/types/com/atproto/admin/deleteCommunicationTemplate.ts +1 -1
  181. package/src/lexicon/types/com/atproto/admin/disableAccountInvites.ts +1 -1
  182. package/src/lexicon/types/com/atproto/admin/disableInviteCodes.ts +1 -1
  183. package/src/lexicon/types/com/atproto/admin/emitModerationEvent.ts +3 -2
  184. package/src/lexicon/types/com/atproto/admin/enableAccountInvites.ts +1 -1
  185. package/src/lexicon/types/com/atproto/admin/getAccountInfo.ts +2 -2
  186. package/src/lexicon/types/com/atproto/admin/getAccountInfos.ts +2 -2
  187. package/src/lexicon/types/com/atproto/admin/getInviteCodes.ts +2 -2
  188. package/src/lexicon/types/com/atproto/admin/getModerationEvent.ts +2 -2
  189. package/src/lexicon/types/com/atproto/admin/getRecord.ts +2 -2
  190. package/src/lexicon/types/com/atproto/admin/getRepo.ts +2 -2
  191. package/src/lexicon/types/com/atproto/admin/getSubjectStatus.ts +2 -2
  192. package/src/lexicon/types/com/atproto/admin/listCommunicationTemplates.ts +2 -2
  193. package/src/lexicon/types/com/atproto/admin/queryModerationEvents.ts +6 -2
  194. package/src/lexicon/types/com/atproto/admin/queryModerationStatuses.ts +4 -2
  195. package/src/lexicon/types/com/atproto/admin/searchRepos.ts +2 -2
  196. package/src/lexicon/types/com/atproto/admin/sendEmail.ts +2 -2
  197. package/src/lexicon/types/com/atproto/admin/updateAccountEmail.ts +1 -1
  198. package/src/lexicon/types/com/atproto/admin/updateAccountHandle.ts +1 -1
  199. package/src/lexicon/types/com/atproto/admin/updateCommunicationTemplate.ts +2 -2
  200. package/src/lexicon/types/com/atproto/admin/updateSubjectStatus.ts +2 -2
  201. package/src/lexicon/types/com/atproto/identity/resolveHandle.ts +2 -2
  202. package/src/lexicon/types/com/atproto/identity/updateHandle.ts +2 -1
  203. package/src/lexicon/types/com/atproto/label/queryLabels.ts +2 -2
  204. package/src/lexicon/types/com/atproto/label/subscribeLabels.ts +1 -1
  205. package/src/lexicon/types/com/atproto/moderation/createReport.ts +3 -2
  206. package/src/lexicon/types/com/atproto/repo/applyWrites.ts +7 -6
  207. package/src/lexicon/types/com/atproto/repo/createRecord.ts +6 -6
  208. package/src/lexicon/types/com/atproto/repo/deleteRecord.ts +3 -3
  209. package/src/lexicon/types/com/atproto/repo/describeRepo.ts +5 -2
  210. package/src/lexicon/types/com/atproto/repo/getRecord.ts +3 -3
  211. package/src/lexicon/types/com/atproto/repo/listRecords.ts +2 -2
  212. package/src/lexicon/types/com/atproto/repo/putRecord.ts +6 -6
  213. package/src/lexicon/types/com/atproto/repo/uploadBlob.ts +2 -2
  214. package/src/lexicon/types/com/atproto/server/confirmEmail.ts +1 -1
  215. package/src/lexicon/types/com/atproto/server/createAccount.ts +10 -2
  216. package/src/lexicon/types/com/atproto/server/createAppPassword.ts +3 -2
  217. package/src/lexicon/types/com/atproto/server/createInviteCode.ts +2 -2
  218. package/src/lexicon/types/com/atproto/server/createInviteCodes.ts +2 -2
  219. package/src/lexicon/types/com/atproto/server/createSession.ts +2 -2
  220. package/src/lexicon/types/com/atproto/server/deleteAccount.ts +1 -1
  221. package/src/lexicon/types/com/atproto/server/deleteSession.ts +1 -1
  222. package/src/lexicon/types/com/atproto/server/describeServer.ts +5 -2
  223. package/src/lexicon/types/com/atproto/server/getAccountInviteCodes.ts +3 -2
  224. package/src/lexicon/types/com/atproto/server/getSession.ts +2 -2
  225. package/src/lexicon/types/com/atproto/server/listAppPasswords.ts +2 -2
  226. package/src/lexicon/types/com/atproto/server/refreshSession.ts +2 -2
  227. package/src/lexicon/types/com/atproto/server/requestAccountDelete.ts +1 -1
  228. package/src/lexicon/types/com/atproto/server/requestEmailConfirmation.ts +1 -1
  229. package/src/lexicon/types/com/atproto/server/requestEmailUpdate.ts +2 -2
  230. package/src/lexicon/types/com/atproto/server/requestPasswordReset.ts +1 -1
  231. package/src/lexicon/types/com/atproto/server/reserveSigningKey.ts +4 -4
  232. package/src/lexicon/types/com/atproto/server/resetPassword.ts +1 -1
  233. package/src/lexicon/types/com/atproto/server/revokeAppPassword.ts +1 -1
  234. package/src/lexicon/types/com/atproto/server/updateEmail.ts +1 -1
  235. package/src/lexicon/types/com/atproto/sync/getBlob.ts +3 -3
  236. package/src/lexicon/types/com/atproto/sync/getBlocks.ts +2 -2
  237. package/src/lexicon/types/com/atproto/sync/getCheckout.ts +2 -2
  238. package/src/lexicon/types/com/atproto/sync/getHead.ts +2 -2
  239. package/src/lexicon/types/com/atproto/sync/getLatestCommit.ts +2 -2
  240. package/src/lexicon/types/com/atproto/sync/getRecord.ts +3 -2
  241. package/src/lexicon/types/com/atproto/sync/getRepo.ts +3 -3
  242. package/src/lexicon/types/com/atproto/sync/listBlobs.ts +2 -2
  243. package/src/lexicon/types/com/atproto/sync/listRepos.ts +3 -2
  244. package/src/lexicon/types/com/atproto/sync/notifyOfUpdate.ts +2 -2
  245. package/src/lexicon/types/com/atproto/sync/requestCrawl.ts +2 -2
  246. package/src/lexicon/types/com/atproto/sync/subscribeRepos.ts +17 -5
  247. package/src/lexicon/types/com/atproto/temp/checkSignupQueue.ts +2 -2
  248. package/src/lexicon/types/com/atproto/temp/fetchLabels.ts +2 -2
  249. package/src/lexicon/types/com/atproto/temp/importRepo.ts +2 -2
  250. package/src/lexicon/types/com/atproto/temp/pushBlob.ts +1 -1
  251. package/src/lexicon/types/com/atproto/temp/requestPhoneVerification.ts +1 -1
  252. package/src/lexicon/types/com/atproto/temp/transferAccount.ts +2 -2
  253. package/src/logger.ts +2 -0
  254. package/src/mod-service/index.ts +60 -10
  255. package/src/mod-service/lang.ts +82 -0
  256. package/src/mod-service/status.ts +18 -4
  257. package/src/mod-service/types.ts +1 -0
  258. package/src/mod-service/views.ts +21 -2
  259. package/tests/__snapshots__/get-record.test.ts.snap +6 -0
  260. package/tests/__snapshots__/get-repo.test.ts.snap +3 -0
  261. package/tests/__snapshots__/moderation-events.test.ts.snap +45 -4
  262. package/tests/__snapshots__/moderation-statuses.test.ts.snap +59 -3
  263. package/tests/__snapshots__/moderation.test.ts.snap +3 -3
  264. package/tests/get-record.test.ts +0 -8
  265. package/tests/moderation-events.test.ts +57 -5
  266. package/tests/moderation-status-tags.test.ts +92 -0
  267. package/tests/moderation-statuses.test.ts +20 -3
package/dist/index.js CHANGED
@@ -15144,7 +15144,7 @@ var require_object_inspect = __commonJS({
15144
15144
  if (isBoolean2(obj)) {
15145
15145
  return markBoxed(booleanValueOf.call(obj));
15146
15146
  }
15147
- if (isString2(obj)) {
15147
+ if (isString3(obj)) {
15148
15148
  return markBoxed(inspect(String(obj)));
15149
15149
  }
15150
15150
  if (!isDate2(obj) && !isRegExp(obj)) {
@@ -15183,7 +15183,7 @@ var require_object_inspect = __commonJS({
15183
15183
  function isError(obj) {
15184
15184
  return toStr(obj) === "[object Error]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj));
15185
15185
  }
15186
- function isString2(obj) {
15186
+ function isString3(obj) {
15187
15187
  return toStr(obj) === "[object String]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj));
15188
15188
  }
15189
15189
  function isNumber2(obj) {
@@ -22264,13 +22264,13 @@ var require_implementation2 = __commonJS({
22264
22264
  var isObject3 = object2 !== null && typeof object2 === "object";
22265
22265
  var isFunction2 = toStr.call(object2) === "[object Function]";
22266
22266
  var isArguments = isArgs(object2);
22267
- var isString2 = isObject3 && toStr.call(object2) === "[object String]";
22267
+ var isString3 = isObject3 && toStr.call(object2) === "[object String]";
22268
22268
  var theKeys = [];
22269
22269
  if (!isObject3 && !isFunction2 && !isArguments) {
22270
22270
  throw new TypeError("Object.keys called on a non-object");
22271
22271
  }
22272
22272
  var skipProto = hasProtoEnumBug && isFunction2;
22273
- if (isString2 && object2.length > 0 && !has.call(object2, 0)) {
22273
+ if (isString3 && object2.length > 0 && !has.call(object2, 0)) {
22274
22274
  for (var i = 0; i < object2.length; ++i) {
22275
22275
  theKeys.push(String(i));
22276
22276
  }
@@ -27864,16 +27864,16 @@ var require_validate = __commonJS({
27864
27864
  const matches = RELATIVE_JSON_POINTER.exec($data);
27865
27865
  if (!matches)
27866
27866
  throw new Error(`Invalid JSON-pointer: ${$data}`);
27867
- const up4 = +matches[1];
27867
+ const up5 = +matches[1];
27868
27868
  jsonPointer = matches[2];
27869
27869
  if (jsonPointer === "#") {
27870
- if (up4 >= dataLevel)
27871
- throw new Error(errorMsg("property/index", up4));
27872
- return dataPathArr[dataLevel - up4];
27870
+ if (up5 >= dataLevel)
27871
+ throw new Error(errorMsg("property/index", up5));
27872
+ return dataPathArr[dataLevel - up5];
27873
27873
  }
27874
- if (up4 > dataLevel)
27875
- throw new Error(errorMsg("data", up4));
27876
- data = dataNames[dataLevel - up4];
27874
+ if (up5 > dataLevel)
27875
+ throw new Error(errorMsg("data", up5));
27876
+ data = dataNames[dataLevel - up5];
27877
27877
  if (!jsonPointer)
27878
27878
  return data;
27879
27879
  }
@@ -27886,8 +27886,8 @@ var require_validate = __commonJS({
27886
27886
  }
27887
27887
  }
27888
27888
  return expr;
27889
- function errorMsg(pointerType, up4) {
27890
- return `Cannot access ${pointerType} ${up4} levels up, current level is ${dataLevel}`;
27889
+ function errorMsg(pointerType, up5) {
27890
+ return `Cannot access ${pointerType} ${up5} levels up, current level is ${dataLevel}`;
27891
27891
  }
27892
27892
  }
27893
27893
  exports.getData = getData;
@@ -33941,7 +33941,7 @@ var require_lib4 = __commonJS({
33941
33941
  preflightContinue: false,
33942
33942
  optionsSuccessStatus: 204
33943
33943
  };
33944
- function isString2(s) {
33944
+ function isString3(s) {
33945
33945
  return typeof s === "string" || s instanceof String;
33946
33946
  }
33947
33947
  function isOriginAllowed(origin, allowedOrigin) {
@@ -33952,7 +33952,7 @@ var require_lib4 = __commonJS({
33952
33952
  }
33953
33953
  }
33954
33954
  return false;
33955
- } else if (isString2(allowedOrigin)) {
33955
+ } else if (isString3(allowedOrigin)) {
33956
33956
  return origin === allowedOrigin;
33957
33957
  } else if (allowedOrigin instanceof RegExp) {
33958
33958
  return allowedOrigin.test(origin);
@@ -33967,7 +33967,7 @@ var require_lib4 = __commonJS({
33967
33967
  key: "Access-Control-Allow-Origin",
33968
33968
  value: "*"
33969
33969
  }]);
33970
- } else if (isString2(options.origin)) {
33970
+ } else if (isString3(options.origin)) {
33971
33971
  headers.push([{
33972
33972
  key: "Access-Control-Allow-Origin",
33973
33973
  value: options.origin
@@ -43357,30 +43357,292 @@ var require_dist2 = __commonJS({
43357
43357
  }
43358
43358
  });
43359
43359
 
43360
- // ../../node_modules/.pnpm/node-gyp-build-optional-packages@5.0.3/node_modules/node-gyp-build-optional-packages/index.js
43360
+ // ../../node_modules/.pnpm/detect-libc@2.0.2/node_modules/detect-libc/lib/process.js
43361
+ var require_process = __commonJS({
43362
+ "../../node_modules/.pnpm/detect-libc@2.0.2/node_modules/detect-libc/lib/process.js"(exports, module2) {
43363
+ "use strict";
43364
+ var isLinux = () => process.platform === "linux";
43365
+ var report = null;
43366
+ var getReport = () => {
43367
+ if (!report) {
43368
+ report = isLinux() && process.report ? process.report.getReport() : {};
43369
+ }
43370
+ return report;
43371
+ };
43372
+ module2.exports = { isLinux, getReport };
43373
+ }
43374
+ });
43375
+
43376
+ // ../../node_modules/.pnpm/detect-libc@2.0.2/node_modules/detect-libc/lib/filesystem.js
43377
+ var require_filesystem = __commonJS({
43378
+ "../../node_modules/.pnpm/detect-libc@2.0.2/node_modules/detect-libc/lib/filesystem.js"(exports, module2) {
43379
+ "use strict";
43380
+ var fs = require("fs");
43381
+ var LDD_PATH = "/usr/bin/ldd";
43382
+ var readFileSync = (path) => fs.readFileSync(path, "utf-8");
43383
+ var readFile = (path) => new Promise((resolve, reject) => {
43384
+ fs.readFile(path, "utf-8", (err, data) => {
43385
+ if (err) {
43386
+ reject(err);
43387
+ } else {
43388
+ resolve(data);
43389
+ }
43390
+ });
43391
+ });
43392
+ module2.exports = {
43393
+ LDD_PATH,
43394
+ readFileSync,
43395
+ readFile
43396
+ };
43397
+ }
43398
+ });
43399
+
43400
+ // ../../node_modules/.pnpm/detect-libc@2.0.2/node_modules/detect-libc/lib/detect-libc.js
43401
+ var require_detect_libc = __commonJS({
43402
+ "../../node_modules/.pnpm/detect-libc@2.0.2/node_modules/detect-libc/lib/detect-libc.js"(exports, module2) {
43403
+ "use strict";
43404
+ var childProcess = require("child_process");
43405
+ var { isLinux, getReport } = require_process();
43406
+ var { LDD_PATH, readFile, readFileSync } = require_filesystem();
43407
+ var cachedFamilyFilesystem;
43408
+ var cachedVersionFilesystem;
43409
+ var command = "getconf GNU_LIBC_VERSION 2>&1 || true; ldd --version 2>&1 || true";
43410
+ var commandOut = "";
43411
+ var safeCommand = () => {
43412
+ if (!commandOut) {
43413
+ return new Promise((resolve) => {
43414
+ childProcess.exec(command, (err, out) => {
43415
+ commandOut = err ? " " : out;
43416
+ resolve(commandOut);
43417
+ });
43418
+ });
43419
+ }
43420
+ return commandOut;
43421
+ };
43422
+ var safeCommandSync = () => {
43423
+ if (!commandOut) {
43424
+ try {
43425
+ commandOut = childProcess.execSync(command, { encoding: "utf8" });
43426
+ } catch (_err) {
43427
+ commandOut = " ";
43428
+ }
43429
+ }
43430
+ return commandOut;
43431
+ };
43432
+ var GLIBC = "glibc";
43433
+ var RE_GLIBC_VERSION = /GLIBC\s(\d+\.\d+)/;
43434
+ var MUSL = "musl";
43435
+ var GLIBC_ON_LDD = GLIBC.toUpperCase();
43436
+ var MUSL_ON_LDD = MUSL.toLowerCase();
43437
+ var isFileMusl = (f) => f.includes("libc.musl-") || f.includes("ld-musl-");
43438
+ var familyFromReport = () => {
43439
+ const report = getReport();
43440
+ if (report.header && report.header.glibcVersionRuntime) {
43441
+ return GLIBC;
43442
+ }
43443
+ if (Array.isArray(report.sharedObjects)) {
43444
+ if (report.sharedObjects.some(isFileMusl)) {
43445
+ return MUSL;
43446
+ }
43447
+ }
43448
+ return null;
43449
+ };
43450
+ var familyFromCommand = (out) => {
43451
+ const [getconf, ldd1] = out.split(/[\r\n]+/);
43452
+ if (getconf && getconf.includes(GLIBC)) {
43453
+ return GLIBC;
43454
+ }
43455
+ if (ldd1 && ldd1.includes(MUSL)) {
43456
+ return MUSL;
43457
+ }
43458
+ return null;
43459
+ };
43460
+ var getFamilyFromLddContent = (content) => {
43461
+ if (content.includes(MUSL_ON_LDD)) {
43462
+ return MUSL;
43463
+ }
43464
+ if (content.includes(GLIBC_ON_LDD)) {
43465
+ return GLIBC;
43466
+ }
43467
+ return null;
43468
+ };
43469
+ var familyFromFilesystem = async () => {
43470
+ if (cachedFamilyFilesystem !== void 0) {
43471
+ return cachedFamilyFilesystem;
43472
+ }
43473
+ cachedFamilyFilesystem = null;
43474
+ try {
43475
+ const lddContent = await readFile(LDD_PATH);
43476
+ cachedFamilyFilesystem = getFamilyFromLddContent(lddContent);
43477
+ } catch (e) {
43478
+ }
43479
+ return cachedFamilyFilesystem;
43480
+ };
43481
+ var familyFromFilesystemSync = () => {
43482
+ if (cachedFamilyFilesystem !== void 0) {
43483
+ return cachedFamilyFilesystem;
43484
+ }
43485
+ cachedFamilyFilesystem = null;
43486
+ try {
43487
+ const lddContent = readFileSync(LDD_PATH);
43488
+ cachedFamilyFilesystem = getFamilyFromLddContent(lddContent);
43489
+ } catch (e) {
43490
+ }
43491
+ return cachedFamilyFilesystem;
43492
+ };
43493
+ var family = async () => {
43494
+ let family2 = null;
43495
+ if (isLinux()) {
43496
+ family2 = await familyFromFilesystem();
43497
+ if (!family2) {
43498
+ family2 = familyFromReport();
43499
+ }
43500
+ if (!family2) {
43501
+ const out = await safeCommand();
43502
+ family2 = familyFromCommand(out);
43503
+ }
43504
+ }
43505
+ return family2;
43506
+ };
43507
+ var familySync = () => {
43508
+ let family2 = null;
43509
+ if (isLinux()) {
43510
+ family2 = familyFromFilesystemSync();
43511
+ if (!family2) {
43512
+ family2 = familyFromReport();
43513
+ }
43514
+ if (!family2) {
43515
+ const out = safeCommandSync();
43516
+ family2 = familyFromCommand(out);
43517
+ }
43518
+ }
43519
+ return family2;
43520
+ };
43521
+ var isNonGlibcLinux = async () => isLinux() && await family() !== GLIBC;
43522
+ var isNonGlibcLinuxSync = () => isLinux() && familySync() !== GLIBC;
43523
+ var versionFromFilesystem = async () => {
43524
+ if (cachedVersionFilesystem !== void 0) {
43525
+ return cachedVersionFilesystem;
43526
+ }
43527
+ cachedVersionFilesystem = null;
43528
+ try {
43529
+ const lddContent = await readFile(LDD_PATH);
43530
+ const versionMatch = lddContent.match(RE_GLIBC_VERSION);
43531
+ if (versionMatch) {
43532
+ cachedVersionFilesystem = versionMatch[1];
43533
+ }
43534
+ } catch (e) {
43535
+ }
43536
+ return cachedVersionFilesystem;
43537
+ };
43538
+ var versionFromFilesystemSync = () => {
43539
+ if (cachedVersionFilesystem !== void 0) {
43540
+ return cachedVersionFilesystem;
43541
+ }
43542
+ cachedVersionFilesystem = null;
43543
+ try {
43544
+ const lddContent = readFileSync(LDD_PATH);
43545
+ const versionMatch = lddContent.match(RE_GLIBC_VERSION);
43546
+ if (versionMatch) {
43547
+ cachedVersionFilesystem = versionMatch[1];
43548
+ }
43549
+ } catch (e) {
43550
+ }
43551
+ return cachedVersionFilesystem;
43552
+ };
43553
+ var versionFromReport = () => {
43554
+ const report = getReport();
43555
+ if (report.header && report.header.glibcVersionRuntime) {
43556
+ return report.header.glibcVersionRuntime;
43557
+ }
43558
+ return null;
43559
+ };
43560
+ var versionSuffix = (s) => s.trim().split(/\s+/)[1];
43561
+ var versionFromCommand = (out) => {
43562
+ const [getconf, ldd1, ldd2] = out.split(/[\r\n]+/);
43563
+ if (getconf && getconf.includes(GLIBC)) {
43564
+ return versionSuffix(getconf);
43565
+ }
43566
+ if (ldd1 && ldd2 && ldd1.includes(MUSL)) {
43567
+ return versionSuffix(ldd2);
43568
+ }
43569
+ return null;
43570
+ };
43571
+ var version2 = async () => {
43572
+ let version3 = null;
43573
+ if (isLinux()) {
43574
+ version3 = await versionFromFilesystem();
43575
+ if (!version3) {
43576
+ version3 = versionFromReport();
43577
+ }
43578
+ if (!version3) {
43579
+ const out = await safeCommand();
43580
+ version3 = versionFromCommand(out);
43581
+ }
43582
+ }
43583
+ return version3;
43584
+ };
43585
+ var versionSync = () => {
43586
+ let version3 = null;
43587
+ if (isLinux()) {
43588
+ version3 = versionFromFilesystemSync();
43589
+ if (!version3) {
43590
+ version3 = versionFromReport();
43591
+ }
43592
+ if (!version3) {
43593
+ const out = safeCommandSync();
43594
+ version3 = versionFromCommand(out);
43595
+ }
43596
+ }
43597
+ return version3;
43598
+ };
43599
+ module2.exports = {
43600
+ GLIBC,
43601
+ MUSL,
43602
+ family,
43603
+ familySync,
43604
+ isNonGlibcLinux,
43605
+ isNonGlibcLinuxSync,
43606
+ version: version2,
43607
+ versionSync
43608
+ };
43609
+ }
43610
+ });
43611
+
43612
+ // ../../node_modules/.pnpm/node-gyp-build-optional-packages@5.1.1/node_modules/node-gyp-build-optional-packages/index.js
43361
43613
  var require_node_gyp_build_optional_packages = __commonJS({
43362
- "../../node_modules/.pnpm/node-gyp-build-optional-packages@5.0.3/node_modules/node-gyp-build-optional-packages/index.js"(exports, module2) {
43614
+ "../../node_modules/.pnpm/node-gyp-build-optional-packages@5.1.1/node_modules/node-gyp-build-optional-packages/index.js"(exports, module2) {
43363
43615
  var fs = require("fs");
43364
43616
  var path = require("path");
43365
- var runtimeRequire = typeof __webpack_require__ === "function" ? __non_webpack_require__ : require;
43617
+ var url = require("url");
43366
43618
  var vars = process.config && process.config.variables || {};
43367
43619
  var prebuildsOnly = !!process.env.PREBUILDS_ONLY;
43368
- var abi = process.versions.modules;
43620
+ var versions = process.versions;
43621
+ var abi = versions.modules;
43622
+ if (versions.deno || process.isBun) {
43623
+ abi = "unsupported";
43624
+ }
43369
43625
  var runtime = isElectron() ? "electron" : "node";
43370
43626
  var arch = process.arch;
43371
43627
  var platform = process.platform;
43372
- var libc = process.env.LIBC || (isAlpine(platform) ? "musl" : "glibc");
43628
+ var libc = process.env.LIBC || (isMusl(platform) ? "musl" : "glibc");
43373
43629
  var armv = process.env.ARM_VERSION || (arch === "arm64" ? "8" : vars.arm_version) || "";
43374
- var uv = (process.versions.uv || "").split(".")[0];
43630
+ var uv = (versions.uv || "").split(".")[0];
43375
43631
  module2.exports = load;
43376
43632
  function load(dir) {
43377
- return runtimeRequire(load.path(dir));
43633
+ if (typeof __webpack_require__ === "function")
43634
+ return __non_webpack_require__(load.path(dir));
43635
+ else
43636
+ return require(load.path(dir));
43378
43637
  }
43379
43638
  load.path = function(dir) {
43380
43639
  dir = path.resolve(dir || ".");
43381
- var packageName;
43640
+ var packageName = "";
43382
43641
  try {
43383
- packageName = runtimeRequire(path.join(dir, "package.json")).name;
43642
+ if (typeof __webpack_require__ === "function")
43643
+ packageName = __non_webpack_require__(path.join(dir, "package.json")).name;
43644
+ else
43645
+ packageName = require(path.join(dir, "package.json")).name;
43384
43646
  var varName = packageName.toUpperCase().replace(/-/g, "_") + "_PREBUILD";
43385
43647
  if (process.env[varName])
43386
43648
  dir = process.env[varName];
@@ -43402,7 +43664,7 @@ var require_node_gyp_build_optional_packages = __commonJS({
43402
43664
  return nearby;
43403
43665
  var platformPackage = (packageName[0] == "@" ? "" : "@" + packageName + "/") + packageName + "-" + platform + "-" + arch;
43404
43666
  try {
43405
- var prebuildPackage = path.dirname(require("module").createRequire(path.join(dir, "package.json")).resolve(platformPackage));
43667
+ var prebuildPackage = path.dirname(require("module").createRequire(url.pathToFileURL(path.join(dir, "package.json"))).resolve(platformPackage));
43406
43668
  return resolveFile(prebuildPackage);
43407
43669
  } catch (error) {
43408
43670
  }
@@ -43418,7 +43680,7 @@ var require_node_gyp_build_optional_packages = __commonJS({
43418
43680
  process.versions.electron ? "electron=" + process.versions.electron : "",
43419
43681
  typeof __webpack_require__ === "function" ? "webpack=true" : ""
43420
43682
  ].filter(Boolean).join(" ");
43421
- throw new Error("No native build was found for " + target2 + "\n loaded from: " + dir + " and package: " + platformPackage + "\n");
43683
+ throw new Error("No native build was found for " + target2 + "\n attempted loading from: " + dir + " and package: " + platformPackage + "\n");
43422
43684
  function resolve(dir2) {
43423
43685
  var tuples = readdirSync(path.join(dir2, "prebuilds")).map(parseTuple);
43424
43686
  var tuple = tuples.filter(matchTuple(platform, arch)).sort(compareTuples)[0];
@@ -43541,8 +43803,11 @@ var require_node_gyp_build_optional_packages = __commonJS({
43541
43803
  return true;
43542
43804
  return typeof window !== "undefined" && window.process && window.process.type === "renderer";
43543
43805
  }
43544
- function isAlpine(platform2) {
43545
- return platform2 === "linux" && fs.existsSync("/etc/alpine-release");
43806
+ function isMusl(platform2) {
43807
+ if (platform2 !== "linux")
43808
+ return false;
43809
+ const { familySync, MUSL } = require_detect_libc();
43810
+ return familySync() === MUSL;
43546
43811
  }
43547
43812
  load.parseTags = parseTags;
43548
43813
  load.matchTags = matchTags;
@@ -43553,9 +43818,9 @@ var require_node_gyp_build_optional_packages = __commonJS({
43553
43818
  }
43554
43819
  });
43555
43820
 
43556
- // ../../node_modules/.pnpm/cbor-extract@2.1.1/node_modules/cbor-extract/index.js
43821
+ // ../../node_modules/.pnpm/cbor-extract@2.2.0/node_modules/cbor-extract/index.js
43557
43822
  var require_cbor_extract = __commonJS({
43558
- "../../node_modules/.pnpm/cbor-extract@2.1.1/node_modules/cbor-extract/index.js"(exports, module2) {
43823
+ "../../node_modules/.pnpm/cbor-extract@2.2.0/node_modules/cbor-extract/index.js"(exports, module2) {
43559
43824
  module2.exports = require_node_gyp_build_optional_packages()(__dirname);
43560
43825
  }
43561
43826
  });
@@ -75987,7 +76252,7 @@ if (cid) {
75987
76252
  }
75988
76253
  return result;
75989
76254
  }
75990
- var isString2 = typeOfTest("string");
76255
+ var isString3 = typeOfTest("string");
75991
76256
  var isFunction2 = typeOfTest("function");
75992
76257
  var isNumber2 = typeOfTest("number");
75993
76258
  var isObject22 = (thing) => thing !== null && typeof thing === "object";
@@ -76263,7 +76528,7 @@ if (cid) {
76263
76528
  isBuffer: isBuffer32,
76264
76529
  isFormData,
76265
76530
  isArrayBufferView,
76266
- isString: isString2,
76531
+ isString: isString3,
76267
76532
  isNumber: isNumber2,
76268
76533
  isBoolean: isBoolean2,
76269
76534
  isObject: isObject22,
@@ -79444,7 +79709,7 @@ var require_utils4 = __commonJS({
79444
79709
  }
79445
79710
  return result;
79446
79711
  }
79447
- function isString2(val) {
79712
+ function isString3(val) {
79448
79713
  return typeof val === "string";
79449
79714
  }
79450
79715
  function isNumber2(val) {
@@ -79594,7 +79859,7 @@ var require_utils4 = __commonJS({
79594
79859
  isBuffer: isBuffer3,
79595
79860
  isFormData,
79596
79861
  isArrayBufferView,
79597
- isString: isString2,
79862
+ isString: isString3,
79598
79863
  isNumber: isNumber2,
79599
79864
  isObject: isObject3,
79600
79865
  isPlainObject,
@@ -81022,7 +81287,7 @@ var require_follow_redirects = __commonJS({
81022
81287
  if (this._ending) {
81023
81288
  throw new WriteAfterEndError();
81024
81289
  }
81025
- if (!isString2(data) && !isBuffer3(data)) {
81290
+ if (!isString3(data) && !isBuffer3(data)) {
81026
81291
  throw new TypeError("data should be a string, Buffer or Uint8Array");
81027
81292
  }
81028
81293
  if (isFunction2(encoding)) {
@@ -81282,14 +81547,14 @@ var require_follow_redirects = __commonJS({
81282
81547
  var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];
81283
81548
  var wrappedProtocol = exports2[scheme] = Object.create(nativeProtocol);
81284
81549
  function request(input, options, callback) {
81285
- if (isString2(input)) {
81550
+ if (isString3(input)) {
81286
81551
  var parsed;
81287
81552
  try {
81288
81553
  parsed = urlToOptions(new URL2(input));
81289
81554
  } catch (err) {
81290
81555
  parsed = url.parse(input);
81291
81556
  }
81292
- if (!isString2(parsed.protocol)) {
81557
+ if (!isString3(parsed.protocol)) {
81293
81558
  throw new InvalidUrlError({ input });
81294
81559
  }
81295
81560
  input = parsed;
@@ -81309,7 +81574,7 @@ var require_follow_redirects = __commonJS({
81309
81574
  maxBodyLength: exports2.maxBodyLength
81310
81575
  }, input, options);
81311
81576
  options.nativeProtocols = nativeProtocols;
81312
- if (!isString2(options.host) && !isString2(options.hostname)) {
81577
+ if (!isString3(options.host) && !isString3(options.hostname)) {
81313
81578
  options.hostname = "::1";
81314
81579
  }
81315
81580
  assert7.equal(options.protocol, protocol, "protocol mismatch");
@@ -81375,11 +81640,11 @@ var require_follow_redirects = __commonJS({
81375
81640
  request.abort();
81376
81641
  }
81377
81642
  function isSubdomain(subdomain, domain) {
81378
- assert7(isString2(subdomain) && isString2(domain));
81643
+ assert7(isString3(subdomain) && isString3(domain));
81379
81644
  var dot = subdomain.length - domain.length - 1;
81380
81645
  return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain);
81381
81646
  }
81382
- function isString2(value) {
81647
+ function isString3(value) {
81383
81648
  return typeof value === "string" || value instanceof String;
81384
81649
  }
81385
81650
  function isFunction2(value) {
@@ -94769,6 +95034,11 @@ var handlerSuccess = z.object({
94769
95034
  body: z.any(),
94770
95035
  headers: z.record(z.string()).optional()
94771
95036
  });
95037
+ var handlerPipeThrough = z.object({
95038
+ encoding: z.string(),
95039
+ buffer: z.instanceof(ArrayBuffer),
95040
+ headers: z.record(z.string()).optional()
95041
+ });
94772
95042
  var handlerError = z.object({
94773
95043
  status: z.number(),
94774
95044
  error: z.string().optional(),
@@ -101405,6 +101675,15 @@ var Server = class {
101405
101675
  if (isHandlerError(outputUnvalidated)) {
101406
101676
  throw XRPCError2.fromError(outputUnvalidated);
101407
101677
  }
101678
+ if (outputUnvalidated && isHandlerPipeThrough(outputUnvalidated)) {
101679
+ if (outputUnvalidated?.headers) {
101680
+ Object.entries(outputUnvalidated.headers).forEach(([name2, val]) => {
101681
+ res.header(name2, val);
101682
+ });
101683
+ }
101684
+ res.header("Content-Type", outputUnvalidated.encoding).status(200).send(Buffer.from(outputUnvalidated.buffer));
101685
+ return;
101686
+ }
101408
101687
  if (!outputUnvalidated || isHandlerSuccess(outputUnvalidated)) {
101409
101688
  const output2 = validateResOutput(outputUnvalidated);
101410
101689
  if (output2?.headers) {
@@ -101546,6 +101825,24 @@ var Server = class {
101546
101825
  function isHandlerSuccess(v) {
101547
101826
  return handlerSuccess.safeParse(v).success;
101548
101827
  }
101828
+ function isHandlerPipeThrough(v) {
101829
+ if (v === null || typeof v !== "object") {
101830
+ return false;
101831
+ }
101832
+ if (!isString(v["encoding"]) || !(v["buffer"] instanceof ArrayBuffer)) {
101833
+ return false;
101834
+ }
101835
+ if (v["headers"] !== void 0) {
101836
+ if (v["headers"] === null || typeof v["headers"] !== "object") {
101837
+ return false;
101838
+ }
101839
+ if (!Object.values(v["headers"]).every(isString)) {
101840
+ return false;
101841
+ }
101842
+ }
101843
+ return true;
101844
+ }
101845
+ var isString = (val) => typeof val === "string";
101549
101846
  var kRequestLocals = Symbol("requestLocals");
101550
101847
  function createLocalsMiddleware(nsid2) {
101551
101848
  return function(req, _res, next) {
@@ -101891,6 +102188,12 @@ var schemaDict = {
101891
102188
  suspendUntil: {
101892
102189
  type: "string",
101893
102190
  format: "datetime"
102191
+ },
102192
+ tags: {
102193
+ type: "array",
102194
+ items: {
102195
+ type: "string"
102196
+ }
101894
102197
  }
101895
102198
  }
101896
102199
  },
@@ -102482,6 +102785,31 @@ var schemaDict = {
102482
102785
  }
102483
102786
  }
102484
102787
  },
102788
+ modEventTag: {
102789
+ type: "object",
102790
+ description: "Add/Remove a tag on a subject",
102791
+ required: ["add", "remove"],
102792
+ properties: {
102793
+ add: {
102794
+ type: "array",
102795
+ items: {
102796
+ type: "string"
102797
+ },
102798
+ description: "Tags to be added to the subject. If already exists, won't be duplicated."
102799
+ },
102800
+ remove: {
102801
+ type: "array",
102802
+ items: {
102803
+ type: "string"
102804
+ },
102805
+ description: "Tags to be removed to the subject. Ignores a tag If it doesn't exist, won't be duplicated."
102806
+ },
102807
+ comment: {
102808
+ type: "string",
102809
+ description: "Additional comment about added/removed tags."
102810
+ }
102811
+ }
102812
+ },
102485
102813
  communicationTemplateView: {
102486
102814
  type: "object",
102487
102815
  required: [
@@ -102656,7 +102984,8 @@ var schemaDict = {
102656
102984
  "lex:com.atproto.admin.defs#modEventMute",
102657
102985
  "lex:com.atproto.admin.defs#modEventReverseTakedown",
102658
102986
  "lex:com.atproto.admin.defs#modEventUnmute",
102659
- "lex:com.atproto.admin.defs#modEventEmail"
102987
+ "lex:com.atproto.admin.defs#modEventEmail",
102988
+ "lex:com.atproto.admin.defs#modEventTag"
102660
102989
  ]
102661
102990
  },
102662
102991
  subject: {
@@ -103078,6 +103407,20 @@ var schemaDict = {
103078
103407
  },
103079
103408
  description: "If specified, only events where all of these labels were removed are returned"
103080
103409
  },
103410
+ addedTags: {
103411
+ type: "array",
103412
+ items: {
103413
+ type: "string"
103414
+ },
103415
+ description: "If specified, only events where all of these tags were added are returned"
103416
+ },
103417
+ removedTags: {
103418
+ type: "array",
103419
+ items: {
103420
+ type: "string"
103421
+ },
103422
+ description: "If specified, only events where all of these tags were removed are returned"
103423
+ },
103081
103424
  reportTypes: {
103082
103425
  type: "array",
103083
103426
  items: {
@@ -103193,6 +103536,18 @@ var schemaDict = {
103193
103536
  maximum: 100,
103194
103537
  default: 50
103195
103538
  },
103539
+ tags: {
103540
+ type: "array",
103541
+ items: {
103542
+ type: "string"
103543
+ }
103544
+ },
103545
+ excludeTags: {
103546
+ type: "array",
103547
+ items: {
103548
+ type: "string"
103549
+ }
103550
+ },
103196
103551
  cursor: {
103197
103552
  type: "string"
103198
103553
  }
@@ -103481,7 +103836,7 @@ var schemaDict = {
103481
103836
  defs: {
103482
103837
  main: {
103483
103838
  type: "query",
103484
- description: "Provides the DID of a repo.",
103839
+ description: "Resolves a handle (domain name) to a DID.",
103485
103840
  parameters: {
103486
103841
  type: "params",
103487
103842
  required: ["handle"],
@@ -103515,7 +103870,7 @@ var schemaDict = {
103515
103870
  defs: {
103516
103871
  main: {
103517
103872
  type: "procedure",
103518
- description: "Updates the handle of the account.",
103873
+ description: "Updates the current account's handle. Verifies handle validity, and updates did:plc document if necessary. Implemented by PDS, and requires auth.",
103519
103874
  input: {
103520
103875
  encoding: "application/json",
103521
103876
  schema: {
@@ -103524,7 +103879,8 @@ var schemaDict = {
103524
103879
  properties: {
103525
103880
  handle: {
103526
103881
  type: "string",
103527
- format: "handle"
103882
+ format: "handle",
103883
+ description: "The new handle."
103528
103884
  }
103529
103885
  }
103530
103886
  }
@@ -103607,7 +103963,7 @@ var schemaDict = {
103607
103963
  defs: {
103608
103964
  main: {
103609
103965
  type: "query",
103610
- description: "Find labels relevant to the provided URI patterns.",
103966
+ description: "Find labels relevant to the provided AT-URI patterns. Public endpoint for moderation services, though may return different or additional results with auth.",
103611
103967
  parameters: {
103612
103968
  type: "params",
103613
103969
  required: ["uriPatterns"],
@@ -103666,13 +104022,13 @@ var schemaDict = {
103666
104022
  defs: {
103667
104023
  main: {
103668
104024
  type: "subscription",
103669
- description: "Subscribe to label updates.",
104025
+ description: "Subscribe to stream of labels (and negations). Public endpoint implemented by mod services. Uses same sequencing scheme as repo event stream.",
103670
104026
  parameters: {
103671
104027
  type: "params",
103672
104028
  properties: {
103673
104029
  cursor: {
103674
104030
  type: "integer",
103675
- description: "The last known event to backfill from."
104031
+ description: "The last known event seq number to backfill from."
103676
104032
  }
103677
104033
  }
103678
104034
  },
@@ -103728,7 +104084,7 @@ var schemaDict = {
103728
104084
  defs: {
103729
104085
  main: {
103730
104086
  type: "procedure",
103731
- description: "Report a repo or a record.",
104087
+ description: "Submit a moderation report regarding an atproto account or record. Implemented by moderation services (with PDS proxying), and requires auth.",
103732
104088
  input: {
103733
104089
  encoding: "application/json",
103734
104090
  schema: {
@@ -103737,10 +104093,12 @@ var schemaDict = {
103737
104093
  properties: {
103738
104094
  reasonType: {
103739
104095
  type: "ref",
104096
+ description: "Indicates the broad category of violation the report is for.",
103740
104097
  ref: "lex:com.atproto.moderation.defs#reasonType"
103741
104098
  },
103742
104099
  reason: {
103743
- type: "string"
104100
+ type: "string",
104101
+ description: "Additional context about the content and violation."
103744
104102
  },
103745
104103
  subject: {
103746
104104
  type: "union",
@@ -103849,7 +104207,7 @@ var schemaDict = {
103849
104207
  defs: {
103850
104208
  main: {
103851
104209
  type: "procedure",
103852
- description: "Apply a batch transaction of creates, updates, and deletes.",
104210
+ description: "Apply a batch transaction of repository creates, updates, and deletes. Requires auth, implemented by PDS.",
103853
104211
  input: {
103854
104212
  encoding: "application/json",
103855
104213
  schema: {
@@ -103859,12 +104217,12 @@ var schemaDict = {
103859
104217
  repo: {
103860
104218
  type: "string",
103861
104219
  format: "at-identifier",
103862
- description: "The handle or DID of the repo."
104220
+ description: "The handle or DID of the repo (aka, current account)."
103863
104221
  },
103864
104222
  validate: {
103865
104223
  type: "boolean",
103866
104224
  default: true,
103867
- description: "Flag for validating the records."
104225
+ description: "Can be set to 'false' to skip Lexicon schema validation of record data, for all operations."
103868
104226
  },
103869
104227
  writes: {
103870
104228
  type: "array",
@@ -103880,6 +104238,7 @@ var schemaDict = {
103880
104238
  },
103881
104239
  swapCommit: {
103882
104240
  type: "string",
104241
+ description: "If provided, the entire operation will fail if the current repo commit CID does not match this value. Used to prevent conflicting repo mutations.",
103883
104242
  format: "cid"
103884
104243
  }
103885
104244
  }
@@ -103887,13 +104246,14 @@ var schemaDict = {
103887
104246
  },
103888
104247
  errors: [
103889
104248
  {
103890
- name: "InvalidSwap"
104249
+ name: "InvalidSwap",
104250
+ description: "Indicates that the 'swapCommit' parameter did not match current commit."
103891
104251
  }
103892
104252
  ]
103893
104253
  },
103894
104254
  create: {
103895
104255
  type: "object",
103896
- description: "Create a new record.",
104256
+ description: "Operation which creates a new record.",
103897
104257
  required: ["collection", "value"],
103898
104258
  properties: {
103899
104259
  collection: {
@@ -103911,7 +104271,7 @@ var schemaDict = {
103911
104271
  },
103912
104272
  update: {
103913
104273
  type: "object",
103914
- description: "Update an existing record.",
104274
+ description: "Operation which updates an existing record.",
103915
104275
  required: ["collection", "rkey", "value"],
103916
104276
  properties: {
103917
104277
  collection: {
@@ -103928,7 +104288,7 @@ var schemaDict = {
103928
104288
  },
103929
104289
  delete: {
103930
104290
  type: "object",
103931
- description: "Delete an existing record.",
104291
+ description: "Operation which deletes an existing record.",
103932
104292
  required: ["collection", "rkey"],
103933
104293
  properties: {
103934
104294
  collection: {
@@ -103948,7 +104308,7 @@ var schemaDict = {
103948
104308
  defs: {
103949
104309
  main: {
103950
104310
  type: "procedure",
103951
- description: "Create a new record.",
104311
+ description: "Create a single new repository record. Requires auth, implemented by PDS.",
103952
104312
  input: {
103953
104313
  encoding: "application/json",
103954
104314
  schema: {
@@ -103958,7 +104318,7 @@ var schemaDict = {
103958
104318
  repo: {
103959
104319
  type: "string",
103960
104320
  format: "at-identifier",
103961
- description: "The handle or DID of the repo."
104321
+ description: "The handle or DID of the repo (aka, current account)."
103962
104322
  },
103963
104323
  collection: {
103964
104324
  type: "string",
@@ -103967,17 +104327,17 @@ var schemaDict = {
103967
104327
  },
103968
104328
  rkey: {
103969
104329
  type: "string",
103970
- description: "The key of the record.",
104330
+ description: "The Record Key.",
103971
104331
  maxLength: 15
103972
104332
  },
103973
104333
  validate: {
103974
104334
  type: "boolean",
103975
104335
  default: true,
103976
- description: "Flag for validating the record."
104336
+ description: "Can be set to 'false' to skip Lexicon schema validation of record data."
103977
104337
  },
103978
104338
  record: {
103979
104339
  type: "unknown",
103980
- description: "The record to create."
104340
+ description: "The record itself. Must contain a $type field."
103981
104341
  },
103982
104342
  swapCommit: {
103983
104343
  type: "string",
@@ -104006,7 +104366,8 @@ var schemaDict = {
104006
104366
  },
104007
104367
  errors: [
104008
104368
  {
104009
- name: "InvalidSwap"
104369
+ name: "InvalidSwap",
104370
+ description: "Indicates that 'swapCommit' didn't match current repo commit."
104010
104371
  }
104011
104372
  ]
104012
104373
  }
@@ -104018,7 +104379,7 @@ var schemaDict = {
104018
104379
  defs: {
104019
104380
  main: {
104020
104381
  type: "procedure",
104021
- description: "Delete a record, or ensure it doesn't exist.",
104382
+ description: "Delete a repository record, or ensure it doesn't exist. Requires auth, implemented by PDS.",
104022
104383
  input: {
104023
104384
  encoding: "application/json",
104024
104385
  schema: {
@@ -104028,7 +104389,7 @@ var schemaDict = {
104028
104389
  repo: {
104029
104390
  type: "string",
104030
104391
  format: "at-identifier",
104031
- description: "The handle or DID of the repo."
104392
+ description: "The handle or DID of the repo (aka, current account)."
104032
104393
  },
104033
104394
  collection: {
104034
104395
  type: "string",
@@ -104037,7 +104398,7 @@ var schemaDict = {
104037
104398
  },
104038
104399
  rkey: {
104039
104400
  type: "string",
104040
- description: "The key of the record."
104401
+ description: "The Record Key."
104041
104402
  },
104042
104403
  swapRecord: {
104043
104404
  type: "string",
@@ -104066,7 +104427,7 @@ var schemaDict = {
104066
104427
  defs: {
104067
104428
  main: {
104068
104429
  type: "query",
104069
- description: "Get information about the repo, including the list of collections.",
104430
+ description: "Get information about an account and repository, including the list of collections. Does not require auth.",
104070
104431
  parameters: {
104071
104432
  type: "params",
104072
104433
  required: ["repo"],
@@ -104099,17 +104460,20 @@ var schemaDict = {
104099
104460
  format: "did"
104100
104461
  },
104101
104462
  didDoc: {
104102
- type: "unknown"
104463
+ type: "unknown",
104464
+ description: "The complete DID document for this account."
104103
104465
  },
104104
104466
  collections: {
104105
104467
  type: "array",
104468
+ description: "List of all the collections (NSIDs) for which this repo contains at least one record.",
104106
104469
  items: {
104107
104470
  type: "string",
104108
104471
  format: "nsid"
104109
104472
  }
104110
104473
  },
104111
104474
  handleIsCorrect: {
104112
- type: "boolean"
104475
+ type: "boolean",
104476
+ description: "Indicates if handle is currently valid (resolves bi-directionally)"
104113
104477
  }
104114
104478
  }
104115
104479
  }
@@ -104123,7 +104487,7 @@ var schemaDict = {
104123
104487
  defs: {
104124
104488
  main: {
104125
104489
  type: "query",
104126
- description: "Get a record.",
104490
+ description: "Get a single record from a repository. Does not require auth.",
104127
104491
  parameters: {
104128
104492
  type: "params",
104129
104493
  required: ["repo", "collection", "rkey"],
@@ -104140,7 +104504,7 @@ var schemaDict = {
104140
104504
  },
104141
104505
  rkey: {
104142
104506
  type: "string",
104143
- description: "The key of the record."
104507
+ description: "The Record Key."
104144
104508
  },
104145
104509
  cid: {
104146
104510
  type: "string",
@@ -104178,7 +104542,7 @@ var schemaDict = {
104178
104542
  defs: {
104179
104543
  main: {
104180
104544
  type: "query",
104181
- description: "List a range of records in a collection.",
104545
+ description: "List a range of records in a repository, matching a specific collection. Does not require auth.",
104182
104546
  parameters: {
104183
104547
  type: "params",
104184
104548
  required: ["repo", "collection"],
@@ -104262,7 +104626,7 @@ var schemaDict = {
104262
104626
  defs: {
104263
104627
  main: {
104264
104628
  type: "procedure",
104265
- description: "Write a record, creating or updating it as needed.",
104629
+ description: "Write a repository record, creating or updating it as needed. Requires auth, implemented by PDS.",
104266
104630
  input: {
104267
104631
  encoding: "application/json",
104268
104632
  schema: {
@@ -104273,7 +104637,7 @@ var schemaDict = {
104273
104637
  repo: {
104274
104638
  type: "string",
104275
104639
  format: "at-identifier",
104276
- description: "The handle or DID of the repo."
104640
+ description: "The handle or DID of the repo (aka, current account)."
104277
104641
  },
104278
104642
  collection: {
104279
104643
  type: "string",
@@ -104282,13 +104646,13 @@ var schemaDict = {
104282
104646
  },
104283
104647
  rkey: {
104284
104648
  type: "string",
104285
- description: "The key of the record.",
104649
+ description: "The Record Key.",
104286
104650
  maxLength: 15
104287
104651
  },
104288
104652
  validate: {
104289
104653
  type: "boolean",
104290
104654
  default: true,
104291
- description: "Flag for validating the record."
104655
+ description: "Can be set to 'false' to skip Lexicon schema validation of record data."
104292
104656
  },
104293
104657
  record: {
104294
104658
  type: "unknown",
@@ -104297,7 +104661,7 @@ var schemaDict = {
104297
104661
  swapRecord: {
104298
104662
  type: "string",
104299
104663
  format: "cid",
104300
- description: "Compare and swap with the previous record by CID."
104664
+ description: "Compare and swap with the previous record by CID. WARNING: nullable and optional field; may cause problems with golang implementation"
104301
104665
  },
104302
104666
  swapCommit: {
104303
104667
  type: "string",
@@ -104359,7 +104723,7 @@ var schemaDict = {
104359
104723
  defs: {
104360
104724
  main: {
104361
104725
  type: "procedure",
104362
- description: "Upload a new blob to be added to repo in a later request.",
104726
+ description: "Upload a new blob, to be referenced from a repository record. The blob will be deleted if it is not referenced within a time window (eg, minutes). Blob restrictions (mimetype, size, etc) are enforced when the reference is created. Requires auth, implemented by PDS.",
104363
104727
  input: {
104364
104728
  encoding: "*/*"
104365
104729
  },
@@ -104423,7 +104787,7 @@ var schemaDict = {
104423
104787
  defs: {
104424
104788
  main: {
104425
104789
  type: "procedure",
104426
- description: "Create an account.",
104790
+ description: "Create an account. Implemented by PDS.",
104427
104791
  input: {
104428
104792
  encoding: "application/json",
104429
104793
  schema: {
@@ -104435,11 +104799,13 @@ var schemaDict = {
104435
104799
  },
104436
104800
  handle: {
104437
104801
  type: "string",
104438
- format: "handle"
104802
+ format: "handle",
104803
+ description: "Requested handle for the account."
104439
104804
  },
104440
104805
  did: {
104441
104806
  type: "string",
104442
- format: "did"
104807
+ format: "did",
104808
+ description: "Pre-existing atproto DID, being imported to a new account."
104443
104809
  },
104444
104810
  inviteCode: {
104445
104811
  type: "string"
@@ -104451,13 +104817,16 @@ var schemaDict = {
104451
104817
  type: "string"
104452
104818
  },
104453
104819
  password: {
104454
- type: "string"
104820
+ type: "string",
104821
+ description: "Initial account password. May need to meet instance-specific password strength requirements."
104455
104822
  },
104456
104823
  recoveryKey: {
104457
- type: "string"
104824
+ type: "string",
104825
+ description: "DID PLC rotation key (aka, recovery key) to be included in PLC creation operation."
104458
104826
  },
104459
104827
  plcOp: {
104460
- type: "unknown"
104828
+ type: "unknown",
104829
+ description: "A signed DID PLC operation to be submitted as part of importing an existing account to this instance. NOTE: this optional field may be updated when full account migration is implemented."
104461
104830
  }
104462
104831
  }
104463
104832
  }
@@ -104466,6 +104835,7 @@ var schemaDict = {
104466
104835
  encoding: "application/json",
104467
104836
  schema: {
104468
104837
  type: "object",
104838
+ description: "Account login session returned on successful account creation.",
104469
104839
  required: ["accessJwt", "refreshJwt", "handle", "did"],
104470
104840
  properties: {
104471
104841
  accessJwt: {
@@ -104480,10 +104850,12 @@ var schemaDict = {
104480
104850
  },
104481
104851
  did: {
104482
104852
  type: "string",
104483
- format: "did"
104853
+ format: "did",
104854
+ description: "The DID of the new account."
104484
104855
  },
104485
104856
  didDoc: {
104486
- type: "unknown"
104857
+ type: "unknown",
104858
+ description: "Complete DID document."
104487
104859
  }
104488
104860
  }
104489
104861
  }
@@ -104528,7 +104900,8 @@ var schemaDict = {
104528
104900
  required: ["name"],
104529
104901
  properties: {
104530
104902
  name: {
104531
- type: "string"
104903
+ type: "string",
104904
+ description: "A short name for the App Password, to help distinguish them."
104532
104905
  }
104533
104906
  }
104534
104907
  }
@@ -104795,7 +105168,7 @@ var schemaDict = {
104795
105168
  defs: {
104796
105169
  main: {
104797
105170
  type: "procedure",
104798
- description: "Delete an actor's account with a token and password.",
105171
+ description: "Delete an actor's account with a token and password. Can only be called after requesting a deletion token. Requires auth.",
104799
105172
  input: {
104800
105173
  encoding: "application/json",
104801
105174
  schema: {
@@ -104832,7 +105205,7 @@ var schemaDict = {
104832
105205
  defs: {
104833
105206
  main: {
104834
105207
  type: "procedure",
104835
- description: "Delete the current session."
105208
+ description: "Delete the current session. Requires auth."
104836
105209
  }
104837
105210
  }
104838
105211
  },
@@ -104842,7 +105215,7 @@ var schemaDict = {
104842
105215
  defs: {
104843
105216
  main: {
104844
105217
  type: "query",
104845
- description: "Get a document describing the service's accounts configuration.",
105218
+ description: "Describes the server's account creation requirements and capabilities. Implemented by PDS.",
104846
105219
  output: {
104847
105220
  encoding: "application/json",
104848
105221
  schema: {
@@ -104850,19 +105223,23 @@ var schemaDict = {
104850
105223
  required: ["availableUserDomains"],
104851
105224
  properties: {
104852
105225
  inviteCodeRequired: {
104853
- type: "boolean"
105226
+ type: "boolean",
105227
+ description: "If true, an invite code must be supplied to create an account on this instance."
104854
105228
  },
104855
105229
  phoneVerificationRequired: {
104856
- type: "boolean"
105230
+ type: "boolean",
105231
+ description: "If true, a phone verification token must be supplied to create an account on this instance."
104857
105232
  },
104858
105233
  availableUserDomains: {
104859
105234
  type: "array",
105235
+ description: "List of domain suffixes that can be used in account handles.",
104860
105236
  items: {
104861
105237
  type: "string"
104862
105238
  }
104863
105239
  },
104864
105240
  links: {
104865
105241
  type: "ref",
105242
+ description: "URLs of service policy documents.",
104866
105243
  ref: "lex:com.atproto.server.describeServer#links"
104867
105244
  }
104868
105245
  }
@@ -104888,7 +105265,7 @@ var schemaDict = {
104888
105265
  defs: {
104889
105266
  main: {
104890
105267
  type: "query",
104891
- description: "Get all invite codes for a given account.",
105268
+ description: "Get all invite codes for the current account. Requires auth.",
104892
105269
  parameters: {
104893
105270
  type: "params",
104894
105271
  properties: {
@@ -104898,7 +105275,8 @@ var schemaDict = {
104898
105275
  },
104899
105276
  createAvailable: {
104900
105277
  type: "boolean",
104901
- default: true
105278
+ default: true,
105279
+ description: "Controls whether any new 'earned' but not 'created' invites should be created."
104902
105280
  }
104903
105281
  }
104904
105282
  },
@@ -104932,7 +105310,7 @@ var schemaDict = {
104932
105310
  defs: {
104933
105311
  main: {
104934
105312
  type: "query",
104935
- description: "Get information about the current session.",
105313
+ description: "Get information about the current auth session. Requires auth.",
104936
105314
  output: {
104937
105315
  encoding: "application/json",
104938
105316
  schema: {
@@ -105012,7 +105390,7 @@ var schemaDict = {
105012
105390
  defs: {
105013
105391
  main: {
105014
105392
  type: "procedure",
105015
- description: "Refresh an authentication session.",
105393
+ description: "Refresh an authentication session. Requires auth using the 'refreshJwt' (not the 'accessJwt').",
105016
105394
  output: {
105017
105395
  encoding: "application/json",
105018
105396
  schema: {
@@ -105117,7 +105495,7 @@ var schemaDict = {
105117
105495
  defs: {
105118
105496
  main: {
105119
105497
  type: "procedure",
105120
- description: "Reserve a repo signing key for account creation.",
105498
+ description: "Reserve a repo signing key, for use with account creation. Necessary so that a DID PLC update operation can be constructed during an account migraiton. Public and does not require auth; implemented by PDS. NOTE: this endpoint may change when full account migration is implemented.",
105121
105499
  input: {
105122
105500
  encoding: "application/json",
105123
105501
  schema: {
@@ -105125,7 +105503,8 @@ var schemaDict = {
105125
105503
  properties: {
105126
105504
  did: {
105127
105505
  type: "string",
105128
- description: "The did to reserve a new did:key for"
105506
+ format: "did",
105507
+ description: "The DID to reserve a key for."
105129
105508
  }
105130
105509
  }
105131
105510
  }
@@ -105138,7 +105517,7 @@ var schemaDict = {
105138
105517
  properties: {
105139
105518
  signingKey: {
105140
105519
  type: "string",
105141
- description: "Public signing key in the form of a did:key."
105520
+ description: "The public key for the reserved signing key, in did:key serialization."
105142
105521
  }
105143
105522
  }
105144
105523
  }
@@ -105244,7 +105623,7 @@ var schemaDict = {
105244
105623
  defs: {
105245
105624
  main: {
105246
105625
  type: "query",
105247
- description: "Get a blob associated with a given repo.",
105626
+ description: "Get a blob associated with a given account. Returns the full blob as originally uploaded. Does not require auth; implemented by PDS.",
105248
105627
  parameters: {
105249
105628
  type: "params",
105250
105629
  required: ["did", "cid"],
@@ -105252,7 +105631,7 @@ var schemaDict = {
105252
105631
  did: {
105253
105632
  type: "string",
105254
105633
  format: "did",
105255
- description: "The DID of the repo."
105634
+ description: "The DID of the account."
105256
105635
  },
105257
105636
  cid: {
105258
105637
  type: "string",
@@ -105273,7 +105652,7 @@ var schemaDict = {
105273
105652
  defs: {
105274
105653
  main: {
105275
105654
  type: "query",
105276
- description: "Get blocks from a given repo.",
105655
+ description: "Get data blocks from a given repo, by CID. For example, intermediate MST nodes, or records. Does not require auth; implemented by PDS.",
105277
105656
  parameters: {
105278
105657
  type: "params",
105279
105658
  required: ["did", "cids"],
@@ -105367,7 +105746,7 @@ var schemaDict = {
105367
105746
  defs: {
105368
105747
  main: {
105369
105748
  type: "query",
105370
- description: "Get the current commit CID & revision of the repo.",
105749
+ description: "Get the current commit CID & revision of the specified repo. Does not require auth.",
105371
105750
  parameters: {
105372
105751
  type: "params",
105373
105752
  required: ["did"],
@@ -105409,7 +105788,7 @@ var schemaDict = {
105409
105788
  defs: {
105410
105789
  main: {
105411
105790
  type: "query",
105412
- description: "Get blocks needed for existence or non-existence of record.",
105791
+ description: "Get data blocks needed to prove the existence or non-existence of record in the current version of repo. Does not require auth.",
105413
105792
  parameters: {
105414
105793
  type: "params",
105415
105794
  required: ["did", "collection", "rkey"],
@@ -105424,7 +105803,8 @@ var schemaDict = {
105424
105803
  format: "nsid"
105425
105804
  },
105426
105805
  rkey: {
105427
- type: "string"
105806
+ type: "string",
105807
+ description: "Record Key"
105428
105808
  },
105429
105809
  commit: {
105430
105810
  type: "string",
@@ -105445,7 +105825,7 @@ var schemaDict = {
105445
105825
  defs: {
105446
105826
  main: {
105447
105827
  type: "query",
105448
- description: "Gets the DID's repo, optionally catching up from a specific revision.",
105828
+ description: "Download a repository export as CAR file. Optionally only a 'diff' since a previous revision. Does not require auth; implemented by PDS.",
105449
105829
  parameters: {
105450
105830
  type: "params",
105451
105831
  required: ["did"],
@@ -105457,7 +105837,7 @@ var schemaDict = {
105457
105837
  },
105458
105838
  since: {
105459
105839
  type: "string",
105460
- description: "The revision of the repo to catch up from."
105840
+ description: "The revision ('rev') of the repo to create a diff from."
105461
105841
  }
105462
105842
  }
105463
105843
  },
@@ -105473,7 +105853,7 @@ var schemaDict = {
105473
105853
  defs: {
105474
105854
  main: {
105475
105855
  type: "query",
105476
- description: "List blob CIDs since some revision.",
105856
+ description: "List blob CIDso for an account, since some repo revision. Does not require auth; implemented by PDS.",
105477
105857
  parameters: {
105478
105858
  type: "params",
105479
105859
  required: ["did"],
@@ -105526,7 +105906,7 @@ var schemaDict = {
105526
105906
  defs: {
105527
105907
  main: {
105528
105908
  type: "query",
105529
- description: "List DIDs and root CIDs of hosted repos.",
105909
+ description: "Enumerates all the DID, rev, and commit CID for all repos hosted by this service. Does not require auth; implemented by PDS and Relay.",
105530
105910
  parameters: {
105531
105911
  type: "params",
105532
105912
  properties: {
@@ -105571,7 +105951,8 @@ var schemaDict = {
105571
105951
  },
105572
105952
  head: {
105573
105953
  type: "string",
105574
- format: "cid"
105954
+ format: "cid",
105955
+ description: "Current repo commit CID"
105575
105956
  },
105576
105957
  rev: {
105577
105958
  type: "string"
@@ -105586,7 +105967,7 @@ var schemaDict = {
105586
105967
  defs: {
105587
105968
  main: {
105588
105969
  type: "procedure",
105589
- description: "Notify a crawling service of a recent update; often when a long break between updates causes the connection with the crawling service to break.",
105970
+ description: "Notify a crawling service of a recent update, and that crawling should resume. Intended use is after a gap between repo stream events caused the crawling service to disconnect. Does not require auth; implemented by Relay.",
105590
105971
  input: {
105591
105972
  encoding: "application/json",
105592
105973
  schema: {
@@ -105595,7 +105976,7 @@ var schemaDict = {
105595
105976
  properties: {
105596
105977
  hostname: {
105597
105978
  type: "string",
105598
- description: "Hostname of the service that is notifying of update."
105979
+ description: "Hostname of the current service (usually a PDS) that is notifying of update."
105599
105980
  }
105600
105981
  }
105601
105982
  }
@@ -105609,7 +105990,7 @@ var schemaDict = {
105609
105990
  defs: {
105610
105991
  main: {
105611
105992
  type: "procedure",
105612
- description: "Request a service to persistently crawl hosted repos.",
105993
+ description: "Request a service to persistently crawl hosted repos. Expected use is new PDS instances declaring their existence to Relays. Does not require auth.",
105613
105994
  input: {
105614
105995
  encoding: "application/json",
105615
105996
  schema: {
@@ -105618,7 +105999,7 @@ var schemaDict = {
105618
105999
  properties: {
105619
106000
  hostname: {
105620
106001
  type: "string",
105621
- description: "Hostname of the service that is requesting to be crawled."
106002
+ description: "Hostname of the current service (eg, PDS) that is requesting to be crawled."
105622
106003
  }
105623
106004
  }
105624
106005
  }
@@ -105632,13 +106013,13 @@ var schemaDict = {
105632
106013
  defs: {
105633
106014
  main: {
105634
106015
  type: "subscription",
105635
- description: "Subscribe to repo updates.",
106016
+ description: "Repository event stream, aka Firehose endpoint. Outputs repo commits with diff data, and identity update events, for all repositories on the current server. See the atproto specifications for details around stream sequencing, repo versioning, CAR diff format, and more. Public and does not require auth; implemented by PDS and Relay.",
105636
106017
  parameters: {
105637
106018
  type: "params",
105638
106019
  properties: {
105639
106020
  cursor: {
105640
106021
  type: "integer",
105641
- description: "The last known event to backfill from."
106022
+ description: "The last known event seq number to backfill from."
105642
106023
  }
105643
106024
  }
105644
106025
  },
@@ -105659,12 +106040,14 @@ var schemaDict = {
105659
106040
  name: "FutureCursor"
105660
106041
  },
105661
106042
  {
105662
- name: "ConsumerTooSlow"
106043
+ name: "ConsumerTooSlow",
106044
+ description: "If the consumer of the stream can not keep up with events, and a backlog gets too large, the server will drop the connection."
105663
106045
  }
105664
106046
  ]
105665
106047
  },
105666
106048
  commit: {
105667
106049
  type: "object",
106050
+ description: "Represents an update of repository state. Note that empty commits are allowed, which include no repo data changes, but an update to rev and signature.",
105668
106051
  required: [
105669
106052
  "seq",
105670
106053
  "rebase",
@@ -105681,59 +106064,69 @@ var schemaDict = {
105681
106064
  nullable: ["prev", "since"],
105682
106065
  properties: {
105683
106066
  seq: {
105684
- type: "integer"
106067
+ type: "integer",
106068
+ description: "The stream sequence number of this message."
105685
106069
  },
105686
106070
  rebase: {
105687
- type: "boolean"
106071
+ type: "boolean",
106072
+ description: "DEPRECATED -- unused"
105688
106073
  },
105689
106074
  tooBig: {
105690
- type: "boolean"
106075
+ type: "boolean",
106076
+ description: "Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data."
105691
106077
  },
105692
106078
  repo: {
105693
106079
  type: "string",
105694
- format: "did"
106080
+ format: "did",
106081
+ description: "The repo this event comes from."
105695
106082
  },
105696
106083
  commit: {
105697
- type: "cid-link"
106084
+ type: "cid-link",
106085
+ description: "Repo commit object CID."
105698
106086
  },
105699
106087
  prev: {
105700
- type: "cid-link"
106088
+ type: "cid-link",
106089
+ description: "DEPRECATED -- unused. WARNING -- nullable and optional; stick with optional to ensure golang interoperability."
105701
106090
  },
105702
106091
  rev: {
105703
106092
  type: "string",
105704
- description: "The rev of the emitted commit."
106093
+ description: "The rev of the emitted commit. Note that this information is also in the commit object included in blocks, unless this is a tooBig event."
105705
106094
  },
105706
106095
  since: {
105707
106096
  type: "string",
105708
- description: "The rev of the last emitted commit from this repo."
106097
+ description: "The rev of the last emitted commit from this repo (if any)."
105709
106098
  },
105710
106099
  blocks: {
105711
106100
  type: "bytes",
105712
- description: "CAR file containing relevant blocks.",
106101
+ description: "CAR file containing relevant blocks, as a diff since the previous repo state.",
105713
106102
  maxLength: 1e6
105714
106103
  },
105715
106104
  ops: {
105716
106105
  type: "array",
105717
106106
  items: {
105718
106107
  type: "ref",
105719
- ref: "lex:com.atproto.sync.subscribeRepos#repoOp"
106108
+ ref: "lex:com.atproto.sync.subscribeRepos#repoOp",
106109
+ description: "List of repo mutation operations in this commit (eg, records created, updated, or deleted)."
105720
106110
  },
105721
106111
  maxLength: 200
105722
106112
  },
105723
106113
  blobs: {
105724
106114
  type: "array",
105725
106115
  items: {
105726
- type: "cid-link"
106116
+ type: "cid-link",
106117
+ description: "List of new blobs (by CID) referenced by records in this commit."
105727
106118
  }
105728
106119
  },
105729
106120
  time: {
105730
106121
  type: "string",
105731
- format: "datetime"
106122
+ format: "datetime",
106123
+ description: "Timestamp of when this message was originally broadcast."
105732
106124
  }
105733
106125
  }
105734
106126
  },
105735
106127
  handle: {
105736
106128
  type: "object",
106129
+ description: "Represents an update of the account's handle, or transition to/from invalid state.",
105737
106130
  required: ["seq", "did", "handle", "time"],
105738
106131
  properties: {
105739
106132
  seq: {
@@ -105755,6 +106148,7 @@ var schemaDict = {
105755
106148
  },
105756
106149
  migrate: {
105757
106150
  type: "object",
106151
+ description: "Represents an account moving from one PDS instance to another. NOTE: not implemented; full account migration may introduce a new message instead.",
105758
106152
  required: ["seq", "did", "migrateTo", "time"],
105759
106153
  nullable: ["migrateTo"],
105760
106154
  properties: {
@@ -105776,6 +106170,7 @@ var schemaDict = {
105776
106170
  },
105777
106171
  tombstone: {
105778
106172
  type: "object",
106173
+ description: "Indicates that an account has been deleted.",
105779
106174
  required: ["seq", "did", "time"],
105780
106175
  properties: {
105781
106176
  seq: {
@@ -105806,7 +106201,7 @@ var schemaDict = {
105806
106201
  },
105807
106202
  repoOp: {
105808
106203
  type: "object",
105809
- description: "A repo operation, ie a write of a single record. For creates and updates, CID is the record's CID as of this operation. For deletes, it's null.",
106204
+ description: "A repo operation, ie a mutation of a single record.",
105810
106205
  required: ["action", "path", "cid"],
105811
106206
  nullable: ["cid"],
105812
106207
  properties: {
@@ -105818,7 +106213,8 @@ var schemaDict = {
105818
106213
  type: "string"
105819
106214
  },
105820
106215
  cid: {
105821
- type: "cid-link"
106216
+ type: "cid-link",
106217
+ description: "For creates and updates, the new record CID. For deletions, null."
105822
106218
  }
105823
106219
  }
105824
106220
  }
@@ -105858,7 +106254,7 @@ var schemaDict = {
105858
106254
  defs: {
105859
106255
  main: {
105860
106256
  type: "query",
105861
- description: "Fetch all labels from a labeler created after a certain date.",
106257
+ description: "Fetch all labels from a labeler created after a certain date. DEPRECATED: use queryLabels or subscribeLabels instead",
105862
106258
  parameters: {
105863
106259
  type: "params",
105864
106260
  properties: {
@@ -105971,7 +106367,7 @@ var schemaDict = {
105971
106367
  defs: {
105972
106368
  main: {
105973
106369
  type: "procedure",
105974
- description: "Transfer an account.",
106370
+ description: "Transfer an account. NOTE: temporary method, necessarily how account migration will be implemented.",
105975
106371
  input: {
105976
106372
  encoding: "application/json",
105977
106373
  schema: {
@@ -106044,7 +106440,6 @@ var schemaDict = {
106044
106440
  AppBskyActorDefs: {
106045
106441
  lexicon: 1,
106046
106442
  id: "app.bsky.actor.defs",
106047
- description: "A reference to an actor in the network.",
106048
106443
  defs: {
106049
106444
  profileViewBasic: {
106050
106445
  type: "object",
@@ -106177,6 +106572,7 @@ var schemaDict = {
106177
106572
  },
106178
106573
  viewerState: {
106179
106574
  type: "object",
106575
+ description: "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.",
106180
106576
  properties: {
106181
106577
  muted: {
106182
106578
  type: "boolean"
@@ -106261,6 +106657,9 @@ var schemaDict = {
106261
106657
  type: "string",
106262
106658
  format: "at-uri"
106263
106659
  }
106660
+ },
106661
+ timelineIndex: {
106662
+ type: "integer"
106264
106663
  }
106265
106664
  }
106266
106665
  },
@@ -106342,7 +106741,7 @@ var schemaDict = {
106342
106741
  defs: {
106343
106742
  main: {
106344
106743
  type: "query",
106345
- description: "Get private preferences attached to the account.",
106744
+ description: "Get private preferences attached to the current account. Expected use is synchronization between multiple devices, and import/export during account migration. Requires auth.",
106346
106745
  parameters: {
106347
106746
  type: "params",
106348
106747
  properties: {}
@@ -106369,14 +106768,15 @@ var schemaDict = {
106369
106768
  defs: {
106370
106769
  main: {
106371
106770
  type: "query",
106372
- description: "Get detailed profile view of an actor.",
106771
+ description: "Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth.",
106373
106772
  parameters: {
106374
106773
  type: "params",
106375
106774
  required: ["actor"],
106376
106775
  properties: {
106377
106776
  actor: {
106378
106777
  type: "string",
106379
- format: "at-identifier"
106778
+ format: "at-identifier",
106779
+ description: "Handle or DID of account to fetch profile of."
106380
106780
  }
106381
106781
  }
106382
106782
  },
@@ -106436,7 +106836,7 @@ var schemaDict = {
106436
106836
  defs: {
106437
106837
  main: {
106438
106838
  type: "query",
106439
- description: "Get a list of suggested actors, used for discovery.",
106839
+ description: "Get a list of suggested actors. Expected use is discovery of accounts to follow during new account onboarding.",
106440
106840
  parameters: {
106441
106841
  type: "params",
106442
106842
  properties: {
@@ -106479,7 +106879,7 @@ var schemaDict = {
106479
106879
  defs: {
106480
106880
  main: {
106481
106881
  type: "record",
106482
- description: "A declaration of a profile.",
106882
+ description: "A declaration of a Bluesky account profile.",
106483
106883
  key: "literal:self",
106484
106884
  record: {
106485
106885
  type: "object",
@@ -106491,21 +106891,25 @@ var schemaDict = {
106491
106891
  },
106492
106892
  description: {
106493
106893
  type: "string",
106894
+ description: "Free-form profile description text.",
106494
106895
  maxGraphemes: 256,
106495
106896
  maxLength: 2560
106496
106897
  },
106497
106898
  avatar: {
106498
106899
  type: "blob",
106900
+ description: "Small image to be displayed next to posts from account. AKA, 'profile picture'",
106499
106901
  accept: ["image/png", "image/jpeg"],
106500
106902
  maxSize: 1e6
106501
106903
  },
106502
106904
  banner: {
106503
106905
  type: "blob",
106906
+ description: "Larger horizontal image to display behind profile view.",
106504
106907
  accept: ["image/png", "image/jpeg"],
106505
106908
  maxSize: 1e6
106506
106909
  },
106507
106910
  labels: {
106508
106911
  type: "union",
106912
+ description: "Self-label values, specific to the Bluesky application, on the overall account.",
106509
106913
  refs: ["lex:com.atproto.label.defs#selfLabels"]
106510
106914
  }
106511
106915
  }
@@ -106542,7 +106946,7 @@ var schemaDict = {
106542
106946
  defs: {
106543
106947
  main: {
106544
106948
  type: "query",
106545
- description: "Find actors (profiles) matching search criteria.",
106949
+ description: "Find actors (profiles) matching search criteria. Does not require auth.",
106546
106950
  parameters: {
106547
106951
  type: "params",
106548
106952
  properties: {
@@ -106593,7 +106997,7 @@ var schemaDict = {
106593
106997
  defs: {
106594
106998
  main: {
106595
106999
  type: "query",
106596
- description: "Find actor suggestions for a prefix search term.",
107000
+ description: "Find actor suggestions for a prefix search term. Expected use is for auto-completion during text field entry. Does not require auth.",
106597
107001
  parameters: {
106598
107002
  type: "params",
106599
107003
  properties: {
@@ -106635,10 +107039,10 @@ var schemaDict = {
106635
107039
  AppBskyEmbedExternal: {
106636
107040
  lexicon: 1,
106637
107041
  id: "app.bsky.embed.external",
106638
- description: "A representation of some externally linked content, embedded in another form of content.",
106639
107042
  defs: {
106640
107043
  main: {
106641
107044
  type: "object",
107045
+ description: "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).",
106642
107046
  required: ["external"],
106643
107047
  properties: {
106644
107048
  external: {
@@ -106702,7 +107106,7 @@ var schemaDict = {
106702
107106
  AppBskyEmbedImages: {
106703
107107
  lexicon: 1,
106704
107108
  id: "app.bsky.embed.images",
106705
- description: "A set of images embedded in some other form of content.",
107109
+ description: "A set of images embedded in a Bluesky record (eg, a post).",
106706
107110
  defs: {
106707
107111
  main: {
106708
107112
  type: "object",
@@ -106728,7 +107132,8 @@ var schemaDict = {
106728
107132
  maxSize: 1e6
106729
107133
  },
106730
107134
  alt: {
106731
- type: "string"
107135
+ type: "string",
107136
+ description: "Alt text description of the image, for accessibility."
106732
107137
  },
106733
107138
  aspectRatio: {
106734
107139
  type: "ref",
@@ -106770,13 +107175,16 @@ var schemaDict = {
106770
107175
  required: ["thumb", "fullsize", "alt"],
106771
107176
  properties: {
106772
107177
  thumb: {
106773
- type: "string"
107178
+ type: "string",
107179
+ description: "Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View."
106774
107180
  },
106775
107181
  fullsize: {
106776
- type: "string"
107182
+ type: "string",
107183
+ description: "Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View."
106777
107184
  },
106778
107185
  alt: {
106779
- type: "string"
107186
+ type: "string",
107187
+ description: "Alt text description of the image, for accessibility."
106780
107188
  },
106781
107189
  aspectRatio: {
106782
107190
  type: "ref",
@@ -106789,7 +107197,7 @@ var schemaDict = {
106789
107197
  AppBskyEmbedRecord: {
106790
107198
  lexicon: 1,
106791
107199
  id: "app.bsky.embed.record",
106792
- description: "A representation of a record embedded in another form of content.",
107200
+ description: "A representation of a record embedded in a Bluesky record (eg, a post). For example, a quote-post, or sharing a feed generator record.",
106793
107201
  defs: {
106794
107202
  main: {
106795
107203
  type: "object",
@@ -106834,7 +107242,8 @@ var schemaDict = {
106834
107242
  ref: "lex:app.bsky.actor.defs#profileViewBasic"
106835
107243
  },
106836
107244
  value: {
106837
- type: "unknown"
107245
+ type: "unknown",
107246
+ description: "The record data itself."
106838
107247
  },
106839
107248
  labels: {
106840
107249
  type: "array",
@@ -106898,7 +107307,7 @@ var schemaDict = {
106898
107307
  AppBskyEmbedRecordWithMedia: {
106899
107308
  lexicon: 1,
106900
107309
  id: "app.bsky.embed.recordWithMedia",
106901
- description: "A representation of a record embedded in another form of content, alongside other compatible embeds.",
107310
+ description: "A representation of a record embedded in a Bluesky record (eg, a post), alongside other compatible embeds. For example, a quote post and image, or a quote post and external URL card.",
106902
107311
  defs: {
106903
107312
  main: {
106904
107313
  type: "object",
@@ -106997,6 +107406,7 @@ var schemaDict = {
106997
107406
  },
106998
107407
  viewerState: {
106999
107408
  type: "object",
107409
+ description: "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.",
107000
107410
  properties: {
107001
107411
  repost: {
107002
107412
  type: "string",
@@ -107256,7 +107666,7 @@ var schemaDict = {
107256
107666
  defs: {
107257
107667
  main: {
107258
107668
  type: "query",
107259
- description: "Get information about a feed generator, including policies and offered feed URIs.",
107669
+ description: "Get information about a feed generator, including policies and offered feed URIs. Does not require auth; implemented by Feed Generator services (not App View).",
107260
107670
  output: {
107261
107671
  encoding: "application/json",
107262
107672
  schema: {
@@ -107311,7 +107721,7 @@ var schemaDict = {
107311
107721
  defs: {
107312
107722
  main: {
107313
107723
  type: "record",
107314
- description: "A declaration of the existence of a feed generator.",
107724
+ description: "Record declaring of the existence of a feed generator, and containing metadata about it. The record can exist in any repository.",
107315
107725
  key: "any",
107316
107726
  record: {
107317
107727
  type: "object",
@@ -107345,6 +107755,7 @@ var schemaDict = {
107345
107755
  },
107346
107756
  labels: {
107347
107757
  type: "union",
107758
+ description: "Self-label values",
107348
107759
  refs: ["lex:com.atproto.label.defs#selfLabels"]
107349
107760
  },
107350
107761
  createdAt: {
@@ -107362,7 +107773,7 @@ var schemaDict = {
107362
107773
  defs: {
107363
107774
  main: {
107364
107775
  type: "query",
107365
- description: "Get a list of feeds created by the actor.",
107776
+ description: "Get a list of feeds (feed generator records) created by the actor (in the actor's repo).",
107366
107777
  parameters: {
107367
107778
  type: "params",
107368
107779
  required: ["actor"],
@@ -107410,7 +107821,7 @@ var schemaDict = {
107410
107821
  defs: {
107411
107822
  main: {
107412
107823
  type: "query",
107413
- description: "Get a list of posts liked by an actor.",
107824
+ description: "Get a list of posts liked by an actor. Does not require auth.",
107414
107825
  parameters: {
107415
107826
  type: "params",
107416
107827
  required: ["actor"],
@@ -107466,7 +107877,7 @@ var schemaDict = {
107466
107877
  defs: {
107467
107878
  main: {
107468
107879
  type: "query",
107469
- description: "Get a view of an actor's feed.",
107880
+ description: "Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth.",
107470
107881
  parameters: {
107471
107882
  type: "params",
107472
107883
  required: ["actor"],
@@ -107486,6 +107897,7 @@ var schemaDict = {
107486
107897
  },
107487
107898
  filter: {
107488
107899
  type: "string",
107900
+ description: "Combinations of post/repost types to include in response.",
107489
107901
  knownValues: [
107490
107902
  "posts_with_replies",
107491
107903
  "posts_no_replies",
@@ -107532,7 +107944,7 @@ var schemaDict = {
107532
107944
  defs: {
107533
107945
  main: {
107534
107946
  type: "query",
107535
- description: "Get a hydrated feed from an actor's selected feed generator.",
107947
+ description: "Get a hydrated feed from an actor's selected feed generator. Implemented by App View.",
107536
107948
  parameters: {
107537
107949
  type: "params",
107538
107950
  required: ["feed"],
@@ -107585,14 +107997,15 @@ var schemaDict = {
107585
107997
  defs: {
107586
107998
  main: {
107587
107999
  type: "query",
107588
- description: "Get information about a feed generator.",
108000
+ description: "Get information about a feed generator. Implemented by AppView.",
107589
108001
  parameters: {
107590
108002
  type: "params",
107591
108003
  required: ["feed"],
107592
108004
  properties: {
107593
108005
  feed: {
107594
108006
  type: "string",
107595
- format: "at-uri"
108007
+ format: "at-uri",
108008
+ description: "AT-URI of the feed generator record."
107596
108009
  }
107597
108010
  }
107598
108011
  },
@@ -107607,10 +108020,12 @@ var schemaDict = {
107607
108020
  ref: "lex:app.bsky.feed.defs#generatorView"
107608
108021
  },
107609
108022
  isOnline: {
107610
- type: "boolean"
108023
+ type: "boolean",
108024
+ description: "Indicates whether the feed generator service has been online recently, or else seems to be inactive."
107611
108025
  },
107612
108026
  isValid: {
107613
- type: "boolean"
108027
+ type: "boolean",
108028
+ description: "Indicates whether the feed generator service is compatible with the record declaration."
107614
108029
  }
107615
108030
  }
107616
108031
  }
@@ -107663,14 +108078,15 @@ var schemaDict = {
107663
108078
  defs: {
107664
108079
  main: {
107665
108080
  type: "query",
107666
- description: "Get a skeleton of a feed provided by a feed generator.",
108081
+ description: "Get a skeleton of a feed provided by a feed generator. Auth is optional, depending on provider requirements, and provides the DID of the requester. Implemented by Feed Generator Service.",
107667
108082
  parameters: {
107668
108083
  type: "params",
107669
108084
  required: ["feed"],
107670
108085
  properties: {
107671
108086
  feed: {
107672
108087
  type: "string",
107673
- format: "at-uri"
108088
+ format: "at-uri",
108089
+ description: "Reference to feed generator record describing the specific feed being requested."
107674
108090
  },
107675
108091
  limit: {
107676
108092
  type: "integer",
@@ -107716,18 +108132,20 @@ var schemaDict = {
107716
108132
  defs: {
107717
108133
  main: {
107718
108134
  type: "query",
107719
- description: "Get the list of likes.",
108135
+ description: "Get like records which reference a subject (by AT-URI and CID).",
107720
108136
  parameters: {
107721
108137
  type: "params",
107722
108138
  required: ["uri"],
107723
108139
  properties: {
107724
108140
  uri: {
107725
108141
  type: "string",
107726
- format: "at-uri"
108142
+ format: "at-uri",
108143
+ description: "AT-URI of the subject (eg, a post record)."
107727
108144
  },
107728
108145
  cid: {
107729
108146
  type: "string",
107730
- format: "cid"
108147
+ format: "cid",
108148
+ description: "CID of the subject record (aka, specific version of record), to filter likes."
107731
108149
  },
107732
108150
  limit: {
107733
108151
  type: "integer",
@@ -107794,14 +108212,15 @@ var schemaDict = {
107794
108212
  defs: {
107795
108213
  main: {
107796
108214
  type: "query",
107797
- description: "Get a view of a recent posts from actors in a list.",
108215
+ description: "Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.",
107798
108216
  parameters: {
107799
108217
  type: "params",
107800
108218
  required: ["list"],
107801
108219
  properties: {
107802
108220
  list: {
107803
108221
  type: "string",
107804
- format: "at-uri"
108222
+ format: "at-uri",
108223
+ description: "Reference (AT-URI) to the list record."
107805
108224
  },
107806
108225
  limit: {
107807
108226
  type: "integer",
@@ -107847,23 +108266,26 @@ var schemaDict = {
107847
108266
  defs: {
107848
108267
  main: {
107849
108268
  type: "query",
107850
- description: "Get posts in a thread.",
108269
+ description: "Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.",
107851
108270
  parameters: {
107852
108271
  type: "params",
107853
108272
  required: ["uri"],
107854
108273
  properties: {
107855
108274
  uri: {
107856
108275
  type: "string",
107857
- format: "at-uri"
108276
+ format: "at-uri",
108277
+ description: "Reference (AT-URI) to post record."
107858
108278
  },
107859
108279
  depth: {
107860
108280
  type: "integer",
108281
+ description: "How many levels of reply depth should be included in response.",
107861
108282
  default: 6,
107862
108283
  minimum: 0,
107863
108284
  maximum: 1e3
107864
108285
  },
107865
108286
  parentHeight: {
107866
108287
  type: "integer",
108288
+ description: "How many levels of parent (and grandparent, etc) post to include.",
107867
108289
  default: 80,
107868
108290
  minimum: 0,
107869
108291
  maximum: 1e3
@@ -107901,13 +108323,14 @@ var schemaDict = {
107901
108323
  defs: {
107902
108324
  main: {
107903
108325
  type: "query",
107904
- description: "Get a view of an actor's feed.",
108326
+ description: "Gets post views for a specified list of posts (by AT-URI). This is sometimes referred to as 'hydrating' a 'feed skeleton'.",
107905
108327
  parameters: {
107906
108328
  type: "params",
107907
108329
  required: ["uris"],
107908
108330
  properties: {
107909
108331
  uris: {
107910
108332
  type: "array",
108333
+ description: "List of post AT-URIs to return hydrated views for.",
107911
108334
  items: {
107912
108335
  type: "string",
107913
108336
  format: "at-uri"
@@ -107941,18 +108364,20 @@ var schemaDict = {
107941
108364
  defs: {
107942
108365
  main: {
107943
108366
  type: "query",
107944
- description: "Get a list of reposts.",
108367
+ description: "Get a list of reposts for a given post.",
107945
108368
  parameters: {
107946
108369
  type: "params",
107947
108370
  required: ["uri"],
107948
108371
  properties: {
107949
108372
  uri: {
107950
108373
  type: "string",
107951
- format: "at-uri"
108374
+ format: "at-uri",
108375
+ description: "Reference (AT-URI) of post record"
107952
108376
  },
107953
108377
  cid: {
107954
108378
  type: "string",
107955
- format: "cid"
108379
+ format: "cid",
108380
+ description: "If supplied, filters to reposts of specific version (by CID) of the post record."
107956
108381
  },
107957
108382
  limit: {
107958
108383
  type: "integer",
@@ -108001,7 +108426,7 @@ var schemaDict = {
108001
108426
  defs: {
108002
108427
  main: {
108003
108428
  type: "query",
108004
- description: "Get a list of suggested feeds for the viewer.",
108429
+ description: "Get a list of suggested feeds (feed generators) for the requesting account.",
108005
108430
  parameters: {
108006
108431
  type: "params",
108007
108432
  properties: {
@@ -108044,12 +108469,13 @@ var schemaDict = {
108044
108469
  defs: {
108045
108470
  main: {
108046
108471
  type: "query",
108047
- description: "Get a view of the actor's home timeline.",
108472
+ description: "Get a view of the requesting account's home timeline. This is expected to be some form of reverse-chronological feed.",
108048
108473
  parameters: {
108049
108474
  type: "params",
108050
108475
  properties: {
108051
108476
  algorithm: {
108052
- type: "string"
108477
+ type: "string",
108478
+ description: "Variant 'algorithm' for timeline. Implementation-specific. NOTE: most feed flexibility has been moved to feed generator mechanism."
108053
108479
  },
108054
108480
  limit: {
108055
108481
  type: "integer",
@@ -108090,7 +108516,7 @@ var schemaDict = {
108090
108516
  defs: {
108091
108517
  main: {
108092
108518
  type: "record",
108093
- description: "A declaration of a like.",
108519
+ description: "Record declaring a 'like' of a piece of subject content.",
108094
108520
  key: "tid",
108095
108521
  record: {
108096
108522
  type: "object",
@@ -108115,7 +108541,7 @@ var schemaDict = {
108115
108541
  defs: {
108116
108542
  main: {
108117
108543
  type: "record",
108118
- description: "A declaration of a post.",
108544
+ description: "Record containing a Bluesky post.",
108119
108545
  key: "tid",
108120
108546
  record: {
108121
108547
  type: "object",
@@ -108124,11 +108550,12 @@ var schemaDict = {
108124
108550
  text: {
108125
108551
  type: "string",
108126
108552
  maxLength: 3e3,
108127
- maxGraphemes: 300
108553
+ maxGraphemes: 300,
108554
+ description: "The primary post content. May be an empty string, if there are embeds."
108128
108555
  },
108129
108556
  entities: {
108130
108557
  type: "array",
108131
- description: "Deprecated: replaced by app.bsky.richtext.facet.",
108558
+ description: "DEPRECATED: replaced by app.bsky.richtext.facet.",
108132
108559
  items: {
108133
108560
  type: "ref",
108134
108561
  ref: "lex:app.bsky.feed.post#entity"
@@ -108136,6 +108563,7 @@ var schemaDict = {
108136
108563
  },
108137
108564
  facets: {
108138
108565
  type: "array",
108566
+ description: "Annotations of text (mentions, URLs, hashtags, etc)",
108139
108567
  items: {
108140
108568
  type: "ref",
108141
108569
  ref: "lex:app.bsky.richtext.facet"
@@ -108156,6 +108584,7 @@ var schemaDict = {
108156
108584
  },
108157
108585
  langs: {
108158
108586
  type: "array",
108587
+ description: "Indicates human language of post primary text content.",
108159
108588
  maxLength: 3,
108160
108589
  items: {
108161
108590
  type: "string",
@@ -108164,21 +108593,23 @@ var schemaDict = {
108164
108593
  },
108165
108594
  labels: {
108166
108595
  type: "union",
108596
+ description: "Self-label values for this post. Effectively content warnings.",
108167
108597
  refs: ["lex:com.atproto.label.defs#selfLabels"]
108168
108598
  },
108169
108599
  tags: {
108170
108600
  type: "array",
108601
+ description: "Additional non-inline tags describing this post.",
108171
108602
  maxLength: 8,
108172
108603
  items: {
108173
108604
  type: "string",
108174
108605
  maxLength: 640,
108175
108606
  maxGraphemes: 64
108176
- },
108177
- description: "Additional non-inline tags describing this post."
108607
+ }
108178
108608
  },
108179
108609
  createdAt: {
108180
108610
  type: "string",
108181
- format: "datetime"
108611
+ format: "datetime",
108612
+ description: "Client-declared timestamp when this post was originally created."
108182
108613
  }
108183
108614
  }
108184
108615
  }
@@ -108237,7 +108668,7 @@ var schemaDict = {
108237
108668
  id: "app.bsky.feed.repost",
108238
108669
  defs: {
108239
108670
  main: {
108240
- description: "A declaration of a repost.",
108671
+ description: "Record representing a 'repost' of an existing Bluesky post.",
108241
108672
  type: "record",
108242
108673
  key: "tid",
108243
108674
  record: {
@@ -108263,7 +108694,7 @@ var schemaDict = {
108263
108694
  defs: {
108264
108695
  main: {
108265
108696
  type: "query",
108266
- description: "Find posts matching search criteria.",
108697
+ description: "Find posts matching search criteria, returning views of those posts.",
108267
108698
  parameters: {
108268
108699
  type: "params",
108269
108700
  required: ["q"],
@@ -108322,14 +108753,15 @@ var schemaDict = {
108322
108753
  main: {
108323
108754
  type: "record",
108324
108755
  key: "tid",
108325
- description: "Defines interaction gating rules for a thread. The rkey of the threadgate record should match the rkey of the thread's root post.",
108756
+ description: "Record defining interaction gating rules for a thread (aka, reply controls). The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same repository..",
108326
108757
  record: {
108327
108758
  type: "object",
108328
108759
  required: ["post", "createdAt"],
108329
108760
  properties: {
108330
108761
  post: {
108331
108762
  type: "string",
108332
- format: "at-uri"
108763
+ format: "at-uri",
108764
+ description: "Reference (AT-URI) to the post record."
108333
108765
  },
108334
108766
  allow: {
108335
108767
  type: "array",
@@ -108379,7 +108811,7 @@ var schemaDict = {
108379
108811
  defs: {
108380
108812
  main: {
108381
108813
  type: "record",
108382
- description: "A declaration of a block.",
108814
+ description: "Record declaring a 'block' relationship against another account. NOTE: blocks are public in Bluesky; see blog posts for details.",
108383
108815
  key: "tid",
108384
108816
  record: {
108385
108817
  type: "object",
@@ -108387,7 +108819,8 @@ var schemaDict = {
108387
108819
  properties: {
108388
108820
  subject: {
108389
108821
  type: "string",
108390
- format: "did"
108822
+ format: "did",
108823
+ description: "DID of the account to be blocked."
108391
108824
  },
108392
108825
  createdAt: {
108393
108826
  type: "string",
@@ -108571,7 +109004,7 @@ var schemaDict = {
108571
109004
  defs: {
108572
109005
  main: {
108573
109006
  type: "record",
108574
- description: "A declaration of a social follow.",
109007
+ description: "Record declaring a social 'follow' relationship of another account. Duplicate follows will be ignored by the AppView.",
108575
109008
  key: "tid",
108576
109009
  record: {
108577
109010
  type: "object",
@@ -108596,7 +109029,7 @@ var schemaDict = {
108596
109029
  defs: {
108597
109030
  main: {
108598
109031
  type: "query",
108599
- description: "Get a list of who the actor is blocking.",
109032
+ description: "Enumerates which accounts the requesting account is currently blocking. Requires auth.",
108600
109033
  parameters: {
108601
109034
  type: "params",
108602
109035
  properties: {
@@ -108639,7 +109072,7 @@ var schemaDict = {
108639
109072
  defs: {
108640
109073
  main: {
108641
109074
  type: "query",
108642
- description: "Get a list of an actor's followers.",
109075
+ description: "Enumerates accounts which follow a specified account (actor).",
108643
109076
  parameters: {
108644
109077
  type: "params",
108645
109078
  required: ["actor"],
@@ -108691,7 +109124,7 @@ var schemaDict = {
108691
109124
  defs: {
108692
109125
  main: {
108693
109126
  type: "query",
108694
- description: "Get a list of who the actor follows.",
109127
+ description: "Enumerates accounts which a specified account (actor) follows.",
108695
109128
  parameters: {
108696
109129
  type: "params",
108697
109130
  required: ["actor"],
@@ -108743,14 +109176,15 @@ var schemaDict = {
108743
109176
  defs: {
108744
109177
  main: {
108745
109178
  type: "query",
108746
- description: "Get a list of actors.",
109179
+ description: "Gets a 'view' (with additional context) of a specified list.",
108747
109180
  parameters: {
108748
109181
  type: "params",
108749
109182
  required: ["list"],
108750
109183
  properties: {
108751
109184
  list: {
108752
109185
  type: "string",
108753
- format: "at-uri"
109186
+ format: "at-uri",
109187
+ description: "Reference (AT-URI) of the list record to hydrate."
108754
109188
  },
108755
109189
  limit: {
108756
109190
  type: "integer",
@@ -108795,7 +109229,7 @@ var schemaDict = {
108795
109229
  defs: {
108796
109230
  main: {
108797
109231
  type: "query",
108798
- description: "Get lists that the actor is blocking.",
109232
+ description: "Get mod lists that the requesting account (actor) is blocking. Requires auth.",
108799
109233
  parameters: {
108800
109234
  type: "params",
108801
109235
  properties: {
@@ -108838,7 +109272,7 @@ var schemaDict = {
108838
109272
  defs: {
108839
109273
  main: {
108840
109274
  type: "query",
108841
- description: "Get lists that the actor is muting.",
109275
+ description: "Enumerates mod lists that the requesting account (actor) currently has muted. Requires auth.",
108842
109276
  parameters: {
108843
109277
  type: "params",
108844
109278
  properties: {
@@ -108881,14 +109315,15 @@ var schemaDict = {
108881
109315
  defs: {
108882
109316
  main: {
108883
109317
  type: "query",
108884
- description: "Get a list of lists that belong to an actor.",
109318
+ description: "Enumerates the lists created by a specified account (actor).",
108885
109319
  parameters: {
108886
109320
  type: "params",
108887
109321
  required: ["actor"],
108888
109322
  properties: {
108889
109323
  actor: {
108890
109324
  type: "string",
108891
- format: "at-identifier"
109325
+ format: "at-identifier",
109326
+ description: "The account (actor) to enumerate lists from."
108892
109327
  },
108893
109328
  limit: {
108894
109329
  type: "integer",
@@ -108929,7 +109364,7 @@ var schemaDict = {
108929
109364
  defs: {
108930
109365
  main: {
108931
109366
  type: "query",
108932
- description: "Get a list of who the actor mutes.",
109367
+ description: "Enumerates accounts that the requesting account (actor) currently has muted. Requires auth.",
108933
109368
  parameters: {
108934
109369
  type: "params",
108935
109370
  properties: {
@@ -108972,17 +109407,19 @@ var schemaDict = {
108972
109407
  defs: {
108973
109408
  main: {
108974
109409
  type: "query",
108975
- description: "Enumerates public relationships between one account, and a list of other accounts",
109410
+ description: "Enumerates public relationships between one account, and a list of other accounts. Does not require auth.",
108976
109411
  parameters: {
108977
109412
  type: "params",
108978
109413
  required: ["actor"],
108979
109414
  properties: {
108980
109415
  actor: {
108981
109416
  type: "string",
108982
- format: "at-identifier"
109417
+ format: "at-identifier",
109418
+ description: "Primary account requesting relationships for."
108983
109419
  },
108984
109420
  others: {
108985
109421
  type: "array",
109422
+ description: "List of 'other' accounts to be related back to the primary.",
108986
109423
  maxLength: 30,
108987
109424
  items: {
108988
109425
  type: "string",
@@ -109029,7 +109466,7 @@ var schemaDict = {
109029
109466
  defs: {
109030
109467
  main: {
109031
109468
  type: "query",
109032
- description: "Get suggested follows related to a given actor.",
109469
+ description: "Enumerates follows similar to a given account (actor). Expected use is to recommend additional accounts immediately after following one account.",
109033
109470
  parameters: {
109034
109471
  type: "params",
109035
109472
  required: ["actor"],
@@ -109065,7 +109502,7 @@ var schemaDict = {
109065
109502
  defs: {
109066
109503
  main: {
109067
109504
  type: "record",
109068
- description: "A declaration of a list of actors.",
109505
+ description: "Record representing a list of accounts (actors). Scope includes both moderation-oriented lists and curration-oriented lists.",
109069
109506
  key: "tid",
109070
109507
  record: {
109071
109508
  type: "object",
@@ -109073,12 +109510,14 @@ var schemaDict = {
109073
109510
  properties: {
109074
109511
  purpose: {
109075
109512
  type: "ref",
109513
+ description: "Defines the purpose of the list (aka, moderation-oriented or curration-oriented)",
109076
109514
  ref: "lex:app.bsky.graph.defs#listPurpose"
109077
109515
  },
109078
109516
  name: {
109079
109517
  type: "string",
109080
109518
  maxLength: 64,
109081
- minLength: 1
109519
+ minLength: 1,
109520
+ description: "Display name for list; can not be empty."
109082
109521
  },
109083
109522
  description: {
109084
109523
  type: "string",
@@ -109116,7 +109555,7 @@ var schemaDict = {
109116
109555
  defs: {
109117
109556
  main: {
109118
109557
  type: "record",
109119
- description: "A block of an entire list of actors.",
109558
+ description: "Record representing a block relationship against an entire an entire list of accounts (actors).",
109120
109559
  key: "tid",
109121
109560
  record: {
109122
109561
  type: "object",
@@ -109124,7 +109563,8 @@ var schemaDict = {
109124
109563
  properties: {
109125
109564
  subject: {
109126
109565
  type: "string",
109127
- format: "at-uri"
109566
+ format: "at-uri",
109567
+ description: "Reference (AT-URI) to the mod list record."
109128
109568
  },
109129
109569
  createdAt: {
109130
109570
  type: "string",
@@ -109141,7 +109581,7 @@ var schemaDict = {
109141
109581
  defs: {
109142
109582
  main: {
109143
109583
  type: "record",
109144
- description: "An item under a declared list of actors.",
109584
+ description: "Record representing an account's inclusion on a specific list. The AppView will ignore duplicate listitem records.",
109145
109585
  key: "tid",
109146
109586
  record: {
109147
109587
  type: "object",
@@ -109149,11 +109589,13 @@ var schemaDict = {
109149
109589
  properties: {
109150
109590
  subject: {
109151
109591
  type: "string",
109152
- format: "did"
109592
+ format: "did",
109593
+ description: "The account which is included on the list."
109153
109594
  },
109154
109595
  list: {
109155
109596
  type: "string",
109156
- format: "at-uri"
109597
+ format: "at-uri",
109598
+ description: "Reference (AT-URI) to the list record (app.bsky.graph.list)."
109157
109599
  },
109158
109600
  createdAt: {
109159
109601
  type: "string",
@@ -109170,7 +109612,7 @@ var schemaDict = {
109170
109612
  defs: {
109171
109613
  main: {
109172
109614
  type: "procedure",
109173
- description: "Mute an actor by DID or handle.",
109615
+ description: "Creates a mute relationship for the specified account. Mutes are private in Bluesky. Requires auth.",
109174
109616
  input: {
109175
109617
  encoding: "application/json",
109176
109618
  schema: {
@@ -109193,7 +109635,7 @@ var schemaDict = {
109193
109635
  defs: {
109194
109636
  main: {
109195
109637
  type: "procedure",
109196
- description: "Mute a list of actors.",
109638
+ description: "Creates a mute relationship for the specified list of accounts. Mutes are private in Bluesky. Requires auth.",
109197
109639
  input: {
109198
109640
  encoding: "application/json",
109199
109641
  schema: {
@@ -109216,7 +109658,7 @@ var schemaDict = {
109216
109658
  defs: {
109217
109659
  main: {
109218
109660
  type: "procedure",
109219
- description: "Unmute an actor by DID or handle.",
109661
+ description: "Unmutes the specified account. Requires auth.",
109220
109662
  input: {
109221
109663
  encoding: "application/json",
109222
109664
  schema: {
@@ -109239,7 +109681,7 @@ var schemaDict = {
109239
109681
  defs: {
109240
109682
  main: {
109241
109683
  type: "procedure",
109242
- description: "Unmute a list of actors.",
109684
+ description: "Unmutes the specified list of accounts. Requires auth.",
109243
109685
  input: {
109244
109686
  encoding: "application/json",
109245
109687
  schema: {
@@ -109262,7 +109704,7 @@ var schemaDict = {
109262
109704
  defs: {
109263
109705
  main: {
109264
109706
  type: "query",
109265
- description: "Get the count of unread notifications.",
109707
+ description: "Count the number of unread notifications for the requesting account. Requires auth.",
109266
109708
  parameters: {
109267
109709
  type: "params",
109268
109710
  properties: {
@@ -109293,7 +109735,7 @@ var schemaDict = {
109293
109735
  defs: {
109294
109736
  main: {
109295
109737
  type: "query",
109296
- description: "Get a list of notifications.",
109738
+ description: "Enumerate notifications for the requesting account. Requires auth.",
109297
109739
  parameters: {
109298
109740
  type: "params",
109299
109741
  properties: {
@@ -109403,7 +109845,7 @@ var schemaDict = {
109403
109845
  defs: {
109404
109846
  main: {
109405
109847
  type: "procedure",
109406
- description: "Register for push notifications with a service.",
109848
+ description: "Register to receive push notifications, via a specified service, for the requesting account. Requires auth.",
109407
109849
  input: {
109408
109850
  encoding: "application/json",
109409
109851
  schema: {
@@ -109436,7 +109878,7 @@ var schemaDict = {
109436
109878
  defs: {
109437
109879
  main: {
109438
109880
  type: "procedure",
109439
- description: "Notify server that the user has seen notifications.",
109881
+ description: "Notify server that the requesting account has seen notifications. Requires auth.",
109440
109882
  input: {
109441
109883
  encoding: "application/json",
109442
109884
  schema: {
@@ -109459,6 +109901,7 @@ var schemaDict = {
109459
109901
  defs: {
109460
109902
  main: {
109461
109903
  type: "object",
109904
+ description: "Annotation of a sub-string within rich text.",
109462
109905
  required: ["index", "features"],
109463
109906
  properties: {
109464
109907
  index: {
@@ -109480,7 +109923,7 @@ var schemaDict = {
109480
109923
  },
109481
109924
  mention: {
109482
109925
  type: "object",
109483
- description: "A facet feature for actor mentions.",
109926
+ description: "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.",
109484
109927
  required: ["did"],
109485
109928
  properties: {
109486
109929
  did: {
@@ -109491,7 +109934,7 @@ var schemaDict = {
109491
109934
  },
109492
109935
  link: {
109493
109936
  type: "object",
109494
- description: "A facet feature for links.",
109937
+ description: "Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.",
109495
109938
  required: ["uri"],
109496
109939
  properties: {
109497
109940
  uri: {
@@ -109502,7 +109945,7 @@ var schemaDict = {
109502
109945
  },
109503
109946
  tag: {
109504
109947
  type: "object",
109505
- description: "A hashtag.",
109948
+ description: "Facet feature for a hashtag. The text usually includes a '#' prefix, but the facet reference should not (except in the case of 'double hash tags').",
109506
109949
  required: ["tag"],
109507
109950
  properties: {
109508
109951
  tag: {
@@ -109514,7 +109957,7 @@ var schemaDict = {
109514
109957
  },
109515
109958
  byteSlice: {
109516
109959
  type: "object",
109517
- description: "A text segment. Start is inclusive, end is exclusive. Indices are for utf8-encoded strings.",
109960
+ description: "Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets.",
109518
109961
  required: ["byteStart", "byteEnd"],
109519
109962
  properties: {
109520
109963
  byteStart: {
@@ -109805,6 +110248,9 @@ function isModEventMute(v) {
109805
110248
  function isModEventEmail(v) {
109806
110249
  return isObj2(v) && hasProp2(v, "$type") && v.$type === "com.atproto.admin.defs#modEventEmail";
109807
110250
  }
110251
+ function isModEventTag(v) {
110252
+ return isObj2(v) && hasProp2(v, "$type") && v.$type === "com.atproto.admin.defs#modEventTag";
110253
+ }
109808
110254
 
109809
110255
  // src/api/moderation/util.ts
109810
110256
  var getReasonType = (reasonType) => {
@@ -109848,7 +110294,8 @@ var eventTypes = /* @__PURE__ */ new Set([
109848
110294
  "com.atproto.admin.defs#modEventUnmute",
109849
110295
  "com.atproto.admin.defs#modEventReverseTakedown",
109850
110296
  "com.atproto.admin.defs#modEventEmail",
109851
- "com.atproto.admin.defs#modEventResolveAppeal"
110297
+ "com.atproto.admin.defs#modEventResolveAppeal",
110298
+ "com.atproto.admin.defs#modEventTag"
109852
110299
  ]);
109853
110300
 
109854
110301
  // src/mod-service/subject.ts
@@ -109940,6 +110387,80 @@ var RecordSubject = class {
109940
110387
  }
109941
110388
  };
109942
110389
 
110390
+ // src/logger.ts
110391
+ var import_pino_http = __toESM(require_logger());
110392
+ var dbLogger = subsystemLogger("ozone:db");
110393
+ var httpLogger = subsystemLogger("ozone");
110394
+ var langLogger = subsystemLogger("ozone:lang");
110395
+ var loggerMiddleware = (0, import_pino_http.default)({
110396
+ logger: httpLogger,
110397
+ serializers: {
110398
+ err: (err) => {
110399
+ return {
110400
+ code: err?.code,
110401
+ message: err?.message
110402
+ };
110403
+ }
110404
+ }
110405
+ });
110406
+
110407
+ // src/mod-service/lang.ts
110408
+ var ModerationLangService = class {
110409
+ constructor(moderationService) {
110410
+ this.moderationService = moderationService;
110411
+ }
110412
+ async tagSubjectWithLang({
110413
+ subject,
110414
+ subjectStatus,
110415
+ createdBy
110416
+ }) {
110417
+ if (subjectStatus && !subjectStatus.tags?.find((tag) => tag.includes("lang:"))) {
110418
+ try {
110419
+ const recordLangs = await this.getRecordLang({
110420
+ subject
110421
+ });
110422
+ await this.moderationService.logEvent({
110423
+ event: {
110424
+ $type: "com.atproto.admin.defs#modEventTag",
110425
+ add: recordLangs ? recordLangs.map((lang) => `lang:${lang}`) : ["lang:und"],
110426
+ remove: []
110427
+ },
110428
+ subject,
110429
+ createdBy
110430
+ });
110431
+ } catch (err) {
110432
+ langLogger.error({ subject, err }, "Error getting record langs");
110433
+ }
110434
+ }
110435
+ }
110436
+ async getRecordLang({
110437
+ subject
110438
+ }) {
110439
+ const isRecord = subject.isRecord();
110440
+ const langs = /* @__PURE__ */ new Set();
110441
+ if (subject.isRepo() || isRecord && subject.uri.endsWith("/app.bsky.actor.profile/self")) {
110442
+ const feed = await this.moderationService.views.fetchAuthorFeed(subject.did);
110443
+ feed.forEach((item) => {
110444
+ const itemLangs = item.post.record["langs"];
110445
+ if (itemLangs?.length) {
110446
+ itemLangs.forEach((lang) => langs.add(lang.split("-")[0]));
110447
+ }
110448
+ });
110449
+ }
110450
+ if (isRecord) {
110451
+ const recordByUri = await this.moderationService.views.fetchRecords([
110452
+ subject
110453
+ ]);
110454
+ const record = recordByUri.get(subject.uri);
110455
+ const recordLang = record?.value.langs;
110456
+ if (recordLang?.length) {
110457
+ recordLang.map((lang) => lang.split("-")[0]).forEach((lang) => langs.add(lang));
110458
+ }
110459
+ }
110460
+ return langs.size > 0 ? Array.from(langs) : null;
110461
+ }
110462
+ };
110463
+
109943
110464
  // src/api/moderation/createReport.ts
109944
110465
  function createReport_default(server, ctx) {
109945
110466
  server.com.atproto.moderation.createReport({
@@ -109954,12 +110475,19 @@ function createReport_default(server, ctx) {
109954
110475
  const db = ctx.db;
109955
110476
  const report = await db.transaction(async (dbTxn) => {
109956
110477
  const moderationTxn = ctx.modService(dbTxn);
109957
- return moderationTxn.report({
110478
+ const { event: reportEvent, subjectStatus } = await moderationTxn.report({
109958
110479
  reasonType: getReasonType(reasonType),
109959
110480
  reason,
109960
110481
  subject,
109961
110482
  reportedBy: requester || ctx.cfg.service.did
109962
110483
  });
110484
+ const moderationLangService = new ModerationLangService(moderationTxn);
110485
+ await moderationLangService.tagSubjectWithLang({
110486
+ subject,
110487
+ subjectStatus,
110488
+ createdBy: ctx.cfg.service.did
110489
+ });
110490
+ return reportEvent;
109963
110491
  });
109964
110492
  const body = ctx.modService(db).views.formatReport(report);
109965
110493
  return {
@@ -110017,28 +110545,34 @@ function emitModerationEvent_default(server, ctx) {
110017
110545
  subject,
110018
110546
  createdBy
110019
110547
  });
110548
+ const moderationLangService = new ModerationLangService(moderationTxn);
110549
+ await moderationLangService.tagSubjectWithLang({
110550
+ subject,
110551
+ createdBy: ctx.cfg.service.did,
110552
+ subjectStatus: result.subjectStatus
110553
+ });
110020
110554
  if (subject.isRepo()) {
110021
110555
  if (isTakedownEvent) {
110022
- const isSuspend = !!result.durationInHours;
110023
- await moderationTxn.takedownRepo(subject, result.id, isSuspend);
110556
+ const isSuspend = !!result.event.durationInHours;
110557
+ await moderationTxn.takedownRepo(subject, result.event.id, isSuspend);
110024
110558
  } else if (isReverseTakedownEvent) {
110025
110559
  await moderationTxn.reverseTakedownRepo(subject);
110026
110560
  }
110027
110561
  }
110028
110562
  if (subject.isRecord()) {
110029
110563
  if (isTakedownEvent) {
110030
- await moderationTxn.takedownRecord(subject, result.id);
110564
+ await moderationTxn.takedownRecord(subject, result.event.id);
110031
110565
  } else if (isReverseTakedownEvent) {
110032
110566
  await moderationTxn.reverseTakedownRecord(subject);
110033
110567
  }
110034
110568
  }
110035
110569
  if (isLabelEvent) {
110036
- await moderationTxn.formatAndCreateLabels(result.subjectUri ?? result.subjectDid, result.subjectCid, {
110037
- create: result.createLabelVals?.length ? result.createLabelVals.split(" ") : void 0,
110038
- negate: result.negateLabelVals?.length ? result.negateLabelVals.split(" ") : void 0
110570
+ await moderationTxn.formatAndCreateLabels(result.event.subjectUri ?? result.event.subjectDid, result.event.subjectCid, {
110571
+ create: result.event.createLabelVals?.length ? result.event.createLabelVals.split(" ") : void 0,
110572
+ negate: result.event.negateLabelVals?.length ? result.event.negateLabelVals.split(" ") : void 0
110039
110573
  });
110040
110574
  }
110041
- return result;
110575
+ return result.event;
110042
110576
  });
110043
110577
  return {
110044
110578
  encoding: "application/json",
@@ -110194,7 +110728,9 @@ function queryModerationStatuses_default(server, ctx) {
110194
110728
  sortField = "lastReportedAt",
110195
110729
  includeMuted = false,
110196
110730
  limit = 50,
110197
- cursor
110731
+ cursor,
110732
+ tags = [],
110733
+ excludeTags = []
110198
110734
  } = params2;
110199
110735
  const db = ctx.db;
110200
110736
  const modService = ctx.modService(db);
@@ -110213,7 +110749,9 @@ function queryModerationStatuses_default(server, ctx) {
110213
110749
  lastReviewedBy,
110214
110750
  sortField,
110215
110751
  limit,
110216
- cursor
110752
+ cursor,
110753
+ tags,
110754
+ excludeTags
110217
110755
  });
110218
110756
  const subjectStatuses = results.statuses.map((status) => modService.views.formatSubjectStatus(status));
110219
110757
  return {
@@ -110246,6 +110784,8 @@ function queryModerationEvents_default(server, ctx) {
110246
110784
  createdBefore,
110247
110785
  addedLabels = [],
110248
110786
  removedLabels = [],
110787
+ addedTags = [],
110788
+ removedTags = [],
110249
110789
  reportTypes
110250
110790
  } = params2;
110251
110791
  const db = ctx.db;
@@ -110263,7 +110803,9 @@ function queryModerationEvents_default(server, ctx) {
110263
110803
  createdAfter,
110264
110804
  createdBefore,
110265
110805
  addedLabels,
110806
+ addedTags,
110266
110807
  removedLabels,
110808
+ removedTags,
110267
110809
  reportTypes
110268
110810
  });
110269
110811
  return {
@@ -110433,7 +110975,7 @@ var import_express2 = __toESM(require_express2());
110433
110975
  function isUndefined(obj) {
110434
110976
  return obj === void 0;
110435
110977
  }
110436
- function isString(obj) {
110978
+ function isString2(obj) {
110437
110979
  return typeof obj === "string";
110438
110980
  }
110439
110981
  function isNumber(obj) {
@@ -111175,7 +111717,7 @@ var DynamicReferenceBuilder = class {
111175
111717
  }
111176
111718
  };
111177
111719
  function isDynamicReferenceBuilder(obj) {
111178
- return isObject2(obj) && isOperationNodeSource(obj) && isString(obj.dynamicReference);
111720
+ return isObject2(obj) && isOperationNodeSource(obj) && isString2(obj.dynamicReference);
111179
111721
  }
111180
111722
 
111181
111723
  // ../../node_modules/.pnpm/kysely@0.22.0/node_modules/kysely/dist/esm/parser/reference-parser.js
@@ -111187,7 +111729,7 @@ function parseReferenceExpressionOrList(arg) {
111187
111729
  }
111188
111730
  }
111189
111731
  function parseReferenceExpression(exp) {
111190
- if (isString(exp)) {
111732
+ if (isString2(exp)) {
111191
111733
  return parseStringReference(exp);
111192
111734
  } else if (isDynamicReferenceBuilder(exp)) {
111193
111735
  return exp.toOperationNode();
@@ -111337,7 +111879,7 @@ function parseIsFilter(left, op, right) {
111337
111879
  return FilterNode.create(parseReferenceExpression(left), parseFilterOperator(op), ValueNode.createImmediate(right));
111338
111880
  }
111339
111881
  function parseFilterOperator(op) {
111340
- if (isString(op) && OPERATORS.includes(op)) {
111882
+ if (isString2(op) && OPERATORS.includes(op)) {
111341
111883
  return OperatorNode.create(op);
111342
111884
  } else if (isOperationNodeSource(op)) {
111343
111885
  return op.toOperationNode();
@@ -111440,7 +111982,7 @@ function parseSelectExpressionOrList(selection) {
111440
111982
  }
111441
111983
  }
111442
111984
  function parseSelectExpression(selection) {
111443
- if (isString(selection)) {
111985
+ if (isString2(selection)) {
111444
111986
  return SelectionNode.create(parseAliasedStringReference(selection));
111445
111987
  } else if (isDynamicReferenceBuilder(selection)) {
111446
111988
  return SelectionNode.create(selection.toOperationNode());
@@ -111458,7 +112000,7 @@ function parseSelectAll(table) {
111458
112000
  }
111459
112001
  }
111460
112002
  function parseSelectAllArg(table) {
111461
- if (isString(table)) {
112003
+ if (isString2(table)) {
111462
112004
  return SelectionNode.createSelectAllFromTable(parseTable(table));
111463
112005
  }
111464
112006
  throw new Error(`invalid value selectAll expression: ${JSON.stringify(table)}`);
@@ -114388,7 +114930,7 @@ function parseTableExpressionOrList(table) {
114388
114930
  }
114389
114931
  }
114390
114932
  function parseTableExpression(table) {
114391
- if (isString(table)) {
114933
+ if (isString2(table)) {
114392
114934
  return parseAliasedTable(table);
114393
114935
  } else {
114394
114936
  return parseAliasedComplexExpression(table);
@@ -116703,7 +117245,7 @@ var DefaultQueryCompiler = class extends OperationNodeVisitor {
116703
117245
  this.append(this.getRightIdentifierWrapper());
116704
117246
  }
116705
117247
  compileUnwrappedIdentifier(node) {
116706
- if (!isString(node.name)) {
117248
+ if (!isString2(node.name)) {
116707
117249
  throw new Error("a non-string identifier was passed to compileUnwrappedIdentifier.");
116708
117250
  }
116709
117251
  this.append(this.sanitizeIdentifier(node.name));
@@ -117402,7 +117944,7 @@ var DefaultQueryCompiler = class extends OperationNodeVisitor {
117402
117944
  this.#parameters.push(parameter);
117403
117945
  }
117404
117946
  appendImmediateValue(value) {
117405
- if (isString(value)) {
117947
+ if (isString2(value)) {
117406
117948
  this.append(`'${value}'`);
117407
117949
  } else if (isNumber(value) || isBoolean(value)) {
117408
117950
  this.append(value.toString());
@@ -117839,7 +118381,7 @@ ${stackExtension}`;
117839
118381
  return err;
117840
118382
  }
117841
118383
  function isStackHolder(obj) {
117842
- return isObject2(obj) && isString(obj.stack);
118384
+ return isObject2(obj) && isString2(obj.stack);
117843
118385
  }
117844
118386
 
117845
118387
  // ../../node_modules/.pnpm/kysely@0.22.0/node_modules/kysely/dist/esm/dialect/postgres/postgres-driver.js
@@ -118034,22 +118576,6 @@ function api_default(server, ctx) {
118034
118576
  return server;
118035
118577
  }
118036
118578
 
118037
- // src/logger.ts
118038
- var import_pino_http = __toESM(require_logger());
118039
- var dbLogger = subsystemLogger("ozone:db");
118040
- var httpLogger = subsystemLogger("ozone");
118041
- var loggerMiddleware = (0, import_pino_http.default)({
118042
- logger: httpLogger,
118043
- serializers: {
118044
- err: (err) => {
118045
- return {
118046
- code: err?.code,
118047
- message: err?.message
118048
- };
118049
- }
118050
- }
118051
- });
118052
-
118053
118579
  // src/error.ts
118054
118580
  var handler = (err, _req, res, next) => {
118055
118581
  httpLogger.error(err, "unexpected internal server error");
@@ -119297,6 +119823,12 @@ var schemaDict2 = {
119297
119823
  suspendUntil: {
119298
119824
  type: "string",
119299
119825
  format: "datetime"
119826
+ },
119827
+ tags: {
119828
+ type: "array",
119829
+ items: {
119830
+ type: "string"
119831
+ }
119300
119832
  }
119301
119833
  }
119302
119834
  },
@@ -119888,6 +120420,31 @@ var schemaDict2 = {
119888
120420
  }
119889
120421
  }
119890
120422
  },
120423
+ modEventTag: {
120424
+ type: "object",
120425
+ description: "Add/Remove a tag on a subject",
120426
+ required: ["add", "remove"],
120427
+ properties: {
120428
+ add: {
120429
+ type: "array",
120430
+ items: {
120431
+ type: "string"
120432
+ },
120433
+ description: "Tags to be added to the subject. If already exists, won't be duplicated."
120434
+ },
120435
+ remove: {
120436
+ type: "array",
120437
+ items: {
120438
+ type: "string"
120439
+ },
120440
+ description: "Tags to be removed to the subject. Ignores a tag If it doesn't exist, won't be duplicated."
120441
+ },
120442
+ comment: {
120443
+ type: "string",
120444
+ description: "Additional comment about added/removed tags."
120445
+ }
120446
+ }
120447
+ },
119891
120448
  communicationTemplateView: {
119892
120449
  type: "object",
119893
120450
  required: [
@@ -120062,7 +120619,8 @@ var schemaDict2 = {
120062
120619
  "lex:com.atproto.admin.defs#modEventMute",
120063
120620
  "lex:com.atproto.admin.defs#modEventReverseTakedown",
120064
120621
  "lex:com.atproto.admin.defs#modEventUnmute",
120065
- "lex:com.atproto.admin.defs#modEventEmail"
120622
+ "lex:com.atproto.admin.defs#modEventEmail",
120623
+ "lex:com.atproto.admin.defs#modEventTag"
120066
120624
  ]
120067
120625
  },
120068
120626
  subject: {
@@ -120484,6 +121042,20 @@ var schemaDict2 = {
120484
121042
  },
120485
121043
  description: "If specified, only events where all of these labels were removed are returned"
120486
121044
  },
121045
+ addedTags: {
121046
+ type: "array",
121047
+ items: {
121048
+ type: "string"
121049
+ },
121050
+ description: "If specified, only events where all of these tags were added are returned"
121051
+ },
121052
+ removedTags: {
121053
+ type: "array",
121054
+ items: {
121055
+ type: "string"
121056
+ },
121057
+ description: "If specified, only events where all of these tags were removed are returned"
121058
+ },
120487
121059
  reportTypes: {
120488
121060
  type: "array",
120489
121061
  items: {
@@ -120599,6 +121171,18 @@ var schemaDict2 = {
120599
121171
  maximum: 100,
120600
121172
  default: 50
120601
121173
  },
121174
+ tags: {
121175
+ type: "array",
121176
+ items: {
121177
+ type: "string"
121178
+ }
121179
+ },
121180
+ excludeTags: {
121181
+ type: "array",
121182
+ items: {
121183
+ type: "string"
121184
+ }
121185
+ },
120602
121186
  cursor: {
120603
121187
  type: "string"
120604
121188
  }
@@ -120887,7 +121471,7 @@ var schemaDict2 = {
120887
121471
  defs: {
120888
121472
  main: {
120889
121473
  type: "query",
120890
- description: "Provides the DID of a repo.",
121474
+ description: "Resolves a handle (domain name) to a DID.",
120891
121475
  parameters: {
120892
121476
  type: "params",
120893
121477
  required: ["handle"],
@@ -120921,7 +121505,7 @@ var schemaDict2 = {
120921
121505
  defs: {
120922
121506
  main: {
120923
121507
  type: "procedure",
120924
- description: "Updates the handle of the account.",
121508
+ description: "Updates the current account's handle. Verifies handle validity, and updates did:plc document if necessary. Implemented by PDS, and requires auth.",
120925
121509
  input: {
120926
121510
  encoding: "application/json",
120927
121511
  schema: {
@@ -120930,7 +121514,8 @@ var schemaDict2 = {
120930
121514
  properties: {
120931
121515
  handle: {
120932
121516
  type: "string",
120933
- format: "handle"
121517
+ format: "handle",
121518
+ description: "The new handle."
120934
121519
  }
120935
121520
  }
120936
121521
  }
@@ -121013,7 +121598,7 @@ var schemaDict2 = {
121013
121598
  defs: {
121014
121599
  main: {
121015
121600
  type: "query",
121016
- description: "Find labels relevant to the provided URI patterns.",
121601
+ description: "Find labels relevant to the provided AT-URI patterns. Public endpoint for moderation services, though may return different or additional results with auth.",
121017
121602
  parameters: {
121018
121603
  type: "params",
121019
121604
  required: ["uriPatterns"],
@@ -121072,13 +121657,13 @@ var schemaDict2 = {
121072
121657
  defs: {
121073
121658
  main: {
121074
121659
  type: "subscription",
121075
- description: "Subscribe to label updates.",
121660
+ description: "Subscribe to stream of labels (and negations). Public endpoint implemented by mod services. Uses same sequencing scheme as repo event stream.",
121076
121661
  parameters: {
121077
121662
  type: "params",
121078
121663
  properties: {
121079
121664
  cursor: {
121080
121665
  type: "integer",
121081
- description: "The last known event to backfill from."
121666
+ description: "The last known event seq number to backfill from."
121082
121667
  }
121083
121668
  }
121084
121669
  },
@@ -121134,7 +121719,7 @@ var schemaDict2 = {
121134
121719
  defs: {
121135
121720
  main: {
121136
121721
  type: "procedure",
121137
- description: "Report a repo or a record.",
121722
+ description: "Submit a moderation report regarding an atproto account or record. Implemented by moderation services (with PDS proxying), and requires auth.",
121138
121723
  input: {
121139
121724
  encoding: "application/json",
121140
121725
  schema: {
@@ -121143,10 +121728,12 @@ var schemaDict2 = {
121143
121728
  properties: {
121144
121729
  reasonType: {
121145
121730
  type: "ref",
121731
+ description: "Indicates the broad category of violation the report is for.",
121146
121732
  ref: "lex:com.atproto.moderation.defs#reasonType"
121147
121733
  },
121148
121734
  reason: {
121149
- type: "string"
121735
+ type: "string",
121736
+ description: "Additional context about the content and violation."
121150
121737
  },
121151
121738
  subject: {
121152
121739
  type: "union",
@@ -121255,7 +121842,7 @@ var schemaDict2 = {
121255
121842
  defs: {
121256
121843
  main: {
121257
121844
  type: "procedure",
121258
- description: "Apply a batch transaction of creates, updates, and deletes.",
121845
+ description: "Apply a batch transaction of repository creates, updates, and deletes. Requires auth, implemented by PDS.",
121259
121846
  input: {
121260
121847
  encoding: "application/json",
121261
121848
  schema: {
@@ -121265,12 +121852,12 @@ var schemaDict2 = {
121265
121852
  repo: {
121266
121853
  type: "string",
121267
121854
  format: "at-identifier",
121268
- description: "The handle or DID of the repo."
121855
+ description: "The handle or DID of the repo (aka, current account)."
121269
121856
  },
121270
121857
  validate: {
121271
121858
  type: "boolean",
121272
121859
  default: true,
121273
- description: "Flag for validating the records."
121860
+ description: "Can be set to 'false' to skip Lexicon schema validation of record data, for all operations."
121274
121861
  },
121275
121862
  writes: {
121276
121863
  type: "array",
@@ -121286,6 +121873,7 @@ var schemaDict2 = {
121286
121873
  },
121287
121874
  swapCommit: {
121288
121875
  type: "string",
121876
+ description: "If provided, the entire operation will fail if the current repo commit CID does not match this value. Used to prevent conflicting repo mutations.",
121289
121877
  format: "cid"
121290
121878
  }
121291
121879
  }
@@ -121293,13 +121881,14 @@ var schemaDict2 = {
121293
121881
  },
121294
121882
  errors: [
121295
121883
  {
121296
- name: "InvalidSwap"
121884
+ name: "InvalidSwap",
121885
+ description: "Indicates that the 'swapCommit' parameter did not match current commit."
121297
121886
  }
121298
121887
  ]
121299
121888
  },
121300
121889
  create: {
121301
121890
  type: "object",
121302
- description: "Create a new record.",
121891
+ description: "Operation which creates a new record.",
121303
121892
  required: ["collection", "value"],
121304
121893
  properties: {
121305
121894
  collection: {
@@ -121317,7 +121906,7 @@ var schemaDict2 = {
121317
121906
  },
121318
121907
  update: {
121319
121908
  type: "object",
121320
- description: "Update an existing record.",
121909
+ description: "Operation which updates an existing record.",
121321
121910
  required: ["collection", "rkey", "value"],
121322
121911
  properties: {
121323
121912
  collection: {
@@ -121334,7 +121923,7 @@ var schemaDict2 = {
121334
121923
  },
121335
121924
  delete: {
121336
121925
  type: "object",
121337
- description: "Delete an existing record.",
121926
+ description: "Operation which deletes an existing record.",
121338
121927
  required: ["collection", "rkey"],
121339
121928
  properties: {
121340
121929
  collection: {
@@ -121354,7 +121943,7 @@ var schemaDict2 = {
121354
121943
  defs: {
121355
121944
  main: {
121356
121945
  type: "procedure",
121357
- description: "Create a new record.",
121946
+ description: "Create a single new repository record. Requires auth, implemented by PDS.",
121358
121947
  input: {
121359
121948
  encoding: "application/json",
121360
121949
  schema: {
@@ -121364,7 +121953,7 @@ var schemaDict2 = {
121364
121953
  repo: {
121365
121954
  type: "string",
121366
121955
  format: "at-identifier",
121367
- description: "The handle or DID of the repo."
121956
+ description: "The handle or DID of the repo (aka, current account)."
121368
121957
  },
121369
121958
  collection: {
121370
121959
  type: "string",
@@ -121373,17 +121962,17 @@ var schemaDict2 = {
121373
121962
  },
121374
121963
  rkey: {
121375
121964
  type: "string",
121376
- description: "The key of the record.",
121965
+ description: "The Record Key.",
121377
121966
  maxLength: 15
121378
121967
  },
121379
121968
  validate: {
121380
121969
  type: "boolean",
121381
121970
  default: true,
121382
- description: "Flag for validating the record."
121971
+ description: "Can be set to 'false' to skip Lexicon schema validation of record data."
121383
121972
  },
121384
121973
  record: {
121385
121974
  type: "unknown",
121386
- description: "The record to create."
121975
+ description: "The record itself. Must contain a $type field."
121387
121976
  },
121388
121977
  swapCommit: {
121389
121978
  type: "string",
@@ -121412,7 +122001,8 @@ var schemaDict2 = {
121412
122001
  },
121413
122002
  errors: [
121414
122003
  {
121415
- name: "InvalidSwap"
122004
+ name: "InvalidSwap",
122005
+ description: "Indicates that 'swapCommit' didn't match current repo commit."
121416
122006
  }
121417
122007
  ]
121418
122008
  }
@@ -121424,7 +122014,7 @@ var schemaDict2 = {
121424
122014
  defs: {
121425
122015
  main: {
121426
122016
  type: "procedure",
121427
- description: "Delete a record, or ensure it doesn't exist.",
122017
+ description: "Delete a repository record, or ensure it doesn't exist. Requires auth, implemented by PDS.",
121428
122018
  input: {
121429
122019
  encoding: "application/json",
121430
122020
  schema: {
@@ -121434,7 +122024,7 @@ var schemaDict2 = {
121434
122024
  repo: {
121435
122025
  type: "string",
121436
122026
  format: "at-identifier",
121437
- description: "The handle or DID of the repo."
122027
+ description: "The handle or DID of the repo (aka, current account)."
121438
122028
  },
121439
122029
  collection: {
121440
122030
  type: "string",
@@ -121443,7 +122033,7 @@ var schemaDict2 = {
121443
122033
  },
121444
122034
  rkey: {
121445
122035
  type: "string",
121446
- description: "The key of the record."
122036
+ description: "The Record Key."
121447
122037
  },
121448
122038
  swapRecord: {
121449
122039
  type: "string",
@@ -121472,7 +122062,7 @@ var schemaDict2 = {
121472
122062
  defs: {
121473
122063
  main: {
121474
122064
  type: "query",
121475
- description: "Get information about the repo, including the list of collections.",
122065
+ description: "Get information about an account and repository, including the list of collections. Does not require auth.",
121476
122066
  parameters: {
121477
122067
  type: "params",
121478
122068
  required: ["repo"],
@@ -121505,17 +122095,20 @@ var schemaDict2 = {
121505
122095
  format: "did"
121506
122096
  },
121507
122097
  didDoc: {
121508
- type: "unknown"
122098
+ type: "unknown",
122099
+ description: "The complete DID document for this account."
121509
122100
  },
121510
122101
  collections: {
121511
122102
  type: "array",
122103
+ description: "List of all the collections (NSIDs) for which this repo contains at least one record.",
121512
122104
  items: {
121513
122105
  type: "string",
121514
122106
  format: "nsid"
121515
122107
  }
121516
122108
  },
121517
122109
  handleIsCorrect: {
121518
- type: "boolean"
122110
+ type: "boolean",
122111
+ description: "Indicates if handle is currently valid (resolves bi-directionally)"
121519
122112
  }
121520
122113
  }
121521
122114
  }
@@ -121529,7 +122122,7 @@ var schemaDict2 = {
121529
122122
  defs: {
121530
122123
  main: {
121531
122124
  type: "query",
121532
- description: "Get a record.",
122125
+ description: "Get a single record from a repository. Does not require auth.",
121533
122126
  parameters: {
121534
122127
  type: "params",
121535
122128
  required: ["repo", "collection", "rkey"],
@@ -121546,7 +122139,7 @@ var schemaDict2 = {
121546
122139
  },
121547
122140
  rkey: {
121548
122141
  type: "string",
121549
- description: "The key of the record."
122142
+ description: "The Record Key."
121550
122143
  },
121551
122144
  cid: {
121552
122145
  type: "string",
@@ -121584,7 +122177,7 @@ var schemaDict2 = {
121584
122177
  defs: {
121585
122178
  main: {
121586
122179
  type: "query",
121587
- description: "List a range of records in a collection.",
122180
+ description: "List a range of records in a repository, matching a specific collection. Does not require auth.",
121588
122181
  parameters: {
121589
122182
  type: "params",
121590
122183
  required: ["repo", "collection"],
@@ -121668,7 +122261,7 @@ var schemaDict2 = {
121668
122261
  defs: {
121669
122262
  main: {
121670
122263
  type: "procedure",
121671
- description: "Write a record, creating or updating it as needed.",
122264
+ description: "Write a repository record, creating or updating it as needed. Requires auth, implemented by PDS.",
121672
122265
  input: {
121673
122266
  encoding: "application/json",
121674
122267
  schema: {
@@ -121679,7 +122272,7 @@ var schemaDict2 = {
121679
122272
  repo: {
121680
122273
  type: "string",
121681
122274
  format: "at-identifier",
121682
- description: "The handle or DID of the repo."
122275
+ description: "The handle or DID of the repo (aka, current account)."
121683
122276
  },
121684
122277
  collection: {
121685
122278
  type: "string",
@@ -121688,13 +122281,13 @@ var schemaDict2 = {
121688
122281
  },
121689
122282
  rkey: {
121690
122283
  type: "string",
121691
- description: "The key of the record.",
122284
+ description: "The Record Key.",
121692
122285
  maxLength: 15
121693
122286
  },
121694
122287
  validate: {
121695
122288
  type: "boolean",
121696
122289
  default: true,
121697
- description: "Flag for validating the record."
122290
+ description: "Can be set to 'false' to skip Lexicon schema validation of record data."
121698
122291
  },
121699
122292
  record: {
121700
122293
  type: "unknown",
@@ -121703,7 +122296,7 @@ var schemaDict2 = {
121703
122296
  swapRecord: {
121704
122297
  type: "string",
121705
122298
  format: "cid",
121706
- description: "Compare and swap with the previous record by CID."
122299
+ description: "Compare and swap with the previous record by CID. WARNING: nullable and optional field; may cause problems with golang implementation"
121707
122300
  },
121708
122301
  swapCommit: {
121709
122302
  type: "string",
@@ -121765,7 +122358,7 @@ var schemaDict2 = {
121765
122358
  defs: {
121766
122359
  main: {
121767
122360
  type: "procedure",
121768
- description: "Upload a new blob to be added to repo in a later request.",
122361
+ description: "Upload a new blob, to be referenced from a repository record. The blob will be deleted if it is not referenced within a time window (eg, minutes). Blob restrictions (mimetype, size, etc) are enforced when the reference is created. Requires auth, implemented by PDS.",
121769
122362
  input: {
121770
122363
  encoding: "*/*"
121771
122364
  },
@@ -121829,7 +122422,7 @@ var schemaDict2 = {
121829
122422
  defs: {
121830
122423
  main: {
121831
122424
  type: "procedure",
121832
- description: "Create an account.",
122425
+ description: "Create an account. Implemented by PDS.",
121833
122426
  input: {
121834
122427
  encoding: "application/json",
121835
122428
  schema: {
@@ -121841,11 +122434,13 @@ var schemaDict2 = {
121841
122434
  },
121842
122435
  handle: {
121843
122436
  type: "string",
121844
- format: "handle"
122437
+ format: "handle",
122438
+ description: "Requested handle for the account."
121845
122439
  },
121846
122440
  did: {
121847
122441
  type: "string",
121848
- format: "did"
122442
+ format: "did",
122443
+ description: "Pre-existing atproto DID, being imported to a new account."
121849
122444
  },
121850
122445
  inviteCode: {
121851
122446
  type: "string"
@@ -121857,13 +122452,16 @@ var schemaDict2 = {
121857
122452
  type: "string"
121858
122453
  },
121859
122454
  password: {
121860
- type: "string"
122455
+ type: "string",
122456
+ description: "Initial account password. May need to meet instance-specific password strength requirements."
121861
122457
  },
121862
122458
  recoveryKey: {
121863
- type: "string"
122459
+ type: "string",
122460
+ description: "DID PLC rotation key (aka, recovery key) to be included in PLC creation operation."
121864
122461
  },
121865
122462
  plcOp: {
121866
- type: "unknown"
122463
+ type: "unknown",
122464
+ description: "A signed DID PLC operation to be submitted as part of importing an existing account to this instance. NOTE: this optional field may be updated when full account migration is implemented."
121867
122465
  }
121868
122466
  }
121869
122467
  }
@@ -121872,6 +122470,7 @@ var schemaDict2 = {
121872
122470
  encoding: "application/json",
121873
122471
  schema: {
121874
122472
  type: "object",
122473
+ description: "Account login session returned on successful account creation.",
121875
122474
  required: ["accessJwt", "refreshJwt", "handle", "did"],
121876
122475
  properties: {
121877
122476
  accessJwt: {
@@ -121886,10 +122485,12 @@ var schemaDict2 = {
121886
122485
  },
121887
122486
  did: {
121888
122487
  type: "string",
121889
- format: "did"
122488
+ format: "did",
122489
+ description: "The DID of the new account."
121890
122490
  },
121891
122491
  didDoc: {
121892
- type: "unknown"
122492
+ type: "unknown",
122493
+ description: "Complete DID document."
121893
122494
  }
121894
122495
  }
121895
122496
  }
@@ -121934,7 +122535,8 @@ var schemaDict2 = {
121934
122535
  required: ["name"],
121935
122536
  properties: {
121936
122537
  name: {
121937
- type: "string"
122538
+ type: "string",
122539
+ description: "A short name for the App Password, to help distinguish them."
121938
122540
  }
121939
122541
  }
121940
122542
  }
@@ -122201,7 +122803,7 @@ var schemaDict2 = {
122201
122803
  defs: {
122202
122804
  main: {
122203
122805
  type: "procedure",
122204
- description: "Delete an actor's account with a token and password.",
122806
+ description: "Delete an actor's account with a token and password. Can only be called after requesting a deletion token. Requires auth.",
122205
122807
  input: {
122206
122808
  encoding: "application/json",
122207
122809
  schema: {
@@ -122238,7 +122840,7 @@ var schemaDict2 = {
122238
122840
  defs: {
122239
122841
  main: {
122240
122842
  type: "procedure",
122241
- description: "Delete the current session."
122843
+ description: "Delete the current session. Requires auth."
122242
122844
  }
122243
122845
  }
122244
122846
  },
@@ -122248,7 +122850,7 @@ var schemaDict2 = {
122248
122850
  defs: {
122249
122851
  main: {
122250
122852
  type: "query",
122251
- description: "Get a document describing the service's accounts configuration.",
122853
+ description: "Describes the server's account creation requirements and capabilities. Implemented by PDS.",
122252
122854
  output: {
122253
122855
  encoding: "application/json",
122254
122856
  schema: {
@@ -122256,19 +122858,23 @@ var schemaDict2 = {
122256
122858
  required: ["availableUserDomains"],
122257
122859
  properties: {
122258
122860
  inviteCodeRequired: {
122259
- type: "boolean"
122861
+ type: "boolean",
122862
+ description: "If true, an invite code must be supplied to create an account on this instance."
122260
122863
  },
122261
122864
  phoneVerificationRequired: {
122262
- type: "boolean"
122865
+ type: "boolean",
122866
+ description: "If true, a phone verification token must be supplied to create an account on this instance."
122263
122867
  },
122264
122868
  availableUserDomains: {
122265
122869
  type: "array",
122870
+ description: "List of domain suffixes that can be used in account handles.",
122266
122871
  items: {
122267
122872
  type: "string"
122268
122873
  }
122269
122874
  },
122270
122875
  links: {
122271
122876
  type: "ref",
122877
+ description: "URLs of service policy documents.",
122272
122878
  ref: "lex:com.atproto.server.describeServer#links"
122273
122879
  }
122274
122880
  }
@@ -122294,7 +122900,7 @@ var schemaDict2 = {
122294
122900
  defs: {
122295
122901
  main: {
122296
122902
  type: "query",
122297
- description: "Get all invite codes for a given account.",
122903
+ description: "Get all invite codes for the current account. Requires auth.",
122298
122904
  parameters: {
122299
122905
  type: "params",
122300
122906
  properties: {
@@ -122304,7 +122910,8 @@ var schemaDict2 = {
122304
122910
  },
122305
122911
  createAvailable: {
122306
122912
  type: "boolean",
122307
- default: true
122913
+ default: true,
122914
+ description: "Controls whether any new 'earned' but not 'created' invites should be created."
122308
122915
  }
122309
122916
  }
122310
122917
  },
@@ -122338,7 +122945,7 @@ var schemaDict2 = {
122338
122945
  defs: {
122339
122946
  main: {
122340
122947
  type: "query",
122341
- description: "Get information about the current session.",
122948
+ description: "Get information about the current auth session. Requires auth.",
122342
122949
  output: {
122343
122950
  encoding: "application/json",
122344
122951
  schema: {
@@ -122418,7 +123025,7 @@ var schemaDict2 = {
122418
123025
  defs: {
122419
123026
  main: {
122420
123027
  type: "procedure",
122421
- description: "Refresh an authentication session.",
123028
+ description: "Refresh an authentication session. Requires auth using the 'refreshJwt' (not the 'accessJwt').",
122422
123029
  output: {
122423
123030
  encoding: "application/json",
122424
123031
  schema: {
@@ -122523,7 +123130,7 @@ var schemaDict2 = {
122523
123130
  defs: {
122524
123131
  main: {
122525
123132
  type: "procedure",
122526
- description: "Reserve a repo signing key for account creation.",
123133
+ description: "Reserve a repo signing key, for use with account creation. Necessary so that a DID PLC update operation can be constructed during an account migraiton. Public and does not require auth; implemented by PDS. NOTE: this endpoint may change when full account migration is implemented.",
122527
123134
  input: {
122528
123135
  encoding: "application/json",
122529
123136
  schema: {
@@ -122531,7 +123138,8 @@ var schemaDict2 = {
122531
123138
  properties: {
122532
123139
  did: {
122533
123140
  type: "string",
122534
- description: "The did to reserve a new did:key for"
123141
+ format: "did",
123142
+ description: "The DID to reserve a key for."
122535
123143
  }
122536
123144
  }
122537
123145
  }
@@ -122544,7 +123152,7 @@ var schemaDict2 = {
122544
123152
  properties: {
122545
123153
  signingKey: {
122546
123154
  type: "string",
122547
- description: "Public signing key in the form of a did:key."
123155
+ description: "The public key for the reserved signing key, in did:key serialization."
122548
123156
  }
122549
123157
  }
122550
123158
  }
@@ -122650,7 +123258,7 @@ var schemaDict2 = {
122650
123258
  defs: {
122651
123259
  main: {
122652
123260
  type: "query",
122653
- description: "Get a blob associated with a given repo.",
123261
+ description: "Get a blob associated with a given account. Returns the full blob as originally uploaded. Does not require auth; implemented by PDS.",
122654
123262
  parameters: {
122655
123263
  type: "params",
122656
123264
  required: ["did", "cid"],
@@ -122658,7 +123266,7 @@ var schemaDict2 = {
122658
123266
  did: {
122659
123267
  type: "string",
122660
123268
  format: "did",
122661
- description: "The DID of the repo."
123269
+ description: "The DID of the account."
122662
123270
  },
122663
123271
  cid: {
122664
123272
  type: "string",
@@ -122679,7 +123287,7 @@ var schemaDict2 = {
122679
123287
  defs: {
122680
123288
  main: {
122681
123289
  type: "query",
122682
- description: "Get blocks from a given repo.",
123290
+ description: "Get data blocks from a given repo, by CID. For example, intermediate MST nodes, or records. Does not require auth; implemented by PDS.",
122683
123291
  parameters: {
122684
123292
  type: "params",
122685
123293
  required: ["did", "cids"],
@@ -122773,7 +123381,7 @@ var schemaDict2 = {
122773
123381
  defs: {
122774
123382
  main: {
122775
123383
  type: "query",
122776
- description: "Get the current commit CID & revision of the repo.",
123384
+ description: "Get the current commit CID & revision of the specified repo. Does not require auth.",
122777
123385
  parameters: {
122778
123386
  type: "params",
122779
123387
  required: ["did"],
@@ -122815,7 +123423,7 @@ var schemaDict2 = {
122815
123423
  defs: {
122816
123424
  main: {
122817
123425
  type: "query",
122818
- description: "Get blocks needed for existence or non-existence of record.",
123426
+ description: "Get data blocks needed to prove the existence or non-existence of record in the current version of repo. Does not require auth.",
122819
123427
  parameters: {
122820
123428
  type: "params",
122821
123429
  required: ["did", "collection", "rkey"],
@@ -122830,7 +123438,8 @@ var schemaDict2 = {
122830
123438
  format: "nsid"
122831
123439
  },
122832
123440
  rkey: {
122833
- type: "string"
123441
+ type: "string",
123442
+ description: "Record Key"
122834
123443
  },
122835
123444
  commit: {
122836
123445
  type: "string",
@@ -122851,7 +123460,7 @@ var schemaDict2 = {
122851
123460
  defs: {
122852
123461
  main: {
122853
123462
  type: "query",
122854
- description: "Gets the DID's repo, optionally catching up from a specific revision.",
123463
+ description: "Download a repository export as CAR file. Optionally only a 'diff' since a previous revision. Does not require auth; implemented by PDS.",
122855
123464
  parameters: {
122856
123465
  type: "params",
122857
123466
  required: ["did"],
@@ -122863,7 +123472,7 @@ var schemaDict2 = {
122863
123472
  },
122864
123473
  since: {
122865
123474
  type: "string",
122866
- description: "The revision of the repo to catch up from."
123475
+ description: "The revision ('rev') of the repo to create a diff from."
122867
123476
  }
122868
123477
  }
122869
123478
  },
@@ -122879,7 +123488,7 @@ var schemaDict2 = {
122879
123488
  defs: {
122880
123489
  main: {
122881
123490
  type: "query",
122882
- description: "List blob CIDs since some revision.",
123491
+ description: "List blob CIDso for an account, since some repo revision. Does not require auth; implemented by PDS.",
122883
123492
  parameters: {
122884
123493
  type: "params",
122885
123494
  required: ["did"],
@@ -122932,7 +123541,7 @@ var schemaDict2 = {
122932
123541
  defs: {
122933
123542
  main: {
122934
123543
  type: "query",
122935
- description: "List DIDs and root CIDs of hosted repos.",
123544
+ description: "Enumerates all the DID, rev, and commit CID for all repos hosted by this service. Does not require auth; implemented by PDS and Relay.",
122936
123545
  parameters: {
122937
123546
  type: "params",
122938
123547
  properties: {
@@ -122977,7 +123586,8 @@ var schemaDict2 = {
122977
123586
  },
122978
123587
  head: {
122979
123588
  type: "string",
122980
- format: "cid"
123589
+ format: "cid",
123590
+ description: "Current repo commit CID"
122981
123591
  },
122982
123592
  rev: {
122983
123593
  type: "string"
@@ -122992,7 +123602,7 @@ var schemaDict2 = {
122992
123602
  defs: {
122993
123603
  main: {
122994
123604
  type: "procedure",
122995
- description: "Notify a crawling service of a recent update; often when a long break between updates causes the connection with the crawling service to break.",
123605
+ description: "Notify a crawling service of a recent update, and that crawling should resume. Intended use is after a gap between repo stream events caused the crawling service to disconnect. Does not require auth; implemented by Relay.",
122996
123606
  input: {
122997
123607
  encoding: "application/json",
122998
123608
  schema: {
@@ -123001,7 +123611,7 @@ var schemaDict2 = {
123001
123611
  properties: {
123002
123612
  hostname: {
123003
123613
  type: "string",
123004
- description: "Hostname of the service that is notifying of update."
123614
+ description: "Hostname of the current service (usually a PDS) that is notifying of update."
123005
123615
  }
123006
123616
  }
123007
123617
  }
@@ -123015,7 +123625,7 @@ var schemaDict2 = {
123015
123625
  defs: {
123016
123626
  main: {
123017
123627
  type: "procedure",
123018
- description: "Request a service to persistently crawl hosted repos.",
123628
+ description: "Request a service to persistently crawl hosted repos. Expected use is new PDS instances declaring their existence to Relays. Does not require auth.",
123019
123629
  input: {
123020
123630
  encoding: "application/json",
123021
123631
  schema: {
@@ -123024,7 +123634,7 @@ var schemaDict2 = {
123024
123634
  properties: {
123025
123635
  hostname: {
123026
123636
  type: "string",
123027
- description: "Hostname of the service that is requesting to be crawled."
123637
+ description: "Hostname of the current service (eg, PDS) that is requesting to be crawled."
123028
123638
  }
123029
123639
  }
123030
123640
  }
@@ -123038,13 +123648,13 @@ var schemaDict2 = {
123038
123648
  defs: {
123039
123649
  main: {
123040
123650
  type: "subscription",
123041
- description: "Subscribe to repo updates.",
123651
+ description: "Repository event stream, aka Firehose endpoint. Outputs repo commits with diff data, and identity update events, for all repositories on the current server. See the atproto specifications for details around stream sequencing, repo versioning, CAR diff format, and more. Public and does not require auth; implemented by PDS and Relay.",
123042
123652
  parameters: {
123043
123653
  type: "params",
123044
123654
  properties: {
123045
123655
  cursor: {
123046
123656
  type: "integer",
123047
- description: "The last known event to backfill from."
123657
+ description: "The last known event seq number to backfill from."
123048
123658
  }
123049
123659
  }
123050
123660
  },
@@ -123065,12 +123675,14 @@ var schemaDict2 = {
123065
123675
  name: "FutureCursor"
123066
123676
  },
123067
123677
  {
123068
- name: "ConsumerTooSlow"
123678
+ name: "ConsumerTooSlow",
123679
+ description: "If the consumer of the stream can not keep up with events, and a backlog gets too large, the server will drop the connection."
123069
123680
  }
123070
123681
  ]
123071
123682
  },
123072
123683
  commit: {
123073
123684
  type: "object",
123685
+ description: "Represents an update of repository state. Note that empty commits are allowed, which include no repo data changes, but an update to rev and signature.",
123074
123686
  required: [
123075
123687
  "seq",
123076
123688
  "rebase",
@@ -123087,59 +123699,69 @@ var schemaDict2 = {
123087
123699
  nullable: ["prev", "since"],
123088
123700
  properties: {
123089
123701
  seq: {
123090
- type: "integer"
123702
+ type: "integer",
123703
+ description: "The stream sequence number of this message."
123091
123704
  },
123092
123705
  rebase: {
123093
- type: "boolean"
123706
+ type: "boolean",
123707
+ description: "DEPRECATED -- unused"
123094
123708
  },
123095
123709
  tooBig: {
123096
- type: "boolean"
123710
+ type: "boolean",
123711
+ description: "Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data."
123097
123712
  },
123098
123713
  repo: {
123099
123714
  type: "string",
123100
- format: "did"
123715
+ format: "did",
123716
+ description: "The repo this event comes from."
123101
123717
  },
123102
123718
  commit: {
123103
- type: "cid-link"
123719
+ type: "cid-link",
123720
+ description: "Repo commit object CID."
123104
123721
  },
123105
123722
  prev: {
123106
- type: "cid-link"
123723
+ type: "cid-link",
123724
+ description: "DEPRECATED -- unused. WARNING -- nullable and optional; stick with optional to ensure golang interoperability."
123107
123725
  },
123108
123726
  rev: {
123109
123727
  type: "string",
123110
- description: "The rev of the emitted commit."
123728
+ description: "The rev of the emitted commit. Note that this information is also in the commit object included in blocks, unless this is a tooBig event."
123111
123729
  },
123112
123730
  since: {
123113
123731
  type: "string",
123114
- description: "The rev of the last emitted commit from this repo."
123732
+ description: "The rev of the last emitted commit from this repo (if any)."
123115
123733
  },
123116
123734
  blocks: {
123117
123735
  type: "bytes",
123118
- description: "CAR file containing relevant blocks.",
123736
+ description: "CAR file containing relevant blocks, as a diff since the previous repo state.",
123119
123737
  maxLength: 1e6
123120
123738
  },
123121
123739
  ops: {
123122
123740
  type: "array",
123123
123741
  items: {
123124
123742
  type: "ref",
123125
- ref: "lex:com.atproto.sync.subscribeRepos#repoOp"
123743
+ ref: "lex:com.atproto.sync.subscribeRepos#repoOp",
123744
+ description: "List of repo mutation operations in this commit (eg, records created, updated, or deleted)."
123126
123745
  },
123127
123746
  maxLength: 200
123128
123747
  },
123129
123748
  blobs: {
123130
123749
  type: "array",
123131
123750
  items: {
123132
- type: "cid-link"
123751
+ type: "cid-link",
123752
+ description: "List of new blobs (by CID) referenced by records in this commit."
123133
123753
  }
123134
123754
  },
123135
123755
  time: {
123136
123756
  type: "string",
123137
- format: "datetime"
123757
+ format: "datetime",
123758
+ description: "Timestamp of when this message was originally broadcast."
123138
123759
  }
123139
123760
  }
123140
123761
  },
123141
123762
  handle: {
123142
123763
  type: "object",
123764
+ description: "Represents an update of the account's handle, or transition to/from invalid state.",
123143
123765
  required: ["seq", "did", "handle", "time"],
123144
123766
  properties: {
123145
123767
  seq: {
@@ -123161,6 +123783,7 @@ var schemaDict2 = {
123161
123783
  },
123162
123784
  migrate: {
123163
123785
  type: "object",
123786
+ description: "Represents an account moving from one PDS instance to another. NOTE: not implemented; full account migration may introduce a new message instead.",
123164
123787
  required: ["seq", "did", "migrateTo", "time"],
123165
123788
  nullable: ["migrateTo"],
123166
123789
  properties: {
@@ -123182,6 +123805,7 @@ var schemaDict2 = {
123182
123805
  },
123183
123806
  tombstone: {
123184
123807
  type: "object",
123808
+ description: "Indicates that an account has been deleted.",
123185
123809
  required: ["seq", "did", "time"],
123186
123810
  properties: {
123187
123811
  seq: {
@@ -123212,7 +123836,7 @@ var schemaDict2 = {
123212
123836
  },
123213
123837
  repoOp: {
123214
123838
  type: "object",
123215
- description: "A repo operation, ie a write of a single record. For creates and updates, CID is the record's CID as of this operation. For deletes, it's null.",
123839
+ description: "A repo operation, ie a mutation of a single record.",
123216
123840
  required: ["action", "path", "cid"],
123217
123841
  nullable: ["cid"],
123218
123842
  properties: {
@@ -123224,7 +123848,8 @@ var schemaDict2 = {
123224
123848
  type: "string"
123225
123849
  },
123226
123850
  cid: {
123227
- type: "cid-link"
123851
+ type: "cid-link",
123852
+ description: "For creates and updates, the new record CID. For deletions, null."
123228
123853
  }
123229
123854
  }
123230
123855
  }
@@ -123264,7 +123889,7 @@ var schemaDict2 = {
123264
123889
  defs: {
123265
123890
  main: {
123266
123891
  type: "query",
123267
- description: "Fetch all labels from a labeler created after a certain date.",
123892
+ description: "Fetch all labels from a labeler created after a certain date. DEPRECATED: use queryLabels or subscribeLabels instead",
123268
123893
  parameters: {
123269
123894
  type: "params",
123270
123895
  properties: {
@@ -123377,7 +124002,7 @@ var schemaDict2 = {
123377
124002
  defs: {
123378
124003
  main: {
123379
124004
  type: "procedure",
123380
- description: "Transfer an account.",
124005
+ description: "Transfer an account. NOTE: temporary method, necessarily how account migration will be implemented.",
123381
124006
  input: {
123382
124007
  encoding: "application/json",
123383
124008
  schema: {
@@ -123450,7 +124075,6 @@ var schemaDict2 = {
123450
124075
  AppBskyActorDefs: {
123451
124076
  lexicon: 1,
123452
124077
  id: "app.bsky.actor.defs",
123453
- description: "A reference to an actor in the network.",
123454
124078
  defs: {
123455
124079
  profileViewBasic: {
123456
124080
  type: "object",
@@ -123583,6 +124207,7 @@ var schemaDict2 = {
123583
124207
  },
123584
124208
  viewerState: {
123585
124209
  type: "object",
124210
+ description: "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.",
123586
124211
  properties: {
123587
124212
  muted: {
123588
124213
  type: "boolean"
@@ -123667,6 +124292,9 @@ var schemaDict2 = {
123667
124292
  type: "string",
123668
124293
  format: "at-uri"
123669
124294
  }
124295
+ },
124296
+ timelineIndex: {
124297
+ type: "integer"
123670
124298
  }
123671
124299
  }
123672
124300
  },
@@ -123748,7 +124376,7 @@ var schemaDict2 = {
123748
124376
  defs: {
123749
124377
  main: {
123750
124378
  type: "query",
123751
- description: "Get private preferences attached to the account.",
124379
+ description: "Get private preferences attached to the current account. Expected use is synchronization between multiple devices, and import/export during account migration. Requires auth.",
123752
124380
  parameters: {
123753
124381
  type: "params",
123754
124382
  properties: {}
@@ -123775,14 +124403,15 @@ var schemaDict2 = {
123775
124403
  defs: {
123776
124404
  main: {
123777
124405
  type: "query",
123778
- description: "Get detailed profile view of an actor.",
124406
+ description: "Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth.",
123779
124407
  parameters: {
123780
124408
  type: "params",
123781
124409
  required: ["actor"],
123782
124410
  properties: {
123783
124411
  actor: {
123784
124412
  type: "string",
123785
- format: "at-identifier"
124413
+ format: "at-identifier",
124414
+ description: "Handle or DID of account to fetch profile of."
123786
124415
  }
123787
124416
  }
123788
124417
  },
@@ -123842,7 +124471,7 @@ var schemaDict2 = {
123842
124471
  defs: {
123843
124472
  main: {
123844
124473
  type: "query",
123845
- description: "Get a list of suggested actors, used for discovery.",
124474
+ description: "Get a list of suggested actors. Expected use is discovery of accounts to follow during new account onboarding.",
123846
124475
  parameters: {
123847
124476
  type: "params",
123848
124477
  properties: {
@@ -123885,7 +124514,7 @@ var schemaDict2 = {
123885
124514
  defs: {
123886
124515
  main: {
123887
124516
  type: "record",
123888
- description: "A declaration of a profile.",
124517
+ description: "A declaration of a Bluesky account profile.",
123889
124518
  key: "literal:self",
123890
124519
  record: {
123891
124520
  type: "object",
@@ -123897,21 +124526,25 @@ var schemaDict2 = {
123897
124526
  },
123898
124527
  description: {
123899
124528
  type: "string",
124529
+ description: "Free-form profile description text.",
123900
124530
  maxGraphemes: 256,
123901
124531
  maxLength: 2560
123902
124532
  },
123903
124533
  avatar: {
123904
124534
  type: "blob",
124535
+ description: "Small image to be displayed next to posts from account. AKA, 'profile picture'",
123905
124536
  accept: ["image/png", "image/jpeg"],
123906
124537
  maxSize: 1e6
123907
124538
  },
123908
124539
  banner: {
123909
124540
  type: "blob",
124541
+ description: "Larger horizontal image to display behind profile view.",
123910
124542
  accept: ["image/png", "image/jpeg"],
123911
124543
  maxSize: 1e6
123912
124544
  },
123913
124545
  labels: {
123914
124546
  type: "union",
124547
+ description: "Self-label values, specific to the Bluesky application, on the overall account.",
123915
124548
  refs: ["lex:com.atproto.label.defs#selfLabels"]
123916
124549
  }
123917
124550
  }
@@ -123948,7 +124581,7 @@ var schemaDict2 = {
123948
124581
  defs: {
123949
124582
  main: {
123950
124583
  type: "query",
123951
- description: "Find actors (profiles) matching search criteria.",
124584
+ description: "Find actors (profiles) matching search criteria. Does not require auth.",
123952
124585
  parameters: {
123953
124586
  type: "params",
123954
124587
  properties: {
@@ -123999,7 +124632,7 @@ var schemaDict2 = {
123999
124632
  defs: {
124000
124633
  main: {
124001
124634
  type: "query",
124002
- description: "Find actor suggestions for a prefix search term.",
124635
+ description: "Find actor suggestions for a prefix search term. Expected use is for auto-completion during text field entry. Does not require auth.",
124003
124636
  parameters: {
124004
124637
  type: "params",
124005
124638
  properties: {
@@ -124041,10 +124674,10 @@ var schemaDict2 = {
124041
124674
  AppBskyEmbedExternal: {
124042
124675
  lexicon: 1,
124043
124676
  id: "app.bsky.embed.external",
124044
- description: "A representation of some externally linked content, embedded in another form of content.",
124045
124677
  defs: {
124046
124678
  main: {
124047
124679
  type: "object",
124680
+ description: "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).",
124048
124681
  required: ["external"],
124049
124682
  properties: {
124050
124683
  external: {
@@ -124108,7 +124741,7 @@ var schemaDict2 = {
124108
124741
  AppBskyEmbedImages: {
124109
124742
  lexicon: 1,
124110
124743
  id: "app.bsky.embed.images",
124111
- description: "A set of images embedded in some other form of content.",
124744
+ description: "A set of images embedded in a Bluesky record (eg, a post).",
124112
124745
  defs: {
124113
124746
  main: {
124114
124747
  type: "object",
@@ -124134,7 +124767,8 @@ var schemaDict2 = {
124134
124767
  maxSize: 1e6
124135
124768
  },
124136
124769
  alt: {
124137
- type: "string"
124770
+ type: "string",
124771
+ description: "Alt text description of the image, for accessibility."
124138
124772
  },
124139
124773
  aspectRatio: {
124140
124774
  type: "ref",
@@ -124176,13 +124810,16 @@ var schemaDict2 = {
124176
124810
  required: ["thumb", "fullsize", "alt"],
124177
124811
  properties: {
124178
124812
  thumb: {
124179
- type: "string"
124813
+ type: "string",
124814
+ description: "Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View."
124180
124815
  },
124181
124816
  fullsize: {
124182
- type: "string"
124817
+ type: "string",
124818
+ description: "Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View."
124183
124819
  },
124184
124820
  alt: {
124185
- type: "string"
124821
+ type: "string",
124822
+ description: "Alt text description of the image, for accessibility."
124186
124823
  },
124187
124824
  aspectRatio: {
124188
124825
  type: "ref",
@@ -124195,7 +124832,7 @@ var schemaDict2 = {
124195
124832
  AppBskyEmbedRecord: {
124196
124833
  lexicon: 1,
124197
124834
  id: "app.bsky.embed.record",
124198
- description: "A representation of a record embedded in another form of content.",
124835
+ description: "A representation of a record embedded in a Bluesky record (eg, a post). For example, a quote-post, or sharing a feed generator record.",
124199
124836
  defs: {
124200
124837
  main: {
124201
124838
  type: "object",
@@ -124240,7 +124877,8 @@ var schemaDict2 = {
124240
124877
  ref: "lex:app.bsky.actor.defs#profileViewBasic"
124241
124878
  },
124242
124879
  value: {
124243
- type: "unknown"
124880
+ type: "unknown",
124881
+ description: "The record data itself."
124244
124882
  },
124245
124883
  labels: {
124246
124884
  type: "array",
@@ -124304,7 +124942,7 @@ var schemaDict2 = {
124304
124942
  AppBskyEmbedRecordWithMedia: {
124305
124943
  lexicon: 1,
124306
124944
  id: "app.bsky.embed.recordWithMedia",
124307
- description: "A representation of a record embedded in another form of content, alongside other compatible embeds.",
124945
+ description: "A representation of a record embedded in a Bluesky record (eg, a post), alongside other compatible embeds. For example, a quote post and image, or a quote post and external URL card.",
124308
124946
  defs: {
124309
124947
  main: {
124310
124948
  type: "object",
@@ -124403,6 +125041,7 @@ var schemaDict2 = {
124403
125041
  },
124404
125042
  viewerState: {
124405
125043
  type: "object",
125044
+ description: "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.",
124406
125045
  properties: {
124407
125046
  repost: {
124408
125047
  type: "string",
@@ -124662,7 +125301,7 @@ var schemaDict2 = {
124662
125301
  defs: {
124663
125302
  main: {
124664
125303
  type: "query",
124665
- description: "Get information about a feed generator, including policies and offered feed URIs.",
125304
+ description: "Get information about a feed generator, including policies and offered feed URIs. Does not require auth; implemented by Feed Generator services (not App View).",
124666
125305
  output: {
124667
125306
  encoding: "application/json",
124668
125307
  schema: {
@@ -124717,7 +125356,7 @@ var schemaDict2 = {
124717
125356
  defs: {
124718
125357
  main: {
124719
125358
  type: "record",
124720
- description: "A declaration of the existence of a feed generator.",
125359
+ description: "Record declaring of the existence of a feed generator, and containing metadata about it. The record can exist in any repository.",
124721
125360
  key: "any",
124722
125361
  record: {
124723
125362
  type: "object",
@@ -124751,6 +125390,7 @@ var schemaDict2 = {
124751
125390
  },
124752
125391
  labels: {
124753
125392
  type: "union",
125393
+ description: "Self-label values",
124754
125394
  refs: ["lex:com.atproto.label.defs#selfLabels"]
124755
125395
  },
124756
125396
  createdAt: {
@@ -124768,7 +125408,7 @@ var schemaDict2 = {
124768
125408
  defs: {
124769
125409
  main: {
124770
125410
  type: "query",
124771
- description: "Get a list of feeds created by the actor.",
125411
+ description: "Get a list of feeds (feed generator records) created by the actor (in the actor's repo).",
124772
125412
  parameters: {
124773
125413
  type: "params",
124774
125414
  required: ["actor"],
@@ -124816,7 +125456,7 @@ var schemaDict2 = {
124816
125456
  defs: {
124817
125457
  main: {
124818
125458
  type: "query",
124819
- description: "Get a list of posts liked by an actor.",
125459
+ description: "Get a list of posts liked by an actor. Does not require auth.",
124820
125460
  parameters: {
124821
125461
  type: "params",
124822
125462
  required: ["actor"],
@@ -124872,7 +125512,7 @@ var schemaDict2 = {
124872
125512
  defs: {
124873
125513
  main: {
124874
125514
  type: "query",
124875
- description: "Get a view of an actor's feed.",
125515
+ description: "Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth.",
124876
125516
  parameters: {
124877
125517
  type: "params",
124878
125518
  required: ["actor"],
@@ -124892,6 +125532,7 @@ var schemaDict2 = {
124892
125532
  },
124893
125533
  filter: {
124894
125534
  type: "string",
125535
+ description: "Combinations of post/repost types to include in response.",
124895
125536
  knownValues: [
124896
125537
  "posts_with_replies",
124897
125538
  "posts_no_replies",
@@ -124938,7 +125579,7 @@ var schemaDict2 = {
124938
125579
  defs: {
124939
125580
  main: {
124940
125581
  type: "query",
124941
- description: "Get a hydrated feed from an actor's selected feed generator.",
125582
+ description: "Get a hydrated feed from an actor's selected feed generator. Implemented by App View.",
124942
125583
  parameters: {
124943
125584
  type: "params",
124944
125585
  required: ["feed"],
@@ -124991,14 +125632,15 @@ var schemaDict2 = {
124991
125632
  defs: {
124992
125633
  main: {
124993
125634
  type: "query",
124994
- description: "Get information about a feed generator.",
125635
+ description: "Get information about a feed generator. Implemented by AppView.",
124995
125636
  parameters: {
124996
125637
  type: "params",
124997
125638
  required: ["feed"],
124998
125639
  properties: {
124999
125640
  feed: {
125000
125641
  type: "string",
125001
- format: "at-uri"
125642
+ format: "at-uri",
125643
+ description: "AT-URI of the feed generator record."
125002
125644
  }
125003
125645
  }
125004
125646
  },
@@ -125013,10 +125655,12 @@ var schemaDict2 = {
125013
125655
  ref: "lex:app.bsky.feed.defs#generatorView"
125014
125656
  },
125015
125657
  isOnline: {
125016
- type: "boolean"
125658
+ type: "boolean",
125659
+ description: "Indicates whether the feed generator service has been online recently, or else seems to be inactive."
125017
125660
  },
125018
125661
  isValid: {
125019
- type: "boolean"
125662
+ type: "boolean",
125663
+ description: "Indicates whether the feed generator service is compatible with the record declaration."
125020
125664
  }
125021
125665
  }
125022
125666
  }
@@ -125069,14 +125713,15 @@ var schemaDict2 = {
125069
125713
  defs: {
125070
125714
  main: {
125071
125715
  type: "query",
125072
- description: "Get a skeleton of a feed provided by a feed generator.",
125716
+ description: "Get a skeleton of a feed provided by a feed generator. Auth is optional, depending on provider requirements, and provides the DID of the requester. Implemented by Feed Generator Service.",
125073
125717
  parameters: {
125074
125718
  type: "params",
125075
125719
  required: ["feed"],
125076
125720
  properties: {
125077
125721
  feed: {
125078
125722
  type: "string",
125079
- format: "at-uri"
125723
+ format: "at-uri",
125724
+ description: "Reference to feed generator record describing the specific feed being requested."
125080
125725
  },
125081
125726
  limit: {
125082
125727
  type: "integer",
@@ -125122,18 +125767,20 @@ var schemaDict2 = {
125122
125767
  defs: {
125123
125768
  main: {
125124
125769
  type: "query",
125125
- description: "Get the list of likes.",
125770
+ description: "Get like records which reference a subject (by AT-URI and CID).",
125126
125771
  parameters: {
125127
125772
  type: "params",
125128
125773
  required: ["uri"],
125129
125774
  properties: {
125130
125775
  uri: {
125131
125776
  type: "string",
125132
- format: "at-uri"
125777
+ format: "at-uri",
125778
+ description: "AT-URI of the subject (eg, a post record)."
125133
125779
  },
125134
125780
  cid: {
125135
125781
  type: "string",
125136
- format: "cid"
125782
+ format: "cid",
125783
+ description: "CID of the subject record (aka, specific version of record), to filter likes."
125137
125784
  },
125138
125785
  limit: {
125139
125786
  type: "integer",
@@ -125200,14 +125847,15 @@ var schemaDict2 = {
125200
125847
  defs: {
125201
125848
  main: {
125202
125849
  type: "query",
125203
- description: "Get a view of a recent posts from actors in a list.",
125850
+ description: "Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.",
125204
125851
  parameters: {
125205
125852
  type: "params",
125206
125853
  required: ["list"],
125207
125854
  properties: {
125208
125855
  list: {
125209
125856
  type: "string",
125210
- format: "at-uri"
125857
+ format: "at-uri",
125858
+ description: "Reference (AT-URI) to the list record."
125211
125859
  },
125212
125860
  limit: {
125213
125861
  type: "integer",
@@ -125253,23 +125901,26 @@ var schemaDict2 = {
125253
125901
  defs: {
125254
125902
  main: {
125255
125903
  type: "query",
125256
- description: "Get posts in a thread.",
125904
+ description: "Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.",
125257
125905
  parameters: {
125258
125906
  type: "params",
125259
125907
  required: ["uri"],
125260
125908
  properties: {
125261
125909
  uri: {
125262
125910
  type: "string",
125263
- format: "at-uri"
125911
+ format: "at-uri",
125912
+ description: "Reference (AT-URI) to post record."
125264
125913
  },
125265
125914
  depth: {
125266
125915
  type: "integer",
125916
+ description: "How many levels of reply depth should be included in response.",
125267
125917
  default: 6,
125268
125918
  minimum: 0,
125269
125919
  maximum: 1e3
125270
125920
  },
125271
125921
  parentHeight: {
125272
125922
  type: "integer",
125923
+ description: "How many levels of parent (and grandparent, etc) post to include.",
125273
125924
  default: 80,
125274
125925
  minimum: 0,
125275
125926
  maximum: 1e3
@@ -125307,13 +125958,14 @@ var schemaDict2 = {
125307
125958
  defs: {
125308
125959
  main: {
125309
125960
  type: "query",
125310
- description: "Get a view of an actor's feed.",
125961
+ description: "Gets post views for a specified list of posts (by AT-URI). This is sometimes referred to as 'hydrating' a 'feed skeleton'.",
125311
125962
  parameters: {
125312
125963
  type: "params",
125313
125964
  required: ["uris"],
125314
125965
  properties: {
125315
125966
  uris: {
125316
125967
  type: "array",
125968
+ description: "List of post AT-URIs to return hydrated views for.",
125317
125969
  items: {
125318
125970
  type: "string",
125319
125971
  format: "at-uri"
@@ -125347,18 +125999,20 @@ var schemaDict2 = {
125347
125999
  defs: {
125348
126000
  main: {
125349
126001
  type: "query",
125350
- description: "Get a list of reposts.",
126002
+ description: "Get a list of reposts for a given post.",
125351
126003
  parameters: {
125352
126004
  type: "params",
125353
126005
  required: ["uri"],
125354
126006
  properties: {
125355
126007
  uri: {
125356
126008
  type: "string",
125357
- format: "at-uri"
126009
+ format: "at-uri",
126010
+ description: "Reference (AT-URI) of post record"
125358
126011
  },
125359
126012
  cid: {
125360
126013
  type: "string",
125361
- format: "cid"
126014
+ format: "cid",
126015
+ description: "If supplied, filters to reposts of specific version (by CID) of the post record."
125362
126016
  },
125363
126017
  limit: {
125364
126018
  type: "integer",
@@ -125407,7 +126061,7 @@ var schemaDict2 = {
125407
126061
  defs: {
125408
126062
  main: {
125409
126063
  type: "query",
125410
- description: "Get a list of suggested feeds for the viewer.",
126064
+ description: "Get a list of suggested feeds (feed generators) for the requesting account.",
125411
126065
  parameters: {
125412
126066
  type: "params",
125413
126067
  properties: {
@@ -125450,12 +126104,13 @@ var schemaDict2 = {
125450
126104
  defs: {
125451
126105
  main: {
125452
126106
  type: "query",
125453
- description: "Get a view of the actor's home timeline.",
126107
+ description: "Get a view of the requesting account's home timeline. This is expected to be some form of reverse-chronological feed.",
125454
126108
  parameters: {
125455
126109
  type: "params",
125456
126110
  properties: {
125457
126111
  algorithm: {
125458
- type: "string"
126112
+ type: "string",
126113
+ description: "Variant 'algorithm' for timeline. Implementation-specific. NOTE: most feed flexibility has been moved to feed generator mechanism."
125459
126114
  },
125460
126115
  limit: {
125461
126116
  type: "integer",
@@ -125496,7 +126151,7 @@ var schemaDict2 = {
125496
126151
  defs: {
125497
126152
  main: {
125498
126153
  type: "record",
125499
- description: "A declaration of a like.",
126154
+ description: "Record declaring a 'like' of a piece of subject content.",
125500
126155
  key: "tid",
125501
126156
  record: {
125502
126157
  type: "object",
@@ -125521,7 +126176,7 @@ var schemaDict2 = {
125521
126176
  defs: {
125522
126177
  main: {
125523
126178
  type: "record",
125524
- description: "A declaration of a post.",
126179
+ description: "Record containing a Bluesky post.",
125525
126180
  key: "tid",
125526
126181
  record: {
125527
126182
  type: "object",
@@ -125530,11 +126185,12 @@ var schemaDict2 = {
125530
126185
  text: {
125531
126186
  type: "string",
125532
126187
  maxLength: 3e3,
125533
- maxGraphemes: 300
126188
+ maxGraphemes: 300,
126189
+ description: "The primary post content. May be an empty string, if there are embeds."
125534
126190
  },
125535
126191
  entities: {
125536
126192
  type: "array",
125537
- description: "Deprecated: replaced by app.bsky.richtext.facet.",
126193
+ description: "DEPRECATED: replaced by app.bsky.richtext.facet.",
125538
126194
  items: {
125539
126195
  type: "ref",
125540
126196
  ref: "lex:app.bsky.feed.post#entity"
@@ -125542,6 +126198,7 @@ var schemaDict2 = {
125542
126198
  },
125543
126199
  facets: {
125544
126200
  type: "array",
126201
+ description: "Annotations of text (mentions, URLs, hashtags, etc)",
125545
126202
  items: {
125546
126203
  type: "ref",
125547
126204
  ref: "lex:app.bsky.richtext.facet"
@@ -125562,6 +126219,7 @@ var schemaDict2 = {
125562
126219
  },
125563
126220
  langs: {
125564
126221
  type: "array",
126222
+ description: "Indicates human language of post primary text content.",
125565
126223
  maxLength: 3,
125566
126224
  items: {
125567
126225
  type: "string",
@@ -125570,21 +126228,23 @@ var schemaDict2 = {
125570
126228
  },
125571
126229
  labels: {
125572
126230
  type: "union",
126231
+ description: "Self-label values for this post. Effectively content warnings.",
125573
126232
  refs: ["lex:com.atproto.label.defs#selfLabels"]
125574
126233
  },
125575
126234
  tags: {
125576
126235
  type: "array",
126236
+ description: "Additional non-inline tags describing this post.",
125577
126237
  maxLength: 8,
125578
126238
  items: {
125579
126239
  type: "string",
125580
126240
  maxLength: 640,
125581
126241
  maxGraphemes: 64
125582
- },
125583
- description: "Additional non-inline tags describing this post."
126242
+ }
125584
126243
  },
125585
126244
  createdAt: {
125586
126245
  type: "string",
125587
- format: "datetime"
126246
+ format: "datetime",
126247
+ description: "Client-declared timestamp when this post was originally created."
125588
126248
  }
125589
126249
  }
125590
126250
  }
@@ -125643,7 +126303,7 @@ var schemaDict2 = {
125643
126303
  id: "app.bsky.feed.repost",
125644
126304
  defs: {
125645
126305
  main: {
125646
- description: "A declaration of a repost.",
126306
+ description: "Record representing a 'repost' of an existing Bluesky post.",
125647
126307
  type: "record",
125648
126308
  key: "tid",
125649
126309
  record: {
@@ -125669,7 +126329,7 @@ var schemaDict2 = {
125669
126329
  defs: {
125670
126330
  main: {
125671
126331
  type: "query",
125672
- description: "Find posts matching search criteria.",
126332
+ description: "Find posts matching search criteria, returning views of those posts.",
125673
126333
  parameters: {
125674
126334
  type: "params",
125675
126335
  required: ["q"],
@@ -125728,14 +126388,15 @@ var schemaDict2 = {
125728
126388
  main: {
125729
126389
  type: "record",
125730
126390
  key: "tid",
125731
- description: "Defines interaction gating rules for a thread. The rkey of the threadgate record should match the rkey of the thread's root post.",
126391
+ description: "Record defining interaction gating rules for a thread (aka, reply controls). The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same repository..",
125732
126392
  record: {
125733
126393
  type: "object",
125734
126394
  required: ["post", "createdAt"],
125735
126395
  properties: {
125736
126396
  post: {
125737
126397
  type: "string",
125738
- format: "at-uri"
126398
+ format: "at-uri",
126399
+ description: "Reference (AT-URI) to the post record."
125739
126400
  },
125740
126401
  allow: {
125741
126402
  type: "array",
@@ -125785,7 +126446,7 @@ var schemaDict2 = {
125785
126446
  defs: {
125786
126447
  main: {
125787
126448
  type: "record",
125788
- description: "A declaration of a block.",
126449
+ description: "Record declaring a 'block' relationship against another account. NOTE: blocks are public in Bluesky; see blog posts for details.",
125789
126450
  key: "tid",
125790
126451
  record: {
125791
126452
  type: "object",
@@ -125793,7 +126454,8 @@ var schemaDict2 = {
125793
126454
  properties: {
125794
126455
  subject: {
125795
126456
  type: "string",
125796
- format: "did"
126457
+ format: "did",
126458
+ description: "DID of the account to be blocked."
125797
126459
  },
125798
126460
  createdAt: {
125799
126461
  type: "string",
@@ -125977,7 +126639,7 @@ var schemaDict2 = {
125977
126639
  defs: {
125978
126640
  main: {
125979
126641
  type: "record",
125980
- description: "A declaration of a social follow.",
126642
+ description: "Record declaring a social 'follow' relationship of another account. Duplicate follows will be ignored by the AppView.",
125981
126643
  key: "tid",
125982
126644
  record: {
125983
126645
  type: "object",
@@ -126002,7 +126664,7 @@ var schemaDict2 = {
126002
126664
  defs: {
126003
126665
  main: {
126004
126666
  type: "query",
126005
- description: "Get a list of who the actor is blocking.",
126667
+ description: "Enumerates which accounts the requesting account is currently blocking. Requires auth.",
126006
126668
  parameters: {
126007
126669
  type: "params",
126008
126670
  properties: {
@@ -126045,7 +126707,7 @@ var schemaDict2 = {
126045
126707
  defs: {
126046
126708
  main: {
126047
126709
  type: "query",
126048
- description: "Get a list of an actor's followers.",
126710
+ description: "Enumerates accounts which follow a specified account (actor).",
126049
126711
  parameters: {
126050
126712
  type: "params",
126051
126713
  required: ["actor"],
@@ -126097,7 +126759,7 @@ var schemaDict2 = {
126097
126759
  defs: {
126098
126760
  main: {
126099
126761
  type: "query",
126100
- description: "Get a list of who the actor follows.",
126762
+ description: "Enumerates accounts which a specified account (actor) follows.",
126101
126763
  parameters: {
126102
126764
  type: "params",
126103
126765
  required: ["actor"],
@@ -126149,14 +126811,15 @@ var schemaDict2 = {
126149
126811
  defs: {
126150
126812
  main: {
126151
126813
  type: "query",
126152
- description: "Get a list of actors.",
126814
+ description: "Gets a 'view' (with additional context) of a specified list.",
126153
126815
  parameters: {
126154
126816
  type: "params",
126155
126817
  required: ["list"],
126156
126818
  properties: {
126157
126819
  list: {
126158
126820
  type: "string",
126159
- format: "at-uri"
126821
+ format: "at-uri",
126822
+ description: "Reference (AT-URI) of the list record to hydrate."
126160
126823
  },
126161
126824
  limit: {
126162
126825
  type: "integer",
@@ -126201,7 +126864,7 @@ var schemaDict2 = {
126201
126864
  defs: {
126202
126865
  main: {
126203
126866
  type: "query",
126204
- description: "Get lists that the actor is blocking.",
126867
+ description: "Get mod lists that the requesting account (actor) is blocking. Requires auth.",
126205
126868
  parameters: {
126206
126869
  type: "params",
126207
126870
  properties: {
@@ -126244,7 +126907,7 @@ var schemaDict2 = {
126244
126907
  defs: {
126245
126908
  main: {
126246
126909
  type: "query",
126247
- description: "Get lists that the actor is muting.",
126910
+ description: "Enumerates mod lists that the requesting account (actor) currently has muted. Requires auth.",
126248
126911
  parameters: {
126249
126912
  type: "params",
126250
126913
  properties: {
@@ -126287,14 +126950,15 @@ var schemaDict2 = {
126287
126950
  defs: {
126288
126951
  main: {
126289
126952
  type: "query",
126290
- description: "Get a list of lists that belong to an actor.",
126953
+ description: "Enumerates the lists created by a specified account (actor).",
126291
126954
  parameters: {
126292
126955
  type: "params",
126293
126956
  required: ["actor"],
126294
126957
  properties: {
126295
126958
  actor: {
126296
126959
  type: "string",
126297
- format: "at-identifier"
126960
+ format: "at-identifier",
126961
+ description: "The account (actor) to enumerate lists from."
126298
126962
  },
126299
126963
  limit: {
126300
126964
  type: "integer",
@@ -126335,7 +126999,7 @@ var schemaDict2 = {
126335
126999
  defs: {
126336
127000
  main: {
126337
127001
  type: "query",
126338
- description: "Get a list of who the actor mutes.",
127002
+ description: "Enumerates accounts that the requesting account (actor) currently has muted. Requires auth.",
126339
127003
  parameters: {
126340
127004
  type: "params",
126341
127005
  properties: {
@@ -126378,17 +127042,19 @@ var schemaDict2 = {
126378
127042
  defs: {
126379
127043
  main: {
126380
127044
  type: "query",
126381
- description: "Enumerates public relationships between one account, and a list of other accounts",
127045
+ description: "Enumerates public relationships between one account, and a list of other accounts. Does not require auth.",
126382
127046
  parameters: {
126383
127047
  type: "params",
126384
127048
  required: ["actor"],
126385
127049
  properties: {
126386
127050
  actor: {
126387
127051
  type: "string",
126388
- format: "at-identifier"
127052
+ format: "at-identifier",
127053
+ description: "Primary account requesting relationships for."
126389
127054
  },
126390
127055
  others: {
126391
127056
  type: "array",
127057
+ description: "List of 'other' accounts to be related back to the primary.",
126392
127058
  maxLength: 30,
126393
127059
  items: {
126394
127060
  type: "string",
@@ -126435,7 +127101,7 @@ var schemaDict2 = {
126435
127101
  defs: {
126436
127102
  main: {
126437
127103
  type: "query",
126438
- description: "Get suggested follows related to a given actor.",
127104
+ description: "Enumerates follows similar to a given account (actor). Expected use is to recommend additional accounts immediately after following one account.",
126439
127105
  parameters: {
126440
127106
  type: "params",
126441
127107
  required: ["actor"],
@@ -126471,7 +127137,7 @@ var schemaDict2 = {
126471
127137
  defs: {
126472
127138
  main: {
126473
127139
  type: "record",
126474
- description: "A declaration of a list of actors.",
127140
+ description: "Record representing a list of accounts (actors). Scope includes both moderation-oriented lists and curration-oriented lists.",
126475
127141
  key: "tid",
126476
127142
  record: {
126477
127143
  type: "object",
@@ -126479,12 +127145,14 @@ var schemaDict2 = {
126479
127145
  properties: {
126480
127146
  purpose: {
126481
127147
  type: "ref",
127148
+ description: "Defines the purpose of the list (aka, moderation-oriented or curration-oriented)",
126482
127149
  ref: "lex:app.bsky.graph.defs#listPurpose"
126483
127150
  },
126484
127151
  name: {
126485
127152
  type: "string",
126486
127153
  maxLength: 64,
126487
- minLength: 1
127154
+ minLength: 1,
127155
+ description: "Display name for list; can not be empty."
126488
127156
  },
126489
127157
  description: {
126490
127158
  type: "string",
@@ -126522,7 +127190,7 @@ var schemaDict2 = {
126522
127190
  defs: {
126523
127191
  main: {
126524
127192
  type: "record",
126525
- description: "A block of an entire list of actors.",
127193
+ description: "Record representing a block relationship against an entire an entire list of accounts (actors).",
126526
127194
  key: "tid",
126527
127195
  record: {
126528
127196
  type: "object",
@@ -126530,7 +127198,8 @@ var schemaDict2 = {
126530
127198
  properties: {
126531
127199
  subject: {
126532
127200
  type: "string",
126533
- format: "at-uri"
127201
+ format: "at-uri",
127202
+ description: "Reference (AT-URI) to the mod list record."
126534
127203
  },
126535
127204
  createdAt: {
126536
127205
  type: "string",
@@ -126547,7 +127216,7 @@ var schemaDict2 = {
126547
127216
  defs: {
126548
127217
  main: {
126549
127218
  type: "record",
126550
- description: "An item under a declared list of actors.",
127219
+ description: "Record representing an account's inclusion on a specific list. The AppView will ignore duplicate listitem records.",
126551
127220
  key: "tid",
126552
127221
  record: {
126553
127222
  type: "object",
@@ -126555,11 +127224,13 @@ var schemaDict2 = {
126555
127224
  properties: {
126556
127225
  subject: {
126557
127226
  type: "string",
126558
- format: "did"
127227
+ format: "did",
127228
+ description: "The account which is included on the list."
126559
127229
  },
126560
127230
  list: {
126561
127231
  type: "string",
126562
- format: "at-uri"
127232
+ format: "at-uri",
127233
+ description: "Reference (AT-URI) to the list record (app.bsky.graph.list)."
126563
127234
  },
126564
127235
  createdAt: {
126565
127236
  type: "string",
@@ -126576,7 +127247,7 @@ var schemaDict2 = {
126576
127247
  defs: {
126577
127248
  main: {
126578
127249
  type: "procedure",
126579
- description: "Mute an actor by DID or handle.",
127250
+ description: "Creates a mute relationship for the specified account. Mutes are private in Bluesky. Requires auth.",
126580
127251
  input: {
126581
127252
  encoding: "application/json",
126582
127253
  schema: {
@@ -126599,7 +127270,7 @@ var schemaDict2 = {
126599
127270
  defs: {
126600
127271
  main: {
126601
127272
  type: "procedure",
126602
- description: "Mute a list of actors.",
127273
+ description: "Creates a mute relationship for the specified list of accounts. Mutes are private in Bluesky. Requires auth.",
126603
127274
  input: {
126604
127275
  encoding: "application/json",
126605
127276
  schema: {
@@ -126622,7 +127293,7 @@ var schemaDict2 = {
126622
127293
  defs: {
126623
127294
  main: {
126624
127295
  type: "procedure",
126625
- description: "Unmute an actor by DID or handle.",
127296
+ description: "Unmutes the specified account. Requires auth.",
126626
127297
  input: {
126627
127298
  encoding: "application/json",
126628
127299
  schema: {
@@ -126645,7 +127316,7 @@ var schemaDict2 = {
126645
127316
  defs: {
126646
127317
  main: {
126647
127318
  type: "procedure",
126648
- description: "Unmute a list of actors.",
127319
+ description: "Unmutes the specified list of accounts. Requires auth.",
126649
127320
  input: {
126650
127321
  encoding: "application/json",
126651
127322
  schema: {
@@ -126668,7 +127339,7 @@ var schemaDict2 = {
126668
127339
  defs: {
126669
127340
  main: {
126670
127341
  type: "query",
126671
- description: "Get the count of unread notifications.",
127342
+ description: "Count the number of unread notifications for the requesting account. Requires auth.",
126672
127343
  parameters: {
126673
127344
  type: "params",
126674
127345
  properties: {
@@ -126699,7 +127370,7 @@ var schemaDict2 = {
126699
127370
  defs: {
126700
127371
  main: {
126701
127372
  type: "query",
126702
- description: "Get a list of notifications.",
127373
+ description: "Enumerate notifications for the requesting account. Requires auth.",
126703
127374
  parameters: {
126704
127375
  type: "params",
126705
127376
  properties: {
@@ -126809,7 +127480,7 @@ var schemaDict2 = {
126809
127480
  defs: {
126810
127481
  main: {
126811
127482
  type: "procedure",
126812
- description: "Register for push notifications with a service.",
127483
+ description: "Register to receive push notifications, via a specified service, for the requesting account. Requires auth.",
126813
127484
  input: {
126814
127485
  encoding: "application/json",
126815
127486
  schema: {
@@ -126842,7 +127513,7 @@ var schemaDict2 = {
126842
127513
  defs: {
126843
127514
  main: {
126844
127515
  type: "procedure",
126845
- description: "Notify server that the user has seen notifications.",
127516
+ description: "Notify server that the requesting account has seen notifications. Requires auth.",
126846
127517
  input: {
126847
127518
  encoding: "application/json",
126848
127519
  schema: {
@@ -126865,6 +127536,7 @@ var schemaDict2 = {
126865
127536
  defs: {
126866
127537
  main: {
126867
127538
  type: "object",
127539
+ description: "Annotation of a sub-string within rich text.",
126868
127540
  required: ["index", "features"],
126869
127541
  properties: {
126870
127542
  index: {
@@ -126886,7 +127558,7 @@ var schemaDict2 = {
126886
127558
  },
126887
127559
  mention: {
126888
127560
  type: "object",
126889
- description: "A facet feature for actor mentions.",
127561
+ description: "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.",
126890
127562
  required: ["did"],
126891
127563
  properties: {
126892
127564
  did: {
@@ -126897,7 +127569,7 @@ var schemaDict2 = {
126897
127569
  },
126898
127570
  link: {
126899
127571
  type: "object",
126900
- description: "A facet feature for links.",
127572
+ description: "Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.",
126901
127573
  required: ["uri"],
126902
127574
  properties: {
126903
127575
  uri: {
@@ -126908,7 +127580,7 @@ var schemaDict2 = {
126908
127580
  },
126909
127581
  tag: {
126910
127582
  type: "object",
126911
- description: "A hashtag.",
127583
+ description: "Facet feature for a hashtag. The text usually includes a '#' prefix, but the facet reference should not (except in the case of 'double hash tags').",
126912
127584
  required: ["tag"],
126913
127585
  properties: {
126914
127586
  tag: {
@@ -126920,7 +127592,7 @@ var schemaDict2 = {
126920
127592
  },
126921
127593
  byteSlice: {
126922
127594
  type: "object",
126923
- description: "A text segment. Start is inclusive, end is exclusive. Indices are for utf8-encoded strings.",
127595
+ description: "Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets.",
126924
127596
  required: ["byteStart", "byteEnd"],
126925
127597
  properties: {
126926
127598
  byteStart: {
@@ -130534,7 +131206,8 @@ var migrations_exports = {};
130534
131206
  __export(migrations_exports, {
130535
131207
  _20231219T205730722Z: () => T205730722Z_init_exports,
130536
131208
  _20240116T085607200Z: () => T085607200Z_communication_template_exports,
130537
- _20240201T051104136Z: () => T051104136Z_mod_event_blobs_exports
131209
+ _20240201T051104136Z: () => T051104136Z_mod_event_blobs_exports,
131210
+ _20240208T213404429Z: () => T213404429Z_add_tags_column_to_moderation_subject_exports
130538
131211
  });
130539
131212
 
130540
131213
  // src/db/migrations/20231219T205730722Z-init.ts
@@ -130605,6 +131278,23 @@ async function down3(db) {
130605
131278
  await db.schema.alterTable("moderation_event").dropColumn("subjectBlobCids").execute();
130606
131279
  }
130607
131280
 
131281
+ // src/db/migrations/20240208T213404429Z-add-tags-column-to-moderation-subject.ts
131282
+ var T213404429Z_add_tags_column_to_moderation_subject_exports = {};
131283
+ __export(T213404429Z_add_tags_column_to_moderation_subject_exports, {
131284
+ down: () => down4,
131285
+ up: () => up4
131286
+ });
131287
+ async function up4(db) {
131288
+ await db.schema.alterTable("moderation_event").addColumn("addedTags", "jsonb").execute();
131289
+ await db.schema.alterTable("moderation_event").addColumn("removedTags", "jsonb").execute();
131290
+ await db.schema.alterTable("moderation_subject_status").addColumn("tags", "jsonb").execute();
131291
+ }
131292
+ async function down4(db) {
131293
+ await db.schema.alterTable("moderation_event").dropColumn("addedTags").execute();
131294
+ await db.schema.alterTable("moderation_event").dropColumn("removedTags").execute();
131295
+ await db.schema.alterTable("moderation_subject_status").dropColumn("tags").execute();
131296
+ }
131297
+
130608
131298
  // src/db/migrations/provider.ts
130609
131299
  var CtxMigrationProvider = class {
130610
131300
  constructor(migrations, ctx) {
@@ -130860,6 +131550,10 @@ var ModerationViews = class {
130860
131550
  if (event.action === "com.atproto.admin.defs#modEventComment" && event.meta?.sticky) {
130861
131551
  eventView.event.sticky = true;
130862
131552
  }
131553
+ if (event.action === "com.atproto.admin.defs#modEventTag") {
131554
+ eventView.event.add = event.addedTags || [];
131555
+ eventView.event.remove = event.removedTags || [];
131556
+ }
130863
131557
  return eventView;
130864
131558
  }
130865
131559
  async eventDetail(result) {
@@ -130900,12 +131594,13 @@ var ModerationViews = class {
130900
131594
  const fetched = await Promise.all(subjects.map(async (subject) => {
130901
131595
  const uri2 = new AtUri(subject.uri);
130902
131596
  try {
130903
- return await this.appviewAgent.api.com.atproto.repo.getRecord({
131597
+ const record = await this.appviewAgent.api.com.atproto.repo.getRecord({
130904
131598
  repo: uri2.hostname,
130905
131599
  collection: uri2.collection,
130906
131600
  rkey: uri2.rkey,
130907
131601
  cid: subject.cid
130908
131602
  }, auth);
131603
+ return record;
130909
131604
  } catch {
130910
131605
  return null;
130911
131606
  }
@@ -131095,9 +131790,19 @@ var ModerationViews = class {
131095
131790
  appealed: status.appealed ?? void 0,
131096
131791
  subjectRepoHandle: status.handle ?? void 0,
131097
131792
  subjectBlobCids: status.blobCids || [],
131793
+ tags: status.tags || [],
131098
131794
  subject: subjectFromStatusRow(status).lex()
131099
131795
  };
131100
131796
  }
131797
+ async fetchAuthorFeed(actor) {
131798
+ const auth = await this.appviewAuth();
131799
+ if (!auth)
131800
+ return [];
131801
+ const {
131802
+ data: { feed }
131803
+ } = await this.appviewAgent.api.app.bsky.feed.getAuthorFeed({ actor }, auth);
131804
+ return feed;
131805
+ }
131101
131806
  };
131102
131807
  function parseSubjectId(subject) {
131103
131808
  if (subject.startsWith("did:")) {
@@ -131199,6 +131904,8 @@ var getSubjectStatusForModerationEvent = ({
131199
131904
  lastReviewedBy: createdBy,
131200
131905
  lastReviewedAt: createdAt
131201
131906
  };
131907
+ case "com.atproto.admin.defs#modEventTag":
131908
+ return { tags: [] };
131202
131909
  case "com.atproto.admin.defs#modEventResolveAppeal":
131203
131910
  return {
131204
131911
  appealed: false
@@ -131215,6 +131922,8 @@ var adjustModerationSubjectStatus = async (db, moderationEvent, blobCids) => {
131215
131922
  subjectCid,
131216
131923
  createdBy,
131217
131924
  meta,
131925
+ addedTags,
131926
+ removedTags,
131218
131927
  comment,
131219
131928
  createdAt
131220
131929
  } = moderationEvent;
@@ -131262,6 +131971,17 @@ var adjustModerationSubjectStatus = async (db, moderationEvent, blobCids) => {
131262
131971
  newStatus.comment = comment;
131263
131972
  subjectStatus.comment = comment;
131264
131973
  }
131974
+ if (action === "com.atproto.admin.defs#modEventTag") {
131975
+ let tags = currentStatus?.tags || [];
131976
+ if (addedTags?.length) {
131977
+ tags = tags.concat(addedTags);
131978
+ }
131979
+ if (removedTags?.length) {
131980
+ tags = tags.filter((tag) => !removedTags.includes(tag));
131981
+ }
131982
+ newStatus.tags = jsonb([...new Set(tags)]);
131983
+ subjectStatus.tags = newStatus.tags;
131984
+ }
131265
131985
  if (blobCids?.length) {
131266
131986
  const newBlobCids = jsonb(blobCids);
131267
131987
  newStatus.blobCids = newBlobCids;
@@ -131276,8 +131996,8 @@ var adjustModerationSubjectStatus = async (db, moderationEvent, blobCids) => {
131276
131996
  ...subjectStatus,
131277
131997
  updatedAt: now
131278
131998
  }));
131279
- const status = await insertQuery.executeTakeFirst();
131280
- return status;
131999
+ const status = await insertQuery.returningAll().executeTakeFirst();
132000
+ return status || null;
131281
132001
  };
131282
132002
  var getStatusIdentifierFromSubject = (subject) => {
131283
132003
  const isSubjectString = typeof subject === "string";
@@ -131472,8 +132192,11 @@ var ModerationService = class {
131472
132192
  createdBefore,
131473
132193
  addedLabels,
131474
132194
  removedLabels,
132195
+ addedTags,
132196
+ removedTags,
131475
132197
  reportTypes
131476
132198
  } = opts;
132199
+ const { ref } = this.db.db.dynamic;
131477
132200
  let builder = this.db.db.selectFrom("moderation_event").selectAll();
131478
132201
  if (subject) {
131479
132202
  builder = builder.where((qb) => {
@@ -131520,10 +132243,15 @@ var ModerationService = class {
131520
132243
  builder = builder.where("negateLabelVals", "ilike", `%${label}%`);
131521
132244
  });
131522
132245
  }
132246
+ if (addedTags.length) {
132247
+ builder = builder.where(sql`${ref("addedTags")} @> ${jsonb(addedTags)}`);
132248
+ }
132249
+ if (removedTags.length) {
132250
+ builder = builder.where(sql`${ref("removedTags")} @> ${jsonb(removedTags)}`);
132251
+ }
131523
132252
  if (reportTypes?.length) {
131524
132253
  builder = builder.where(sql`meta->>'reportType'`, "in", reportTypes);
131525
132254
  }
131526
- const { ref } = this.db.db.dynamic;
131527
132255
  const keyset = new TimeIdKeyset(ref(`moderation_event.createdAt`), ref("moderation_event.id"));
131528
132256
  const paginatedBuilder = paginate(builder, {
131529
132257
  limit,
@@ -131562,6 +132290,8 @@ var ModerationService = class {
131562
132290
  const createLabelVals = isModEventLabel(event) && event.createLabelVals.length > 0 ? event.createLabelVals.join(" ") : void 0;
131563
132291
  const negateLabelVals = isModEventLabel(event) && event.negateLabelVals.length > 0 ? event.negateLabelVals.join(" ") : void 0;
131564
132292
  const meta = {};
132293
+ const addedTags = isModEventTag(event) ? jsonb(event.add) : null;
132294
+ const removedTags = isModEventTag(event) ? jsonb(event.remove) : null;
131565
132295
  if (isModEventReport(event)) {
131566
132296
  meta.reportType = event.reportType;
131567
132297
  }
@@ -131579,6 +132309,8 @@ var ModerationService = class {
131579
132309
  createdBy,
131580
132310
  createLabelVals,
131581
132311
  negateLabelVals,
132312
+ addedTags,
132313
+ removedTags,
131582
132314
  durationInHours: event.durationInHours ? Number(event.durationInHours) : null,
131583
132315
  meta,
131584
132316
  expiresAt: (isModEventTakedown(event) || isModEventMute(event)) && event.durationInHours ? addHoursToDate(event.durationInHours, createdAt).toISOString() : void 0,
@@ -131588,8 +132320,8 @@ var ModerationService = class {
131588
132320
  subjectCid: subjectInfo.subjectCid,
131589
132321
  subjectBlobCids: jsonb(subjectInfo.subjectBlobCids)
131590
132322
  }).returningAll().executeTakeFirstOrThrow();
131591
- await adjustModerationSubjectStatus(this.db, modEvent, subject.blobCids);
131592
- return modEvent;
132323
+ const subjectStatus = await adjustModerationSubjectStatus(this.db, modEvent, subject.blobCids);
132324
+ return { event: modEvent, subjectStatus };
131593
132325
  }
131594
132326
  async getLastReversibleEventForSubject(subject) {
131595
132327
  if (!subject.reverseMute && !subject.reverseSuspend) {
@@ -131629,7 +132361,7 @@ var ModerationService = class {
131629
132361
  }) {
131630
132362
  const isRevertingTakedown = action === "com.atproto.admin.defs#modEventTakedown";
131631
132363
  this.db.assertTransaction();
131632
- const result = await this.logEvent({
132364
+ const { event } = await this.logEvent({
131633
132365
  event: {
131634
132366
  $type: isRevertingTakedown ? "com.atproto.admin.defs#modEventReverseTakedown" : "com.atproto.admin.defs#modEventUnmute",
131635
132367
  comment: comment ?? void 0
@@ -131645,7 +132377,7 @@ var ModerationService = class {
131645
132377
  await this.reverseTakedownRecord(subject);
131646
132378
  }
131647
132379
  }
131648
- return result;
132380
+ return event;
131649
132381
  }
131650
132382
  async takedownRepo(subject, takedownId, isSuspend = false) {
131651
132383
  const takedownRef = `BSKY-${isSuspend ? "SUSPEND" : "TAKEDOWN"}-${takedownId}`;
@@ -131786,7 +132518,7 @@ var ModerationService = class {
131786
132518
  createdAt = new Date(),
131787
132519
  subject
131788
132520
  } = info;
131789
- const event = await this.logEvent({
132521
+ const result = await this.logEvent({
131790
132522
  event: {
131791
132523
  $type: "com.atproto.admin.defs#modEventReport",
131792
132524
  reportType: reasonType,
@@ -131796,7 +132528,7 @@ var ModerationService = class {
131796
132528
  subject,
131797
132529
  createdAt
131798
132530
  });
131799
- return event;
132531
+ return result;
131800
132532
  }
131801
132533
  async getSubjectStatuses({
131802
132534
  cursor,
@@ -131813,9 +132545,12 @@ var ModerationService = class {
131813
132545
  sortDirection,
131814
132546
  lastReviewedBy,
131815
132547
  sortField,
131816
- subject
132548
+ subject,
132549
+ tags,
132550
+ excludeTags
131817
132551
  }) {
131818
132552
  let builder = this.db.db.selectFrom("moderation_subject_status").selectAll();
132553
+ const { ref } = this.db.db.dynamic;
131819
132554
  if (subject) {
131820
132555
  const subjectInfo = getStatusIdentifierFromSubject(subject);
131821
132556
  builder = builder.where("moderation_subject_status.did", "=", subjectInfo.did).where((qb) => subjectInfo.recordPath ? qb.where("recordPath", "=", subjectInfo.recordPath) : qb.where("recordPath", "=", ""));
@@ -131850,7 +132585,12 @@ var ModerationService = class {
131850
132585
  if (!includeMuted) {
131851
132586
  builder = builder.where((qb) => qb.where("muteUntil", "<", new Date().toISOString()).orWhere("muteUntil", "is", null));
131852
132587
  }
131853
- const { ref } = this.db.db.dynamic;
132588
+ if (tags.length) {
132589
+ builder = builder.where(sql`${ref("moderation_subject_status.tags")} @> ${jsonb(tags)}`);
132590
+ }
132591
+ if (excludeTags.length) {
132592
+ builder = builder.where((qb) => qb.where(sql`NOT(${ref("moderation_subject_status.tags")} @> ${jsonb(excludeTags)})`).orWhere("tags", "is", null));
132593
+ }
131854
132594
  const keyset = new StatusKeyset(ref(`moderation_subject_status.${sortField}`), ref("moderation_subject_status.id"));
131855
132595
  const paginatedBuilder = paginate(builder, {
131856
132596
  limit,