an attempt to make a lightweight, easily self-hostable, scoped bluesky appview

env, new lexicons

rimar1337 6acec0ae e4e7c8de

Changed files
+18084 -723
indexclient
indexserver
utils
viewserver
lexicons
app
bsky
actor
embed
feed
graph
labeler
notification
richtext
unspecced
video
chat
com
atproto
admin
identity
label
lexicon
moderation
repo
server
sync
temp
tools
types
app
bsky
actor
embed
feed
graph
labeler
notification
richtext
unspecced
video
chat
com
atproto
admin
identity
label
lexicon
moderation
repo
server
sync
temp
tools
+8
.env
···
··· 1 + JETSTREAM_URL="wss://jetstream2.us-east.bsky.network" 2 + SPACEDUST_URL="wss://spacedust.microcosm.blue" 3 + CONSTELLATION_URL="https://constellation.microcosm.blue" 4 + SLINGSHOT_URL="https://slingshot.microcosm.blue" 5 + 6 + SERVICE_DID="did:web:local3768forumtest.whey.party" 7 + SERVICE_ENDPOINT="https://local3768forumtest.whey.party" 8 + SERVER_PORT="3768"
+1 -1
deno.json
··· 1 { 2 "tasks": { 3 - "dev": "deno run --watch -A main.ts" 4 }, 5 "imports": { 6 "@std/assert": "jsr:@std/assert@1"
··· 1 { 2 "tasks": { 3 + "dev": "deno run --watch -A --env-file main.ts" 4 }, 5 "imports": { 6 "@std/assert": "jsr:@std/assert@1"
+8
deno.lock
··· 24 "npm:did-jwt@*": "8.0.17", 25 "npm:did-resolver@*": "4.1.0", 26 "npm:express@*": "5.1.0", 27 "npm:multiformats@*": "13.4.0", 28 "npm:web-did-resolver@*": "2.0.30" 29 }, 30 "jsr": { ··· 733 "iso-datestring-validator@2.2.2": { 734 "integrity": "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==" 735 }, 736 "math-intrinsics@1.1.0": { 737 "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" 738 }, ··· 892 }, 893 "quick-format-unescaped@4.0.4": { 894 "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" 895 }, 896 "range-parser@1.2.1": { 897 "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
··· 24 "npm:did-jwt@*": "8.0.17", 25 "npm:did-resolver@*": "4.1.0", 26 "npm:express@*": "5.1.0", 27 + "npm:ky@*": "1.8.1", 28 "npm:multiformats@*": "13.4.0", 29 + "npm:quick-lru@*": "7.0.1", 30 "npm:web-did-resolver@*": "2.0.30" 31 }, 32 "jsr": { ··· 735 "iso-datestring-validator@2.2.2": { 736 "integrity": "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==" 737 }, 738 + "ky@1.8.1": { 739 + "integrity": "sha512-7Bp3TpsE+L+TARSnnDpk3xg8Idi8RwSLdj6CMbNWoOARIrGrbuLGusV0dYwbZOm4bB3jHNxSw8Wk/ByDqJEnDw==" 740 + }, 741 "math-intrinsics@1.1.0": { 742 "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" 743 }, ··· 897 }, 898 "quick-format-unescaped@4.0.4": { 899 "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" 900 + }, 901 + "quick-lru@7.0.1": { 902 + "integrity": "sha512-kLjThirJMkWKutUKbZ8ViqFc09tDQhlbQo2MNuVeLWbRauqYP96Sm6nzlQ24F0HFjUNZ4i9+AgldJ9H6DZXi7g==" 903 }, 904 "range-parser@1.2.1": { 905 "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+579
indexclient/index.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { 5 + XrpcClient, 6 + type FetchHandler, 7 + type FetchHandlerOptions, 8 + } from '@atproto/xrpc' 9 + import { schemas } from './lexicons.js' 10 + import { CID } from 'multiformats/cid' 11 + import { type OmitKey, type Un$Typed } from './util.js' 12 + import * as AppBskyActorDefs from './types/app/bsky/actor/defs.js' 13 + import * as AppBskyActorGetProfile from './types/app/bsky/actor/getProfile.js' 14 + import * as AppBskyActorGetProfiles from './types/app/bsky/actor/getProfiles.js' 15 + import * as AppBskyEmbedDefs from './types/app/bsky/embed/defs.js' 16 + import * as AppBskyEmbedExternal from './types/app/bsky/embed/external.js' 17 + import * as AppBskyEmbedImages from './types/app/bsky/embed/images.js' 18 + import * as AppBskyEmbedRecord from './types/app/bsky/embed/record.js' 19 + import * as AppBskyEmbedRecordWithMedia from './types/app/bsky/embed/recordWithMedia.js' 20 + import * as AppBskyEmbedVideo from './types/app/bsky/embed/video.js' 21 + import * as AppBskyFeedDefs from './types/app/bsky/feed/defs.js' 22 + import * as AppBskyFeedGetActorFeeds from './types/app/bsky/feed/getActorFeeds.js' 23 + import * as AppBskyFeedGetFeedGenerator from './types/app/bsky/feed/getFeedGenerator.js' 24 + import * as AppBskyFeedGetFeedGenerators from './types/app/bsky/feed/getFeedGenerators.js' 25 + import * as AppBskyFeedGetPosts from './types/app/bsky/feed/getPosts.js' 26 + import * as AppBskyFeedPostgate from './types/app/bsky/feed/postgate.js' 27 + import * as AppBskyFeedThreadgate from './types/app/bsky/feed/threadgate.js' 28 + import * as AppBskyGraphDefs from './types/app/bsky/graph/defs.js' 29 + import * as AppBskyNotificationDefs from './types/app/bsky/notification/defs.js' 30 + import * as AppBskyRichtextFacet from './types/app/bsky/richtext/facet.js' 31 + import * as ComAtprotoLabelDefs from './types/com/atproto/label/defs.js' 32 + import * as ComAtprotoRepoStrongRef from './types/com/atproto/repo/strongRef.js' 33 + import * as PartyWheyAppBskyActorDefs from './types/party/whey/app/bsky/actor/defs.js' 34 + import * as PartyWheyAppBskyFeedDefs from './types/party/whey/app/bsky/feed/defs.js' 35 + import * as PartyWheyAppBskyFeedGetActorLikesPartial from './types/party/whey/app/bsky/feed/getActorLikesPartial.js' 36 + import * as PartyWheyAppBskyFeedGetAuthorFeedPartial from './types/party/whey/app/bsky/feed/getAuthorFeedPartial.js' 37 + import * as PartyWheyAppBskyFeedGetLikesPartial from './types/party/whey/app/bsky/feed/getLikesPartial.js' 38 + import * as PartyWheyAppBskyFeedGetListFeedPartial from './types/party/whey/app/bsky/feed/getListFeedPartial.js' 39 + import * as PartyWheyAppBskyFeedGetPostThreadPartial from './types/party/whey/app/bsky/feed/getPostThreadPartial.js' 40 + import * as PartyWheyAppBskyFeedGetQuotesPartial from './types/party/whey/app/bsky/feed/getQuotesPartial.js' 41 + import * as PartyWheyAppBskyFeedGetRepostedByPartial from './types/party/whey/app/bsky/feed/getRepostedByPartial.js' 42 + 43 + export * as AppBskyActorDefs from './types/app/bsky/actor/defs.js' 44 + export * as AppBskyActorGetProfile from './types/app/bsky/actor/getProfile.js' 45 + export * as AppBskyActorGetProfiles from './types/app/bsky/actor/getProfiles.js' 46 + export * as AppBskyEmbedDefs from './types/app/bsky/embed/defs.js' 47 + export * as AppBskyEmbedExternal from './types/app/bsky/embed/external.js' 48 + export * as AppBskyEmbedImages from './types/app/bsky/embed/images.js' 49 + export * as AppBskyEmbedRecord from './types/app/bsky/embed/record.js' 50 + export * as AppBskyEmbedRecordWithMedia from './types/app/bsky/embed/recordWithMedia.js' 51 + export * as AppBskyEmbedVideo from './types/app/bsky/embed/video.js' 52 + export * as AppBskyFeedDefs from './types/app/bsky/feed/defs.js' 53 + export * as AppBskyFeedGetActorFeeds from './types/app/bsky/feed/getActorFeeds.js' 54 + export * as AppBskyFeedGetFeedGenerator from './types/app/bsky/feed/getFeedGenerator.js' 55 + export * as AppBskyFeedGetFeedGenerators from './types/app/bsky/feed/getFeedGenerators.js' 56 + export * as AppBskyFeedGetPosts from './types/app/bsky/feed/getPosts.js' 57 + export * as AppBskyFeedPostgate from './types/app/bsky/feed/postgate.js' 58 + export * as AppBskyFeedThreadgate from './types/app/bsky/feed/threadgate.js' 59 + export * as AppBskyGraphDefs from './types/app/bsky/graph/defs.js' 60 + export * as AppBskyNotificationDefs from './types/app/bsky/notification/defs.js' 61 + export * as AppBskyRichtextFacet from './types/app/bsky/richtext/facet.js' 62 + export * as ComAtprotoLabelDefs from './types/com/atproto/label/defs.js' 63 + export * as ComAtprotoRepoStrongRef from './types/com/atproto/repo/strongRef.js' 64 + export * as PartyWheyAppBskyActorDefs from './types/party/whey/app/bsky/actor/defs.js' 65 + export * as PartyWheyAppBskyFeedDefs from './types/party/whey/app/bsky/feed/defs.js' 66 + export * as PartyWheyAppBskyFeedGetActorLikesPartial from './types/party/whey/app/bsky/feed/getActorLikesPartial.js' 67 + export * as PartyWheyAppBskyFeedGetAuthorFeedPartial from './types/party/whey/app/bsky/feed/getAuthorFeedPartial.js' 68 + export * as PartyWheyAppBskyFeedGetLikesPartial from './types/party/whey/app/bsky/feed/getLikesPartial.js' 69 + export * as PartyWheyAppBskyFeedGetListFeedPartial from './types/party/whey/app/bsky/feed/getListFeedPartial.js' 70 + export * as PartyWheyAppBskyFeedGetPostThreadPartial from './types/party/whey/app/bsky/feed/getPostThreadPartial.js' 71 + export * as PartyWheyAppBskyFeedGetQuotesPartial from './types/party/whey/app/bsky/feed/getQuotesPartial.js' 72 + export * as PartyWheyAppBskyFeedGetRepostedByPartial from './types/party/whey/app/bsky/feed/getRepostedByPartial.js' 73 + 74 + export const APP_BSKY_FEED = { 75 + DefsRequestLess: 'app.bsky.feed.defs#requestLess', 76 + DefsRequestMore: 'app.bsky.feed.defs#requestMore', 77 + DefsClickthroughItem: 'app.bsky.feed.defs#clickthroughItem', 78 + DefsClickthroughAuthor: 'app.bsky.feed.defs#clickthroughAuthor', 79 + DefsClickthroughReposter: 'app.bsky.feed.defs#clickthroughReposter', 80 + DefsClickthroughEmbed: 'app.bsky.feed.defs#clickthroughEmbed', 81 + DefsContentModeUnspecified: 'app.bsky.feed.defs#contentModeUnspecified', 82 + DefsContentModeVideo: 'app.bsky.feed.defs#contentModeVideo', 83 + DefsInteractionSeen: 'app.bsky.feed.defs#interactionSeen', 84 + DefsInteractionLike: 'app.bsky.feed.defs#interactionLike', 85 + DefsInteractionRepost: 'app.bsky.feed.defs#interactionRepost', 86 + DefsInteractionReply: 'app.bsky.feed.defs#interactionReply', 87 + DefsInteractionQuote: 'app.bsky.feed.defs#interactionQuote', 88 + DefsInteractionShare: 'app.bsky.feed.defs#interactionShare', 89 + } 90 + export const APP_BSKY_GRAPH = { 91 + DefsModlist: 'app.bsky.graph.defs#modlist', 92 + DefsCuratelist: 'app.bsky.graph.defs#curatelist', 93 + DefsReferencelist: 'app.bsky.graph.defs#referencelist', 94 + } 95 + 96 + export class AtpBaseClient extends XrpcClient { 97 + app: AppNS 98 + com: ComNS 99 + party: PartyNS 100 + 101 + constructor(options: FetchHandler | FetchHandlerOptions) { 102 + super(options, schemas) 103 + this.app = new AppNS(this) 104 + this.com = new ComNS(this) 105 + this.party = new PartyNS(this) 106 + } 107 + 108 + /** @deprecated use `this` instead */ 109 + get xrpc(): XrpcClient { 110 + return this 111 + } 112 + } 113 + 114 + export class AppNS { 115 + _client: XrpcClient 116 + bsky: AppBskyNS 117 + 118 + constructor(client: XrpcClient) { 119 + this._client = client 120 + this.bsky = new AppBskyNS(client) 121 + } 122 + } 123 + 124 + export class AppBskyNS { 125 + _client: XrpcClient 126 + actor: AppBskyActorNS 127 + embed: AppBskyEmbedNS 128 + feed: AppBskyFeedNS 129 + richtext: AppBskyRichtextNS 130 + 131 + constructor(client: XrpcClient) { 132 + this._client = client 133 + this.actor = new AppBskyActorNS(client) 134 + this.embed = new AppBskyEmbedNS(client) 135 + this.feed = new AppBskyFeedNS(client) 136 + this.richtext = new AppBskyRichtextNS(client) 137 + } 138 + } 139 + 140 + export class AppBskyActorNS { 141 + _client: XrpcClient 142 + 143 + constructor(client: XrpcClient) { 144 + this._client = client 145 + } 146 + 147 + getProfile( 148 + params?: AppBskyActorGetProfile.QueryParams, 149 + opts?: AppBskyActorGetProfile.CallOptions, 150 + ): Promise<AppBskyActorGetProfile.Response> { 151 + return this._client.call( 152 + 'app.bsky.actor.getProfile', 153 + params, 154 + undefined, 155 + opts, 156 + ) 157 + } 158 + 159 + getProfiles( 160 + params?: AppBskyActorGetProfiles.QueryParams, 161 + opts?: AppBskyActorGetProfiles.CallOptions, 162 + ): Promise<AppBskyActorGetProfiles.Response> { 163 + return this._client.call( 164 + 'app.bsky.actor.getProfiles', 165 + params, 166 + undefined, 167 + opts, 168 + ) 169 + } 170 + } 171 + 172 + export class AppBskyEmbedNS { 173 + _client: XrpcClient 174 + 175 + constructor(client: XrpcClient) { 176 + this._client = client 177 + } 178 + } 179 + 180 + export class AppBskyFeedNS { 181 + _client: XrpcClient 182 + postgate: AppBskyFeedPostgateRecord 183 + threadgate: AppBskyFeedThreadgateRecord 184 + 185 + constructor(client: XrpcClient) { 186 + this._client = client 187 + this.postgate = new AppBskyFeedPostgateRecord(client) 188 + this.threadgate = new AppBskyFeedThreadgateRecord(client) 189 + } 190 + 191 + getActorFeeds( 192 + params?: AppBskyFeedGetActorFeeds.QueryParams, 193 + opts?: AppBskyFeedGetActorFeeds.CallOptions, 194 + ): Promise<AppBskyFeedGetActorFeeds.Response> { 195 + return this._client.call( 196 + 'app.bsky.feed.getActorFeeds', 197 + params, 198 + undefined, 199 + opts, 200 + ) 201 + } 202 + 203 + getFeedGenerator( 204 + params?: AppBskyFeedGetFeedGenerator.QueryParams, 205 + opts?: AppBskyFeedGetFeedGenerator.CallOptions, 206 + ): Promise<AppBskyFeedGetFeedGenerator.Response> { 207 + return this._client.call( 208 + 'app.bsky.feed.getFeedGenerator', 209 + params, 210 + undefined, 211 + opts, 212 + ) 213 + } 214 + 215 + getFeedGenerators( 216 + params?: AppBskyFeedGetFeedGenerators.QueryParams, 217 + opts?: AppBskyFeedGetFeedGenerators.CallOptions, 218 + ): Promise<AppBskyFeedGetFeedGenerators.Response> { 219 + return this._client.call( 220 + 'app.bsky.feed.getFeedGenerators', 221 + params, 222 + undefined, 223 + opts, 224 + ) 225 + } 226 + 227 + getPosts( 228 + params?: AppBskyFeedGetPosts.QueryParams, 229 + opts?: AppBskyFeedGetPosts.CallOptions, 230 + ): Promise<AppBskyFeedGetPosts.Response> { 231 + return this._client.call('app.bsky.feed.getPosts', params, undefined, opts) 232 + } 233 + } 234 + 235 + export class AppBskyFeedPostgateRecord { 236 + _client: XrpcClient 237 + 238 + constructor(client: XrpcClient) { 239 + this._client = client 240 + } 241 + 242 + async list( 243 + params: OmitKey<ComAtprotoRepoListRecords.QueryParams, 'collection'>, 244 + ): Promise<{ 245 + cursor?: string 246 + records: { uri: string; value: AppBskyFeedPostgate.Record }[] 247 + }> { 248 + const res = await this._client.call('com.atproto.repo.listRecords', { 249 + collection: 'app.bsky.feed.postgate', 250 + ...params, 251 + }) 252 + return res.data 253 + } 254 + 255 + async get( 256 + params: OmitKey<ComAtprotoRepoGetRecord.QueryParams, 'collection'>, 257 + ): Promise<{ uri: string; cid: string; value: AppBskyFeedPostgate.Record }> { 258 + const res = await this._client.call('com.atproto.repo.getRecord', { 259 + collection: 'app.bsky.feed.postgate', 260 + ...params, 261 + }) 262 + return res.data 263 + } 264 + 265 + async create( 266 + params: OmitKey< 267 + ComAtprotoRepoCreateRecord.InputSchema, 268 + 'collection' | 'record' 269 + >, 270 + record: Un$Typed<AppBskyFeedPostgate.Record>, 271 + headers?: Record<string, string>, 272 + ): Promise<{ uri: string; cid: string }> { 273 + const collection = 'app.bsky.feed.postgate' 274 + const res = await this._client.call( 275 + 'com.atproto.repo.createRecord', 276 + undefined, 277 + { collection, ...params, record: { ...record, $type: collection } }, 278 + { encoding: 'application/json', headers }, 279 + ) 280 + return res.data 281 + } 282 + 283 + async put( 284 + params: OmitKey< 285 + ComAtprotoRepoPutRecord.InputSchema, 286 + 'collection' | 'record' 287 + >, 288 + record: Un$Typed<AppBskyFeedPostgate.Record>, 289 + headers?: Record<string, string>, 290 + ): Promise<{ uri: string; cid: string }> { 291 + const collection = 'app.bsky.feed.postgate' 292 + const res = await this._client.call( 293 + 'com.atproto.repo.putRecord', 294 + undefined, 295 + { collection, ...params, record: { ...record, $type: collection } }, 296 + { encoding: 'application/json', headers }, 297 + ) 298 + return res.data 299 + } 300 + 301 + async delete( 302 + params: OmitKey<ComAtprotoRepoDeleteRecord.InputSchema, 'collection'>, 303 + headers?: Record<string, string>, 304 + ): Promise<void> { 305 + await this._client.call( 306 + 'com.atproto.repo.deleteRecord', 307 + undefined, 308 + { collection: 'app.bsky.feed.postgate', ...params }, 309 + { headers }, 310 + ) 311 + } 312 + } 313 + 314 + export class AppBskyFeedThreadgateRecord { 315 + _client: XrpcClient 316 + 317 + constructor(client: XrpcClient) { 318 + this._client = client 319 + } 320 + 321 + async list( 322 + params: OmitKey<ComAtprotoRepoListRecords.QueryParams, 'collection'>, 323 + ): Promise<{ 324 + cursor?: string 325 + records: { uri: string; value: AppBskyFeedThreadgate.Record }[] 326 + }> { 327 + const res = await this._client.call('com.atproto.repo.listRecords', { 328 + collection: 'app.bsky.feed.threadgate', 329 + ...params, 330 + }) 331 + return res.data 332 + } 333 + 334 + async get( 335 + params: OmitKey<ComAtprotoRepoGetRecord.QueryParams, 'collection'>, 336 + ): Promise<{ 337 + uri: string 338 + cid: string 339 + value: AppBskyFeedThreadgate.Record 340 + }> { 341 + const res = await this._client.call('com.atproto.repo.getRecord', { 342 + collection: 'app.bsky.feed.threadgate', 343 + ...params, 344 + }) 345 + return res.data 346 + } 347 + 348 + async create( 349 + params: OmitKey< 350 + ComAtprotoRepoCreateRecord.InputSchema, 351 + 'collection' | 'record' 352 + >, 353 + record: Un$Typed<AppBskyFeedThreadgate.Record>, 354 + headers?: Record<string, string>, 355 + ): Promise<{ uri: string; cid: string }> { 356 + const collection = 'app.bsky.feed.threadgate' 357 + const res = await this._client.call( 358 + 'com.atproto.repo.createRecord', 359 + undefined, 360 + { collection, ...params, record: { ...record, $type: collection } }, 361 + { encoding: 'application/json', headers }, 362 + ) 363 + return res.data 364 + } 365 + 366 + async put( 367 + params: OmitKey< 368 + ComAtprotoRepoPutRecord.InputSchema, 369 + 'collection' | 'record' 370 + >, 371 + record: Un$Typed<AppBskyFeedThreadgate.Record>, 372 + headers?: Record<string, string>, 373 + ): Promise<{ uri: string; cid: string }> { 374 + const collection = 'app.bsky.feed.threadgate' 375 + const res = await this._client.call( 376 + 'com.atproto.repo.putRecord', 377 + undefined, 378 + { collection, ...params, record: { ...record, $type: collection } }, 379 + { encoding: 'application/json', headers }, 380 + ) 381 + return res.data 382 + } 383 + 384 + async delete( 385 + params: OmitKey<ComAtprotoRepoDeleteRecord.InputSchema, 'collection'>, 386 + headers?: Record<string, string>, 387 + ): Promise<void> { 388 + await this._client.call( 389 + 'com.atproto.repo.deleteRecord', 390 + undefined, 391 + { collection: 'app.bsky.feed.threadgate', ...params }, 392 + { headers }, 393 + ) 394 + } 395 + } 396 + 397 + export class AppBskyRichtextNS { 398 + _client: XrpcClient 399 + 400 + constructor(client: XrpcClient) { 401 + this._client = client 402 + } 403 + } 404 + 405 + export class ComNS { 406 + _client: XrpcClient 407 + atproto: ComAtprotoNS 408 + 409 + constructor(client: XrpcClient) { 410 + this._client = client 411 + this.atproto = new ComAtprotoNS(client) 412 + } 413 + } 414 + 415 + export class ComAtprotoNS { 416 + _client: XrpcClient 417 + repo: ComAtprotoRepoNS 418 + 419 + constructor(client: XrpcClient) { 420 + this._client = client 421 + this.repo = new ComAtprotoRepoNS(client) 422 + } 423 + } 424 + 425 + export class ComAtprotoRepoNS { 426 + _client: XrpcClient 427 + 428 + constructor(client: XrpcClient) { 429 + this._client = client 430 + } 431 + } 432 + 433 + export class PartyNS { 434 + _client: XrpcClient 435 + whey: PartyWheyNS 436 + 437 + constructor(client: XrpcClient) { 438 + this._client = client 439 + this.whey = new PartyWheyNS(client) 440 + } 441 + } 442 + 443 + export class PartyWheyNS { 444 + _client: XrpcClient 445 + app: PartyWheyAppNS 446 + 447 + constructor(client: XrpcClient) { 448 + this._client = client 449 + this.app = new PartyWheyAppNS(client) 450 + } 451 + } 452 + 453 + export class PartyWheyAppNS { 454 + _client: XrpcClient 455 + bsky: PartyWheyAppBskyNS 456 + 457 + constructor(client: XrpcClient) { 458 + this._client = client 459 + this.bsky = new PartyWheyAppBskyNS(client) 460 + } 461 + } 462 + 463 + export class PartyWheyAppBskyNS { 464 + _client: XrpcClient 465 + feed: PartyWheyAppBskyFeedNS 466 + 467 + constructor(client: XrpcClient) { 468 + this._client = client 469 + this.feed = new PartyWheyAppBskyFeedNS(client) 470 + } 471 + } 472 + 473 + export class PartyWheyAppBskyFeedNS { 474 + _client: XrpcClient 475 + 476 + constructor(client: XrpcClient) { 477 + this._client = client 478 + } 479 + 480 + getActorLikesPartial( 481 + params?: PartyWheyAppBskyFeedGetActorLikesPartial.QueryParams, 482 + opts?: PartyWheyAppBskyFeedGetActorLikesPartial.CallOptions, 483 + ): Promise<PartyWheyAppBskyFeedGetActorLikesPartial.Response> { 484 + return this._client 485 + .call( 486 + 'party.whey.app.bsky.feed.getActorLikesPartial', 487 + params, 488 + undefined, 489 + opts, 490 + ) 491 + .catch((e) => { 492 + throw PartyWheyAppBskyFeedGetActorLikesPartial.toKnownErr(e) 493 + }) 494 + } 495 + 496 + getAuthorFeedPartial( 497 + params?: PartyWheyAppBskyFeedGetAuthorFeedPartial.QueryParams, 498 + opts?: PartyWheyAppBskyFeedGetAuthorFeedPartial.CallOptions, 499 + ): Promise<PartyWheyAppBskyFeedGetAuthorFeedPartial.Response> { 500 + return this._client 501 + .call( 502 + 'party.whey.app.bsky.feed.getAuthorFeedPartial', 503 + params, 504 + undefined, 505 + opts, 506 + ) 507 + .catch((e) => { 508 + throw PartyWheyAppBskyFeedGetAuthorFeedPartial.toKnownErr(e) 509 + }) 510 + } 511 + 512 + getLikesPartial( 513 + params?: PartyWheyAppBskyFeedGetLikesPartial.QueryParams, 514 + opts?: PartyWheyAppBskyFeedGetLikesPartial.CallOptions, 515 + ): Promise<PartyWheyAppBskyFeedGetLikesPartial.Response> { 516 + return this._client.call( 517 + 'party.whey.app.bsky.feed.getLikesPartial', 518 + params, 519 + undefined, 520 + opts, 521 + ) 522 + } 523 + 524 + getListFeedPartial( 525 + params?: PartyWheyAppBskyFeedGetListFeedPartial.QueryParams, 526 + opts?: PartyWheyAppBskyFeedGetListFeedPartial.CallOptions, 527 + ): Promise<PartyWheyAppBskyFeedGetListFeedPartial.Response> { 528 + return this._client 529 + .call( 530 + 'party.whey.app.bsky.feed.getListFeedPartial', 531 + params, 532 + undefined, 533 + opts, 534 + ) 535 + .catch((e) => { 536 + throw PartyWheyAppBskyFeedGetListFeedPartial.toKnownErr(e) 537 + }) 538 + } 539 + 540 + getPostThreadPartial( 541 + params?: PartyWheyAppBskyFeedGetPostThreadPartial.QueryParams, 542 + opts?: PartyWheyAppBskyFeedGetPostThreadPartial.CallOptions, 543 + ): Promise<PartyWheyAppBskyFeedGetPostThreadPartial.Response> { 544 + return this._client 545 + .call( 546 + 'party.whey.app.bsky.feed.getPostThreadPartial', 547 + params, 548 + undefined, 549 + opts, 550 + ) 551 + .catch((e) => { 552 + throw PartyWheyAppBskyFeedGetPostThreadPartial.toKnownErr(e) 553 + }) 554 + } 555 + 556 + getQuotesPartial( 557 + params?: PartyWheyAppBskyFeedGetQuotesPartial.QueryParams, 558 + opts?: PartyWheyAppBskyFeedGetQuotesPartial.CallOptions, 559 + ): Promise<PartyWheyAppBskyFeedGetQuotesPartial.Response> { 560 + return this._client.call( 561 + 'party.whey.app.bsky.feed.getQuotesPartial', 562 + params, 563 + undefined, 564 + opts, 565 + ) 566 + } 567 + 568 + getRepostedByPartial( 569 + params?: PartyWheyAppBskyFeedGetRepostedByPartial.QueryParams, 570 + opts?: PartyWheyAppBskyFeedGetRepostedByPartial.CallOptions, 571 + ): Promise<PartyWheyAppBskyFeedGetRepostedByPartial.Response> { 572 + return this._client.call( 573 + 'party.whey.app.bsky.feed.getRepostedByPartial', 574 + params, 575 + undefined, 576 + opts, 577 + ) 578 + } 579 + }
+3566
indexclient/lexicons.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { 5 + type LexiconDoc, 6 + Lexicons, 7 + ValidationError, 8 + type ValidationResult, 9 + } from '@atproto/lexicon' 10 + import { type $Typed, is$typed, maybe$typed } from './util.js' 11 + 12 + export const schemaDict = { 13 + AppBskyActorDefs: { 14 + lexicon: 1, 15 + id: 'app.bsky.actor.defs', 16 + defs: { 17 + profileViewBasic: { 18 + type: 'object', 19 + required: ['did', 'handle'], 20 + properties: { 21 + did: { 22 + type: 'string', 23 + format: 'did', 24 + }, 25 + handle: { 26 + type: 'string', 27 + format: 'handle', 28 + }, 29 + displayName: { 30 + type: 'string', 31 + maxGraphemes: 64, 32 + maxLength: 640, 33 + }, 34 + avatar: { 35 + type: 'string', 36 + format: 'uri', 37 + }, 38 + associated: { 39 + type: 'ref', 40 + ref: 'lex:app.bsky.actor.defs#profileAssociated', 41 + }, 42 + viewer: { 43 + type: 'ref', 44 + ref: 'lex:app.bsky.actor.defs#viewerState', 45 + }, 46 + labels: { 47 + type: 'array', 48 + items: { 49 + type: 'ref', 50 + ref: 'lex:com.atproto.label.defs#label', 51 + }, 52 + }, 53 + createdAt: { 54 + type: 'string', 55 + format: 'datetime', 56 + }, 57 + verification: { 58 + type: 'ref', 59 + ref: 'lex:app.bsky.actor.defs#verificationState', 60 + }, 61 + status: { 62 + type: 'ref', 63 + ref: 'lex:app.bsky.actor.defs#statusView', 64 + }, 65 + }, 66 + }, 67 + profileView: { 68 + type: 'object', 69 + required: ['did', 'handle'], 70 + properties: { 71 + did: { 72 + type: 'string', 73 + format: 'did', 74 + }, 75 + handle: { 76 + type: 'string', 77 + format: 'handle', 78 + }, 79 + displayName: { 80 + type: 'string', 81 + maxGraphemes: 64, 82 + maxLength: 640, 83 + }, 84 + description: { 85 + type: 'string', 86 + maxGraphemes: 256, 87 + maxLength: 2560, 88 + }, 89 + avatar: { 90 + type: 'string', 91 + format: 'uri', 92 + }, 93 + associated: { 94 + type: 'ref', 95 + ref: 'lex:app.bsky.actor.defs#profileAssociated', 96 + }, 97 + indexedAt: { 98 + type: 'string', 99 + format: 'datetime', 100 + }, 101 + createdAt: { 102 + type: 'string', 103 + format: 'datetime', 104 + }, 105 + viewer: { 106 + type: 'ref', 107 + ref: 'lex:app.bsky.actor.defs#viewerState', 108 + }, 109 + labels: { 110 + type: 'array', 111 + items: { 112 + type: 'ref', 113 + ref: 'lex:com.atproto.label.defs#label', 114 + }, 115 + }, 116 + verification: { 117 + type: 'ref', 118 + ref: 'lex:app.bsky.actor.defs#verificationState', 119 + }, 120 + status: { 121 + type: 'ref', 122 + ref: 'lex:app.bsky.actor.defs#statusView', 123 + }, 124 + }, 125 + }, 126 + profileViewDetailed: { 127 + type: 'object', 128 + required: ['did', 'handle'], 129 + properties: { 130 + did: { 131 + type: 'string', 132 + format: 'did', 133 + }, 134 + handle: { 135 + type: 'string', 136 + format: 'handle', 137 + }, 138 + displayName: { 139 + type: 'string', 140 + maxGraphemes: 64, 141 + maxLength: 640, 142 + }, 143 + description: { 144 + type: 'string', 145 + maxGraphemes: 256, 146 + maxLength: 2560, 147 + }, 148 + avatar: { 149 + type: 'string', 150 + format: 'uri', 151 + }, 152 + banner: { 153 + type: 'string', 154 + format: 'uri', 155 + }, 156 + followersCount: { 157 + type: 'integer', 158 + }, 159 + followsCount: { 160 + type: 'integer', 161 + }, 162 + postsCount: { 163 + type: 'integer', 164 + }, 165 + associated: { 166 + type: 'ref', 167 + ref: 'lex:app.bsky.actor.defs#profileAssociated', 168 + }, 169 + joinedViaStarterPack: { 170 + type: 'ref', 171 + ref: 'lex:app.bsky.graph.defs#starterPackViewBasic', 172 + }, 173 + indexedAt: { 174 + type: 'string', 175 + format: 'datetime', 176 + }, 177 + createdAt: { 178 + type: 'string', 179 + format: 'datetime', 180 + }, 181 + viewer: { 182 + type: 'ref', 183 + ref: 'lex:app.bsky.actor.defs#viewerState', 184 + }, 185 + labels: { 186 + type: 'array', 187 + items: { 188 + type: 'ref', 189 + ref: 'lex:com.atproto.label.defs#label', 190 + }, 191 + }, 192 + pinnedPost: { 193 + type: 'ref', 194 + ref: 'lex:com.atproto.repo.strongRef', 195 + }, 196 + verification: { 197 + type: 'ref', 198 + ref: 'lex:app.bsky.actor.defs#verificationState', 199 + }, 200 + status: { 201 + type: 'ref', 202 + ref: 'lex:app.bsky.actor.defs#statusView', 203 + }, 204 + }, 205 + }, 206 + profileAssociated: { 207 + type: 'object', 208 + properties: { 209 + lists: { 210 + type: 'integer', 211 + }, 212 + feedgens: { 213 + type: 'integer', 214 + }, 215 + starterPacks: { 216 + type: 'integer', 217 + }, 218 + labeler: { 219 + type: 'boolean', 220 + }, 221 + chat: { 222 + type: 'ref', 223 + ref: 'lex:app.bsky.actor.defs#profileAssociatedChat', 224 + }, 225 + activitySubscription: { 226 + type: 'ref', 227 + ref: 'lex:app.bsky.actor.defs#profileAssociatedActivitySubscription', 228 + }, 229 + }, 230 + }, 231 + profileAssociatedChat: { 232 + type: 'object', 233 + required: ['allowIncoming'], 234 + properties: { 235 + allowIncoming: { 236 + type: 'string', 237 + knownValues: ['all', 'none', 'following'], 238 + }, 239 + }, 240 + }, 241 + profileAssociatedActivitySubscription: { 242 + type: 'object', 243 + required: ['allowSubscriptions'], 244 + properties: { 245 + allowSubscriptions: { 246 + type: 'string', 247 + knownValues: ['followers', 'mutuals', 'none'], 248 + }, 249 + }, 250 + }, 251 + viewerState: { 252 + type: 'object', 253 + description: 254 + "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.", 255 + properties: { 256 + muted: { 257 + type: 'boolean', 258 + }, 259 + mutedByList: { 260 + type: 'ref', 261 + ref: 'lex:app.bsky.graph.defs#listViewBasic', 262 + }, 263 + blockedBy: { 264 + type: 'boolean', 265 + }, 266 + blocking: { 267 + type: 'string', 268 + format: 'at-uri', 269 + }, 270 + blockingByList: { 271 + type: 'ref', 272 + ref: 'lex:app.bsky.graph.defs#listViewBasic', 273 + }, 274 + following: { 275 + type: 'string', 276 + format: 'at-uri', 277 + }, 278 + followedBy: { 279 + type: 'string', 280 + format: 'at-uri', 281 + }, 282 + knownFollowers: { 283 + description: 284 + 'This property is present only in selected cases, as an optimization.', 285 + type: 'ref', 286 + ref: 'lex:app.bsky.actor.defs#knownFollowers', 287 + }, 288 + activitySubscription: { 289 + description: 290 + 'This property is present only in selected cases, as an optimization.', 291 + type: 'ref', 292 + ref: 'lex:app.bsky.notification.defs#activitySubscription', 293 + }, 294 + }, 295 + }, 296 + knownFollowers: { 297 + type: 'object', 298 + description: "The subject's followers whom you also follow", 299 + required: ['count', 'followers'], 300 + properties: { 301 + count: { 302 + type: 'integer', 303 + }, 304 + followers: { 305 + type: 'array', 306 + minLength: 0, 307 + maxLength: 5, 308 + items: { 309 + type: 'ref', 310 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 311 + }, 312 + }, 313 + }, 314 + }, 315 + verificationState: { 316 + type: 'object', 317 + description: 318 + 'Represents the verification information about the user this object is attached to.', 319 + required: ['verifications', 'verifiedStatus', 'trustedVerifierStatus'], 320 + properties: { 321 + verifications: { 322 + type: 'array', 323 + description: 324 + 'All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.', 325 + items: { 326 + type: 'ref', 327 + ref: 'lex:app.bsky.actor.defs#verificationView', 328 + }, 329 + }, 330 + verifiedStatus: { 331 + type: 'string', 332 + description: "The user's status as a verified account.", 333 + knownValues: ['valid', 'invalid', 'none'], 334 + }, 335 + trustedVerifierStatus: { 336 + type: 'string', 337 + description: "The user's status as a trusted verifier.", 338 + knownValues: ['valid', 'invalid', 'none'], 339 + }, 340 + }, 341 + }, 342 + verificationView: { 343 + type: 'object', 344 + description: 'An individual verification for an associated subject.', 345 + required: ['issuer', 'uri', 'isValid', 'createdAt'], 346 + properties: { 347 + issuer: { 348 + type: 'string', 349 + description: 'The user who issued this verification.', 350 + format: 'did', 351 + }, 352 + uri: { 353 + type: 'string', 354 + description: 'The AT-URI of the verification record.', 355 + format: 'at-uri', 356 + }, 357 + isValid: { 358 + type: 'boolean', 359 + description: 360 + 'True if the verification passes validation, otherwise false.', 361 + }, 362 + createdAt: { 363 + type: 'string', 364 + description: 'Timestamp when the verification was created.', 365 + format: 'datetime', 366 + }, 367 + }, 368 + }, 369 + preferences: { 370 + type: 'array', 371 + items: { 372 + type: 'union', 373 + refs: [ 374 + 'lex:app.bsky.actor.defs#adultContentPref', 375 + 'lex:app.bsky.actor.defs#contentLabelPref', 376 + 'lex:app.bsky.actor.defs#savedFeedsPref', 377 + 'lex:app.bsky.actor.defs#savedFeedsPrefV2', 378 + 'lex:app.bsky.actor.defs#personalDetailsPref', 379 + 'lex:app.bsky.actor.defs#feedViewPref', 380 + 'lex:app.bsky.actor.defs#threadViewPref', 381 + 'lex:app.bsky.actor.defs#interestsPref', 382 + 'lex:app.bsky.actor.defs#mutedWordsPref', 383 + 'lex:app.bsky.actor.defs#hiddenPostsPref', 384 + 'lex:app.bsky.actor.defs#bskyAppStatePref', 385 + 'lex:app.bsky.actor.defs#labelersPref', 386 + 'lex:app.bsky.actor.defs#postInteractionSettingsPref', 387 + 'lex:app.bsky.actor.defs#verificationPrefs', 388 + ], 389 + }, 390 + }, 391 + adultContentPref: { 392 + type: 'object', 393 + required: ['enabled'], 394 + properties: { 395 + enabled: { 396 + type: 'boolean', 397 + default: false, 398 + }, 399 + }, 400 + }, 401 + contentLabelPref: { 402 + type: 'object', 403 + required: ['label', 'visibility'], 404 + properties: { 405 + labelerDid: { 406 + type: 'string', 407 + description: 408 + 'Which labeler does this preference apply to? If undefined, applies globally.', 409 + format: 'did', 410 + }, 411 + label: { 412 + type: 'string', 413 + }, 414 + visibility: { 415 + type: 'string', 416 + knownValues: ['ignore', 'show', 'warn', 'hide'], 417 + }, 418 + }, 419 + }, 420 + savedFeed: { 421 + type: 'object', 422 + required: ['id', 'type', 'value', 'pinned'], 423 + properties: { 424 + id: { 425 + type: 'string', 426 + }, 427 + type: { 428 + type: 'string', 429 + knownValues: ['feed', 'list', 'timeline'], 430 + }, 431 + value: { 432 + type: 'string', 433 + }, 434 + pinned: { 435 + type: 'boolean', 436 + }, 437 + }, 438 + }, 439 + savedFeedsPrefV2: { 440 + type: 'object', 441 + required: ['items'], 442 + properties: { 443 + items: { 444 + type: 'array', 445 + items: { 446 + type: 'ref', 447 + ref: 'lex:app.bsky.actor.defs#savedFeed', 448 + }, 449 + }, 450 + }, 451 + }, 452 + savedFeedsPref: { 453 + type: 'object', 454 + required: ['pinned', 'saved'], 455 + properties: { 456 + pinned: { 457 + type: 'array', 458 + items: { 459 + type: 'string', 460 + format: 'at-uri', 461 + }, 462 + }, 463 + saved: { 464 + type: 'array', 465 + items: { 466 + type: 'string', 467 + format: 'at-uri', 468 + }, 469 + }, 470 + timelineIndex: { 471 + type: 'integer', 472 + }, 473 + }, 474 + }, 475 + personalDetailsPref: { 476 + type: 'object', 477 + properties: { 478 + birthDate: { 479 + type: 'string', 480 + format: 'datetime', 481 + description: 'The birth date of account owner.', 482 + }, 483 + }, 484 + }, 485 + feedViewPref: { 486 + type: 'object', 487 + required: ['feed'], 488 + properties: { 489 + feed: { 490 + type: 'string', 491 + description: 492 + 'The URI of the feed, or an identifier which describes the feed.', 493 + }, 494 + hideReplies: { 495 + type: 'boolean', 496 + description: 'Hide replies in the feed.', 497 + }, 498 + hideRepliesByUnfollowed: { 499 + type: 'boolean', 500 + description: 501 + 'Hide replies in the feed if they are not by followed users.', 502 + default: true, 503 + }, 504 + hideRepliesByLikeCount: { 505 + type: 'integer', 506 + description: 507 + 'Hide replies in the feed if they do not have this number of likes.', 508 + }, 509 + hideReposts: { 510 + type: 'boolean', 511 + description: 'Hide reposts in the feed.', 512 + }, 513 + hideQuotePosts: { 514 + type: 'boolean', 515 + description: 'Hide quote posts in the feed.', 516 + }, 517 + }, 518 + }, 519 + threadViewPref: { 520 + type: 'object', 521 + properties: { 522 + sort: { 523 + type: 'string', 524 + description: 'Sorting mode for threads.', 525 + knownValues: [ 526 + 'oldest', 527 + 'newest', 528 + 'most-likes', 529 + 'random', 530 + 'hotness', 531 + ], 532 + }, 533 + prioritizeFollowedUsers: { 534 + type: 'boolean', 535 + description: 'Show followed users at the top of all replies.', 536 + }, 537 + }, 538 + }, 539 + interestsPref: { 540 + type: 'object', 541 + required: ['tags'], 542 + properties: { 543 + tags: { 544 + type: 'array', 545 + maxLength: 100, 546 + items: { 547 + type: 'string', 548 + maxLength: 640, 549 + maxGraphemes: 64, 550 + }, 551 + description: 552 + "A list of tags which describe the account owner's interests gathered during onboarding.", 553 + }, 554 + }, 555 + }, 556 + mutedWordTarget: { 557 + type: 'string', 558 + knownValues: ['content', 'tag'], 559 + maxLength: 640, 560 + maxGraphemes: 64, 561 + }, 562 + mutedWord: { 563 + type: 'object', 564 + description: 'A word that the account owner has muted.', 565 + required: ['value', 'targets'], 566 + properties: { 567 + id: { 568 + type: 'string', 569 + }, 570 + value: { 571 + type: 'string', 572 + description: 'The muted word itself.', 573 + maxLength: 10000, 574 + maxGraphemes: 1000, 575 + }, 576 + targets: { 577 + type: 'array', 578 + description: 'The intended targets of the muted word.', 579 + items: { 580 + type: 'ref', 581 + ref: 'lex:app.bsky.actor.defs#mutedWordTarget', 582 + }, 583 + }, 584 + actorTarget: { 585 + type: 'string', 586 + description: 587 + 'Groups of users to apply the muted word to. If undefined, applies to all users.', 588 + knownValues: ['all', 'exclude-following'], 589 + default: 'all', 590 + }, 591 + expiresAt: { 592 + type: 'string', 593 + format: 'datetime', 594 + description: 595 + 'The date and time at which the muted word will expire and no longer be applied.', 596 + }, 597 + }, 598 + }, 599 + mutedWordsPref: { 600 + type: 'object', 601 + required: ['items'], 602 + properties: { 603 + items: { 604 + type: 'array', 605 + items: { 606 + type: 'ref', 607 + ref: 'lex:app.bsky.actor.defs#mutedWord', 608 + }, 609 + description: 'A list of words the account owner has muted.', 610 + }, 611 + }, 612 + }, 613 + hiddenPostsPref: { 614 + type: 'object', 615 + required: ['items'], 616 + properties: { 617 + items: { 618 + type: 'array', 619 + items: { 620 + type: 'string', 621 + format: 'at-uri', 622 + }, 623 + description: 624 + 'A list of URIs of posts the account owner has hidden.', 625 + }, 626 + }, 627 + }, 628 + labelersPref: { 629 + type: 'object', 630 + required: ['labelers'], 631 + properties: { 632 + labelers: { 633 + type: 'array', 634 + items: { 635 + type: 'ref', 636 + ref: 'lex:app.bsky.actor.defs#labelerPrefItem', 637 + }, 638 + }, 639 + }, 640 + }, 641 + labelerPrefItem: { 642 + type: 'object', 643 + required: ['did'], 644 + properties: { 645 + did: { 646 + type: 'string', 647 + format: 'did', 648 + }, 649 + }, 650 + }, 651 + bskyAppStatePref: { 652 + description: 653 + "A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this.", 654 + type: 'object', 655 + properties: { 656 + activeProgressGuide: { 657 + type: 'ref', 658 + ref: 'lex:app.bsky.actor.defs#bskyAppProgressGuide', 659 + }, 660 + queuedNudges: { 661 + description: 662 + 'An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.', 663 + type: 'array', 664 + maxLength: 1000, 665 + items: { 666 + type: 'string', 667 + maxLength: 100, 668 + }, 669 + }, 670 + nuxs: { 671 + description: 'Storage for NUXs the user has encountered.', 672 + type: 'array', 673 + maxLength: 100, 674 + items: { 675 + type: 'ref', 676 + ref: 'lex:app.bsky.actor.defs#nux', 677 + }, 678 + }, 679 + }, 680 + }, 681 + bskyAppProgressGuide: { 682 + description: 683 + 'If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress.', 684 + type: 'object', 685 + required: ['guide'], 686 + properties: { 687 + guide: { 688 + type: 'string', 689 + maxLength: 100, 690 + }, 691 + }, 692 + }, 693 + nux: { 694 + type: 'object', 695 + description: 'A new user experiences (NUX) storage object', 696 + required: ['id', 'completed'], 697 + properties: { 698 + id: { 699 + type: 'string', 700 + maxLength: 100, 701 + }, 702 + completed: { 703 + type: 'boolean', 704 + default: false, 705 + }, 706 + data: { 707 + description: 708 + 'Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.', 709 + type: 'string', 710 + maxLength: 3000, 711 + maxGraphemes: 300, 712 + }, 713 + expiresAt: { 714 + type: 'string', 715 + format: 'datetime', 716 + description: 717 + 'The date and time at which the NUX will expire and should be considered completed.', 718 + }, 719 + }, 720 + }, 721 + verificationPrefs: { 722 + type: 'object', 723 + description: 'Preferences for how verified accounts appear in the app.', 724 + required: [], 725 + properties: { 726 + hideBadges: { 727 + description: 728 + 'Hide the blue check badges for verified accounts and trusted verifiers.', 729 + type: 'boolean', 730 + default: false, 731 + }, 732 + }, 733 + }, 734 + postInteractionSettingsPref: { 735 + type: 'object', 736 + description: 737 + 'Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly.', 738 + required: [], 739 + properties: { 740 + threadgateAllowRules: { 741 + description: 742 + 'Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply.', 743 + type: 'array', 744 + maxLength: 5, 745 + items: { 746 + type: 'union', 747 + refs: [ 748 + 'lex:app.bsky.feed.threadgate#mentionRule', 749 + 'lex:app.bsky.feed.threadgate#followerRule', 750 + 'lex:app.bsky.feed.threadgate#followingRule', 751 + 'lex:app.bsky.feed.threadgate#listRule', 752 + ], 753 + }, 754 + }, 755 + postgateEmbeddingRules: { 756 + description: 757 + 'Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed.', 758 + type: 'array', 759 + maxLength: 5, 760 + items: { 761 + type: 'union', 762 + refs: ['lex:app.bsky.feed.postgate#disableRule'], 763 + }, 764 + }, 765 + }, 766 + }, 767 + statusView: { 768 + type: 'object', 769 + required: ['status', 'record'], 770 + properties: { 771 + status: { 772 + type: 'string', 773 + description: 'The status for the account.', 774 + knownValues: ['app.bsky.actor.status#live'], 775 + }, 776 + record: { 777 + type: 'unknown', 778 + }, 779 + embed: { 780 + type: 'union', 781 + description: 'An optional embed associated with the status.', 782 + refs: ['lex:app.bsky.embed.external#view'], 783 + }, 784 + expiresAt: { 785 + type: 'string', 786 + description: 787 + 'The date when this status will expire. The application might choose to no longer return the status after expiration.', 788 + format: 'datetime', 789 + }, 790 + isActive: { 791 + type: 'boolean', 792 + description: 793 + 'True if the status is not expired, false if it is expired. Only present if expiration was set.', 794 + }, 795 + }, 796 + }, 797 + }, 798 + }, 799 + AppBskyActorGetProfile: { 800 + lexicon: 1, 801 + id: 'app.bsky.actor.getProfile', 802 + defs: { 803 + main: { 804 + type: 'query', 805 + description: 806 + 'Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth.', 807 + parameters: { 808 + type: 'params', 809 + required: ['actor'], 810 + properties: { 811 + actor: { 812 + type: 'string', 813 + format: 'at-identifier', 814 + description: 'Handle or DID of account to fetch profile of.', 815 + }, 816 + }, 817 + }, 818 + output: { 819 + encoding: 'application/json', 820 + schema: { 821 + type: 'ref', 822 + ref: 'lex:app.bsky.actor.defs#profileViewDetailed', 823 + }, 824 + }, 825 + }, 826 + }, 827 + }, 828 + AppBskyActorGetProfiles: { 829 + lexicon: 1, 830 + id: 'app.bsky.actor.getProfiles', 831 + defs: { 832 + main: { 833 + type: 'query', 834 + description: 'Get detailed profile views of multiple actors.', 835 + parameters: { 836 + type: 'params', 837 + required: ['actors'], 838 + properties: { 839 + actors: { 840 + type: 'array', 841 + items: { 842 + type: 'string', 843 + format: 'at-identifier', 844 + }, 845 + maxLength: 25, 846 + }, 847 + }, 848 + }, 849 + output: { 850 + encoding: 'application/json', 851 + schema: { 852 + type: 'object', 853 + required: ['profiles'], 854 + properties: { 855 + profiles: { 856 + type: 'array', 857 + items: { 858 + type: 'ref', 859 + ref: 'lex:app.bsky.actor.defs#profileViewDetailed', 860 + }, 861 + }, 862 + }, 863 + }, 864 + }, 865 + }, 866 + }, 867 + }, 868 + AppBskyEmbedDefs: { 869 + lexicon: 1, 870 + id: 'app.bsky.embed.defs', 871 + defs: { 872 + aspectRatio: { 873 + type: 'object', 874 + description: 875 + 'width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.', 876 + required: ['width', 'height'], 877 + properties: { 878 + width: { 879 + type: 'integer', 880 + minimum: 1, 881 + }, 882 + height: { 883 + type: 'integer', 884 + minimum: 1, 885 + }, 886 + }, 887 + }, 888 + }, 889 + }, 890 + AppBskyEmbedExternal: { 891 + lexicon: 1, 892 + id: 'app.bsky.embed.external', 893 + defs: { 894 + main: { 895 + type: 'object', 896 + description: 897 + "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).", 898 + required: ['external'], 899 + properties: { 900 + external: { 901 + type: 'ref', 902 + ref: 'lex:app.bsky.embed.external#external', 903 + }, 904 + }, 905 + }, 906 + external: { 907 + type: 'object', 908 + required: ['uri', 'title', 'description'], 909 + properties: { 910 + uri: { 911 + type: 'string', 912 + format: 'uri', 913 + }, 914 + title: { 915 + type: 'string', 916 + }, 917 + description: { 918 + type: 'string', 919 + }, 920 + thumb: { 921 + type: 'blob', 922 + accept: ['image/*'], 923 + maxSize: 1000000, 924 + }, 925 + }, 926 + }, 927 + view: { 928 + type: 'object', 929 + required: ['external'], 930 + properties: { 931 + external: { 932 + type: 'ref', 933 + ref: 'lex:app.bsky.embed.external#viewExternal', 934 + }, 935 + }, 936 + }, 937 + viewExternal: { 938 + type: 'object', 939 + required: ['uri', 'title', 'description'], 940 + properties: { 941 + uri: { 942 + type: 'string', 943 + format: 'uri', 944 + }, 945 + title: { 946 + type: 'string', 947 + }, 948 + description: { 949 + type: 'string', 950 + }, 951 + thumb: { 952 + type: 'string', 953 + format: 'uri', 954 + }, 955 + }, 956 + }, 957 + }, 958 + }, 959 + AppBskyEmbedImages: { 960 + lexicon: 1, 961 + id: 'app.bsky.embed.images', 962 + description: 'A set of images embedded in a Bluesky record (eg, a post).', 963 + defs: { 964 + main: { 965 + type: 'object', 966 + required: ['images'], 967 + properties: { 968 + images: { 969 + type: 'array', 970 + items: { 971 + type: 'ref', 972 + ref: 'lex:app.bsky.embed.images#image', 973 + }, 974 + maxLength: 4, 975 + }, 976 + }, 977 + }, 978 + image: { 979 + type: 'object', 980 + required: ['image', 'alt'], 981 + properties: { 982 + image: { 983 + type: 'blob', 984 + accept: ['image/*'], 985 + maxSize: 1000000, 986 + }, 987 + alt: { 988 + type: 'string', 989 + description: 990 + 'Alt text description of the image, for accessibility.', 991 + }, 992 + aspectRatio: { 993 + type: 'ref', 994 + ref: 'lex:app.bsky.embed.defs#aspectRatio', 995 + }, 996 + }, 997 + }, 998 + view: { 999 + type: 'object', 1000 + required: ['images'], 1001 + properties: { 1002 + images: { 1003 + type: 'array', 1004 + items: { 1005 + type: 'ref', 1006 + ref: 'lex:app.bsky.embed.images#viewImage', 1007 + }, 1008 + maxLength: 4, 1009 + }, 1010 + }, 1011 + }, 1012 + viewImage: { 1013 + type: 'object', 1014 + required: ['thumb', 'fullsize', 'alt'], 1015 + properties: { 1016 + thumb: { 1017 + type: 'string', 1018 + format: 'uri', 1019 + description: 1020 + 'Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View.', 1021 + }, 1022 + fullsize: { 1023 + type: 'string', 1024 + format: 'uri', 1025 + description: 1026 + '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.', 1027 + }, 1028 + alt: { 1029 + type: 'string', 1030 + description: 1031 + 'Alt text description of the image, for accessibility.', 1032 + }, 1033 + aspectRatio: { 1034 + type: 'ref', 1035 + ref: 'lex:app.bsky.embed.defs#aspectRatio', 1036 + }, 1037 + }, 1038 + }, 1039 + }, 1040 + }, 1041 + AppBskyEmbedRecord: { 1042 + lexicon: 1, 1043 + id: 'app.bsky.embed.record', 1044 + description: 1045 + 'A representation of a record embedded in a Bluesky record (eg, a post). For example, a quote-post, or sharing a feed generator record.', 1046 + defs: { 1047 + main: { 1048 + type: 'object', 1049 + required: ['record'], 1050 + properties: { 1051 + record: { 1052 + type: 'ref', 1053 + ref: 'lex:com.atproto.repo.strongRef', 1054 + }, 1055 + }, 1056 + }, 1057 + view: { 1058 + type: 'object', 1059 + required: ['record'], 1060 + properties: { 1061 + record: { 1062 + type: 'union', 1063 + refs: [ 1064 + 'lex:app.bsky.embed.record#viewRecord', 1065 + 'lex:app.bsky.embed.record#viewNotFound', 1066 + 'lex:app.bsky.embed.record#viewBlocked', 1067 + 'lex:app.bsky.embed.record#viewDetached', 1068 + 'lex:app.bsky.feed.defs#generatorView', 1069 + 'lex:app.bsky.graph.defs#listView', 1070 + 'lex:app.bsky.labeler.defs#labelerView', 1071 + 'lex:app.bsky.graph.defs#starterPackViewBasic', 1072 + ], 1073 + }, 1074 + }, 1075 + }, 1076 + viewRecord: { 1077 + type: 'object', 1078 + required: ['uri', 'cid', 'author', 'value', 'indexedAt'], 1079 + properties: { 1080 + uri: { 1081 + type: 'string', 1082 + format: 'at-uri', 1083 + }, 1084 + cid: { 1085 + type: 'string', 1086 + format: 'cid', 1087 + }, 1088 + author: { 1089 + type: 'ref', 1090 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 1091 + }, 1092 + value: { 1093 + type: 'unknown', 1094 + description: 'The record data itself.', 1095 + }, 1096 + labels: { 1097 + type: 'array', 1098 + items: { 1099 + type: 'ref', 1100 + ref: 'lex:com.atproto.label.defs#label', 1101 + }, 1102 + }, 1103 + replyCount: { 1104 + type: 'integer', 1105 + }, 1106 + repostCount: { 1107 + type: 'integer', 1108 + }, 1109 + likeCount: { 1110 + type: 'integer', 1111 + }, 1112 + quoteCount: { 1113 + type: 'integer', 1114 + }, 1115 + embeds: { 1116 + type: 'array', 1117 + items: { 1118 + type: 'union', 1119 + refs: [ 1120 + 'lex:app.bsky.embed.images#view', 1121 + 'lex:app.bsky.embed.video#view', 1122 + 'lex:app.bsky.embed.external#view', 1123 + 'lex:app.bsky.embed.record#view', 1124 + 'lex:app.bsky.embed.recordWithMedia#view', 1125 + ], 1126 + }, 1127 + }, 1128 + indexedAt: { 1129 + type: 'string', 1130 + format: 'datetime', 1131 + }, 1132 + }, 1133 + }, 1134 + viewNotFound: { 1135 + type: 'object', 1136 + required: ['uri', 'notFound'], 1137 + properties: { 1138 + uri: { 1139 + type: 'string', 1140 + format: 'at-uri', 1141 + }, 1142 + notFound: { 1143 + type: 'boolean', 1144 + const: true, 1145 + }, 1146 + }, 1147 + }, 1148 + viewBlocked: { 1149 + type: 'object', 1150 + required: ['uri', 'blocked', 'author'], 1151 + properties: { 1152 + uri: { 1153 + type: 'string', 1154 + format: 'at-uri', 1155 + }, 1156 + blocked: { 1157 + type: 'boolean', 1158 + const: true, 1159 + }, 1160 + author: { 1161 + type: 'ref', 1162 + ref: 'lex:app.bsky.feed.defs#blockedAuthor', 1163 + }, 1164 + }, 1165 + }, 1166 + viewDetached: { 1167 + type: 'object', 1168 + required: ['uri', 'detached'], 1169 + properties: { 1170 + uri: { 1171 + type: 'string', 1172 + format: 'at-uri', 1173 + }, 1174 + detached: { 1175 + type: 'boolean', 1176 + const: true, 1177 + }, 1178 + }, 1179 + }, 1180 + }, 1181 + }, 1182 + AppBskyEmbedRecordWithMedia: { 1183 + lexicon: 1, 1184 + id: 'app.bsky.embed.recordWithMedia', 1185 + description: 1186 + '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.', 1187 + defs: { 1188 + main: { 1189 + type: 'object', 1190 + required: ['record', 'media'], 1191 + properties: { 1192 + record: { 1193 + type: 'ref', 1194 + ref: 'lex:app.bsky.embed.record', 1195 + }, 1196 + media: { 1197 + type: 'union', 1198 + refs: [ 1199 + 'lex:app.bsky.embed.images', 1200 + 'lex:app.bsky.embed.video', 1201 + 'lex:app.bsky.embed.external', 1202 + ], 1203 + }, 1204 + }, 1205 + }, 1206 + view: { 1207 + type: 'object', 1208 + required: ['record', 'media'], 1209 + properties: { 1210 + record: { 1211 + type: 'ref', 1212 + ref: 'lex:app.bsky.embed.record#view', 1213 + }, 1214 + media: { 1215 + type: 'union', 1216 + refs: [ 1217 + 'lex:app.bsky.embed.images#view', 1218 + 'lex:app.bsky.embed.video#view', 1219 + 'lex:app.bsky.embed.external#view', 1220 + ], 1221 + }, 1222 + }, 1223 + }, 1224 + }, 1225 + }, 1226 + AppBskyEmbedVideo: { 1227 + lexicon: 1, 1228 + id: 'app.bsky.embed.video', 1229 + description: 'A video embedded in a Bluesky record (eg, a post).', 1230 + defs: { 1231 + main: { 1232 + type: 'object', 1233 + required: ['video'], 1234 + properties: { 1235 + video: { 1236 + type: 'blob', 1237 + description: 1238 + 'The mp4 video file. May be up to 100mb, formerly limited to 50mb.', 1239 + accept: ['video/mp4'], 1240 + maxSize: 100000000, 1241 + }, 1242 + captions: { 1243 + type: 'array', 1244 + items: { 1245 + type: 'ref', 1246 + ref: 'lex:app.bsky.embed.video#caption', 1247 + }, 1248 + maxLength: 20, 1249 + }, 1250 + alt: { 1251 + type: 'string', 1252 + description: 1253 + 'Alt text description of the video, for accessibility.', 1254 + maxGraphemes: 1000, 1255 + maxLength: 10000, 1256 + }, 1257 + aspectRatio: { 1258 + type: 'ref', 1259 + ref: 'lex:app.bsky.embed.defs#aspectRatio', 1260 + }, 1261 + }, 1262 + }, 1263 + caption: { 1264 + type: 'object', 1265 + required: ['lang', 'file'], 1266 + properties: { 1267 + lang: { 1268 + type: 'string', 1269 + format: 'language', 1270 + }, 1271 + file: { 1272 + type: 'blob', 1273 + accept: ['text/vtt'], 1274 + maxSize: 20000, 1275 + }, 1276 + }, 1277 + }, 1278 + view: { 1279 + type: 'object', 1280 + required: ['cid', 'playlist'], 1281 + properties: { 1282 + cid: { 1283 + type: 'string', 1284 + format: 'cid', 1285 + }, 1286 + playlist: { 1287 + type: 'string', 1288 + format: 'uri', 1289 + }, 1290 + thumbnail: { 1291 + type: 'string', 1292 + format: 'uri', 1293 + }, 1294 + alt: { 1295 + type: 'string', 1296 + maxGraphemes: 1000, 1297 + maxLength: 10000, 1298 + }, 1299 + aspectRatio: { 1300 + type: 'ref', 1301 + ref: 'lex:app.bsky.embed.defs#aspectRatio', 1302 + }, 1303 + }, 1304 + }, 1305 + }, 1306 + }, 1307 + AppBskyFeedDefs: { 1308 + lexicon: 1, 1309 + id: 'app.bsky.feed.defs', 1310 + defs: { 1311 + postView: { 1312 + type: 'object', 1313 + required: ['uri', 'cid', 'author', 'record', 'indexedAt'], 1314 + properties: { 1315 + uri: { 1316 + type: 'string', 1317 + format: 'at-uri', 1318 + }, 1319 + cid: { 1320 + type: 'string', 1321 + format: 'cid', 1322 + }, 1323 + author: { 1324 + type: 'ref', 1325 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 1326 + }, 1327 + record: { 1328 + type: 'unknown', 1329 + }, 1330 + embed: { 1331 + type: 'union', 1332 + refs: [ 1333 + 'lex:app.bsky.embed.images#view', 1334 + 'lex:app.bsky.embed.video#view', 1335 + 'lex:app.bsky.embed.external#view', 1336 + 'lex:app.bsky.embed.record#view', 1337 + 'lex:app.bsky.embed.recordWithMedia#view', 1338 + ], 1339 + }, 1340 + replyCount: { 1341 + type: 'integer', 1342 + }, 1343 + repostCount: { 1344 + type: 'integer', 1345 + }, 1346 + likeCount: { 1347 + type: 'integer', 1348 + }, 1349 + quoteCount: { 1350 + type: 'integer', 1351 + }, 1352 + indexedAt: { 1353 + type: 'string', 1354 + format: 'datetime', 1355 + }, 1356 + viewer: { 1357 + type: 'ref', 1358 + ref: 'lex:app.bsky.feed.defs#viewerState', 1359 + }, 1360 + labels: { 1361 + type: 'array', 1362 + items: { 1363 + type: 'ref', 1364 + ref: 'lex:com.atproto.label.defs#label', 1365 + }, 1366 + }, 1367 + threadgate: { 1368 + type: 'ref', 1369 + ref: 'lex:app.bsky.feed.defs#threadgateView', 1370 + }, 1371 + }, 1372 + }, 1373 + viewerState: { 1374 + type: 'object', 1375 + description: 1376 + "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.", 1377 + properties: { 1378 + repost: { 1379 + type: 'string', 1380 + format: 'at-uri', 1381 + }, 1382 + like: { 1383 + type: 'string', 1384 + format: 'at-uri', 1385 + }, 1386 + threadMuted: { 1387 + type: 'boolean', 1388 + }, 1389 + replyDisabled: { 1390 + type: 'boolean', 1391 + }, 1392 + embeddingDisabled: { 1393 + type: 'boolean', 1394 + }, 1395 + pinned: { 1396 + type: 'boolean', 1397 + }, 1398 + }, 1399 + }, 1400 + threadContext: { 1401 + type: 'object', 1402 + description: 1403 + 'Metadata about this post within the context of the thread it is in.', 1404 + properties: { 1405 + rootAuthorLike: { 1406 + type: 'string', 1407 + format: 'at-uri', 1408 + }, 1409 + }, 1410 + }, 1411 + feedViewPost: { 1412 + type: 'object', 1413 + required: ['post'], 1414 + properties: { 1415 + post: { 1416 + type: 'ref', 1417 + ref: 'lex:app.bsky.feed.defs#postView', 1418 + }, 1419 + reply: { 1420 + type: 'ref', 1421 + ref: 'lex:app.bsky.feed.defs#replyRef', 1422 + }, 1423 + reason: { 1424 + type: 'union', 1425 + refs: [ 1426 + 'lex:app.bsky.feed.defs#reasonRepost', 1427 + 'lex:app.bsky.feed.defs#reasonPin', 1428 + ], 1429 + }, 1430 + feedContext: { 1431 + type: 'string', 1432 + description: 1433 + 'Context provided by feed generator that may be passed back alongside interactions.', 1434 + maxLength: 2000, 1435 + }, 1436 + reqId: { 1437 + type: 'string', 1438 + description: 1439 + 'Unique identifier per request that may be passed back alongside interactions.', 1440 + maxLength: 100, 1441 + }, 1442 + }, 1443 + }, 1444 + replyRef: { 1445 + type: 'object', 1446 + required: ['root', 'parent'], 1447 + properties: { 1448 + root: { 1449 + type: 'union', 1450 + refs: [ 1451 + 'lex:app.bsky.feed.defs#postView', 1452 + 'lex:app.bsky.feed.defs#notFoundPost', 1453 + 'lex:app.bsky.feed.defs#blockedPost', 1454 + ], 1455 + }, 1456 + parent: { 1457 + type: 'union', 1458 + refs: [ 1459 + 'lex:app.bsky.feed.defs#postView', 1460 + 'lex:app.bsky.feed.defs#notFoundPost', 1461 + 'lex:app.bsky.feed.defs#blockedPost', 1462 + ], 1463 + }, 1464 + grandparentAuthor: { 1465 + type: 'ref', 1466 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 1467 + description: 1468 + 'When parent is a reply to another post, this is the author of that post.', 1469 + }, 1470 + }, 1471 + }, 1472 + reasonRepost: { 1473 + type: 'object', 1474 + required: ['by', 'indexedAt'], 1475 + properties: { 1476 + by: { 1477 + type: 'ref', 1478 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 1479 + }, 1480 + uri: { 1481 + type: 'string', 1482 + format: 'at-uri', 1483 + }, 1484 + cid: { 1485 + type: 'string', 1486 + format: 'cid', 1487 + }, 1488 + indexedAt: { 1489 + type: 'string', 1490 + format: 'datetime', 1491 + }, 1492 + }, 1493 + }, 1494 + reasonPin: { 1495 + type: 'object', 1496 + properties: {}, 1497 + }, 1498 + threadViewPost: { 1499 + type: 'object', 1500 + required: ['post'], 1501 + properties: { 1502 + post: { 1503 + type: 'ref', 1504 + ref: 'lex:app.bsky.feed.defs#postView', 1505 + }, 1506 + parent: { 1507 + type: 'union', 1508 + refs: [ 1509 + 'lex:app.bsky.feed.defs#threadViewPost', 1510 + 'lex:app.bsky.feed.defs#notFoundPost', 1511 + 'lex:app.bsky.feed.defs#blockedPost', 1512 + ], 1513 + }, 1514 + replies: { 1515 + type: 'array', 1516 + items: { 1517 + type: 'union', 1518 + refs: [ 1519 + 'lex:app.bsky.feed.defs#threadViewPost', 1520 + 'lex:app.bsky.feed.defs#notFoundPost', 1521 + 'lex:app.bsky.feed.defs#blockedPost', 1522 + ], 1523 + }, 1524 + }, 1525 + threadContext: { 1526 + type: 'ref', 1527 + ref: 'lex:app.bsky.feed.defs#threadContext', 1528 + }, 1529 + }, 1530 + }, 1531 + notFoundPost: { 1532 + type: 'object', 1533 + required: ['uri', 'notFound'], 1534 + properties: { 1535 + uri: { 1536 + type: 'string', 1537 + format: 'at-uri', 1538 + }, 1539 + notFound: { 1540 + type: 'boolean', 1541 + const: true, 1542 + }, 1543 + }, 1544 + }, 1545 + blockedPost: { 1546 + type: 'object', 1547 + required: ['uri', 'blocked', 'author'], 1548 + properties: { 1549 + uri: { 1550 + type: 'string', 1551 + format: 'at-uri', 1552 + }, 1553 + blocked: { 1554 + type: 'boolean', 1555 + const: true, 1556 + }, 1557 + author: { 1558 + type: 'ref', 1559 + ref: 'lex:app.bsky.feed.defs#blockedAuthor', 1560 + }, 1561 + }, 1562 + }, 1563 + blockedAuthor: { 1564 + type: 'object', 1565 + required: ['did'], 1566 + properties: { 1567 + did: { 1568 + type: 'string', 1569 + format: 'did', 1570 + }, 1571 + viewer: { 1572 + type: 'ref', 1573 + ref: 'lex:app.bsky.actor.defs#viewerState', 1574 + }, 1575 + }, 1576 + }, 1577 + generatorView: { 1578 + type: 'object', 1579 + required: ['uri', 'cid', 'did', 'creator', 'displayName', 'indexedAt'], 1580 + properties: { 1581 + uri: { 1582 + type: 'string', 1583 + format: 'at-uri', 1584 + }, 1585 + cid: { 1586 + type: 'string', 1587 + format: 'cid', 1588 + }, 1589 + did: { 1590 + type: 'string', 1591 + format: 'did', 1592 + }, 1593 + creator: { 1594 + type: 'ref', 1595 + ref: 'lex:app.bsky.actor.defs#profileView', 1596 + }, 1597 + displayName: { 1598 + type: 'string', 1599 + }, 1600 + description: { 1601 + type: 'string', 1602 + maxGraphemes: 300, 1603 + maxLength: 3000, 1604 + }, 1605 + descriptionFacets: { 1606 + type: 'array', 1607 + items: { 1608 + type: 'ref', 1609 + ref: 'lex:app.bsky.richtext.facet', 1610 + }, 1611 + }, 1612 + avatar: { 1613 + type: 'string', 1614 + format: 'uri', 1615 + }, 1616 + likeCount: { 1617 + type: 'integer', 1618 + minimum: 0, 1619 + }, 1620 + acceptsInteractions: { 1621 + type: 'boolean', 1622 + }, 1623 + labels: { 1624 + type: 'array', 1625 + items: { 1626 + type: 'ref', 1627 + ref: 'lex:com.atproto.label.defs#label', 1628 + }, 1629 + }, 1630 + viewer: { 1631 + type: 'ref', 1632 + ref: 'lex:app.bsky.feed.defs#generatorViewerState', 1633 + }, 1634 + contentMode: { 1635 + type: 'string', 1636 + knownValues: [ 1637 + 'app.bsky.feed.defs#contentModeUnspecified', 1638 + 'app.bsky.feed.defs#contentModeVideo', 1639 + ], 1640 + }, 1641 + indexedAt: { 1642 + type: 'string', 1643 + format: 'datetime', 1644 + }, 1645 + }, 1646 + }, 1647 + generatorViewerState: { 1648 + type: 'object', 1649 + properties: { 1650 + like: { 1651 + type: 'string', 1652 + format: 'at-uri', 1653 + }, 1654 + }, 1655 + }, 1656 + skeletonFeedPost: { 1657 + type: 'object', 1658 + required: ['post'], 1659 + properties: { 1660 + post: { 1661 + type: 'string', 1662 + format: 'at-uri', 1663 + }, 1664 + reason: { 1665 + type: 'union', 1666 + refs: [ 1667 + 'lex:app.bsky.feed.defs#skeletonReasonRepost', 1668 + 'lex:app.bsky.feed.defs#skeletonReasonPin', 1669 + ], 1670 + }, 1671 + feedContext: { 1672 + type: 'string', 1673 + description: 1674 + 'Context that will be passed through to client and may be passed to feed generator back alongside interactions.', 1675 + maxLength: 2000, 1676 + }, 1677 + }, 1678 + }, 1679 + skeletonReasonRepost: { 1680 + type: 'object', 1681 + required: ['repost'], 1682 + properties: { 1683 + repost: { 1684 + type: 'string', 1685 + format: 'at-uri', 1686 + }, 1687 + }, 1688 + }, 1689 + skeletonReasonPin: { 1690 + type: 'object', 1691 + properties: {}, 1692 + }, 1693 + threadgateView: { 1694 + type: 'object', 1695 + properties: { 1696 + uri: { 1697 + type: 'string', 1698 + format: 'at-uri', 1699 + }, 1700 + cid: { 1701 + type: 'string', 1702 + format: 'cid', 1703 + }, 1704 + record: { 1705 + type: 'unknown', 1706 + }, 1707 + lists: { 1708 + type: 'array', 1709 + items: { 1710 + type: 'ref', 1711 + ref: 'lex:app.bsky.graph.defs#listViewBasic', 1712 + }, 1713 + }, 1714 + }, 1715 + }, 1716 + interaction: { 1717 + type: 'object', 1718 + properties: { 1719 + item: { 1720 + type: 'string', 1721 + format: 'at-uri', 1722 + }, 1723 + event: { 1724 + type: 'string', 1725 + knownValues: [ 1726 + 'app.bsky.feed.defs#requestLess', 1727 + 'app.bsky.feed.defs#requestMore', 1728 + 'app.bsky.feed.defs#clickthroughItem', 1729 + 'app.bsky.feed.defs#clickthroughAuthor', 1730 + 'app.bsky.feed.defs#clickthroughReposter', 1731 + 'app.bsky.feed.defs#clickthroughEmbed', 1732 + 'app.bsky.feed.defs#interactionSeen', 1733 + 'app.bsky.feed.defs#interactionLike', 1734 + 'app.bsky.feed.defs#interactionRepost', 1735 + 'app.bsky.feed.defs#interactionReply', 1736 + 'app.bsky.feed.defs#interactionQuote', 1737 + 'app.bsky.feed.defs#interactionShare', 1738 + ], 1739 + }, 1740 + feedContext: { 1741 + type: 'string', 1742 + description: 1743 + 'Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.', 1744 + maxLength: 2000, 1745 + }, 1746 + reqId: { 1747 + type: 'string', 1748 + description: 1749 + 'Unique identifier per request that may be passed back alongside interactions.', 1750 + maxLength: 100, 1751 + }, 1752 + }, 1753 + }, 1754 + requestLess: { 1755 + type: 'token', 1756 + description: 1757 + 'Request that less content like the given feed item be shown in the feed', 1758 + }, 1759 + requestMore: { 1760 + type: 'token', 1761 + description: 1762 + 'Request that more content like the given feed item be shown in the feed', 1763 + }, 1764 + clickthroughItem: { 1765 + type: 'token', 1766 + description: 'User clicked through to the feed item', 1767 + }, 1768 + clickthroughAuthor: { 1769 + type: 'token', 1770 + description: 'User clicked through to the author of the feed item', 1771 + }, 1772 + clickthroughReposter: { 1773 + type: 'token', 1774 + description: 'User clicked through to the reposter of the feed item', 1775 + }, 1776 + clickthroughEmbed: { 1777 + type: 'token', 1778 + description: 1779 + 'User clicked through to the embedded content of the feed item', 1780 + }, 1781 + contentModeUnspecified: { 1782 + type: 'token', 1783 + description: 'Declares the feed generator returns any types of posts.', 1784 + }, 1785 + contentModeVideo: { 1786 + type: 'token', 1787 + description: 1788 + 'Declares the feed generator returns posts containing app.bsky.embed.video embeds.', 1789 + }, 1790 + interactionSeen: { 1791 + type: 'token', 1792 + description: 'Feed item was seen by user', 1793 + }, 1794 + interactionLike: { 1795 + type: 'token', 1796 + description: 'User liked the feed item', 1797 + }, 1798 + interactionRepost: { 1799 + type: 'token', 1800 + description: 'User reposted the feed item', 1801 + }, 1802 + interactionReply: { 1803 + type: 'token', 1804 + description: 'User replied to the feed item', 1805 + }, 1806 + interactionQuote: { 1807 + type: 'token', 1808 + description: 'User quoted the feed item', 1809 + }, 1810 + interactionShare: { 1811 + type: 'token', 1812 + description: 'User shared the feed item', 1813 + }, 1814 + }, 1815 + }, 1816 + AppBskyFeedGetActorFeeds: { 1817 + lexicon: 1, 1818 + id: 'app.bsky.feed.getActorFeeds', 1819 + defs: { 1820 + main: { 1821 + type: 'query', 1822 + description: 1823 + "Get a list of feeds (feed generator records) created by the actor (in the actor's repo).", 1824 + parameters: { 1825 + type: 'params', 1826 + required: ['actor'], 1827 + properties: { 1828 + actor: { 1829 + type: 'string', 1830 + format: 'at-identifier', 1831 + }, 1832 + limit: { 1833 + type: 'integer', 1834 + minimum: 1, 1835 + maximum: 100, 1836 + default: 50, 1837 + }, 1838 + cursor: { 1839 + type: 'string', 1840 + }, 1841 + }, 1842 + }, 1843 + output: { 1844 + encoding: 'application/json', 1845 + schema: { 1846 + type: 'object', 1847 + required: ['feeds'], 1848 + properties: { 1849 + cursor: { 1850 + type: 'string', 1851 + }, 1852 + feeds: { 1853 + type: 'array', 1854 + items: { 1855 + type: 'ref', 1856 + ref: 'lex:app.bsky.feed.defs#generatorView', 1857 + }, 1858 + }, 1859 + }, 1860 + }, 1861 + }, 1862 + }, 1863 + }, 1864 + }, 1865 + AppBskyFeedGetFeedGenerator: { 1866 + lexicon: 1, 1867 + id: 'app.bsky.feed.getFeedGenerator', 1868 + defs: { 1869 + main: { 1870 + type: 'query', 1871 + description: 1872 + 'Get information about a feed generator. Implemented by AppView.', 1873 + parameters: { 1874 + type: 'params', 1875 + required: ['feed'], 1876 + properties: { 1877 + feed: { 1878 + type: 'string', 1879 + format: 'at-uri', 1880 + description: 'AT-URI of the feed generator record.', 1881 + }, 1882 + }, 1883 + }, 1884 + output: { 1885 + encoding: 'application/json', 1886 + schema: { 1887 + type: 'object', 1888 + required: ['view', 'isOnline', 'isValid'], 1889 + properties: { 1890 + view: { 1891 + type: 'ref', 1892 + ref: 'lex:app.bsky.feed.defs#generatorView', 1893 + }, 1894 + isOnline: { 1895 + type: 'boolean', 1896 + description: 1897 + 'Indicates whether the feed generator service has been online recently, or else seems to be inactive.', 1898 + }, 1899 + isValid: { 1900 + type: 'boolean', 1901 + description: 1902 + 'Indicates whether the feed generator service is compatible with the record declaration.', 1903 + }, 1904 + }, 1905 + }, 1906 + }, 1907 + }, 1908 + }, 1909 + }, 1910 + AppBskyFeedGetFeedGenerators: { 1911 + lexicon: 1, 1912 + id: 'app.bsky.feed.getFeedGenerators', 1913 + defs: { 1914 + main: { 1915 + type: 'query', 1916 + description: 'Get information about a list of feed generators.', 1917 + parameters: { 1918 + type: 'params', 1919 + required: ['feeds'], 1920 + properties: { 1921 + feeds: { 1922 + type: 'array', 1923 + items: { 1924 + type: 'string', 1925 + format: 'at-uri', 1926 + }, 1927 + }, 1928 + }, 1929 + }, 1930 + output: { 1931 + encoding: 'application/json', 1932 + schema: { 1933 + type: 'object', 1934 + required: ['feeds'], 1935 + properties: { 1936 + feeds: { 1937 + type: 'array', 1938 + items: { 1939 + type: 'ref', 1940 + ref: 'lex:app.bsky.feed.defs#generatorView', 1941 + }, 1942 + }, 1943 + }, 1944 + }, 1945 + }, 1946 + }, 1947 + }, 1948 + }, 1949 + AppBskyFeedGetPosts: { 1950 + lexicon: 1, 1951 + id: 'app.bsky.feed.getPosts', 1952 + defs: { 1953 + main: { 1954 + type: 'query', 1955 + description: 1956 + "Gets post views for a specified list of posts (by AT-URI). This is sometimes referred to as 'hydrating' a 'feed skeleton'.", 1957 + parameters: { 1958 + type: 'params', 1959 + required: ['uris'], 1960 + properties: { 1961 + uris: { 1962 + type: 'array', 1963 + description: 'List of post AT-URIs to return hydrated views for.', 1964 + items: { 1965 + type: 'string', 1966 + format: 'at-uri', 1967 + }, 1968 + maxLength: 25, 1969 + }, 1970 + }, 1971 + }, 1972 + output: { 1973 + encoding: 'application/json', 1974 + schema: { 1975 + type: 'object', 1976 + required: ['posts'], 1977 + properties: { 1978 + posts: { 1979 + type: 'array', 1980 + items: { 1981 + type: 'ref', 1982 + ref: 'lex:app.bsky.feed.defs#postView', 1983 + }, 1984 + }, 1985 + }, 1986 + }, 1987 + }, 1988 + }, 1989 + }, 1990 + }, 1991 + AppBskyFeedPostgate: { 1992 + lexicon: 1, 1993 + id: 'app.bsky.feed.postgate', 1994 + defs: { 1995 + main: { 1996 + type: 'record', 1997 + key: 'tid', 1998 + description: 1999 + 'Record defining interaction rules for a post. The record key (rkey) of the postgate record must match the record key of the post, and that record must be in the same repository.', 2000 + record: { 2001 + type: 'object', 2002 + required: ['post', 'createdAt'], 2003 + properties: { 2004 + createdAt: { 2005 + type: 'string', 2006 + format: 'datetime', 2007 + }, 2008 + post: { 2009 + type: 'string', 2010 + format: 'at-uri', 2011 + description: 'Reference (AT-URI) to the post record.', 2012 + }, 2013 + detachedEmbeddingUris: { 2014 + type: 'array', 2015 + maxLength: 50, 2016 + items: { 2017 + type: 'string', 2018 + format: 'at-uri', 2019 + }, 2020 + description: 2021 + 'List of AT-URIs embedding this post that the author has detached from.', 2022 + }, 2023 + embeddingRules: { 2024 + description: 2025 + 'List of rules defining who can embed this post. If value is an empty array or is undefined, no particular rules apply and anyone can embed.', 2026 + type: 'array', 2027 + maxLength: 5, 2028 + items: { 2029 + type: 'union', 2030 + refs: ['lex:app.bsky.feed.postgate#disableRule'], 2031 + }, 2032 + }, 2033 + }, 2034 + }, 2035 + }, 2036 + disableRule: { 2037 + type: 'object', 2038 + description: 'Disables embedding of this post.', 2039 + properties: {}, 2040 + }, 2041 + }, 2042 + }, 2043 + AppBskyFeedThreadgate: { 2044 + lexicon: 1, 2045 + id: 'app.bsky.feed.threadgate', 2046 + defs: { 2047 + main: { 2048 + type: 'record', 2049 + key: 'tid', 2050 + description: 2051 + "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.", 2052 + record: { 2053 + type: 'object', 2054 + required: ['post', 'createdAt'], 2055 + properties: { 2056 + post: { 2057 + type: 'string', 2058 + format: 'at-uri', 2059 + description: 'Reference (AT-URI) to the post record.', 2060 + }, 2061 + allow: { 2062 + description: 2063 + 'List of rules defining who can reply to this post. If value is an empty array, no one can reply. If value is undefined, anyone can reply.', 2064 + type: 'array', 2065 + maxLength: 5, 2066 + items: { 2067 + type: 'union', 2068 + refs: [ 2069 + 'lex:app.bsky.feed.threadgate#mentionRule', 2070 + 'lex:app.bsky.feed.threadgate#followerRule', 2071 + 'lex:app.bsky.feed.threadgate#followingRule', 2072 + 'lex:app.bsky.feed.threadgate#listRule', 2073 + ], 2074 + }, 2075 + }, 2076 + createdAt: { 2077 + type: 'string', 2078 + format: 'datetime', 2079 + }, 2080 + hiddenReplies: { 2081 + type: 'array', 2082 + maxLength: 50, 2083 + items: { 2084 + type: 'string', 2085 + format: 'at-uri', 2086 + }, 2087 + description: 'List of hidden reply URIs.', 2088 + }, 2089 + }, 2090 + }, 2091 + }, 2092 + mentionRule: { 2093 + type: 'object', 2094 + description: 'Allow replies from actors mentioned in your post.', 2095 + properties: {}, 2096 + }, 2097 + followerRule: { 2098 + type: 'object', 2099 + description: 'Allow replies from actors who follow you.', 2100 + properties: {}, 2101 + }, 2102 + followingRule: { 2103 + type: 'object', 2104 + description: 'Allow replies from actors you follow.', 2105 + properties: {}, 2106 + }, 2107 + listRule: { 2108 + type: 'object', 2109 + description: 'Allow replies from actors on a list.', 2110 + required: ['list'], 2111 + properties: { 2112 + list: { 2113 + type: 'string', 2114 + format: 'at-uri', 2115 + }, 2116 + }, 2117 + }, 2118 + }, 2119 + }, 2120 + AppBskyGraphDefs: { 2121 + lexicon: 1, 2122 + id: 'app.bsky.graph.defs', 2123 + defs: { 2124 + listViewBasic: { 2125 + type: 'object', 2126 + required: ['uri', 'cid', 'name', 'purpose'], 2127 + properties: { 2128 + uri: { 2129 + type: 'string', 2130 + format: 'at-uri', 2131 + }, 2132 + cid: { 2133 + type: 'string', 2134 + format: 'cid', 2135 + }, 2136 + name: { 2137 + type: 'string', 2138 + maxLength: 64, 2139 + minLength: 1, 2140 + }, 2141 + purpose: { 2142 + type: 'ref', 2143 + ref: 'lex:app.bsky.graph.defs#listPurpose', 2144 + }, 2145 + avatar: { 2146 + type: 'string', 2147 + format: 'uri', 2148 + }, 2149 + listItemCount: { 2150 + type: 'integer', 2151 + minimum: 0, 2152 + }, 2153 + labels: { 2154 + type: 'array', 2155 + items: { 2156 + type: 'ref', 2157 + ref: 'lex:com.atproto.label.defs#label', 2158 + }, 2159 + }, 2160 + viewer: { 2161 + type: 'ref', 2162 + ref: 'lex:app.bsky.graph.defs#listViewerState', 2163 + }, 2164 + indexedAt: { 2165 + type: 'string', 2166 + format: 'datetime', 2167 + }, 2168 + }, 2169 + }, 2170 + listView: { 2171 + type: 'object', 2172 + required: ['uri', 'cid', 'creator', 'name', 'purpose', 'indexedAt'], 2173 + properties: { 2174 + uri: { 2175 + type: 'string', 2176 + format: 'at-uri', 2177 + }, 2178 + cid: { 2179 + type: 'string', 2180 + format: 'cid', 2181 + }, 2182 + creator: { 2183 + type: 'ref', 2184 + ref: 'lex:app.bsky.actor.defs#profileView', 2185 + }, 2186 + name: { 2187 + type: 'string', 2188 + maxLength: 64, 2189 + minLength: 1, 2190 + }, 2191 + purpose: { 2192 + type: 'ref', 2193 + ref: 'lex:app.bsky.graph.defs#listPurpose', 2194 + }, 2195 + description: { 2196 + type: 'string', 2197 + maxGraphemes: 300, 2198 + maxLength: 3000, 2199 + }, 2200 + descriptionFacets: { 2201 + type: 'array', 2202 + items: { 2203 + type: 'ref', 2204 + ref: 'lex:app.bsky.richtext.facet', 2205 + }, 2206 + }, 2207 + avatar: { 2208 + type: 'string', 2209 + format: 'uri', 2210 + }, 2211 + listItemCount: { 2212 + type: 'integer', 2213 + minimum: 0, 2214 + }, 2215 + labels: { 2216 + type: 'array', 2217 + items: { 2218 + type: 'ref', 2219 + ref: 'lex:com.atproto.label.defs#label', 2220 + }, 2221 + }, 2222 + viewer: { 2223 + type: 'ref', 2224 + ref: 'lex:app.bsky.graph.defs#listViewerState', 2225 + }, 2226 + indexedAt: { 2227 + type: 'string', 2228 + format: 'datetime', 2229 + }, 2230 + }, 2231 + }, 2232 + listItemView: { 2233 + type: 'object', 2234 + required: ['uri', 'subject'], 2235 + properties: { 2236 + uri: { 2237 + type: 'string', 2238 + format: 'at-uri', 2239 + }, 2240 + subject: { 2241 + type: 'ref', 2242 + ref: 'lex:app.bsky.actor.defs#profileView', 2243 + }, 2244 + }, 2245 + }, 2246 + starterPackView: { 2247 + type: 'object', 2248 + required: ['uri', 'cid', 'record', 'creator', 'indexedAt'], 2249 + properties: { 2250 + uri: { 2251 + type: 'string', 2252 + format: 'at-uri', 2253 + }, 2254 + cid: { 2255 + type: 'string', 2256 + format: 'cid', 2257 + }, 2258 + record: { 2259 + type: 'unknown', 2260 + }, 2261 + creator: { 2262 + type: 'ref', 2263 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 2264 + }, 2265 + list: { 2266 + type: 'ref', 2267 + ref: 'lex:app.bsky.graph.defs#listViewBasic', 2268 + }, 2269 + listItemsSample: { 2270 + type: 'array', 2271 + maxLength: 12, 2272 + items: { 2273 + type: 'ref', 2274 + ref: 'lex:app.bsky.graph.defs#listItemView', 2275 + }, 2276 + }, 2277 + feeds: { 2278 + type: 'array', 2279 + maxLength: 3, 2280 + items: { 2281 + type: 'ref', 2282 + ref: 'lex:app.bsky.feed.defs#generatorView', 2283 + }, 2284 + }, 2285 + joinedWeekCount: { 2286 + type: 'integer', 2287 + minimum: 0, 2288 + }, 2289 + joinedAllTimeCount: { 2290 + type: 'integer', 2291 + minimum: 0, 2292 + }, 2293 + labels: { 2294 + type: 'array', 2295 + items: { 2296 + type: 'ref', 2297 + ref: 'lex:com.atproto.label.defs#label', 2298 + }, 2299 + }, 2300 + indexedAt: { 2301 + type: 'string', 2302 + format: 'datetime', 2303 + }, 2304 + }, 2305 + }, 2306 + starterPackViewBasic: { 2307 + type: 'object', 2308 + required: ['uri', 'cid', 'record', 'creator', 'indexedAt'], 2309 + properties: { 2310 + uri: { 2311 + type: 'string', 2312 + format: 'at-uri', 2313 + }, 2314 + cid: { 2315 + type: 'string', 2316 + format: 'cid', 2317 + }, 2318 + record: { 2319 + type: 'unknown', 2320 + }, 2321 + creator: { 2322 + type: 'ref', 2323 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 2324 + }, 2325 + listItemCount: { 2326 + type: 'integer', 2327 + minimum: 0, 2328 + }, 2329 + joinedWeekCount: { 2330 + type: 'integer', 2331 + minimum: 0, 2332 + }, 2333 + joinedAllTimeCount: { 2334 + type: 'integer', 2335 + minimum: 0, 2336 + }, 2337 + labels: { 2338 + type: 'array', 2339 + items: { 2340 + type: 'ref', 2341 + ref: 'lex:com.atproto.label.defs#label', 2342 + }, 2343 + }, 2344 + indexedAt: { 2345 + type: 'string', 2346 + format: 'datetime', 2347 + }, 2348 + }, 2349 + }, 2350 + listPurpose: { 2351 + type: 'string', 2352 + knownValues: [ 2353 + 'app.bsky.graph.defs#modlist', 2354 + 'app.bsky.graph.defs#curatelist', 2355 + 'app.bsky.graph.defs#referencelist', 2356 + ], 2357 + }, 2358 + modlist: { 2359 + type: 'token', 2360 + description: 2361 + 'A list of actors to apply an aggregate moderation action (mute/block) on.', 2362 + }, 2363 + curatelist: { 2364 + type: 'token', 2365 + description: 2366 + 'A list of actors used for curation purposes such as list feeds or interaction gating.', 2367 + }, 2368 + referencelist: { 2369 + type: 'token', 2370 + description: 2371 + 'A list of actors used for only for reference purposes such as within a starter pack.', 2372 + }, 2373 + listViewerState: { 2374 + type: 'object', 2375 + properties: { 2376 + muted: { 2377 + type: 'boolean', 2378 + }, 2379 + blocked: { 2380 + type: 'string', 2381 + format: 'at-uri', 2382 + }, 2383 + }, 2384 + }, 2385 + notFoundActor: { 2386 + type: 'object', 2387 + description: 'indicates that a handle or DID could not be resolved', 2388 + required: ['actor', 'notFound'], 2389 + properties: { 2390 + actor: { 2391 + type: 'string', 2392 + format: 'at-identifier', 2393 + }, 2394 + notFound: { 2395 + type: 'boolean', 2396 + const: true, 2397 + }, 2398 + }, 2399 + }, 2400 + relationship: { 2401 + type: 'object', 2402 + description: 2403 + 'lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)', 2404 + required: ['did'], 2405 + properties: { 2406 + did: { 2407 + type: 'string', 2408 + format: 'did', 2409 + }, 2410 + following: { 2411 + type: 'string', 2412 + format: 'at-uri', 2413 + description: 2414 + 'if the actor follows this DID, this is the AT-URI of the follow record', 2415 + }, 2416 + followedBy: { 2417 + type: 'string', 2418 + format: 'at-uri', 2419 + description: 2420 + 'if the actor is followed by this DID, contains the AT-URI of the follow record', 2421 + }, 2422 + }, 2423 + }, 2424 + }, 2425 + }, 2426 + AppBskyNotificationDefs: { 2427 + lexicon: 1, 2428 + id: 'app.bsky.notification.defs', 2429 + defs: { 2430 + recordDeleted: { 2431 + type: 'object', 2432 + properties: {}, 2433 + }, 2434 + chatPreference: { 2435 + type: 'object', 2436 + required: ['include', 'push'], 2437 + properties: { 2438 + include: { 2439 + type: 'string', 2440 + knownValues: ['all', 'accepted'], 2441 + }, 2442 + push: { 2443 + type: 'boolean', 2444 + }, 2445 + }, 2446 + }, 2447 + filterablePreference: { 2448 + type: 'object', 2449 + required: ['include', 'list', 'push'], 2450 + properties: { 2451 + include: { 2452 + type: 'string', 2453 + knownValues: ['all', 'follows'], 2454 + }, 2455 + list: { 2456 + type: 'boolean', 2457 + }, 2458 + push: { 2459 + type: 'boolean', 2460 + }, 2461 + }, 2462 + }, 2463 + preference: { 2464 + type: 'object', 2465 + required: ['list', 'push'], 2466 + properties: { 2467 + list: { 2468 + type: 'boolean', 2469 + }, 2470 + push: { 2471 + type: 'boolean', 2472 + }, 2473 + }, 2474 + }, 2475 + preferences: { 2476 + type: 'object', 2477 + required: [ 2478 + 'chat', 2479 + 'follow', 2480 + 'like', 2481 + 'likeViaRepost', 2482 + 'mention', 2483 + 'quote', 2484 + 'reply', 2485 + 'repost', 2486 + 'repostViaRepost', 2487 + 'starterpackJoined', 2488 + 'subscribedPost', 2489 + 'unverified', 2490 + 'verified', 2491 + ], 2492 + properties: { 2493 + chat: { 2494 + type: 'ref', 2495 + ref: 'lex:app.bsky.notification.defs#chatPreference', 2496 + }, 2497 + follow: { 2498 + type: 'ref', 2499 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2500 + }, 2501 + like: { 2502 + type: 'ref', 2503 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2504 + }, 2505 + likeViaRepost: { 2506 + type: 'ref', 2507 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2508 + }, 2509 + mention: { 2510 + type: 'ref', 2511 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2512 + }, 2513 + quote: { 2514 + type: 'ref', 2515 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2516 + }, 2517 + reply: { 2518 + type: 'ref', 2519 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2520 + }, 2521 + repost: { 2522 + type: 'ref', 2523 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2524 + }, 2525 + repostViaRepost: { 2526 + type: 'ref', 2527 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2528 + }, 2529 + starterpackJoined: { 2530 + type: 'ref', 2531 + ref: 'lex:app.bsky.notification.defs#preference', 2532 + }, 2533 + subscribedPost: { 2534 + type: 'ref', 2535 + ref: 'lex:app.bsky.notification.defs#preference', 2536 + }, 2537 + unverified: { 2538 + type: 'ref', 2539 + ref: 'lex:app.bsky.notification.defs#preference', 2540 + }, 2541 + verified: { 2542 + type: 'ref', 2543 + ref: 'lex:app.bsky.notification.defs#preference', 2544 + }, 2545 + }, 2546 + }, 2547 + activitySubscription: { 2548 + type: 'object', 2549 + required: ['post', 'reply'], 2550 + properties: { 2551 + post: { 2552 + type: 'boolean', 2553 + }, 2554 + reply: { 2555 + type: 'boolean', 2556 + }, 2557 + }, 2558 + }, 2559 + subjectActivitySubscription: { 2560 + description: 2561 + 'Object used to store activity subscription data in stash.', 2562 + type: 'object', 2563 + required: ['subject', 'activitySubscription'], 2564 + properties: { 2565 + subject: { 2566 + type: 'string', 2567 + format: 'did', 2568 + }, 2569 + activitySubscription: { 2570 + type: 'ref', 2571 + ref: 'lex:app.bsky.notification.defs#activitySubscription', 2572 + }, 2573 + }, 2574 + }, 2575 + }, 2576 + }, 2577 + AppBskyRichtextFacet: { 2578 + lexicon: 1, 2579 + id: 'app.bsky.richtext.facet', 2580 + defs: { 2581 + main: { 2582 + type: 'object', 2583 + description: 'Annotation of a sub-string within rich text.', 2584 + required: ['index', 'features'], 2585 + properties: { 2586 + index: { 2587 + type: 'ref', 2588 + ref: 'lex:app.bsky.richtext.facet#byteSlice', 2589 + }, 2590 + features: { 2591 + type: 'array', 2592 + items: { 2593 + type: 'union', 2594 + refs: [ 2595 + 'lex:app.bsky.richtext.facet#mention', 2596 + 'lex:app.bsky.richtext.facet#link', 2597 + 'lex:app.bsky.richtext.facet#tag', 2598 + ], 2599 + }, 2600 + }, 2601 + }, 2602 + }, 2603 + mention: { 2604 + type: 'object', 2605 + description: 2606 + "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.", 2607 + required: ['did'], 2608 + properties: { 2609 + did: { 2610 + type: 'string', 2611 + format: 'did', 2612 + }, 2613 + }, 2614 + }, 2615 + link: { 2616 + type: 'object', 2617 + description: 2618 + 'Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.', 2619 + required: ['uri'], 2620 + properties: { 2621 + uri: { 2622 + type: 'string', 2623 + format: 'uri', 2624 + }, 2625 + }, 2626 + }, 2627 + tag: { 2628 + type: 'object', 2629 + description: 2630 + "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').", 2631 + required: ['tag'], 2632 + properties: { 2633 + tag: { 2634 + type: 'string', 2635 + maxLength: 640, 2636 + maxGraphemes: 64, 2637 + }, 2638 + }, 2639 + }, 2640 + byteSlice: { 2641 + type: 'object', 2642 + description: 2643 + '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.', 2644 + required: ['byteStart', 'byteEnd'], 2645 + properties: { 2646 + byteStart: { 2647 + type: 'integer', 2648 + minimum: 0, 2649 + }, 2650 + byteEnd: { 2651 + type: 'integer', 2652 + minimum: 0, 2653 + }, 2654 + }, 2655 + }, 2656 + }, 2657 + }, 2658 + ComAtprotoLabelDefs: { 2659 + lexicon: 1, 2660 + id: 'com.atproto.label.defs', 2661 + defs: { 2662 + label: { 2663 + type: 'object', 2664 + description: 2665 + 'Metadata tag on an atproto resource (eg, repo or record).', 2666 + required: ['src', 'uri', 'val', 'cts'], 2667 + properties: { 2668 + ver: { 2669 + type: 'integer', 2670 + description: 'The AT Protocol version of the label object.', 2671 + }, 2672 + src: { 2673 + type: 'string', 2674 + format: 'did', 2675 + description: 'DID of the actor who created this label.', 2676 + }, 2677 + uri: { 2678 + type: 'string', 2679 + format: 'uri', 2680 + description: 2681 + 'AT URI of the record, repository (account), or other resource that this label applies to.', 2682 + }, 2683 + cid: { 2684 + type: 'string', 2685 + format: 'cid', 2686 + description: 2687 + "Optionally, CID specifying the specific version of 'uri' resource this label applies to.", 2688 + }, 2689 + val: { 2690 + type: 'string', 2691 + maxLength: 128, 2692 + description: 2693 + 'The short string name of the value or type of this label.', 2694 + }, 2695 + neg: { 2696 + type: 'boolean', 2697 + description: 2698 + 'If true, this is a negation label, overwriting a previous label.', 2699 + }, 2700 + cts: { 2701 + type: 'string', 2702 + format: 'datetime', 2703 + description: 'Timestamp when this label was created.', 2704 + }, 2705 + exp: { 2706 + type: 'string', 2707 + format: 'datetime', 2708 + description: 2709 + 'Timestamp at which this label expires (no longer applies).', 2710 + }, 2711 + sig: { 2712 + type: 'bytes', 2713 + description: 'Signature of dag-cbor encoded label.', 2714 + }, 2715 + }, 2716 + }, 2717 + selfLabels: { 2718 + type: 'object', 2719 + description: 2720 + 'Metadata tags on an atproto record, published by the author within the record.', 2721 + required: ['values'], 2722 + properties: { 2723 + values: { 2724 + type: 'array', 2725 + items: { 2726 + type: 'ref', 2727 + ref: 'lex:com.atproto.label.defs#selfLabel', 2728 + }, 2729 + maxLength: 10, 2730 + }, 2731 + }, 2732 + }, 2733 + selfLabel: { 2734 + type: 'object', 2735 + description: 2736 + 'Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel.', 2737 + required: ['val'], 2738 + properties: { 2739 + val: { 2740 + type: 'string', 2741 + maxLength: 128, 2742 + description: 2743 + 'The short string name of the value or type of this label.', 2744 + }, 2745 + }, 2746 + }, 2747 + labelValueDefinition: { 2748 + type: 'object', 2749 + description: 2750 + 'Declares a label value and its expected interpretations and behaviors.', 2751 + required: ['identifier', 'severity', 'blurs', 'locales'], 2752 + properties: { 2753 + identifier: { 2754 + type: 'string', 2755 + description: 2756 + "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).", 2757 + maxLength: 100, 2758 + maxGraphemes: 100, 2759 + }, 2760 + severity: { 2761 + type: 'string', 2762 + description: 2763 + "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.", 2764 + knownValues: ['inform', 'alert', 'none'], 2765 + }, 2766 + blurs: { 2767 + type: 'string', 2768 + description: 2769 + "What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.", 2770 + knownValues: ['content', 'media', 'none'], 2771 + }, 2772 + defaultSetting: { 2773 + type: 'string', 2774 + description: 'The default setting for this label.', 2775 + knownValues: ['ignore', 'warn', 'hide'], 2776 + default: 'warn', 2777 + }, 2778 + adultOnly: { 2779 + type: 'boolean', 2780 + description: 2781 + 'Does the user need to have adult content enabled in order to configure this label?', 2782 + }, 2783 + locales: { 2784 + type: 'array', 2785 + items: { 2786 + type: 'ref', 2787 + ref: 'lex:com.atproto.label.defs#labelValueDefinitionStrings', 2788 + }, 2789 + }, 2790 + }, 2791 + }, 2792 + labelValueDefinitionStrings: { 2793 + type: 'object', 2794 + description: 2795 + 'Strings which describe the label in the UI, localized into a specific language.', 2796 + required: ['lang', 'name', 'description'], 2797 + properties: { 2798 + lang: { 2799 + type: 'string', 2800 + description: 2801 + 'The code of the language these strings are written in.', 2802 + format: 'language', 2803 + }, 2804 + name: { 2805 + type: 'string', 2806 + description: 'A short human-readable name for the label.', 2807 + maxGraphemes: 64, 2808 + maxLength: 640, 2809 + }, 2810 + description: { 2811 + type: 'string', 2812 + description: 2813 + 'A longer description of what the label means and why it might be applied.', 2814 + maxGraphemes: 10000, 2815 + maxLength: 100000, 2816 + }, 2817 + }, 2818 + }, 2819 + labelValue: { 2820 + type: 'string', 2821 + knownValues: [ 2822 + '!hide', 2823 + '!no-promote', 2824 + '!warn', 2825 + '!no-unauthenticated', 2826 + 'dmca-violation', 2827 + 'doxxing', 2828 + 'porn', 2829 + 'sexual', 2830 + 'nudity', 2831 + 'nsfl', 2832 + 'gore', 2833 + ], 2834 + }, 2835 + }, 2836 + }, 2837 + ComAtprotoRepoStrongRef: { 2838 + lexicon: 1, 2839 + id: 'com.atproto.repo.strongRef', 2840 + description: 'A URI with a content-hash fingerprint.', 2841 + defs: { 2842 + main: { 2843 + type: 'object', 2844 + required: ['uri', 'cid'], 2845 + properties: { 2846 + uri: { 2847 + type: 'string', 2848 + format: 'at-uri', 2849 + }, 2850 + cid: { 2851 + type: 'string', 2852 + format: 'cid', 2853 + }, 2854 + }, 2855 + }, 2856 + }, 2857 + }, 2858 + PartyWheyAppBskyActorDefs: { 2859 + lexicon: 1, 2860 + id: 'party.whey.app.bsky.actor.defs', 2861 + defs: { 2862 + profileViewBasicRef: { 2863 + type: 'object', 2864 + required: ['did'], 2865 + properties: { 2866 + did: { 2867 + type: 'string', 2868 + format: 'did', 2869 + }, 2870 + }, 2871 + }, 2872 + profileViewRef: { 2873 + type: 'object', 2874 + required: ['did'], 2875 + properties: { 2876 + did: { 2877 + type: 'string', 2878 + format: 'did', 2879 + }, 2880 + }, 2881 + }, 2882 + profileViewDetailedRef: { 2883 + type: 'object', 2884 + required: ['did'], 2885 + properties: { 2886 + did: { 2887 + type: 'string', 2888 + format: 'did', 2889 + }, 2890 + }, 2891 + }, 2892 + }, 2893 + }, 2894 + PartyWheyAppBskyFeedDefs: { 2895 + lexicon: 1, 2896 + id: 'party.whey.app.bsky.feed.defs', 2897 + defs: { 2898 + postViewRef: { 2899 + type: 'object', 2900 + description: 'A pointer to a app.bsky.feed.defs#postView', 2901 + required: ['uri', 'cid'], 2902 + properties: { 2903 + uri: { 2904 + type: 'string', 2905 + format: 'at-uri', 2906 + }, 2907 + cid: { 2908 + type: 'string', 2909 + format: 'cid', 2910 + }, 2911 + }, 2912 + }, 2913 + feedViewPostRef: { 2914 + type: 'object', 2915 + required: ['post'], 2916 + properties: { 2917 + post: { 2918 + type: 'union', 2919 + refs: [ 2920 + 'lex:app.bsky.feed.defs#postView', 2921 + 'lex:party.whey.app.bsky.feed.defs#postViewRef', 2922 + ], 2923 + }, 2924 + reply: { 2925 + type: 'union', 2926 + refs: [ 2927 + 'lex:app.bsky.feed.defs#replyRef', 2928 + 'lex:party.whey.app.bsky.feed.defs#replyRef', 2929 + ], 2930 + }, 2931 + reason: { 2932 + type: 'union', 2933 + refs: [ 2934 + 'lex:app.bsky.feed.defs#reasonRepost', 2935 + 'lex:app.bsky.feed.defs#reasonPin', 2936 + ], 2937 + }, 2938 + feedContext: { 2939 + type: 'string', 2940 + description: 2941 + 'Context provided by feed generator that may be passed back alongside interactions.', 2942 + maxLength: 2000, 2943 + }, 2944 + reqId: { 2945 + type: 'string', 2946 + description: 2947 + 'Unique identifier per request that may be passed back alongside interactions.', 2948 + maxLength: 100, 2949 + }, 2950 + }, 2951 + }, 2952 + replyRef: { 2953 + type: 'object', 2954 + required: ['root', 'parent'], 2955 + properties: { 2956 + root: { 2957 + type: 'union', 2958 + refs: [ 2959 + 'lex:party.whey.app.bsky.feed.defs#postViewRef', 2960 + 'lex:app.bsky.feed.defs#postView', 2961 + 'lex:app.bsky.feed.defs#notFoundPost', 2962 + 'lex:app.bsky.feed.defs#blockedPost', 2963 + ], 2964 + }, 2965 + parent: { 2966 + type: 'union', 2967 + refs: [ 2968 + 'lex:party.whey.app.bsky.feed.defs#postViewRef', 2969 + 'lex:app.bsky.feed.defs#postView', 2970 + 'lex:app.bsky.feed.defs#notFoundPost', 2971 + 'lex:app.bsky.feed.defs#blockedPost', 2972 + ], 2973 + }, 2974 + grandparentAuthor: { 2975 + type: 'union', 2976 + refs: [ 2977 + 'lex:party.whey.app.bsky.actor.defs#profileViewBasicRef', 2978 + 'lex:app.bsky.actor.defs#profileViewBasic', 2979 + ], 2980 + description: 2981 + 'When parent is a reply to another post, this is the author of that post.', 2982 + }, 2983 + }, 2984 + }, 2985 + threadViewPostRef: { 2986 + type: 'object', 2987 + required: ['post'], 2988 + properties: { 2989 + post: { 2990 + type: 'union', 2991 + refs: [ 2992 + 'lex:party.whey.app.bsky.feed.defs#postViewRef', 2993 + 'lex:app.bsky.feed.defs#postView', 2994 + ], 2995 + }, 2996 + parent: { 2997 + type: 'union', 2998 + refs: [ 2999 + 'lex:party.whey.app.bsky.feed.defs#threadViewPostRef', 3000 + 'lex:app.bsky.feed.defs#threadViewPost', 3001 + 'lex:app.bsky.feed.defs#notFoundPost', 3002 + 'lex:app.bsky.feed.defs#blockedPost', 3003 + ], 3004 + }, 3005 + replies: { 3006 + type: 'array', 3007 + items: { 3008 + type: 'union', 3009 + refs: [ 3010 + 'lex:party.whey.app.bsky.feed.defs#threadViewPostRef', 3011 + 'lex:app.bsky.feed.defs#threadViewPost', 3012 + 'lex:app.bsky.feed.defs#notFoundPost', 3013 + 'lex:app.bsky.feed.defs#blockedPost', 3014 + ], 3015 + }, 3016 + }, 3017 + threadContext: { 3018 + type: 'ref', 3019 + ref: 'lex:app.bsky.feed.defs#threadContext', 3020 + }, 3021 + }, 3022 + }, 3023 + }, 3024 + }, 3025 + PartyWheyAppBskyFeedGetActorLikesPartial: { 3026 + lexicon: 1, 3027 + id: 'party.whey.app.bsky.feed.getActorLikesPartial', 3028 + defs: { 3029 + main: { 3030 + type: 'query', 3031 + description: 3032 + 'Get a list of posts liked by an actor. May require auth, (if so, actor must be the requesting account).', 3033 + parameters: { 3034 + type: 'params', 3035 + required: ['actor'], 3036 + properties: { 3037 + actor: { 3038 + type: 'string', 3039 + format: 'at-identifier', 3040 + }, 3041 + limit: { 3042 + type: 'integer', 3043 + minimum: 1, 3044 + maximum: 100, 3045 + default: 50, 3046 + }, 3047 + cursor: { 3048 + type: 'string', 3049 + }, 3050 + }, 3051 + }, 3052 + output: { 3053 + encoding: 'application/json', 3054 + schema: { 3055 + type: 'object', 3056 + required: ['feed'], 3057 + properties: { 3058 + cursor: { 3059 + type: 'string', 3060 + }, 3061 + feed: { 3062 + type: 'array', 3063 + items: { 3064 + type: 'union', 3065 + refs: [ 3066 + 'lex:party.whey.app.bsky.feed.defs#feedViewPostRef', 3067 + 'lex:app.bsky.feed.defs#feedViewPost', 3068 + ], 3069 + }, 3070 + }, 3071 + }, 3072 + }, 3073 + }, 3074 + errors: [ 3075 + { 3076 + name: 'BlockedActor', 3077 + }, 3078 + { 3079 + name: 'BlockedByActor', 3080 + }, 3081 + ], 3082 + }, 3083 + }, 3084 + }, 3085 + PartyWheyAppBskyFeedGetAuthorFeedPartial: { 3086 + lexicon: 1, 3087 + id: 'party.whey.app.bsky.feed.getAuthorFeedPartial', 3088 + defs: { 3089 + main: { 3090 + type: 'query', 3091 + description: 3092 + "Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth.", 3093 + parameters: { 3094 + type: 'params', 3095 + required: ['actor'], 3096 + properties: { 3097 + actor: { 3098 + type: 'string', 3099 + format: 'at-identifier', 3100 + }, 3101 + limit: { 3102 + type: 'integer', 3103 + minimum: 1, 3104 + maximum: 100, 3105 + default: 50, 3106 + }, 3107 + cursor: { 3108 + type: 'string', 3109 + }, 3110 + filter: { 3111 + type: 'string', 3112 + description: 3113 + 'Combinations of post/repost types to include in response.', 3114 + knownValues: [ 3115 + 'posts_with_replies', 3116 + 'posts_no_replies', 3117 + 'posts_with_media', 3118 + 'posts_and_author_threads', 3119 + 'posts_with_video', 3120 + ], 3121 + default: 'posts_with_replies', 3122 + }, 3123 + includePins: { 3124 + type: 'boolean', 3125 + default: false, 3126 + }, 3127 + }, 3128 + }, 3129 + output: { 3130 + encoding: 'application/json', 3131 + schema: { 3132 + type: 'object', 3133 + required: ['feed'], 3134 + properties: { 3135 + cursor: { 3136 + type: 'string', 3137 + }, 3138 + feed: { 3139 + type: 'array', 3140 + items: { 3141 + type: 'union', 3142 + refs: [ 3143 + 'lex:party.whey.app.bsky.feed.defs#feedViewPostRef', 3144 + 'lex:app.bsky.feed.defs#feedViewPost', 3145 + ], 3146 + }, 3147 + }, 3148 + }, 3149 + }, 3150 + }, 3151 + errors: [ 3152 + { 3153 + name: 'BlockedActor', 3154 + }, 3155 + { 3156 + name: 'BlockedByActor', 3157 + }, 3158 + ], 3159 + }, 3160 + }, 3161 + }, 3162 + PartyWheyAppBskyFeedGetLikesPartial: { 3163 + lexicon: 1, 3164 + id: 'party.whey.app.bsky.feed.getLikesPartial', 3165 + defs: { 3166 + main: { 3167 + type: 'query', 3168 + description: 3169 + 'Get like records which reference a subject (by AT-URI and CID).', 3170 + parameters: { 3171 + type: 'params', 3172 + required: ['uri'], 3173 + properties: { 3174 + uri: { 3175 + type: 'string', 3176 + format: 'at-uri', 3177 + description: 'AT-URI of the subject (eg, a post record).', 3178 + }, 3179 + cid: { 3180 + type: 'string', 3181 + format: 'cid', 3182 + description: 3183 + 'CID of the subject record (aka, specific version of record), to filter likes.', 3184 + }, 3185 + limit: { 3186 + type: 'integer', 3187 + minimum: 1, 3188 + maximum: 100, 3189 + default: 50, 3190 + }, 3191 + cursor: { 3192 + type: 'string', 3193 + }, 3194 + }, 3195 + }, 3196 + output: { 3197 + encoding: 'application/json', 3198 + schema: { 3199 + type: 'object', 3200 + required: ['uri', 'likes'], 3201 + properties: { 3202 + uri: { 3203 + type: 'string', 3204 + format: 'at-uri', 3205 + }, 3206 + cid: { 3207 + type: 'string', 3208 + format: 'cid', 3209 + }, 3210 + cursor: { 3211 + type: 'string', 3212 + }, 3213 + likes: { 3214 + type: 'array', 3215 + items: { 3216 + type: 'ref', 3217 + ref: 'lex:party.whey.app.bsky.feed.getLikesPartial#like', 3218 + }, 3219 + }, 3220 + }, 3221 + }, 3222 + }, 3223 + }, 3224 + like: { 3225 + type: 'object', 3226 + required: ['indexedAt', 'createdAt', 'actor'], 3227 + properties: { 3228 + indexedAt: { 3229 + type: 'string', 3230 + format: 'datetime', 3231 + }, 3232 + createdAt: { 3233 + type: 'string', 3234 + format: 'datetime', 3235 + }, 3236 + actor: { 3237 + type: 'ref', 3238 + ref: 'lex:party.whey.app.bsky.actor.defs#profileViewRef', 3239 + }, 3240 + }, 3241 + }, 3242 + }, 3243 + }, 3244 + PartyWheyAppBskyFeedGetListFeedPartial: { 3245 + lexicon: 1, 3246 + id: 'party.whey.app.bsky.feed.getListFeedPartial', 3247 + defs: { 3248 + main: { 3249 + type: 'query', 3250 + description: 3251 + 'Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.', 3252 + parameters: { 3253 + type: 'params', 3254 + required: ['list'], 3255 + properties: { 3256 + list: { 3257 + type: 'string', 3258 + format: 'at-uri', 3259 + description: 'Reference (AT-URI) to the list record.', 3260 + }, 3261 + limit: { 3262 + type: 'integer', 3263 + minimum: 1, 3264 + maximum: 100, 3265 + default: 50, 3266 + }, 3267 + cursor: { 3268 + type: 'string', 3269 + }, 3270 + }, 3271 + }, 3272 + output: { 3273 + encoding: 'application/json', 3274 + schema: { 3275 + type: 'object', 3276 + required: ['feed'], 3277 + properties: { 3278 + cursor: { 3279 + type: 'string', 3280 + }, 3281 + feed: { 3282 + type: 'array', 3283 + items: { 3284 + type: 'ref', 3285 + ref: 'lex:party.whey.app.bsky.feed.defs#feedViewPostRef', 3286 + }, 3287 + }, 3288 + }, 3289 + }, 3290 + }, 3291 + errors: [ 3292 + { 3293 + name: 'UnknownList', 3294 + }, 3295 + ], 3296 + }, 3297 + }, 3298 + }, 3299 + PartyWheyAppBskyFeedGetPostThreadPartial: { 3300 + lexicon: 1, 3301 + id: 'party.whey.app.bsky.feed.getPostThreadPartial', 3302 + defs: { 3303 + main: { 3304 + type: 'query', 3305 + description: 3306 + 'Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.', 3307 + parameters: { 3308 + type: 'params', 3309 + required: ['uri'], 3310 + properties: { 3311 + uri: { 3312 + type: 'string', 3313 + format: 'at-uri', 3314 + description: 'Reference (AT-URI) to post record.', 3315 + }, 3316 + depth: { 3317 + type: 'integer', 3318 + description: 3319 + 'How many levels of reply depth should be included in response.', 3320 + default: 6, 3321 + minimum: 0, 3322 + maximum: 1000, 3323 + }, 3324 + parentHeight: { 3325 + type: 'integer', 3326 + description: 3327 + 'How many levels of parent (and grandparent, etc) post to include.', 3328 + default: 80, 3329 + minimum: 0, 3330 + maximum: 1000, 3331 + }, 3332 + }, 3333 + }, 3334 + output: { 3335 + encoding: 'application/json', 3336 + schema: { 3337 + type: 'object', 3338 + required: ['thread'], 3339 + properties: { 3340 + thread: { 3341 + type: 'union', 3342 + refs: [ 3343 + 'lex:party.whey.app.bsky.feed.defs#threadViewPostRef', 3344 + 'lex:app.bsky.feed.defs#threadViewPost', 3345 + 'lex:app.bsky.feed.defs#notFoundPost', 3346 + 'lex:app.bsky.feed.defs#blockedPost', 3347 + ], 3348 + }, 3349 + threadgate: { 3350 + type: 'ref', 3351 + ref: 'lex:app.bsky.feed.defs#threadgateView', 3352 + }, 3353 + }, 3354 + }, 3355 + }, 3356 + errors: [ 3357 + { 3358 + name: 'NotFound', 3359 + }, 3360 + ], 3361 + }, 3362 + }, 3363 + }, 3364 + PartyWheyAppBskyFeedGetQuotesPartial: { 3365 + lexicon: 1, 3366 + id: 'party.whey.app.bsky.feed.getQuotesPartial', 3367 + defs: { 3368 + main: { 3369 + type: 'query', 3370 + description: 'Get a list of quotes for a given post.', 3371 + parameters: { 3372 + type: 'params', 3373 + required: ['uri'], 3374 + properties: { 3375 + uri: { 3376 + type: 'string', 3377 + format: 'at-uri', 3378 + description: 'Reference (AT-URI) of post record', 3379 + }, 3380 + cid: { 3381 + type: 'string', 3382 + format: 'cid', 3383 + description: 3384 + 'If supplied, filters to quotes of specific version (by CID) of the post record.', 3385 + }, 3386 + limit: { 3387 + type: 'integer', 3388 + minimum: 1, 3389 + maximum: 100, 3390 + default: 50, 3391 + }, 3392 + cursor: { 3393 + type: 'string', 3394 + }, 3395 + }, 3396 + }, 3397 + output: { 3398 + encoding: 'application/json', 3399 + schema: { 3400 + type: 'object', 3401 + required: ['uri', 'posts'], 3402 + properties: { 3403 + uri: { 3404 + type: 'string', 3405 + format: 'at-uri', 3406 + }, 3407 + cid: { 3408 + type: 'string', 3409 + format: 'cid', 3410 + }, 3411 + cursor: { 3412 + type: 'string', 3413 + }, 3414 + posts: { 3415 + type: 'array', 3416 + items: { 3417 + type: 'union', 3418 + refs: [ 3419 + 'lex:party.whey.app.bsky.feed.defs#postViewRef', 3420 + 'lex:app.bsky.feed.defs#postView', 3421 + ], 3422 + }, 3423 + }, 3424 + }, 3425 + }, 3426 + }, 3427 + }, 3428 + }, 3429 + }, 3430 + PartyWheyAppBskyFeedGetRepostedByPartial: { 3431 + lexicon: 1, 3432 + id: 'party.whey.app.bsky.feed.getRepostedByPartial', 3433 + defs: { 3434 + main: { 3435 + type: 'query', 3436 + description: 'Get a list of reposts for a given post.', 3437 + parameters: { 3438 + type: 'params', 3439 + required: ['uri'], 3440 + properties: { 3441 + uri: { 3442 + type: 'string', 3443 + format: 'at-uri', 3444 + description: 'Reference (AT-URI) of post record', 3445 + }, 3446 + cid: { 3447 + type: 'string', 3448 + format: 'cid', 3449 + description: 3450 + 'If supplied, filters to reposts of specific version (by CID) of the post record.', 3451 + }, 3452 + limit: { 3453 + type: 'integer', 3454 + minimum: 1, 3455 + maximum: 100, 3456 + default: 50, 3457 + }, 3458 + cursor: { 3459 + type: 'string', 3460 + }, 3461 + }, 3462 + }, 3463 + output: { 3464 + encoding: 'application/json', 3465 + schema: { 3466 + type: 'object', 3467 + required: ['uri', 'repostedBy'], 3468 + properties: { 3469 + uri: { 3470 + type: 'string', 3471 + format: 'at-uri', 3472 + }, 3473 + cid: { 3474 + type: 'string', 3475 + format: 'cid', 3476 + }, 3477 + cursor: { 3478 + type: 'string', 3479 + }, 3480 + repostedBy: { 3481 + type: 'array', 3482 + items: { 3483 + type: 'union', 3484 + refs: [ 3485 + 'lex:party.whey.app.bsky.actor.defs#profileViewRef', 3486 + 'lex:app.bsky.actor.defs#profileView', 3487 + ], 3488 + }, 3489 + }, 3490 + }, 3491 + }, 3492 + }, 3493 + }, 3494 + }, 3495 + }, 3496 + } as const satisfies Record<string, LexiconDoc> 3497 + export const schemas = Object.values(schemaDict) satisfies LexiconDoc[] 3498 + export const lexicons: Lexicons = new Lexicons(schemas) 3499 + 3500 + export function validate<T extends { $type: string }>( 3501 + v: unknown, 3502 + id: string, 3503 + hash: string, 3504 + requiredType: true, 3505 + ): ValidationResult<T> 3506 + export function validate<T extends { $type?: string }>( 3507 + v: unknown, 3508 + id: string, 3509 + hash: string, 3510 + requiredType?: false, 3511 + ): ValidationResult<T> 3512 + export function validate( 3513 + v: unknown, 3514 + id: string, 3515 + hash: string, 3516 + requiredType?: boolean, 3517 + ): ValidationResult { 3518 + return (requiredType ? is$typed : maybe$typed)(v, id, hash) 3519 + ? lexicons.validate(`${id}#${hash}`, v) 3520 + : { 3521 + success: false, 3522 + error: new ValidationError( 3523 + `Must be an object with "${hash === 'main' ? id : `${id}#${hash}`}" $type property`, 3524 + ), 3525 + } 3526 + } 3527 + 3528 + export const ids = { 3529 + AppBskyActorDefs: 'app.bsky.actor.defs', 3530 + AppBskyActorGetProfile: 'app.bsky.actor.getProfile', 3531 + AppBskyActorGetProfiles: 'app.bsky.actor.getProfiles', 3532 + AppBskyEmbedDefs: 'app.bsky.embed.defs', 3533 + AppBskyEmbedExternal: 'app.bsky.embed.external', 3534 + AppBskyEmbedImages: 'app.bsky.embed.images', 3535 + AppBskyEmbedRecord: 'app.bsky.embed.record', 3536 + AppBskyEmbedRecordWithMedia: 'app.bsky.embed.recordWithMedia', 3537 + AppBskyEmbedVideo: 'app.bsky.embed.video', 3538 + AppBskyFeedDefs: 'app.bsky.feed.defs', 3539 + AppBskyFeedGetActorFeeds: 'app.bsky.feed.getActorFeeds', 3540 + AppBskyFeedGetFeedGenerator: 'app.bsky.feed.getFeedGenerator', 3541 + AppBskyFeedGetFeedGenerators: 'app.bsky.feed.getFeedGenerators', 3542 + AppBskyFeedGetPosts: 'app.bsky.feed.getPosts', 3543 + AppBskyFeedPostgate: 'app.bsky.feed.postgate', 3544 + AppBskyFeedThreadgate: 'app.bsky.feed.threadgate', 3545 + AppBskyGraphDefs: 'app.bsky.graph.defs', 3546 + AppBskyNotificationDefs: 'app.bsky.notification.defs', 3547 + AppBskyRichtextFacet: 'app.bsky.richtext.facet', 3548 + ComAtprotoLabelDefs: 'com.atproto.label.defs', 3549 + ComAtprotoRepoStrongRef: 'com.atproto.repo.strongRef', 3550 + PartyWheyAppBskyActorDefs: 'party.whey.app.bsky.actor.defs', 3551 + PartyWheyAppBskyFeedDefs: 'party.whey.app.bsky.feed.defs', 3552 + PartyWheyAppBskyFeedGetActorLikesPartial: 3553 + 'party.whey.app.bsky.feed.getActorLikesPartial', 3554 + PartyWheyAppBskyFeedGetAuthorFeedPartial: 3555 + 'party.whey.app.bsky.feed.getAuthorFeedPartial', 3556 + PartyWheyAppBskyFeedGetLikesPartial: 3557 + 'party.whey.app.bsky.feed.getLikesPartial', 3558 + PartyWheyAppBskyFeedGetListFeedPartial: 3559 + 'party.whey.app.bsky.feed.getListFeedPartial', 3560 + PartyWheyAppBskyFeedGetPostThreadPartial: 3561 + 'party.whey.app.bsky.feed.getPostThreadPartial', 3562 + PartyWheyAppBskyFeedGetQuotesPartial: 3563 + 'party.whey.app.bsky.feed.getQuotesPartial', 3564 + PartyWheyAppBskyFeedGetRepostedByPartial: 3565 + 'party.whey.app.bsky.feed.getRepostedByPartial', 3566 + } as const
+643
indexclient/types/app/bsky/actor/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + import type * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs.js' 13 + import type * as AppBskyGraphDefs from '../graph/defs.js' 14 + import type * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef.js' 15 + import type * as AppBskyNotificationDefs from '../notification/defs.js' 16 + import type * as AppBskyFeedThreadgate from '../feed/threadgate.js' 17 + import type * as AppBskyFeedPostgate from '../feed/postgate.js' 18 + import type * as AppBskyEmbedExternal from '../embed/external.js' 19 + 20 + const is$typed = _is$typed, 21 + validate = _validate 22 + const id = 'app.bsky.actor.defs' 23 + 24 + export interface ProfileViewBasic { 25 + $type?: 'app.bsky.actor.defs#profileViewBasic' 26 + did: string 27 + handle: string 28 + displayName?: string 29 + avatar?: string 30 + associated?: ProfileAssociated 31 + viewer?: ViewerState 32 + labels?: ComAtprotoLabelDefs.Label[] 33 + createdAt?: string 34 + verification?: VerificationState 35 + status?: StatusView 36 + } 37 + 38 + const hashProfileViewBasic = 'profileViewBasic' 39 + 40 + export function isProfileViewBasic<V>(v: V) { 41 + return is$typed(v, id, hashProfileViewBasic) 42 + } 43 + 44 + export function validateProfileViewBasic<V>(v: V) { 45 + return validate<ProfileViewBasic & V>(v, id, hashProfileViewBasic) 46 + } 47 + 48 + export interface ProfileView { 49 + $type?: 'app.bsky.actor.defs#profileView' 50 + did: string 51 + handle: string 52 + displayName?: string 53 + description?: string 54 + avatar?: string 55 + associated?: ProfileAssociated 56 + indexedAt?: string 57 + createdAt?: string 58 + viewer?: ViewerState 59 + labels?: ComAtprotoLabelDefs.Label[] 60 + verification?: VerificationState 61 + status?: StatusView 62 + } 63 + 64 + const hashProfileView = 'profileView' 65 + 66 + export function isProfileView<V>(v: V) { 67 + return is$typed(v, id, hashProfileView) 68 + } 69 + 70 + export function validateProfileView<V>(v: V) { 71 + return validate<ProfileView & V>(v, id, hashProfileView) 72 + } 73 + 74 + export interface ProfileViewDetailed { 75 + $type?: 'app.bsky.actor.defs#profileViewDetailed' 76 + did: string 77 + handle: string 78 + displayName?: string 79 + description?: string 80 + avatar?: string 81 + banner?: string 82 + followersCount?: number 83 + followsCount?: number 84 + postsCount?: number 85 + associated?: ProfileAssociated 86 + joinedViaStarterPack?: AppBskyGraphDefs.StarterPackViewBasic 87 + indexedAt?: string 88 + createdAt?: string 89 + viewer?: ViewerState 90 + labels?: ComAtprotoLabelDefs.Label[] 91 + pinnedPost?: ComAtprotoRepoStrongRef.Main 92 + verification?: VerificationState 93 + status?: StatusView 94 + } 95 + 96 + const hashProfileViewDetailed = 'profileViewDetailed' 97 + 98 + export function isProfileViewDetailed<V>(v: V) { 99 + return is$typed(v, id, hashProfileViewDetailed) 100 + } 101 + 102 + export function validateProfileViewDetailed<V>(v: V) { 103 + return validate<ProfileViewDetailed & V>(v, id, hashProfileViewDetailed) 104 + } 105 + 106 + export interface ProfileAssociated { 107 + $type?: 'app.bsky.actor.defs#profileAssociated' 108 + lists?: number 109 + feedgens?: number 110 + starterPacks?: number 111 + labeler?: boolean 112 + chat?: ProfileAssociatedChat 113 + activitySubscription?: ProfileAssociatedActivitySubscription 114 + } 115 + 116 + const hashProfileAssociated = 'profileAssociated' 117 + 118 + export function isProfileAssociated<V>(v: V) { 119 + return is$typed(v, id, hashProfileAssociated) 120 + } 121 + 122 + export function validateProfileAssociated<V>(v: V) { 123 + return validate<ProfileAssociated & V>(v, id, hashProfileAssociated) 124 + } 125 + 126 + export interface ProfileAssociatedChat { 127 + $type?: 'app.bsky.actor.defs#profileAssociatedChat' 128 + allowIncoming: 'all' | 'none' | 'following' | (string & {}) 129 + } 130 + 131 + const hashProfileAssociatedChat = 'profileAssociatedChat' 132 + 133 + export function isProfileAssociatedChat<V>(v: V) { 134 + return is$typed(v, id, hashProfileAssociatedChat) 135 + } 136 + 137 + export function validateProfileAssociatedChat<V>(v: V) { 138 + return validate<ProfileAssociatedChat & V>(v, id, hashProfileAssociatedChat) 139 + } 140 + 141 + export interface ProfileAssociatedActivitySubscription { 142 + $type?: 'app.bsky.actor.defs#profileAssociatedActivitySubscription' 143 + allowSubscriptions: 'followers' | 'mutuals' | 'none' | (string & {}) 144 + } 145 + 146 + const hashProfileAssociatedActivitySubscription = 147 + 'profileAssociatedActivitySubscription' 148 + 149 + export function isProfileAssociatedActivitySubscription<V>(v: V) { 150 + return is$typed(v, id, hashProfileAssociatedActivitySubscription) 151 + } 152 + 153 + export function validateProfileAssociatedActivitySubscription<V>(v: V) { 154 + return validate<ProfileAssociatedActivitySubscription & V>( 155 + v, 156 + id, 157 + hashProfileAssociatedActivitySubscription, 158 + ) 159 + } 160 + 161 + /** Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests. */ 162 + export interface ViewerState { 163 + $type?: 'app.bsky.actor.defs#viewerState' 164 + muted?: boolean 165 + mutedByList?: AppBskyGraphDefs.ListViewBasic 166 + blockedBy?: boolean 167 + blocking?: string 168 + blockingByList?: AppBskyGraphDefs.ListViewBasic 169 + following?: string 170 + followedBy?: string 171 + knownFollowers?: KnownFollowers 172 + activitySubscription?: AppBskyNotificationDefs.ActivitySubscription 173 + } 174 + 175 + const hashViewerState = 'viewerState' 176 + 177 + export function isViewerState<V>(v: V) { 178 + return is$typed(v, id, hashViewerState) 179 + } 180 + 181 + export function validateViewerState<V>(v: V) { 182 + return validate<ViewerState & V>(v, id, hashViewerState) 183 + } 184 + 185 + /** The subject's followers whom you also follow */ 186 + export interface KnownFollowers { 187 + $type?: 'app.bsky.actor.defs#knownFollowers' 188 + count: number 189 + followers: ProfileViewBasic[] 190 + } 191 + 192 + const hashKnownFollowers = 'knownFollowers' 193 + 194 + export function isKnownFollowers<V>(v: V) { 195 + return is$typed(v, id, hashKnownFollowers) 196 + } 197 + 198 + export function validateKnownFollowers<V>(v: V) { 199 + return validate<KnownFollowers & V>(v, id, hashKnownFollowers) 200 + } 201 + 202 + /** Represents the verification information about the user this object is attached to. */ 203 + export interface VerificationState { 204 + $type?: 'app.bsky.actor.defs#verificationState' 205 + /** All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included. */ 206 + verifications: VerificationView[] 207 + /** The user's status as a verified account. */ 208 + verifiedStatus: 'valid' | 'invalid' | 'none' | (string & {}) 209 + /** The user's status as a trusted verifier. */ 210 + trustedVerifierStatus: 'valid' | 'invalid' | 'none' | (string & {}) 211 + } 212 + 213 + const hashVerificationState = 'verificationState' 214 + 215 + export function isVerificationState<V>(v: V) { 216 + return is$typed(v, id, hashVerificationState) 217 + } 218 + 219 + export function validateVerificationState<V>(v: V) { 220 + return validate<VerificationState & V>(v, id, hashVerificationState) 221 + } 222 + 223 + /** An individual verification for an associated subject. */ 224 + export interface VerificationView { 225 + $type?: 'app.bsky.actor.defs#verificationView' 226 + /** The user who issued this verification. */ 227 + issuer: string 228 + /** The AT-URI of the verification record. */ 229 + uri: string 230 + /** True if the verification passes validation, otherwise false. */ 231 + isValid: boolean 232 + /** Timestamp when the verification was created. */ 233 + createdAt: string 234 + } 235 + 236 + const hashVerificationView = 'verificationView' 237 + 238 + export function isVerificationView<V>(v: V) { 239 + return is$typed(v, id, hashVerificationView) 240 + } 241 + 242 + export function validateVerificationView<V>(v: V) { 243 + return validate<VerificationView & V>(v, id, hashVerificationView) 244 + } 245 + 246 + export type Preferences = ( 247 + | $Typed<AdultContentPref> 248 + | $Typed<ContentLabelPref> 249 + | $Typed<SavedFeedsPref> 250 + | $Typed<SavedFeedsPrefV2> 251 + | $Typed<PersonalDetailsPref> 252 + | $Typed<FeedViewPref> 253 + | $Typed<ThreadViewPref> 254 + | $Typed<InterestsPref> 255 + | $Typed<MutedWordsPref> 256 + | $Typed<HiddenPostsPref> 257 + | $Typed<BskyAppStatePref> 258 + | $Typed<LabelersPref> 259 + | $Typed<PostInteractionSettingsPref> 260 + | $Typed<VerificationPrefs> 261 + | { $type: string } 262 + )[] 263 + 264 + export interface AdultContentPref { 265 + $type?: 'app.bsky.actor.defs#adultContentPref' 266 + enabled: boolean 267 + } 268 + 269 + const hashAdultContentPref = 'adultContentPref' 270 + 271 + export function isAdultContentPref<V>(v: V) { 272 + return is$typed(v, id, hashAdultContentPref) 273 + } 274 + 275 + export function validateAdultContentPref<V>(v: V) { 276 + return validate<AdultContentPref & V>(v, id, hashAdultContentPref) 277 + } 278 + 279 + export interface ContentLabelPref { 280 + $type?: 'app.bsky.actor.defs#contentLabelPref' 281 + /** Which labeler does this preference apply to? If undefined, applies globally. */ 282 + labelerDid?: string 283 + label: string 284 + visibility: 'ignore' | 'show' | 'warn' | 'hide' | (string & {}) 285 + } 286 + 287 + const hashContentLabelPref = 'contentLabelPref' 288 + 289 + export function isContentLabelPref<V>(v: V) { 290 + return is$typed(v, id, hashContentLabelPref) 291 + } 292 + 293 + export function validateContentLabelPref<V>(v: V) { 294 + return validate<ContentLabelPref & V>(v, id, hashContentLabelPref) 295 + } 296 + 297 + export interface SavedFeed { 298 + $type?: 'app.bsky.actor.defs#savedFeed' 299 + id: string 300 + type: 'feed' | 'list' | 'timeline' | (string & {}) 301 + value: string 302 + pinned: boolean 303 + } 304 + 305 + const hashSavedFeed = 'savedFeed' 306 + 307 + export function isSavedFeed<V>(v: V) { 308 + return is$typed(v, id, hashSavedFeed) 309 + } 310 + 311 + export function validateSavedFeed<V>(v: V) { 312 + return validate<SavedFeed & V>(v, id, hashSavedFeed) 313 + } 314 + 315 + export interface SavedFeedsPrefV2 { 316 + $type?: 'app.bsky.actor.defs#savedFeedsPrefV2' 317 + items: SavedFeed[] 318 + } 319 + 320 + const hashSavedFeedsPrefV2 = 'savedFeedsPrefV2' 321 + 322 + export function isSavedFeedsPrefV2<V>(v: V) { 323 + return is$typed(v, id, hashSavedFeedsPrefV2) 324 + } 325 + 326 + export function validateSavedFeedsPrefV2<V>(v: V) { 327 + return validate<SavedFeedsPrefV2 & V>(v, id, hashSavedFeedsPrefV2) 328 + } 329 + 330 + export interface SavedFeedsPref { 331 + $type?: 'app.bsky.actor.defs#savedFeedsPref' 332 + pinned: string[] 333 + saved: string[] 334 + timelineIndex?: number 335 + } 336 + 337 + const hashSavedFeedsPref = 'savedFeedsPref' 338 + 339 + export function isSavedFeedsPref<V>(v: V) { 340 + return is$typed(v, id, hashSavedFeedsPref) 341 + } 342 + 343 + export function validateSavedFeedsPref<V>(v: V) { 344 + return validate<SavedFeedsPref & V>(v, id, hashSavedFeedsPref) 345 + } 346 + 347 + export interface PersonalDetailsPref { 348 + $type?: 'app.bsky.actor.defs#personalDetailsPref' 349 + /** The birth date of account owner. */ 350 + birthDate?: string 351 + } 352 + 353 + const hashPersonalDetailsPref = 'personalDetailsPref' 354 + 355 + export function isPersonalDetailsPref<V>(v: V) { 356 + return is$typed(v, id, hashPersonalDetailsPref) 357 + } 358 + 359 + export function validatePersonalDetailsPref<V>(v: V) { 360 + return validate<PersonalDetailsPref & V>(v, id, hashPersonalDetailsPref) 361 + } 362 + 363 + export interface FeedViewPref { 364 + $type?: 'app.bsky.actor.defs#feedViewPref' 365 + /** The URI of the feed, or an identifier which describes the feed. */ 366 + feed: string 367 + /** Hide replies in the feed. */ 368 + hideReplies?: boolean 369 + /** Hide replies in the feed if they are not by followed users. */ 370 + hideRepliesByUnfollowed: boolean 371 + /** Hide replies in the feed if they do not have this number of likes. */ 372 + hideRepliesByLikeCount?: number 373 + /** Hide reposts in the feed. */ 374 + hideReposts?: boolean 375 + /** Hide quote posts in the feed. */ 376 + hideQuotePosts?: boolean 377 + } 378 + 379 + const hashFeedViewPref = 'feedViewPref' 380 + 381 + export function isFeedViewPref<V>(v: V) { 382 + return is$typed(v, id, hashFeedViewPref) 383 + } 384 + 385 + export function validateFeedViewPref<V>(v: V) { 386 + return validate<FeedViewPref & V>(v, id, hashFeedViewPref) 387 + } 388 + 389 + export interface ThreadViewPref { 390 + $type?: 'app.bsky.actor.defs#threadViewPref' 391 + /** Sorting mode for threads. */ 392 + sort?: 393 + | 'oldest' 394 + | 'newest' 395 + | 'most-likes' 396 + | 'random' 397 + | 'hotness' 398 + | (string & {}) 399 + /** Show followed users at the top of all replies. */ 400 + prioritizeFollowedUsers?: boolean 401 + } 402 + 403 + const hashThreadViewPref = 'threadViewPref' 404 + 405 + export function isThreadViewPref<V>(v: V) { 406 + return is$typed(v, id, hashThreadViewPref) 407 + } 408 + 409 + export function validateThreadViewPref<V>(v: V) { 410 + return validate<ThreadViewPref & V>(v, id, hashThreadViewPref) 411 + } 412 + 413 + export interface InterestsPref { 414 + $type?: 'app.bsky.actor.defs#interestsPref' 415 + /** A list of tags which describe the account owner's interests gathered during onboarding. */ 416 + tags: string[] 417 + } 418 + 419 + const hashInterestsPref = 'interestsPref' 420 + 421 + export function isInterestsPref<V>(v: V) { 422 + return is$typed(v, id, hashInterestsPref) 423 + } 424 + 425 + export function validateInterestsPref<V>(v: V) { 426 + return validate<InterestsPref & V>(v, id, hashInterestsPref) 427 + } 428 + 429 + export type MutedWordTarget = 'content' | 'tag' | (string & {}) 430 + 431 + /** A word that the account owner has muted. */ 432 + export interface MutedWord { 433 + $type?: 'app.bsky.actor.defs#mutedWord' 434 + id?: string 435 + /** The muted word itself. */ 436 + value: string 437 + /** The intended targets of the muted word. */ 438 + targets: MutedWordTarget[] 439 + /** Groups of users to apply the muted word to. If undefined, applies to all users. */ 440 + actorTarget: 'all' | 'exclude-following' | (string & {}) 441 + /** The date and time at which the muted word will expire and no longer be applied. */ 442 + expiresAt?: string 443 + } 444 + 445 + const hashMutedWord = 'mutedWord' 446 + 447 + export function isMutedWord<V>(v: V) { 448 + return is$typed(v, id, hashMutedWord) 449 + } 450 + 451 + export function validateMutedWord<V>(v: V) { 452 + return validate<MutedWord & V>(v, id, hashMutedWord) 453 + } 454 + 455 + export interface MutedWordsPref { 456 + $type?: 'app.bsky.actor.defs#mutedWordsPref' 457 + /** A list of words the account owner has muted. */ 458 + items: MutedWord[] 459 + } 460 + 461 + const hashMutedWordsPref = 'mutedWordsPref' 462 + 463 + export function isMutedWordsPref<V>(v: V) { 464 + return is$typed(v, id, hashMutedWordsPref) 465 + } 466 + 467 + export function validateMutedWordsPref<V>(v: V) { 468 + return validate<MutedWordsPref & V>(v, id, hashMutedWordsPref) 469 + } 470 + 471 + export interface HiddenPostsPref { 472 + $type?: 'app.bsky.actor.defs#hiddenPostsPref' 473 + /** A list of URIs of posts the account owner has hidden. */ 474 + items: string[] 475 + } 476 + 477 + const hashHiddenPostsPref = 'hiddenPostsPref' 478 + 479 + export function isHiddenPostsPref<V>(v: V) { 480 + return is$typed(v, id, hashHiddenPostsPref) 481 + } 482 + 483 + export function validateHiddenPostsPref<V>(v: V) { 484 + return validate<HiddenPostsPref & V>(v, id, hashHiddenPostsPref) 485 + } 486 + 487 + export interface LabelersPref { 488 + $type?: 'app.bsky.actor.defs#labelersPref' 489 + labelers: LabelerPrefItem[] 490 + } 491 + 492 + const hashLabelersPref = 'labelersPref' 493 + 494 + export function isLabelersPref<V>(v: V) { 495 + return is$typed(v, id, hashLabelersPref) 496 + } 497 + 498 + export function validateLabelersPref<V>(v: V) { 499 + return validate<LabelersPref & V>(v, id, hashLabelersPref) 500 + } 501 + 502 + export interface LabelerPrefItem { 503 + $type?: 'app.bsky.actor.defs#labelerPrefItem' 504 + did: string 505 + } 506 + 507 + const hashLabelerPrefItem = 'labelerPrefItem' 508 + 509 + export function isLabelerPrefItem<V>(v: V) { 510 + return is$typed(v, id, hashLabelerPrefItem) 511 + } 512 + 513 + export function validateLabelerPrefItem<V>(v: V) { 514 + return validate<LabelerPrefItem & V>(v, id, hashLabelerPrefItem) 515 + } 516 + 517 + /** A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this. */ 518 + export interface BskyAppStatePref { 519 + $type?: 'app.bsky.actor.defs#bskyAppStatePref' 520 + activeProgressGuide?: BskyAppProgressGuide 521 + /** An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user. */ 522 + queuedNudges?: string[] 523 + /** Storage for NUXs the user has encountered. */ 524 + nuxs?: Nux[] 525 + } 526 + 527 + const hashBskyAppStatePref = 'bskyAppStatePref' 528 + 529 + export function isBskyAppStatePref<V>(v: V) { 530 + return is$typed(v, id, hashBskyAppStatePref) 531 + } 532 + 533 + export function validateBskyAppStatePref<V>(v: V) { 534 + return validate<BskyAppStatePref & V>(v, id, hashBskyAppStatePref) 535 + } 536 + 537 + /** If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress. */ 538 + export interface BskyAppProgressGuide { 539 + $type?: 'app.bsky.actor.defs#bskyAppProgressGuide' 540 + guide: string 541 + } 542 + 543 + const hashBskyAppProgressGuide = 'bskyAppProgressGuide' 544 + 545 + export function isBskyAppProgressGuide<V>(v: V) { 546 + return is$typed(v, id, hashBskyAppProgressGuide) 547 + } 548 + 549 + export function validateBskyAppProgressGuide<V>(v: V) { 550 + return validate<BskyAppProgressGuide & V>(v, id, hashBskyAppProgressGuide) 551 + } 552 + 553 + /** A new user experiences (NUX) storage object */ 554 + export interface Nux { 555 + $type?: 'app.bsky.actor.defs#nux' 556 + id: string 557 + completed: boolean 558 + /** Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters. */ 559 + data?: string 560 + /** The date and time at which the NUX will expire and should be considered completed. */ 561 + expiresAt?: string 562 + } 563 + 564 + const hashNux = 'nux' 565 + 566 + export function isNux<V>(v: V) { 567 + return is$typed(v, id, hashNux) 568 + } 569 + 570 + export function validateNux<V>(v: V) { 571 + return validate<Nux & V>(v, id, hashNux) 572 + } 573 + 574 + /** Preferences for how verified accounts appear in the app. */ 575 + export interface VerificationPrefs { 576 + $type?: 'app.bsky.actor.defs#verificationPrefs' 577 + /** Hide the blue check badges for verified accounts and trusted verifiers. */ 578 + hideBadges: boolean 579 + } 580 + 581 + const hashVerificationPrefs = 'verificationPrefs' 582 + 583 + export function isVerificationPrefs<V>(v: V) { 584 + return is$typed(v, id, hashVerificationPrefs) 585 + } 586 + 587 + export function validateVerificationPrefs<V>(v: V) { 588 + return validate<VerificationPrefs & V>(v, id, hashVerificationPrefs) 589 + } 590 + 591 + /** Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly. */ 592 + export interface PostInteractionSettingsPref { 593 + $type?: 'app.bsky.actor.defs#postInteractionSettingsPref' 594 + /** Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply. */ 595 + threadgateAllowRules?: ( 596 + | $Typed<AppBskyFeedThreadgate.MentionRule> 597 + | $Typed<AppBskyFeedThreadgate.FollowerRule> 598 + | $Typed<AppBskyFeedThreadgate.FollowingRule> 599 + | $Typed<AppBskyFeedThreadgate.ListRule> 600 + | { $type: string } 601 + )[] 602 + /** Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed. */ 603 + postgateEmbeddingRules?: ( 604 + | $Typed<AppBskyFeedPostgate.DisableRule> 605 + | { $type: string } 606 + )[] 607 + } 608 + 609 + const hashPostInteractionSettingsPref = 'postInteractionSettingsPref' 610 + 611 + export function isPostInteractionSettingsPref<V>(v: V) { 612 + return is$typed(v, id, hashPostInteractionSettingsPref) 613 + } 614 + 615 + export function validatePostInteractionSettingsPref<V>(v: V) { 616 + return validate<PostInteractionSettingsPref & V>( 617 + v, 618 + id, 619 + hashPostInteractionSettingsPref, 620 + ) 621 + } 622 + 623 + export interface StatusView { 624 + $type?: 'app.bsky.actor.defs#statusView' 625 + /** The status for the account. */ 626 + status: 'app.bsky.actor.status#live' | (string & {}) 627 + record: { [_ in string]: unknown } 628 + embed?: $Typed<AppBskyEmbedExternal.View> | { $type: string } 629 + /** The date when this status will expire. The application might choose to no longer return the status after expiration. */ 630 + expiresAt?: string 631 + /** True if the status is not expired, false if it is expired. Only present if expiration was set. */ 632 + isActive?: boolean 633 + } 634 + 635 + const hashStatusView = 'statusView' 636 + 637 + export function isStatusView<V>(v: V) { 638 + return is$typed(v, id, hashStatusView) 639 + } 640 + 641 + export function validateStatusView<V>(v: V) { 642 + return validate<StatusView & V>(v, id, hashStatusView) 643 + }
+39
indexclient/types/app/bsky/actor/getProfile.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { HeadersMap, XRPCError } from '@atproto/xrpc' 5 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { CID } from 'multiformats/cid' 7 + import { validate as _validate } from '../../../../lexicons' 8 + import { 9 + type $Typed, 10 + is$typed as _is$typed, 11 + type OmitKey, 12 + } from '../../../../util' 13 + import type * as AppBskyActorDefs from './defs.js' 14 + 15 + const is$typed = _is$typed, 16 + validate = _validate 17 + const id = 'app.bsky.actor.getProfile' 18 + 19 + export type QueryParams = { 20 + /** Handle or DID of account to fetch profile of. */ 21 + actor: string 22 + } 23 + export type InputSchema = undefined 24 + export type OutputSchema = AppBskyActorDefs.ProfileViewDetailed 25 + 26 + export interface CallOptions { 27 + signal?: AbortSignal 28 + headers?: HeadersMap 29 + } 30 + 31 + export interface Response { 32 + success: boolean 33 + headers: HeadersMap 34 + data: OutputSchema 35 + } 36 + 37 + export function toKnownErr(e: any) { 38 + return e 39 + }
+41
indexclient/types/app/bsky/actor/getProfiles.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { HeadersMap, XRPCError } from '@atproto/xrpc' 5 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { CID } from 'multiformats/cid' 7 + import { validate as _validate } from '../../../../lexicons' 8 + import { 9 + type $Typed, 10 + is$typed as _is$typed, 11 + type OmitKey, 12 + } from '../../../../util' 13 + import type * as AppBskyActorDefs from './defs.js' 14 + 15 + const is$typed = _is$typed, 16 + validate = _validate 17 + const id = 'app.bsky.actor.getProfiles' 18 + 19 + export type QueryParams = { 20 + actors: string[] 21 + } 22 + export type InputSchema = undefined 23 + 24 + export interface OutputSchema { 25 + profiles: AppBskyActorDefs.ProfileViewDetailed[] 26 + } 27 + 28 + export interface CallOptions { 29 + signal?: AbortSignal 30 + headers?: HeadersMap 31 + } 32 + 33 + export interface Response { 34 + success: boolean 35 + headers: HeadersMap 36 + data: OutputSchema 37 + } 38 + 39 + export function toKnownErr(e: any) { 40 + return e 41 + }
+32
indexclient/types/app/bsky/embed/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'app.bsky.embed.defs' 16 + 17 + /** width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit. */ 18 + export interface AspectRatio { 19 + $type?: 'app.bsky.embed.defs#aspectRatio' 20 + width: number 21 + height: number 22 + } 23 + 24 + const hashAspectRatio = 'aspectRatio' 25 + 26 + export function isAspectRatio<V>(v: V) { 27 + return is$typed(v, id, hashAspectRatio) 28 + } 29 + 30 + export function validateAspectRatio<V>(v: V) { 31 + return validate<AspectRatio & V>(v, id, hashAspectRatio) 32 + }
+82
indexclient/types/app/bsky/embed/external.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'app.bsky.embed.external' 16 + 17 + /** A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post). */ 18 + export interface Main { 19 + $type?: 'app.bsky.embed.external' 20 + external: External 21 + } 22 + 23 + const hashMain = 'main' 24 + 25 + export function isMain<V>(v: V) { 26 + return is$typed(v, id, hashMain) 27 + } 28 + 29 + export function validateMain<V>(v: V) { 30 + return validate<Main & V>(v, id, hashMain) 31 + } 32 + 33 + export interface External { 34 + $type?: 'app.bsky.embed.external#external' 35 + uri: string 36 + title: string 37 + description: string 38 + thumb?: BlobRef 39 + } 40 + 41 + const hashExternal = 'external' 42 + 43 + export function isExternal<V>(v: V) { 44 + return is$typed(v, id, hashExternal) 45 + } 46 + 47 + export function validateExternal<V>(v: V) { 48 + return validate<External & V>(v, id, hashExternal) 49 + } 50 + 51 + export interface View { 52 + $type?: 'app.bsky.embed.external#view' 53 + external: ViewExternal 54 + } 55 + 56 + const hashView = 'view' 57 + 58 + export function isView<V>(v: V) { 59 + return is$typed(v, id, hashView) 60 + } 61 + 62 + export function validateView<V>(v: V) { 63 + return validate<View & V>(v, id, hashView) 64 + } 65 + 66 + export interface ViewExternal { 67 + $type?: 'app.bsky.embed.external#viewExternal' 68 + uri: string 69 + title: string 70 + description: string 71 + thumb?: string 72 + } 73 + 74 + const hashViewExternal = 'viewExternal' 75 + 76 + export function isViewExternal<V>(v: V) { 77 + return is$typed(v, id, hashViewExternal) 78 + } 79 + 80 + export function validateViewExternal<V>(v: V) { 81 + return validate<ViewExternal & V>(v, id, hashViewExternal) 82 + }
+85
indexclient/types/app/bsky/embed/images.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + import type * as AppBskyEmbedDefs from './defs.js' 13 + 14 + const is$typed = _is$typed, 15 + validate = _validate 16 + const id = 'app.bsky.embed.images' 17 + 18 + export interface Main { 19 + $type?: 'app.bsky.embed.images' 20 + images: Image[] 21 + } 22 + 23 + const hashMain = 'main' 24 + 25 + export function isMain<V>(v: V) { 26 + return is$typed(v, id, hashMain) 27 + } 28 + 29 + export function validateMain<V>(v: V) { 30 + return validate<Main & V>(v, id, hashMain) 31 + } 32 + 33 + export interface Image { 34 + $type?: 'app.bsky.embed.images#image' 35 + image: BlobRef 36 + /** Alt text description of the image, for accessibility. */ 37 + alt: string 38 + aspectRatio?: AppBskyEmbedDefs.AspectRatio 39 + } 40 + 41 + const hashImage = 'image' 42 + 43 + export function isImage<V>(v: V) { 44 + return is$typed(v, id, hashImage) 45 + } 46 + 47 + export function validateImage<V>(v: V) { 48 + return validate<Image & V>(v, id, hashImage) 49 + } 50 + 51 + export interface View { 52 + $type?: 'app.bsky.embed.images#view' 53 + images: ViewImage[] 54 + } 55 + 56 + const hashView = 'view' 57 + 58 + export function isView<V>(v: V) { 59 + return is$typed(v, id, hashView) 60 + } 61 + 62 + export function validateView<V>(v: V) { 63 + return validate<View & V>(v, id, hashView) 64 + } 65 + 66 + export interface ViewImage { 67 + $type?: 'app.bsky.embed.images#viewImage' 68 + /** Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View. */ 69 + thumb: string 70 + /** 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. */ 71 + fullsize: string 72 + /** Alt text description of the image, for accessibility. */ 73 + alt: string 74 + aspectRatio?: AppBskyEmbedDefs.AspectRatio 75 + } 76 + 77 + const hashViewImage = 'viewImage' 78 + 79 + export function isViewImage<V>(v: V) { 80 + return is$typed(v, id, hashViewImage) 81 + } 82 + 83 + export function validateViewImage<V>(v: V) { 84 + return validate<ViewImage & V>(v, id, hashViewImage) 85 + }
+146
indexclient/types/app/bsky/embed/record.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + import type * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef.js' 13 + import type * as AppBskyFeedDefs from '../feed/defs.js' 14 + import type * as AppBskyGraphDefs from '../graph/defs.js' 15 + import type * as AppBskyLabelerDefs from '../labeler/defs.js' 16 + import type * as AppBskyActorDefs from '../actor/defs.js' 17 + import type * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs.js' 18 + import type * as AppBskyEmbedImages from './images.js' 19 + import type * as AppBskyEmbedVideo from './video.js' 20 + import type * as AppBskyEmbedExternal from './external.js' 21 + import type * as AppBskyEmbedRecordWithMedia from './recordWithMedia.js' 22 + 23 + const is$typed = _is$typed, 24 + validate = _validate 25 + const id = 'app.bsky.embed.record' 26 + 27 + export interface Main { 28 + $type?: 'app.bsky.embed.record' 29 + record: ComAtprotoRepoStrongRef.Main 30 + } 31 + 32 + const hashMain = 'main' 33 + 34 + export function isMain<V>(v: V) { 35 + return is$typed(v, id, hashMain) 36 + } 37 + 38 + export function validateMain<V>(v: V) { 39 + return validate<Main & V>(v, id, hashMain) 40 + } 41 + 42 + export interface View { 43 + $type?: 'app.bsky.embed.record#view' 44 + record: 45 + | $Typed<ViewRecord> 46 + | $Typed<ViewNotFound> 47 + | $Typed<ViewBlocked> 48 + | $Typed<ViewDetached> 49 + | $Typed<AppBskyFeedDefs.GeneratorView> 50 + | $Typed<AppBskyGraphDefs.ListView> 51 + | $Typed<AppBskyLabelerDefs.LabelerView> 52 + | $Typed<AppBskyGraphDefs.StarterPackViewBasic> 53 + | { $type: string } 54 + } 55 + 56 + const hashView = 'view' 57 + 58 + export function isView<V>(v: V) { 59 + return is$typed(v, id, hashView) 60 + } 61 + 62 + export function validateView<V>(v: V) { 63 + return validate<View & V>(v, id, hashView) 64 + } 65 + 66 + export interface ViewRecord { 67 + $type?: 'app.bsky.embed.record#viewRecord' 68 + uri: string 69 + cid: string 70 + author: AppBskyActorDefs.ProfileViewBasic 71 + /** The record data itself. */ 72 + value: { [_ in string]: unknown } 73 + labels?: ComAtprotoLabelDefs.Label[] 74 + replyCount?: number 75 + repostCount?: number 76 + likeCount?: number 77 + quoteCount?: number 78 + embeds?: ( 79 + | $Typed<AppBskyEmbedImages.View> 80 + | $Typed<AppBskyEmbedVideo.View> 81 + | $Typed<AppBskyEmbedExternal.View> 82 + | $Typed<View> 83 + | $Typed<AppBskyEmbedRecordWithMedia.View> 84 + | { $type: string } 85 + )[] 86 + indexedAt: string 87 + } 88 + 89 + const hashViewRecord = 'viewRecord' 90 + 91 + export function isViewRecord<V>(v: V) { 92 + return is$typed(v, id, hashViewRecord) 93 + } 94 + 95 + export function validateViewRecord<V>(v: V) { 96 + return validate<ViewRecord & V>(v, id, hashViewRecord) 97 + } 98 + 99 + export interface ViewNotFound { 100 + $type?: 'app.bsky.embed.record#viewNotFound' 101 + uri: string 102 + notFound: true 103 + } 104 + 105 + const hashViewNotFound = 'viewNotFound' 106 + 107 + export function isViewNotFound<V>(v: V) { 108 + return is$typed(v, id, hashViewNotFound) 109 + } 110 + 111 + export function validateViewNotFound<V>(v: V) { 112 + return validate<ViewNotFound & V>(v, id, hashViewNotFound) 113 + } 114 + 115 + export interface ViewBlocked { 116 + $type?: 'app.bsky.embed.record#viewBlocked' 117 + uri: string 118 + blocked: true 119 + author: AppBskyFeedDefs.BlockedAuthor 120 + } 121 + 122 + const hashViewBlocked = 'viewBlocked' 123 + 124 + export function isViewBlocked<V>(v: V) { 125 + return is$typed(v, id, hashViewBlocked) 126 + } 127 + 128 + export function validateViewBlocked<V>(v: V) { 129 + return validate<ViewBlocked & V>(v, id, hashViewBlocked) 130 + } 131 + 132 + export interface ViewDetached { 133 + $type?: 'app.bsky.embed.record#viewDetached' 134 + uri: string 135 + detached: true 136 + } 137 + 138 + const hashViewDetached = 'viewDetached' 139 + 140 + export function isViewDetached<V>(v: V) { 141 + return is$typed(v, id, hashViewDetached) 142 + } 143 + 144 + export function validateViewDetached<V>(v: V) { 145 + return validate<ViewDetached & V>(v, id, hashViewDetached) 146 + }
+59
indexclient/types/app/bsky/embed/recordWithMedia.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + import type * as AppBskyEmbedRecord from './record.js' 13 + import type * as AppBskyEmbedImages from './images.js' 14 + import type * as AppBskyEmbedVideo from './video.js' 15 + import type * as AppBskyEmbedExternal from './external.js' 16 + 17 + const is$typed = _is$typed, 18 + validate = _validate 19 + const id = 'app.bsky.embed.recordWithMedia' 20 + 21 + export interface Main { 22 + $type?: 'app.bsky.embed.recordWithMedia' 23 + record: AppBskyEmbedRecord.Main 24 + media: 25 + | $Typed<AppBskyEmbedImages.Main> 26 + | $Typed<AppBskyEmbedVideo.Main> 27 + | $Typed<AppBskyEmbedExternal.Main> 28 + | { $type: string } 29 + } 30 + 31 + const hashMain = 'main' 32 + 33 + export function isMain<V>(v: V) { 34 + return is$typed(v, id, hashMain) 35 + } 36 + 37 + export function validateMain<V>(v: V) { 38 + return validate<Main & V>(v, id, hashMain) 39 + } 40 + 41 + export interface View { 42 + $type?: 'app.bsky.embed.recordWithMedia#view' 43 + record: AppBskyEmbedRecord.View 44 + media: 45 + | $Typed<AppBskyEmbedImages.View> 46 + | $Typed<AppBskyEmbedVideo.View> 47 + | $Typed<AppBskyEmbedExternal.View> 48 + | { $type: string } 49 + } 50 + 51 + const hashView = 'view' 52 + 53 + export function isView<V>(v: V) { 54 + return is$typed(v, id, hashView) 55 + } 56 + 57 + export function validateView<V>(v: V) { 58 + return validate<View & V>(v, id, hashView) 59 + }
+71
indexclient/types/app/bsky/embed/video.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + import type * as AppBskyEmbedDefs from './defs.js' 13 + 14 + const is$typed = _is$typed, 15 + validate = _validate 16 + const id = 'app.bsky.embed.video' 17 + 18 + export interface Main { 19 + $type?: 'app.bsky.embed.video' 20 + /** The mp4 video file. May be up to 100mb, formerly limited to 50mb. */ 21 + video: BlobRef 22 + captions?: Caption[] 23 + /** Alt text description of the video, for accessibility. */ 24 + alt?: string 25 + aspectRatio?: AppBskyEmbedDefs.AspectRatio 26 + } 27 + 28 + const hashMain = 'main' 29 + 30 + export function isMain<V>(v: V) { 31 + return is$typed(v, id, hashMain) 32 + } 33 + 34 + export function validateMain<V>(v: V) { 35 + return validate<Main & V>(v, id, hashMain) 36 + } 37 + 38 + export interface Caption { 39 + $type?: 'app.bsky.embed.video#caption' 40 + lang: string 41 + file: BlobRef 42 + } 43 + 44 + const hashCaption = 'caption' 45 + 46 + export function isCaption<V>(v: V) { 47 + return is$typed(v, id, hashCaption) 48 + } 49 + 50 + export function validateCaption<V>(v: V) { 51 + return validate<Caption & V>(v, id, hashCaption) 52 + } 53 + 54 + export interface View { 55 + $type?: 'app.bsky.embed.video#view' 56 + cid: string 57 + playlist: string 58 + thumbnail?: string 59 + alt?: string 60 + aspectRatio?: AppBskyEmbedDefs.AspectRatio 61 + } 62 + 63 + const hashView = 'view' 64 + 65 + export function isView<V>(v: V) { 66 + return is$typed(v, id, hashView) 67 + } 68 + 69 + export function validateView<V>(v: V) { 70 + return validate<View & V>(v, id, hashView) 71 + }
+424
indexclient/types/app/bsky/feed/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + import type * as AppBskyActorDefs from '../actor/defs.js' 13 + import type * as AppBskyEmbedImages from '../embed/images.js' 14 + import type * as AppBskyEmbedVideo from '../embed/video.js' 15 + import type * as AppBskyEmbedExternal from '../embed/external.js' 16 + import type * as AppBskyEmbedRecord from '../embed/record.js' 17 + import type * as AppBskyEmbedRecordWithMedia from '../embed/recordWithMedia.js' 18 + import type * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs.js' 19 + import type * as AppBskyRichtextFacet from '../richtext/facet.js' 20 + import type * as AppBskyGraphDefs from '../graph/defs.js' 21 + 22 + const is$typed = _is$typed, 23 + validate = _validate 24 + const id = 'app.bsky.feed.defs' 25 + 26 + export interface PostView { 27 + $type?: 'app.bsky.feed.defs#postView' 28 + uri: string 29 + cid: string 30 + author: AppBskyActorDefs.ProfileViewBasic 31 + record: { [_ in string]: unknown } 32 + embed?: 33 + | $Typed<AppBskyEmbedImages.View> 34 + | $Typed<AppBskyEmbedVideo.View> 35 + | $Typed<AppBskyEmbedExternal.View> 36 + | $Typed<AppBskyEmbedRecord.View> 37 + | $Typed<AppBskyEmbedRecordWithMedia.View> 38 + | { $type: string } 39 + replyCount?: number 40 + repostCount?: number 41 + likeCount?: number 42 + quoteCount?: number 43 + indexedAt: string 44 + viewer?: ViewerState 45 + labels?: ComAtprotoLabelDefs.Label[] 46 + threadgate?: ThreadgateView 47 + } 48 + 49 + const hashPostView = 'postView' 50 + 51 + export function isPostView<V>(v: V) { 52 + return is$typed(v, id, hashPostView) 53 + } 54 + 55 + export function validatePostView<V>(v: V) { 56 + return validate<PostView & V>(v, id, hashPostView) 57 + } 58 + 59 + /** Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests. */ 60 + export interface ViewerState { 61 + $type?: 'app.bsky.feed.defs#viewerState' 62 + repost?: string 63 + like?: string 64 + threadMuted?: boolean 65 + replyDisabled?: boolean 66 + embeddingDisabled?: boolean 67 + pinned?: boolean 68 + } 69 + 70 + const hashViewerState = 'viewerState' 71 + 72 + export function isViewerState<V>(v: V) { 73 + return is$typed(v, id, hashViewerState) 74 + } 75 + 76 + export function validateViewerState<V>(v: V) { 77 + return validate<ViewerState & V>(v, id, hashViewerState) 78 + } 79 + 80 + /** Metadata about this post within the context of the thread it is in. */ 81 + export interface ThreadContext { 82 + $type?: 'app.bsky.feed.defs#threadContext' 83 + rootAuthorLike?: string 84 + } 85 + 86 + const hashThreadContext = 'threadContext' 87 + 88 + export function isThreadContext<V>(v: V) { 89 + return is$typed(v, id, hashThreadContext) 90 + } 91 + 92 + export function validateThreadContext<V>(v: V) { 93 + return validate<ThreadContext & V>(v, id, hashThreadContext) 94 + } 95 + 96 + export interface FeedViewPost { 97 + $type?: 'app.bsky.feed.defs#feedViewPost' 98 + post: PostView 99 + reply?: ReplyRef 100 + reason?: $Typed<ReasonRepost> | $Typed<ReasonPin> | { $type: string } 101 + /** Context provided by feed generator that may be passed back alongside interactions. */ 102 + feedContext?: string 103 + /** Unique identifier per request that may be passed back alongside interactions. */ 104 + reqId?: string 105 + } 106 + 107 + const hashFeedViewPost = 'feedViewPost' 108 + 109 + export function isFeedViewPost<V>(v: V) { 110 + return is$typed(v, id, hashFeedViewPost) 111 + } 112 + 113 + export function validateFeedViewPost<V>(v: V) { 114 + return validate<FeedViewPost & V>(v, id, hashFeedViewPost) 115 + } 116 + 117 + export interface ReplyRef { 118 + $type?: 'app.bsky.feed.defs#replyRef' 119 + root: 120 + | $Typed<PostView> 121 + | $Typed<NotFoundPost> 122 + | $Typed<BlockedPost> 123 + | { $type: string } 124 + parent: 125 + | $Typed<PostView> 126 + | $Typed<NotFoundPost> 127 + | $Typed<BlockedPost> 128 + | { $type: string } 129 + grandparentAuthor?: AppBskyActorDefs.ProfileViewBasic 130 + } 131 + 132 + const hashReplyRef = 'replyRef' 133 + 134 + export function isReplyRef<V>(v: V) { 135 + return is$typed(v, id, hashReplyRef) 136 + } 137 + 138 + export function validateReplyRef<V>(v: V) { 139 + return validate<ReplyRef & V>(v, id, hashReplyRef) 140 + } 141 + 142 + export interface ReasonRepost { 143 + $type?: 'app.bsky.feed.defs#reasonRepost' 144 + by: AppBskyActorDefs.ProfileViewBasic 145 + uri?: string 146 + cid?: string 147 + indexedAt: string 148 + } 149 + 150 + const hashReasonRepost = 'reasonRepost' 151 + 152 + export function isReasonRepost<V>(v: V) { 153 + return is$typed(v, id, hashReasonRepost) 154 + } 155 + 156 + export function validateReasonRepost<V>(v: V) { 157 + return validate<ReasonRepost & V>(v, id, hashReasonRepost) 158 + } 159 + 160 + export interface ReasonPin { 161 + $type?: 'app.bsky.feed.defs#reasonPin' 162 + } 163 + 164 + const hashReasonPin = 'reasonPin' 165 + 166 + export function isReasonPin<V>(v: V) { 167 + return is$typed(v, id, hashReasonPin) 168 + } 169 + 170 + export function validateReasonPin<V>(v: V) { 171 + return validate<ReasonPin & V>(v, id, hashReasonPin) 172 + } 173 + 174 + export interface ThreadViewPost { 175 + $type?: 'app.bsky.feed.defs#threadViewPost' 176 + post: PostView 177 + parent?: 178 + | $Typed<ThreadViewPost> 179 + | $Typed<NotFoundPost> 180 + | $Typed<BlockedPost> 181 + | { $type: string } 182 + replies?: ( 183 + | $Typed<ThreadViewPost> 184 + | $Typed<NotFoundPost> 185 + | $Typed<BlockedPost> 186 + | { $type: string } 187 + )[] 188 + threadContext?: ThreadContext 189 + } 190 + 191 + const hashThreadViewPost = 'threadViewPost' 192 + 193 + export function isThreadViewPost<V>(v: V) { 194 + return is$typed(v, id, hashThreadViewPost) 195 + } 196 + 197 + export function validateThreadViewPost<V>(v: V) { 198 + return validate<ThreadViewPost & V>(v, id, hashThreadViewPost) 199 + } 200 + 201 + export interface NotFoundPost { 202 + $type?: 'app.bsky.feed.defs#notFoundPost' 203 + uri: string 204 + notFound: true 205 + } 206 + 207 + const hashNotFoundPost = 'notFoundPost' 208 + 209 + export function isNotFoundPost<V>(v: V) { 210 + return is$typed(v, id, hashNotFoundPost) 211 + } 212 + 213 + export function validateNotFoundPost<V>(v: V) { 214 + return validate<NotFoundPost & V>(v, id, hashNotFoundPost) 215 + } 216 + 217 + export interface BlockedPost { 218 + $type?: 'app.bsky.feed.defs#blockedPost' 219 + uri: string 220 + blocked: true 221 + author: BlockedAuthor 222 + } 223 + 224 + const hashBlockedPost = 'blockedPost' 225 + 226 + export function isBlockedPost<V>(v: V) { 227 + return is$typed(v, id, hashBlockedPost) 228 + } 229 + 230 + export function validateBlockedPost<V>(v: V) { 231 + return validate<BlockedPost & V>(v, id, hashBlockedPost) 232 + } 233 + 234 + export interface BlockedAuthor { 235 + $type?: 'app.bsky.feed.defs#blockedAuthor' 236 + did: string 237 + viewer?: AppBskyActorDefs.ViewerState 238 + } 239 + 240 + const hashBlockedAuthor = 'blockedAuthor' 241 + 242 + export function isBlockedAuthor<V>(v: V) { 243 + return is$typed(v, id, hashBlockedAuthor) 244 + } 245 + 246 + export function validateBlockedAuthor<V>(v: V) { 247 + return validate<BlockedAuthor & V>(v, id, hashBlockedAuthor) 248 + } 249 + 250 + export interface GeneratorView { 251 + $type?: 'app.bsky.feed.defs#generatorView' 252 + uri: string 253 + cid: string 254 + did: string 255 + creator: AppBskyActorDefs.ProfileView 256 + displayName: string 257 + description?: string 258 + descriptionFacets?: AppBskyRichtextFacet.Main[] 259 + avatar?: string 260 + likeCount?: number 261 + acceptsInteractions?: boolean 262 + labels?: ComAtprotoLabelDefs.Label[] 263 + viewer?: GeneratorViewerState 264 + contentMode?: 265 + | 'app.bsky.feed.defs#contentModeUnspecified' 266 + | 'app.bsky.feed.defs#contentModeVideo' 267 + | (string & {}) 268 + indexedAt: string 269 + } 270 + 271 + const hashGeneratorView = 'generatorView' 272 + 273 + export function isGeneratorView<V>(v: V) { 274 + return is$typed(v, id, hashGeneratorView) 275 + } 276 + 277 + export function validateGeneratorView<V>(v: V) { 278 + return validate<GeneratorView & V>(v, id, hashGeneratorView) 279 + } 280 + 281 + export interface GeneratorViewerState { 282 + $type?: 'app.bsky.feed.defs#generatorViewerState' 283 + like?: string 284 + } 285 + 286 + const hashGeneratorViewerState = 'generatorViewerState' 287 + 288 + export function isGeneratorViewerState<V>(v: V) { 289 + return is$typed(v, id, hashGeneratorViewerState) 290 + } 291 + 292 + export function validateGeneratorViewerState<V>(v: V) { 293 + return validate<GeneratorViewerState & V>(v, id, hashGeneratorViewerState) 294 + } 295 + 296 + export interface SkeletonFeedPost { 297 + $type?: 'app.bsky.feed.defs#skeletonFeedPost' 298 + post: string 299 + reason?: 300 + | $Typed<SkeletonReasonRepost> 301 + | $Typed<SkeletonReasonPin> 302 + | { $type: string } 303 + /** Context that will be passed through to client and may be passed to feed generator back alongside interactions. */ 304 + feedContext?: string 305 + } 306 + 307 + const hashSkeletonFeedPost = 'skeletonFeedPost' 308 + 309 + export function isSkeletonFeedPost<V>(v: V) { 310 + return is$typed(v, id, hashSkeletonFeedPost) 311 + } 312 + 313 + export function validateSkeletonFeedPost<V>(v: V) { 314 + return validate<SkeletonFeedPost & V>(v, id, hashSkeletonFeedPost) 315 + } 316 + 317 + export interface SkeletonReasonRepost { 318 + $type?: 'app.bsky.feed.defs#skeletonReasonRepost' 319 + repost: string 320 + } 321 + 322 + const hashSkeletonReasonRepost = 'skeletonReasonRepost' 323 + 324 + export function isSkeletonReasonRepost<V>(v: V) { 325 + return is$typed(v, id, hashSkeletonReasonRepost) 326 + } 327 + 328 + export function validateSkeletonReasonRepost<V>(v: V) { 329 + return validate<SkeletonReasonRepost & V>(v, id, hashSkeletonReasonRepost) 330 + } 331 + 332 + export interface SkeletonReasonPin { 333 + $type?: 'app.bsky.feed.defs#skeletonReasonPin' 334 + } 335 + 336 + const hashSkeletonReasonPin = 'skeletonReasonPin' 337 + 338 + export function isSkeletonReasonPin<V>(v: V) { 339 + return is$typed(v, id, hashSkeletonReasonPin) 340 + } 341 + 342 + export function validateSkeletonReasonPin<V>(v: V) { 343 + return validate<SkeletonReasonPin & V>(v, id, hashSkeletonReasonPin) 344 + } 345 + 346 + export interface ThreadgateView { 347 + $type?: 'app.bsky.feed.defs#threadgateView' 348 + uri?: string 349 + cid?: string 350 + record?: { [_ in string]: unknown } 351 + lists?: AppBskyGraphDefs.ListViewBasic[] 352 + } 353 + 354 + const hashThreadgateView = 'threadgateView' 355 + 356 + export function isThreadgateView<V>(v: V) { 357 + return is$typed(v, id, hashThreadgateView) 358 + } 359 + 360 + export function validateThreadgateView<V>(v: V) { 361 + return validate<ThreadgateView & V>(v, id, hashThreadgateView) 362 + } 363 + 364 + export interface Interaction { 365 + $type?: 'app.bsky.feed.defs#interaction' 366 + item?: string 367 + event?: 368 + | 'app.bsky.feed.defs#requestLess' 369 + | 'app.bsky.feed.defs#requestMore' 370 + | 'app.bsky.feed.defs#clickthroughItem' 371 + | 'app.bsky.feed.defs#clickthroughAuthor' 372 + | 'app.bsky.feed.defs#clickthroughReposter' 373 + | 'app.bsky.feed.defs#clickthroughEmbed' 374 + | 'app.bsky.feed.defs#interactionSeen' 375 + | 'app.bsky.feed.defs#interactionLike' 376 + | 'app.bsky.feed.defs#interactionRepost' 377 + | 'app.bsky.feed.defs#interactionReply' 378 + | 'app.bsky.feed.defs#interactionQuote' 379 + | 'app.bsky.feed.defs#interactionShare' 380 + | (string & {}) 381 + /** Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton. */ 382 + feedContext?: string 383 + /** Unique identifier per request that may be passed back alongside interactions. */ 384 + reqId?: string 385 + } 386 + 387 + const hashInteraction = 'interaction' 388 + 389 + export function isInteraction<V>(v: V) { 390 + return is$typed(v, id, hashInteraction) 391 + } 392 + 393 + export function validateInteraction<V>(v: V) { 394 + return validate<Interaction & V>(v, id, hashInteraction) 395 + } 396 + 397 + /** Request that less content like the given feed item be shown in the feed */ 398 + export const REQUESTLESS = `${id}#requestLess` 399 + /** Request that more content like the given feed item be shown in the feed */ 400 + export const REQUESTMORE = `${id}#requestMore` 401 + /** User clicked through to the feed item */ 402 + export const CLICKTHROUGHITEM = `${id}#clickthroughItem` 403 + /** User clicked through to the author of the feed item */ 404 + export const CLICKTHROUGHAUTHOR = `${id}#clickthroughAuthor` 405 + /** User clicked through to the reposter of the feed item */ 406 + export const CLICKTHROUGHREPOSTER = `${id}#clickthroughReposter` 407 + /** User clicked through to the embedded content of the feed item */ 408 + export const CLICKTHROUGHEMBED = `${id}#clickthroughEmbed` 409 + /** Declares the feed generator returns any types of posts. */ 410 + export const CONTENTMODEUNSPECIFIED = `${id}#contentModeUnspecified` 411 + /** Declares the feed generator returns posts containing app.bsky.embed.video embeds. */ 412 + export const CONTENTMODEVIDEO = `${id}#contentModeVideo` 413 + /** Feed item was seen by user */ 414 + export const INTERACTIONSEEN = `${id}#interactionSeen` 415 + /** User liked the feed item */ 416 + export const INTERACTIONLIKE = `${id}#interactionLike` 417 + /** User reposted the feed item */ 418 + export const INTERACTIONREPOST = `${id}#interactionRepost` 419 + /** User replied to the feed item */ 420 + export const INTERACTIONREPLY = `${id}#interactionReply` 421 + /** User quoted the feed item */ 422 + export const INTERACTIONQUOTE = `${id}#interactionQuote` 423 + /** User shared the feed item */ 424 + export const INTERACTIONSHARE = `${id}#interactionShare`
+44
indexclient/types/app/bsky/feed/getActorFeeds.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { HeadersMap, XRPCError } from '@atproto/xrpc' 5 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { CID } from 'multiformats/cid' 7 + import { validate as _validate } from '../../../../lexicons' 8 + import { 9 + type $Typed, 10 + is$typed as _is$typed, 11 + type OmitKey, 12 + } from '../../../../util' 13 + import type * as AppBskyFeedDefs from './defs.js' 14 + 15 + const is$typed = _is$typed, 16 + validate = _validate 17 + const id = 'app.bsky.feed.getActorFeeds' 18 + 19 + export type QueryParams = { 20 + actor: string 21 + limit?: number 22 + cursor?: string 23 + } 24 + export type InputSchema = undefined 25 + 26 + export interface OutputSchema { 27 + cursor?: string 28 + feeds: AppBskyFeedDefs.GeneratorView[] 29 + } 30 + 31 + export interface CallOptions { 32 + signal?: AbortSignal 33 + headers?: HeadersMap 34 + } 35 + 36 + export interface Response { 37 + success: boolean 38 + headers: HeadersMap 39 + data: OutputSchema 40 + } 41 + 42 + export function toKnownErr(e: any) { 43 + return e 44 + }
+46
indexclient/types/app/bsky/feed/getFeedGenerator.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { HeadersMap, XRPCError } from '@atproto/xrpc' 5 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { CID } from 'multiformats/cid' 7 + import { validate as _validate } from '../../../../lexicons' 8 + import { 9 + type $Typed, 10 + is$typed as _is$typed, 11 + type OmitKey, 12 + } from '../../../../util' 13 + import type * as AppBskyFeedDefs from './defs.js' 14 + 15 + const is$typed = _is$typed, 16 + validate = _validate 17 + const id = 'app.bsky.feed.getFeedGenerator' 18 + 19 + export type QueryParams = { 20 + /** AT-URI of the feed generator record. */ 21 + feed: string 22 + } 23 + export type InputSchema = undefined 24 + 25 + export interface OutputSchema { 26 + view: AppBskyFeedDefs.GeneratorView 27 + /** Indicates whether the feed generator service has been online recently, or else seems to be inactive. */ 28 + isOnline: boolean 29 + /** Indicates whether the feed generator service is compatible with the record declaration. */ 30 + isValid: boolean 31 + } 32 + 33 + export interface CallOptions { 34 + signal?: AbortSignal 35 + headers?: HeadersMap 36 + } 37 + 38 + export interface Response { 39 + success: boolean 40 + headers: HeadersMap 41 + data: OutputSchema 42 + } 43 + 44 + export function toKnownErr(e: any) { 45 + return e 46 + }
+41
indexclient/types/app/bsky/feed/getFeedGenerators.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { HeadersMap, XRPCError } from '@atproto/xrpc' 5 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { CID } from 'multiformats/cid' 7 + import { validate as _validate } from '../../../../lexicons' 8 + import { 9 + type $Typed, 10 + is$typed as _is$typed, 11 + type OmitKey, 12 + } from '../../../../util' 13 + import type * as AppBskyFeedDefs from './defs.js' 14 + 15 + const is$typed = _is$typed, 16 + validate = _validate 17 + const id = 'app.bsky.feed.getFeedGenerators' 18 + 19 + export type QueryParams = { 20 + feeds: string[] 21 + } 22 + export type InputSchema = undefined 23 + 24 + export interface OutputSchema { 25 + feeds: AppBskyFeedDefs.GeneratorView[] 26 + } 27 + 28 + export interface CallOptions { 29 + signal?: AbortSignal 30 + headers?: HeadersMap 31 + } 32 + 33 + export interface Response { 34 + success: boolean 35 + headers: HeadersMap 36 + data: OutputSchema 37 + } 38 + 39 + export function toKnownErr(e: any) { 40 + return e 41 + }
+42
indexclient/types/app/bsky/feed/getPosts.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { HeadersMap, XRPCError } from '@atproto/xrpc' 5 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { CID } from 'multiformats/cid' 7 + import { validate as _validate } from '../../../../lexicons' 8 + import { 9 + type $Typed, 10 + is$typed as _is$typed, 11 + type OmitKey, 12 + } from '../../../../util' 13 + import type * as AppBskyFeedDefs from './defs.js' 14 + 15 + const is$typed = _is$typed, 16 + validate = _validate 17 + const id = 'app.bsky.feed.getPosts' 18 + 19 + export type QueryParams = { 20 + /** List of post AT-URIs to return hydrated views for. */ 21 + uris: string[] 22 + } 23 + export type InputSchema = undefined 24 + 25 + export interface OutputSchema { 26 + posts: AppBskyFeedDefs.PostView[] 27 + } 28 + 29 + export interface CallOptions { 30 + signal?: AbortSignal 31 + headers?: HeadersMap 32 + } 33 + 34 + export interface Response { 35 + success: boolean 36 + headers: HeadersMap 37 + data: OutputSchema 38 + } 39 + 40 + export function toKnownErr(e: any) { 41 + return e 42 + }
+52
indexclient/types/app/bsky/feed/postgate.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'app.bsky.feed.postgate' 16 + 17 + export interface Record { 18 + $type: 'app.bsky.feed.postgate' 19 + createdAt: string 20 + /** Reference (AT-URI) to the post record. */ 21 + post: string 22 + /** List of AT-URIs embedding this post that the author has detached from. */ 23 + detachedEmbeddingUris?: string[] 24 + /** List of rules defining who can embed this post. If value is an empty array or is undefined, no particular rules apply and anyone can embed. */ 25 + embeddingRules?: ($Typed<DisableRule> | { $type: string })[] 26 + [k: string]: unknown 27 + } 28 + 29 + const hashRecord = 'main' 30 + 31 + export function isRecord<V>(v: V) { 32 + return is$typed(v, id, hashRecord) 33 + } 34 + 35 + export function validateRecord<V>(v: V) { 36 + return validate<Record & V>(v, id, hashRecord, true) 37 + } 38 + 39 + /** Disables embedding of this post. */ 40 + export interface DisableRule { 41 + $type?: 'app.bsky.feed.postgate#disableRule' 42 + } 43 + 44 + const hashDisableRule = 'disableRule' 45 + 46 + export function isDisableRule<V>(v: V) { 47 + return is$typed(v, id, hashDisableRule) 48 + } 49 + 50 + export function validateDisableRule<V>(v: V) { 51 + return validate<DisableRule & V>(v, id, hashDisableRule) 52 + }
+104
indexclient/types/app/bsky/feed/threadgate.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'app.bsky.feed.threadgate' 16 + 17 + export interface Record { 18 + $type: 'app.bsky.feed.threadgate' 19 + /** Reference (AT-URI) to the post record. */ 20 + post: string 21 + /** List of rules defining who can reply to this post. If value is an empty array, no one can reply. If value is undefined, anyone can reply. */ 22 + allow?: ( 23 + | $Typed<MentionRule> 24 + | $Typed<FollowerRule> 25 + | $Typed<FollowingRule> 26 + | $Typed<ListRule> 27 + | { $type: string } 28 + )[] 29 + createdAt: string 30 + /** List of hidden reply URIs. */ 31 + hiddenReplies?: string[] 32 + [k: string]: unknown 33 + } 34 + 35 + const hashRecord = 'main' 36 + 37 + export function isRecord<V>(v: V) { 38 + return is$typed(v, id, hashRecord) 39 + } 40 + 41 + export function validateRecord<V>(v: V) { 42 + return validate<Record & V>(v, id, hashRecord, true) 43 + } 44 + 45 + /** Allow replies from actors mentioned in your post. */ 46 + export interface MentionRule { 47 + $type?: 'app.bsky.feed.threadgate#mentionRule' 48 + } 49 + 50 + const hashMentionRule = 'mentionRule' 51 + 52 + export function isMentionRule<V>(v: V) { 53 + return is$typed(v, id, hashMentionRule) 54 + } 55 + 56 + export function validateMentionRule<V>(v: V) { 57 + return validate<MentionRule & V>(v, id, hashMentionRule) 58 + } 59 + 60 + /** Allow replies from actors who follow you. */ 61 + export interface FollowerRule { 62 + $type?: 'app.bsky.feed.threadgate#followerRule' 63 + } 64 + 65 + const hashFollowerRule = 'followerRule' 66 + 67 + export function isFollowerRule<V>(v: V) { 68 + return is$typed(v, id, hashFollowerRule) 69 + } 70 + 71 + export function validateFollowerRule<V>(v: V) { 72 + return validate<FollowerRule & V>(v, id, hashFollowerRule) 73 + } 74 + 75 + /** Allow replies from actors you follow. */ 76 + export interface FollowingRule { 77 + $type?: 'app.bsky.feed.threadgate#followingRule' 78 + } 79 + 80 + const hashFollowingRule = 'followingRule' 81 + 82 + export function isFollowingRule<V>(v: V) { 83 + return is$typed(v, id, hashFollowingRule) 84 + } 85 + 86 + export function validateFollowingRule<V>(v: V) { 87 + return validate<FollowingRule & V>(v, id, hashFollowingRule) 88 + } 89 + 90 + /** Allow replies from actors on a list. */ 91 + export interface ListRule { 92 + $type?: 'app.bsky.feed.threadgate#listRule' 93 + list: string 94 + } 95 + 96 + const hashListRule = 'listRule' 97 + 98 + export function isListRule<V>(v: V) { 99 + return is$typed(v, id, hashListRule) 100 + } 101 + 102 + export function validateListRule<V>(v: V) { 103 + return validate<ListRule & V>(v, id, hashListRule) 104 + }
+198
indexclient/types/app/bsky/graph/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + import type * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs.js' 13 + import type * as AppBskyActorDefs from '../actor/defs.js' 14 + import type * as AppBskyRichtextFacet from '../richtext/facet.js' 15 + import type * as AppBskyFeedDefs from '../feed/defs.js' 16 + 17 + const is$typed = _is$typed, 18 + validate = _validate 19 + const id = 'app.bsky.graph.defs' 20 + 21 + export interface ListViewBasic { 22 + $type?: 'app.bsky.graph.defs#listViewBasic' 23 + uri: string 24 + cid: string 25 + name: string 26 + purpose: ListPurpose 27 + avatar?: string 28 + listItemCount?: number 29 + labels?: ComAtprotoLabelDefs.Label[] 30 + viewer?: ListViewerState 31 + indexedAt?: string 32 + } 33 + 34 + const hashListViewBasic = 'listViewBasic' 35 + 36 + export function isListViewBasic<V>(v: V) { 37 + return is$typed(v, id, hashListViewBasic) 38 + } 39 + 40 + export function validateListViewBasic<V>(v: V) { 41 + return validate<ListViewBasic & V>(v, id, hashListViewBasic) 42 + } 43 + 44 + export interface ListView { 45 + $type?: 'app.bsky.graph.defs#listView' 46 + uri: string 47 + cid: string 48 + creator: AppBskyActorDefs.ProfileView 49 + name: string 50 + purpose: ListPurpose 51 + description?: string 52 + descriptionFacets?: AppBskyRichtextFacet.Main[] 53 + avatar?: string 54 + listItemCount?: number 55 + labels?: ComAtprotoLabelDefs.Label[] 56 + viewer?: ListViewerState 57 + indexedAt: string 58 + } 59 + 60 + const hashListView = 'listView' 61 + 62 + export function isListView<V>(v: V) { 63 + return is$typed(v, id, hashListView) 64 + } 65 + 66 + export function validateListView<V>(v: V) { 67 + return validate<ListView & V>(v, id, hashListView) 68 + } 69 + 70 + export interface ListItemView { 71 + $type?: 'app.bsky.graph.defs#listItemView' 72 + uri: string 73 + subject: AppBskyActorDefs.ProfileView 74 + } 75 + 76 + const hashListItemView = 'listItemView' 77 + 78 + export function isListItemView<V>(v: V) { 79 + return is$typed(v, id, hashListItemView) 80 + } 81 + 82 + export function validateListItemView<V>(v: V) { 83 + return validate<ListItemView & V>(v, id, hashListItemView) 84 + } 85 + 86 + export interface StarterPackView { 87 + $type?: 'app.bsky.graph.defs#starterPackView' 88 + uri: string 89 + cid: string 90 + record: { [_ in string]: unknown } 91 + creator: AppBskyActorDefs.ProfileViewBasic 92 + list?: ListViewBasic 93 + listItemsSample?: ListItemView[] 94 + feeds?: AppBskyFeedDefs.GeneratorView[] 95 + joinedWeekCount?: number 96 + joinedAllTimeCount?: number 97 + labels?: ComAtprotoLabelDefs.Label[] 98 + indexedAt: string 99 + } 100 + 101 + const hashStarterPackView = 'starterPackView' 102 + 103 + export function isStarterPackView<V>(v: V) { 104 + return is$typed(v, id, hashStarterPackView) 105 + } 106 + 107 + export function validateStarterPackView<V>(v: V) { 108 + return validate<StarterPackView & V>(v, id, hashStarterPackView) 109 + } 110 + 111 + export interface StarterPackViewBasic { 112 + $type?: 'app.bsky.graph.defs#starterPackViewBasic' 113 + uri: string 114 + cid: string 115 + record: { [_ in string]: unknown } 116 + creator: AppBskyActorDefs.ProfileViewBasic 117 + listItemCount?: number 118 + joinedWeekCount?: number 119 + joinedAllTimeCount?: number 120 + labels?: ComAtprotoLabelDefs.Label[] 121 + indexedAt: string 122 + } 123 + 124 + const hashStarterPackViewBasic = 'starterPackViewBasic' 125 + 126 + export function isStarterPackViewBasic<V>(v: V) { 127 + return is$typed(v, id, hashStarterPackViewBasic) 128 + } 129 + 130 + export function validateStarterPackViewBasic<V>(v: V) { 131 + return validate<StarterPackViewBasic & V>(v, id, hashStarterPackViewBasic) 132 + } 133 + 134 + export type ListPurpose = 135 + | 'app.bsky.graph.defs#modlist' 136 + | 'app.bsky.graph.defs#curatelist' 137 + | 'app.bsky.graph.defs#referencelist' 138 + | (string & {}) 139 + 140 + /** A list of actors to apply an aggregate moderation action (mute/block) on. */ 141 + export const MODLIST = `${id}#modlist` 142 + /** A list of actors used for curation purposes such as list feeds or interaction gating. */ 143 + export const CURATELIST = `${id}#curatelist` 144 + /** A list of actors used for only for reference purposes such as within a starter pack. */ 145 + export const REFERENCELIST = `${id}#referencelist` 146 + 147 + export interface ListViewerState { 148 + $type?: 'app.bsky.graph.defs#listViewerState' 149 + muted?: boolean 150 + blocked?: string 151 + } 152 + 153 + const hashListViewerState = 'listViewerState' 154 + 155 + export function isListViewerState<V>(v: V) { 156 + return is$typed(v, id, hashListViewerState) 157 + } 158 + 159 + export function validateListViewerState<V>(v: V) { 160 + return validate<ListViewerState & V>(v, id, hashListViewerState) 161 + } 162 + 163 + /** indicates that a handle or DID could not be resolved */ 164 + export interface NotFoundActor { 165 + $type?: 'app.bsky.graph.defs#notFoundActor' 166 + actor: string 167 + notFound: true 168 + } 169 + 170 + const hashNotFoundActor = 'notFoundActor' 171 + 172 + export function isNotFoundActor<V>(v: V) { 173 + return is$typed(v, id, hashNotFoundActor) 174 + } 175 + 176 + export function validateNotFoundActor<V>(v: V) { 177 + return validate<NotFoundActor & V>(v, id, hashNotFoundActor) 178 + } 179 + 180 + /** lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object) */ 181 + export interface Relationship { 182 + $type?: 'app.bsky.graph.defs#relationship' 183 + did: string 184 + /** if the actor follows this DID, this is the AT-URI of the follow record */ 185 + following?: string 186 + /** if the actor is followed by this DID, contains the AT-URI of the follow record */ 187 + followedBy?: string 188 + } 189 + 190 + const hashRelationship = 'relationship' 191 + 192 + export function isRelationship<V>(v: V) { 193 + return is$typed(v, id, hashRelationship) 194 + } 195 + 196 + export function validateRelationship<V>(v: V) { 197 + return validate<Relationship & V>(v, id, hashRelationship) 198 + }
+142
indexclient/types/app/bsky/notification/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'app.bsky.notification.defs' 16 + 17 + export interface RecordDeleted { 18 + $type?: 'app.bsky.notification.defs#recordDeleted' 19 + } 20 + 21 + const hashRecordDeleted = 'recordDeleted' 22 + 23 + export function isRecordDeleted<V>(v: V) { 24 + return is$typed(v, id, hashRecordDeleted) 25 + } 26 + 27 + export function validateRecordDeleted<V>(v: V) { 28 + return validate<RecordDeleted & V>(v, id, hashRecordDeleted) 29 + } 30 + 31 + export interface ChatPreference { 32 + $type?: 'app.bsky.notification.defs#chatPreference' 33 + include: 'all' | 'accepted' | (string & {}) 34 + push: boolean 35 + } 36 + 37 + const hashChatPreference = 'chatPreference' 38 + 39 + export function isChatPreference<V>(v: V) { 40 + return is$typed(v, id, hashChatPreference) 41 + } 42 + 43 + export function validateChatPreference<V>(v: V) { 44 + return validate<ChatPreference & V>(v, id, hashChatPreference) 45 + } 46 + 47 + export interface FilterablePreference { 48 + $type?: 'app.bsky.notification.defs#filterablePreference' 49 + include: 'all' | 'follows' | (string & {}) 50 + list: boolean 51 + push: boolean 52 + } 53 + 54 + const hashFilterablePreference = 'filterablePreference' 55 + 56 + export function isFilterablePreference<V>(v: V) { 57 + return is$typed(v, id, hashFilterablePreference) 58 + } 59 + 60 + export function validateFilterablePreference<V>(v: V) { 61 + return validate<FilterablePreference & V>(v, id, hashFilterablePreference) 62 + } 63 + 64 + export interface Preference { 65 + $type?: 'app.bsky.notification.defs#preference' 66 + list: boolean 67 + push: boolean 68 + } 69 + 70 + const hashPreference = 'preference' 71 + 72 + export function isPreference<V>(v: V) { 73 + return is$typed(v, id, hashPreference) 74 + } 75 + 76 + export function validatePreference<V>(v: V) { 77 + return validate<Preference & V>(v, id, hashPreference) 78 + } 79 + 80 + export interface Preferences { 81 + $type?: 'app.bsky.notification.defs#preferences' 82 + chat: ChatPreference 83 + follow: FilterablePreference 84 + like: FilterablePreference 85 + likeViaRepost: FilterablePreference 86 + mention: FilterablePreference 87 + quote: FilterablePreference 88 + reply: FilterablePreference 89 + repost: FilterablePreference 90 + repostViaRepost: FilterablePreference 91 + starterpackJoined: Preference 92 + subscribedPost: Preference 93 + unverified: Preference 94 + verified: Preference 95 + } 96 + 97 + const hashPreferences = 'preferences' 98 + 99 + export function isPreferences<V>(v: V) { 100 + return is$typed(v, id, hashPreferences) 101 + } 102 + 103 + export function validatePreferences<V>(v: V) { 104 + return validate<Preferences & V>(v, id, hashPreferences) 105 + } 106 + 107 + export interface ActivitySubscription { 108 + $type?: 'app.bsky.notification.defs#activitySubscription' 109 + post: boolean 110 + reply: boolean 111 + } 112 + 113 + const hashActivitySubscription = 'activitySubscription' 114 + 115 + export function isActivitySubscription<V>(v: V) { 116 + return is$typed(v, id, hashActivitySubscription) 117 + } 118 + 119 + export function validateActivitySubscription<V>(v: V) { 120 + return validate<ActivitySubscription & V>(v, id, hashActivitySubscription) 121 + } 122 + 123 + /** Object used to store activity subscription data in stash. */ 124 + export interface SubjectActivitySubscription { 125 + $type?: 'app.bsky.notification.defs#subjectActivitySubscription' 126 + subject: string 127 + activitySubscription: ActivitySubscription 128 + } 129 + 130 + const hashSubjectActivitySubscription = 'subjectActivitySubscription' 131 + 132 + export function isSubjectActivitySubscription<V>(v: V) { 133 + return is$typed(v, id, hashSubjectActivitySubscription) 134 + } 135 + 136 + export function validateSubjectActivitySubscription<V>(v: V) { 137 + return validate<SubjectActivitySubscription & V>( 138 + v, 139 + id, 140 + hashSubjectActivitySubscription, 141 + ) 142 + }
+97
indexclient/types/app/bsky/richtext/facet.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'app.bsky.richtext.facet' 16 + 17 + /** Annotation of a sub-string within rich text. */ 18 + export interface Main { 19 + $type?: 'app.bsky.richtext.facet' 20 + index: ByteSlice 21 + features: ($Typed<Mention> | $Typed<Link> | $Typed<Tag> | { $type: string })[] 22 + } 23 + 24 + const hashMain = 'main' 25 + 26 + export function isMain<V>(v: V) { 27 + return is$typed(v, id, hashMain) 28 + } 29 + 30 + export function validateMain<V>(v: V) { 31 + return validate<Main & V>(v, id, hashMain) 32 + } 33 + 34 + /** Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID. */ 35 + export interface Mention { 36 + $type?: 'app.bsky.richtext.facet#mention' 37 + did: string 38 + } 39 + 40 + const hashMention = 'mention' 41 + 42 + export function isMention<V>(v: V) { 43 + return is$typed(v, id, hashMention) 44 + } 45 + 46 + export function validateMention<V>(v: V) { 47 + return validate<Mention & V>(v, id, hashMention) 48 + } 49 + 50 + /** Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL. */ 51 + export interface Link { 52 + $type?: 'app.bsky.richtext.facet#link' 53 + uri: string 54 + } 55 + 56 + const hashLink = 'link' 57 + 58 + export function isLink<V>(v: V) { 59 + return is$typed(v, id, hashLink) 60 + } 61 + 62 + export function validateLink<V>(v: V) { 63 + return validate<Link & V>(v, id, hashLink) 64 + } 65 + 66 + /** 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'). */ 67 + export interface Tag { 68 + $type?: 'app.bsky.richtext.facet#tag' 69 + tag: string 70 + } 71 + 72 + const hashTag = 'tag' 73 + 74 + export function isTag<V>(v: V) { 75 + return is$typed(v, id, hashTag) 76 + } 77 + 78 + export function validateTag<V>(v: V) { 79 + return validate<Tag & V>(v, id, hashTag) 80 + } 81 + 82 + /** 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. */ 83 + export interface ByteSlice { 84 + $type?: 'app.bsky.richtext.facet#byteSlice' 85 + byteStart: number 86 + byteEnd: number 87 + } 88 + 89 + const hashByteSlice = 'byteSlice' 90 + 91 + export function isByteSlice<V>(v: V) { 92 + return is$typed(v, id, hashByteSlice) 93 + } 94 + 95 + export function validateByteSlice<V>(v: V) { 96 + return validate<ByteSlice & V>(v, id, hashByteSlice) 97 + }
+146
indexclient/types/com/atproto/label/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'com.atproto.label.defs' 16 + 17 + /** Metadata tag on an atproto resource (eg, repo or record). */ 18 + export interface Label { 19 + $type?: 'com.atproto.label.defs#label' 20 + /** The AT Protocol version of the label object. */ 21 + ver?: number 22 + /** DID of the actor who created this label. */ 23 + src: string 24 + /** AT URI of the record, repository (account), or other resource that this label applies to. */ 25 + uri: string 26 + /** Optionally, CID specifying the specific version of 'uri' resource this label applies to. */ 27 + cid?: string 28 + /** The short string name of the value or type of this label. */ 29 + val: string 30 + /** If true, this is a negation label, overwriting a previous label. */ 31 + neg?: boolean 32 + /** Timestamp when this label was created. */ 33 + cts: string 34 + /** Timestamp at which this label expires (no longer applies). */ 35 + exp?: string 36 + /** Signature of dag-cbor encoded label. */ 37 + sig?: Uint8Array 38 + } 39 + 40 + const hashLabel = 'label' 41 + 42 + export function isLabel<V>(v: V) { 43 + return is$typed(v, id, hashLabel) 44 + } 45 + 46 + export function validateLabel<V>(v: V) { 47 + return validate<Label & V>(v, id, hashLabel) 48 + } 49 + 50 + /** Metadata tags on an atproto record, published by the author within the record. */ 51 + export interface SelfLabels { 52 + $type?: 'com.atproto.label.defs#selfLabels' 53 + values: SelfLabel[] 54 + } 55 + 56 + const hashSelfLabels = 'selfLabels' 57 + 58 + export function isSelfLabels<V>(v: V) { 59 + return is$typed(v, id, hashSelfLabels) 60 + } 61 + 62 + export function validateSelfLabels<V>(v: V) { 63 + return validate<SelfLabels & V>(v, id, hashSelfLabels) 64 + } 65 + 66 + /** Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel. */ 67 + export interface SelfLabel { 68 + $type?: 'com.atproto.label.defs#selfLabel' 69 + /** The short string name of the value or type of this label. */ 70 + val: string 71 + } 72 + 73 + const hashSelfLabel = 'selfLabel' 74 + 75 + export function isSelfLabel<V>(v: V) { 76 + return is$typed(v, id, hashSelfLabel) 77 + } 78 + 79 + export function validateSelfLabel<V>(v: V) { 80 + return validate<SelfLabel & V>(v, id, hashSelfLabel) 81 + } 82 + 83 + /** Declares a label value and its expected interpretations and behaviors. */ 84 + export interface LabelValueDefinition { 85 + $type?: 'com.atproto.label.defs#labelValueDefinition' 86 + /** The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+). */ 87 + identifier: string 88 + /** How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing. */ 89 + severity: 'inform' | 'alert' | 'none' | (string & {}) 90 + /** What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing. */ 91 + blurs: 'content' | 'media' | 'none' | (string & {}) 92 + /** The default setting for this label. */ 93 + defaultSetting: 'ignore' | 'warn' | 'hide' | (string & {}) 94 + /** Does the user need to have adult content enabled in order to configure this label? */ 95 + adultOnly?: boolean 96 + locales: LabelValueDefinitionStrings[] 97 + } 98 + 99 + const hashLabelValueDefinition = 'labelValueDefinition' 100 + 101 + export function isLabelValueDefinition<V>(v: V) { 102 + return is$typed(v, id, hashLabelValueDefinition) 103 + } 104 + 105 + export function validateLabelValueDefinition<V>(v: V) { 106 + return validate<LabelValueDefinition & V>(v, id, hashLabelValueDefinition) 107 + } 108 + 109 + /** Strings which describe the label in the UI, localized into a specific language. */ 110 + export interface LabelValueDefinitionStrings { 111 + $type?: 'com.atproto.label.defs#labelValueDefinitionStrings' 112 + /** The code of the language these strings are written in. */ 113 + lang: string 114 + /** A short human-readable name for the label. */ 115 + name: string 116 + /** A longer description of what the label means and why it might be applied. */ 117 + description: string 118 + } 119 + 120 + const hashLabelValueDefinitionStrings = 'labelValueDefinitionStrings' 121 + 122 + export function isLabelValueDefinitionStrings<V>(v: V) { 123 + return is$typed(v, id, hashLabelValueDefinitionStrings) 124 + } 125 + 126 + export function validateLabelValueDefinitionStrings<V>(v: V) { 127 + return validate<LabelValueDefinitionStrings & V>( 128 + v, 129 + id, 130 + hashLabelValueDefinitionStrings, 131 + ) 132 + } 133 + 134 + export type LabelValue = 135 + | '!hide' 136 + | '!no-promote' 137 + | '!warn' 138 + | '!no-unauthenticated' 139 + | 'dmca-violation' 140 + | 'doxxing' 141 + | 'porn' 142 + | 'sexual' 143 + | 'nudity' 144 + | 'nsfl' 145 + | 'gore' 146 + | (string & {})
+31
indexclient/types/com/atproto/repo/strongRef.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'com.atproto.repo.strongRef' 16 + 17 + export interface Main { 18 + $type?: 'com.atproto.repo.strongRef' 19 + uri: string 20 + cid: string 21 + } 22 + 23 + const hashMain = 'main' 24 + 25 + export function isMain<V>(v: V) { 26 + return is$typed(v, id, hashMain) 27 + } 28 + 29 + export function validateMain<V>(v: V) { 30 + return validate<Main & V>(v, id, hashMain) 31 + }
+60
indexclient/types/party/whey/app/bsky/actor/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../../../util' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'party.whey.app.bsky.actor.defs' 16 + 17 + export interface ProfileViewBasicRef { 18 + $type?: 'party.whey.app.bsky.actor.defs#profileViewBasicRef' 19 + did: string 20 + } 21 + 22 + const hashProfileViewBasicRef = 'profileViewBasicRef' 23 + 24 + export function isProfileViewBasicRef<V>(v: V) { 25 + return is$typed(v, id, hashProfileViewBasicRef) 26 + } 27 + 28 + export function validateProfileViewBasicRef<V>(v: V) { 29 + return validate<ProfileViewBasicRef & V>(v, id, hashProfileViewBasicRef) 30 + } 31 + 32 + export interface ProfileViewRef { 33 + $type?: 'party.whey.app.bsky.actor.defs#profileViewRef' 34 + did: string 35 + } 36 + 37 + const hashProfileViewRef = 'profileViewRef' 38 + 39 + export function isProfileViewRef<V>(v: V) { 40 + return is$typed(v, id, hashProfileViewRef) 41 + } 42 + 43 + export function validateProfileViewRef<V>(v: V) { 44 + return validate<ProfileViewRef & V>(v, id, hashProfileViewRef) 45 + } 46 + 47 + export interface ProfileViewDetailedRef { 48 + $type?: 'party.whey.app.bsky.actor.defs#profileViewDetailedRef' 49 + did: string 50 + } 51 + 52 + const hashProfileViewDetailedRef = 'profileViewDetailedRef' 53 + 54 + export function isProfileViewDetailedRef<V>(v: V) { 55 + return is$typed(v, id, hashProfileViewDetailedRef) 56 + } 57 + 58 + export function validateProfileViewDetailedRef<V>(v: V) { 59 + return validate<ProfileViewDetailedRef & V>(v, id, hashProfileViewDetailedRef) 60 + }
+127
indexclient/types/party/whey/app/bsky/feed/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { CID } from 'multiformats/cid' 6 + import { validate as _validate } from '../../../../../../lexicons' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../../../util' 12 + import type * as AppBskyFeedDefs from '../../../../../app/bsky/feed/defs.js' 13 + import type * as PartyWheyAppBskyActorDefs from '../actor/defs.js' 14 + import type * as AppBskyActorDefs from '../../../../../app/bsky/actor/defs.js' 15 + 16 + const is$typed = _is$typed, 17 + validate = _validate 18 + const id = 'party.whey.app.bsky.feed.defs' 19 + 20 + /** A pointer to a app.bsky.feed.defs#postView */ 21 + export interface PostViewRef { 22 + $type?: 'party.whey.app.bsky.feed.defs#postViewRef' 23 + uri: string 24 + cid: string 25 + } 26 + 27 + const hashPostViewRef = 'postViewRef' 28 + 29 + export function isPostViewRef<V>(v: V) { 30 + return is$typed(v, id, hashPostViewRef) 31 + } 32 + 33 + export function validatePostViewRef<V>(v: V) { 34 + return validate<PostViewRef & V>(v, id, hashPostViewRef) 35 + } 36 + 37 + export interface FeedViewPostRef { 38 + $type?: 'party.whey.app.bsky.feed.defs#feedViewPostRef' 39 + post: 40 + | $Typed<AppBskyFeedDefs.PostView> 41 + | $Typed<PostViewRef> 42 + | { $type: string } 43 + reply?: 44 + | $Typed<AppBskyFeedDefs.ReplyRef> 45 + | $Typed<ReplyRef> 46 + | { $type: string } 47 + reason?: 48 + | $Typed<AppBskyFeedDefs.ReasonRepost> 49 + | $Typed<AppBskyFeedDefs.ReasonPin> 50 + | { $type: string } 51 + /** Context provided by feed generator that may be passed back alongside interactions. */ 52 + feedContext?: string 53 + /** Unique identifier per request that may be passed back alongside interactions. */ 54 + reqId?: string 55 + } 56 + 57 + const hashFeedViewPostRef = 'feedViewPostRef' 58 + 59 + export function isFeedViewPostRef<V>(v: V) { 60 + return is$typed(v, id, hashFeedViewPostRef) 61 + } 62 + 63 + export function validateFeedViewPostRef<V>(v: V) { 64 + return validate<FeedViewPostRef & V>(v, id, hashFeedViewPostRef) 65 + } 66 + 67 + export interface ReplyRef { 68 + $type?: 'party.whey.app.bsky.feed.defs#replyRef' 69 + root: 70 + | $Typed<PostViewRef> 71 + | $Typed<AppBskyFeedDefs.PostView> 72 + | $Typed<AppBskyFeedDefs.NotFoundPost> 73 + | $Typed<AppBskyFeedDefs.BlockedPost> 74 + | { $type: string } 75 + parent: 76 + | $Typed<PostViewRef> 77 + | $Typed<AppBskyFeedDefs.PostView> 78 + | $Typed<AppBskyFeedDefs.NotFoundPost> 79 + | $Typed<AppBskyFeedDefs.BlockedPost> 80 + | { $type: string } 81 + grandparentAuthor?: 82 + | $Typed<PartyWheyAppBskyActorDefs.ProfileViewBasicRef> 83 + | $Typed<AppBskyActorDefs.ProfileViewBasic> 84 + | { $type: string } 85 + } 86 + 87 + const hashReplyRef = 'replyRef' 88 + 89 + export function isReplyRef<V>(v: V) { 90 + return is$typed(v, id, hashReplyRef) 91 + } 92 + 93 + export function validateReplyRef<V>(v: V) { 94 + return validate<ReplyRef & V>(v, id, hashReplyRef) 95 + } 96 + 97 + export interface ThreadViewPostRef { 98 + $type?: 'party.whey.app.bsky.feed.defs#threadViewPostRef' 99 + post: 100 + | $Typed<PostViewRef> 101 + | $Typed<AppBskyFeedDefs.PostView> 102 + | { $type: string } 103 + parent?: 104 + | $Typed<ThreadViewPostRef> 105 + | $Typed<AppBskyFeedDefs.ThreadViewPost> 106 + | $Typed<AppBskyFeedDefs.NotFoundPost> 107 + | $Typed<AppBskyFeedDefs.BlockedPost> 108 + | { $type: string } 109 + replies?: ( 110 + | $Typed<ThreadViewPostRef> 111 + | $Typed<AppBskyFeedDefs.ThreadViewPost> 112 + | $Typed<AppBskyFeedDefs.NotFoundPost> 113 + | $Typed<AppBskyFeedDefs.BlockedPost> 114 + | { $type: string } 115 + )[] 116 + threadContext?: AppBskyFeedDefs.ThreadContext 117 + } 118 + 119 + const hashThreadViewPostRef = 'threadViewPostRef' 120 + 121 + export function isThreadViewPostRef<V>(v: V) { 122 + return is$typed(v, id, hashThreadViewPostRef) 123 + } 124 + 125 + export function validateThreadViewPostRef<V>(v: V) { 126 + return validate<ThreadViewPostRef & V>(v, id, hashThreadViewPostRef) 127 + }
+66
indexclient/types/party/whey/app/bsky/feed/getActorLikesPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { HeadersMap, XRPCError } from '@atproto/xrpc' 5 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { CID } from 'multiformats/cid' 7 + import { validate as _validate } from '../../../../../../lexicons' 8 + import { 9 + type $Typed, 10 + is$typed as _is$typed, 11 + type OmitKey, 12 + } from '../../../../../../util' 13 + import type * as PartyWheyAppBskyFeedDefs from './defs.js' 14 + import type * as AppBskyFeedDefs from '../../../../../app/bsky/feed/defs.js' 15 + 16 + const is$typed = _is$typed, 17 + validate = _validate 18 + const id = 'party.whey.app.bsky.feed.getActorLikesPartial' 19 + 20 + export type QueryParams = { 21 + actor: string 22 + limit?: number 23 + cursor?: string 24 + } 25 + export type InputSchema = undefined 26 + 27 + export interface OutputSchema { 28 + cursor?: string 29 + feed: ( 30 + | $Typed<PartyWheyAppBskyFeedDefs.FeedViewPostRef> 31 + | $Typed<AppBskyFeedDefs.FeedViewPost> 32 + | { $type: string } 33 + )[] 34 + } 35 + 36 + export interface CallOptions { 37 + signal?: AbortSignal 38 + headers?: HeadersMap 39 + } 40 + 41 + export interface Response { 42 + success: boolean 43 + headers: HeadersMap 44 + data: OutputSchema 45 + } 46 + 47 + export class BlockedActorError extends XRPCError { 48 + constructor(src: XRPCError) { 49 + super(src.status, src.error, src.message, src.headers, { cause: src }) 50 + } 51 + } 52 + 53 + export class BlockedByActorError extends XRPCError { 54 + constructor(src: XRPCError) { 55 + super(src.status, src.error, src.message, src.headers, { cause: src }) 56 + } 57 + } 58 + 59 + export function toKnownErr(e: any) { 60 + if (e instanceof XRPCError) { 61 + if (e.error === 'BlockedActor') return new BlockedActorError(e) 62 + if (e.error === 'BlockedByActor') return new BlockedByActorError(e) 63 + } 64 + 65 + return e 66 + }
+75
indexclient/types/party/whey/app/bsky/feed/getAuthorFeedPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { HeadersMap, XRPCError } from '@atproto/xrpc' 5 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { CID } from 'multiformats/cid' 7 + import { validate as _validate } from '../../../../../../lexicons' 8 + import { 9 + type $Typed, 10 + is$typed as _is$typed, 11 + type OmitKey, 12 + } from '../../../../../../util' 13 + import type * as PartyWheyAppBskyFeedDefs from './defs.js' 14 + import type * as AppBskyFeedDefs from '../../../../../app/bsky/feed/defs.js' 15 + 16 + const is$typed = _is$typed, 17 + validate = _validate 18 + const id = 'party.whey.app.bsky.feed.getAuthorFeedPartial' 19 + 20 + export type QueryParams = { 21 + actor: string 22 + limit?: number 23 + cursor?: string 24 + /** Combinations of post/repost types to include in response. */ 25 + filter?: 26 + | 'posts_with_replies' 27 + | 'posts_no_replies' 28 + | 'posts_with_media' 29 + | 'posts_and_author_threads' 30 + | 'posts_with_video' 31 + | (string & {}) 32 + includePins?: boolean 33 + } 34 + export type InputSchema = undefined 35 + 36 + export interface OutputSchema { 37 + cursor?: string 38 + feed: ( 39 + | $Typed<PartyWheyAppBskyFeedDefs.FeedViewPostRef> 40 + | $Typed<AppBskyFeedDefs.FeedViewPost> 41 + | { $type: string } 42 + )[] 43 + } 44 + 45 + export interface CallOptions { 46 + signal?: AbortSignal 47 + headers?: HeadersMap 48 + } 49 + 50 + export interface Response { 51 + success: boolean 52 + headers: HeadersMap 53 + data: OutputSchema 54 + } 55 + 56 + export class BlockedActorError extends XRPCError { 57 + constructor(src: XRPCError) { 58 + super(src.status, src.error, src.message, src.headers, { cause: src }) 59 + } 60 + } 61 + 62 + export class BlockedByActorError extends XRPCError { 63 + constructor(src: XRPCError) { 64 + super(src.status, src.error, src.message, src.headers, { cause: src }) 65 + } 66 + } 67 + 68 + export function toKnownErr(e: any) { 69 + if (e instanceof XRPCError) { 70 + if (e.error === 'BlockedActor') return new BlockedActorError(e) 71 + if (e.error === 'BlockedByActor') return new BlockedByActorError(e) 72 + } 73 + 74 + return e 75 + }
+66
indexclient/types/party/whey/app/bsky/feed/getLikesPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { HeadersMap, XRPCError } from '@atproto/xrpc' 5 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { CID } from 'multiformats/cid' 7 + import { validate as _validate } from '../../../../../../lexicons' 8 + import { 9 + type $Typed, 10 + is$typed as _is$typed, 11 + type OmitKey, 12 + } from '../../../../../../util' 13 + import type * as PartyWheyAppBskyActorDefs from '../actor/defs.js' 14 + 15 + const is$typed = _is$typed, 16 + validate = _validate 17 + const id = 'party.whey.app.bsky.feed.getLikesPartial' 18 + 19 + export type QueryParams = { 20 + /** AT-URI of the subject (eg, a post record). */ 21 + uri: string 22 + /** CID of the subject record (aka, specific version of record), to filter likes. */ 23 + cid?: string 24 + limit?: number 25 + cursor?: string 26 + } 27 + export type InputSchema = undefined 28 + 29 + export interface OutputSchema { 30 + uri: string 31 + cid?: string 32 + cursor?: string 33 + likes: Like[] 34 + } 35 + 36 + export interface CallOptions { 37 + signal?: AbortSignal 38 + headers?: HeadersMap 39 + } 40 + 41 + export interface Response { 42 + success: boolean 43 + headers: HeadersMap 44 + data: OutputSchema 45 + } 46 + 47 + export function toKnownErr(e: any) { 48 + return e 49 + } 50 + 51 + export interface Like { 52 + $type?: 'party.whey.app.bsky.feed.getLikesPartial#like' 53 + indexedAt: string 54 + createdAt: string 55 + actor: PartyWheyAppBskyActorDefs.ProfileViewRef 56 + } 57 + 58 + const hashLike = 'like' 59 + 60 + export function isLike<V>(v: V) { 61 + return is$typed(v, id, hashLike) 62 + } 63 + 64 + export function validateLike<V>(v: V) { 65 + return validate<Like & V>(v, id, hashLike) 66 + }
+55
indexclient/types/party/whey/app/bsky/feed/getListFeedPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { HeadersMap, XRPCError } from '@atproto/xrpc' 5 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { CID } from 'multiformats/cid' 7 + import { validate as _validate } from '../../../../../../lexicons' 8 + import { 9 + type $Typed, 10 + is$typed as _is$typed, 11 + type OmitKey, 12 + } from '../../../../../../util' 13 + import type * as PartyWheyAppBskyFeedDefs from './defs.js' 14 + 15 + const is$typed = _is$typed, 16 + validate = _validate 17 + const id = 'party.whey.app.bsky.feed.getListFeedPartial' 18 + 19 + export type QueryParams = { 20 + /** Reference (AT-URI) to the list record. */ 21 + list: string 22 + limit?: number 23 + cursor?: string 24 + } 25 + export type InputSchema = undefined 26 + 27 + export interface OutputSchema { 28 + cursor?: string 29 + feed: PartyWheyAppBskyFeedDefs.FeedViewPostRef[] 30 + } 31 + 32 + export interface CallOptions { 33 + signal?: AbortSignal 34 + headers?: HeadersMap 35 + } 36 + 37 + export interface Response { 38 + success: boolean 39 + headers: HeadersMap 40 + data: OutputSchema 41 + } 42 + 43 + export class UnknownListError extends XRPCError { 44 + constructor(src: XRPCError) { 45 + super(src.status, src.error, src.message, src.headers, { cause: src }) 46 + } 47 + } 48 + 49 + export function toKnownErr(e: any) { 50 + if (e instanceof XRPCError) { 51 + if (e.error === 'UnknownList') return new UnknownListError(e) 52 + } 53 + 54 + return e 55 + }
+63
indexclient/types/party/whey/app/bsky/feed/getPostThreadPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { HeadersMap, XRPCError } from '@atproto/xrpc' 5 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { CID } from 'multiformats/cid' 7 + import { validate as _validate } from '../../../../../../lexicons' 8 + import { 9 + type $Typed, 10 + is$typed as _is$typed, 11 + type OmitKey, 12 + } from '../../../../../../util' 13 + import type * as PartyWheyAppBskyFeedDefs from './defs.js' 14 + import type * as AppBskyFeedDefs from '../../../../../app/bsky/feed/defs.js' 15 + 16 + const is$typed = _is$typed, 17 + validate = _validate 18 + const id = 'party.whey.app.bsky.feed.getPostThreadPartial' 19 + 20 + export type QueryParams = { 21 + /** Reference (AT-URI) to post record. */ 22 + uri: string 23 + /** How many levels of reply depth should be included in response. */ 24 + depth?: number 25 + /** How many levels of parent (and grandparent, etc) post to include. */ 26 + parentHeight?: number 27 + } 28 + export type InputSchema = undefined 29 + 30 + export interface OutputSchema { 31 + thread: 32 + | $Typed<PartyWheyAppBskyFeedDefs.ThreadViewPostRef> 33 + | $Typed<AppBskyFeedDefs.ThreadViewPost> 34 + | $Typed<AppBskyFeedDefs.NotFoundPost> 35 + | $Typed<AppBskyFeedDefs.BlockedPost> 36 + | { $type: string } 37 + threadgate?: AppBskyFeedDefs.ThreadgateView 38 + } 39 + 40 + export interface CallOptions { 41 + signal?: AbortSignal 42 + headers?: HeadersMap 43 + } 44 + 45 + export interface Response { 46 + success: boolean 47 + headers: HeadersMap 48 + data: OutputSchema 49 + } 50 + 51 + export class NotFoundError extends XRPCError { 52 + constructor(src: XRPCError) { 53 + super(src.status, src.error, src.message, src.headers, { cause: src }) 54 + } 55 + } 56 + 57 + export function toKnownErr(e: any) { 58 + if (e instanceof XRPCError) { 59 + if (e.error === 'NotFound') return new NotFoundError(e) 60 + } 61 + 62 + return e 63 + }
+54
indexclient/types/party/whey/app/bsky/feed/getQuotesPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { HeadersMap, XRPCError } from '@atproto/xrpc' 5 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { CID } from 'multiformats/cid' 7 + import { validate as _validate } from '../../../../../../lexicons' 8 + import { 9 + type $Typed, 10 + is$typed as _is$typed, 11 + type OmitKey, 12 + } from '../../../../../../util' 13 + import type * as PartyWheyAppBskyFeedDefs from './defs.js' 14 + import type * as AppBskyFeedDefs from '../../../../../app/bsky/feed/defs.js' 15 + 16 + const is$typed = _is$typed, 17 + validate = _validate 18 + const id = 'party.whey.app.bsky.feed.getQuotesPartial' 19 + 20 + export type QueryParams = { 21 + /** Reference (AT-URI) of post record */ 22 + uri: string 23 + /** If supplied, filters to quotes of specific version (by CID) of the post record. */ 24 + cid?: string 25 + limit?: number 26 + cursor?: string 27 + } 28 + export type InputSchema = undefined 29 + 30 + export interface OutputSchema { 31 + uri: string 32 + cid?: string 33 + cursor?: string 34 + posts: ( 35 + | $Typed<PartyWheyAppBskyFeedDefs.PostViewRef> 36 + | $Typed<AppBskyFeedDefs.PostView> 37 + | { $type: string } 38 + )[] 39 + } 40 + 41 + export interface CallOptions { 42 + signal?: AbortSignal 43 + headers?: HeadersMap 44 + } 45 + 46 + export interface Response { 47 + success: boolean 48 + headers: HeadersMap 49 + data: OutputSchema 50 + } 51 + 52 + export function toKnownErr(e: any) { 53 + return e 54 + }
+54
indexclient/types/party/whey/app/bsky/feed/getRepostedByPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { HeadersMap, XRPCError } from '@atproto/xrpc' 5 + import { type ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { CID } from 'multiformats/cid' 7 + import { validate as _validate } from '../../../../../../lexicons' 8 + import { 9 + type $Typed, 10 + is$typed as _is$typed, 11 + type OmitKey, 12 + } from '../../../../../../util' 13 + import type * as PartyWheyAppBskyActorDefs from '../actor/defs.js' 14 + import type * as AppBskyActorDefs from '../../../../../app/bsky/actor/defs.js' 15 + 16 + const is$typed = _is$typed, 17 + validate = _validate 18 + const id = 'party.whey.app.bsky.feed.getRepostedByPartial' 19 + 20 + export type QueryParams = { 21 + /** Reference (AT-URI) of post record */ 22 + uri: string 23 + /** If supplied, filters to reposts of specific version (by CID) of the post record. */ 24 + cid?: string 25 + limit?: number 26 + cursor?: string 27 + } 28 + export type InputSchema = undefined 29 + 30 + export interface OutputSchema { 31 + uri: string 32 + cid?: string 33 + cursor?: string 34 + repostedBy: ( 35 + | $Typed<PartyWheyAppBskyActorDefs.ProfileViewRef> 36 + | $Typed<AppBskyActorDefs.ProfileView> 37 + | { $type: string } 38 + )[] 39 + } 40 + 41 + export interface CallOptions { 42 + signal?: AbortSignal 43 + headers?: HeadersMap 44 + } 45 + 46 + export interface Response { 47 + success: boolean 48 + headers: HeadersMap 49 + data: OutputSchema 50 + } 51 + 52 + export function toKnownErr(e: any) { 53 + return e 54 + }
+82
indexclient/util.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + 5 + import { type ValidationResult } from '@atproto/lexicon' 6 + 7 + export type OmitKey<T, K extends keyof T> = { 8 + [K2 in keyof T as K2 extends K ? never : K2]: T[K2] 9 + } 10 + 11 + export type $Typed<V, T extends string = string> = V & { $type: T } 12 + export type Un$Typed<V extends { $type?: string }> = OmitKey<V, '$type'> 13 + 14 + export type $Type<Id extends string, Hash extends string> = Hash extends 'main' 15 + ? Id 16 + : `${Id}#${Hash}` 17 + 18 + function isObject<V>(v: V): v is V & object { 19 + return v != null && typeof v === 'object' 20 + } 21 + 22 + function is$type<Id extends string, Hash extends string>( 23 + $type: unknown, 24 + id: Id, 25 + hash: Hash, 26 + ): $type is $Type<Id, Hash> { 27 + return hash === 'main' 28 + ? $type === id 29 + : // $type === `${id}#${hash}` 30 + typeof $type === 'string' && 31 + $type.length === id.length + 1 + hash.length && 32 + $type.charCodeAt(id.length) === 35 /* '#' */ && 33 + $type.startsWith(id) && 34 + $type.endsWith(hash) 35 + } 36 + 37 + export type $TypedObject< 38 + V, 39 + Id extends string, 40 + Hash extends string, 41 + > = V extends { 42 + $type: $Type<Id, Hash> 43 + } 44 + ? V 45 + : V extends { $type?: string } 46 + ? V extends { $type?: infer T extends $Type<Id, Hash> } 47 + ? V & { $type: T } 48 + : never 49 + : V & { $type: $Type<Id, Hash> } 50 + 51 + export function is$typed<V, Id extends string, Hash extends string>( 52 + v: V, 53 + id: Id, 54 + hash: Hash, 55 + ): v is $TypedObject<V, Id, Hash> { 56 + return isObject(v) && '$type' in v && is$type(v.$type, id, hash) 57 + } 58 + 59 + export function maybe$typed<V, Id extends string, Hash extends string>( 60 + v: V, 61 + id: Id, 62 + hash: Hash, 63 + ): v is V & object & { $type?: $Type<Id, Hash> } { 64 + return ( 65 + isObject(v) && 66 + ('$type' in v ? v.$type === undefined || is$type(v.$type, id, hash) : true) 67 + ) 68 + } 69 + 70 + export type Validator<R = unknown> = (v: unknown) => ValidationResult<R> 71 + export type ValidatorParam<V extends Validator> = 72 + V extends Validator<infer R> ? R : never 73 + 74 + /** 75 + * Utility function that allows to convert a "validate*" utility function into a 76 + * type predicate. 77 + */ 78 + export function asPredicate<V extends Validator>(validate: V) { 79 + return function <T>(v: T): v is T & ValidatorParam<V> { 80 + return validate(v).success 81 + } 82 + }
+355
indexserver/index.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { 5 + type Auth, 6 + type Options as XrpcOptions, 7 + Server as XrpcServer, 8 + type StreamConfigOrHandler, 9 + type MethodConfigOrHandler, 10 + createServer as createXrpcServer, 11 + } from 'npm:@atproto/xrpc-server' 12 + import { schemas } from './lexicons.ts' 13 + import * as AppBskyActorGetProfile from './types/app/bsky/actor/getProfile.ts' 14 + import * as AppBskyActorGetProfiles from './types/app/bsky/actor/getProfiles.ts' 15 + import * as AppBskyFeedGetActorFeeds from './types/app/bsky/feed/getActorFeeds.ts' 16 + import * as AppBskyFeedGetFeedGenerator from './types/app/bsky/feed/getFeedGenerator.ts' 17 + import * as AppBskyFeedGetFeedGenerators from './types/app/bsky/feed/getFeedGenerators.ts' 18 + import * as AppBskyFeedGetPosts from './types/app/bsky/feed/getPosts.ts' 19 + import * as PartyWheyAppBskyFeedGetActorLikesPartial from './types/party/whey/app/bsky/feed/getActorLikesPartial.ts' 20 + import * as PartyWheyAppBskyFeedGetAuthorFeedPartial from './types/party/whey/app/bsky/feed/getAuthorFeedPartial.ts' 21 + import * as PartyWheyAppBskyFeedGetLikesPartial from './types/party/whey/app/bsky/feed/getLikesPartial.ts' 22 + import * as PartyWheyAppBskyFeedGetListFeedPartial from './types/party/whey/app/bsky/feed/getListFeedPartial.ts' 23 + import * as PartyWheyAppBskyFeedGetPostThreadPartial from './types/party/whey/app/bsky/feed/getPostThreadPartial.ts' 24 + import * as PartyWheyAppBskyFeedGetQuotesPartial from './types/party/whey/app/bsky/feed/getQuotesPartial.ts' 25 + import * as PartyWheyAppBskyFeedGetRepostedByPartial from './types/party/whey/app/bsky/feed/getRepostedByPartial.ts' 26 + 27 + export const APP_BSKY_FEED = { 28 + DefsRequestLess: 'app.bsky.feed.defs#requestLess', 29 + DefsRequestMore: 'app.bsky.feed.defs#requestMore', 30 + DefsClickthroughItem: 'app.bsky.feed.defs#clickthroughItem', 31 + DefsClickthroughAuthor: 'app.bsky.feed.defs#clickthroughAuthor', 32 + DefsClickthroughReposter: 'app.bsky.feed.defs#clickthroughReposter', 33 + DefsClickthroughEmbed: 'app.bsky.feed.defs#clickthroughEmbed', 34 + DefsContentModeUnspecified: 'app.bsky.feed.defs#contentModeUnspecified', 35 + DefsContentModeVideo: 'app.bsky.feed.defs#contentModeVideo', 36 + DefsInteractionSeen: 'app.bsky.feed.defs#interactionSeen', 37 + DefsInteractionLike: 'app.bsky.feed.defs#interactionLike', 38 + DefsInteractionRepost: 'app.bsky.feed.defs#interactionRepost', 39 + DefsInteractionReply: 'app.bsky.feed.defs#interactionReply', 40 + DefsInteractionQuote: 'app.bsky.feed.defs#interactionQuote', 41 + DefsInteractionShare: 'app.bsky.feed.defs#interactionShare', 42 + } 43 + export const APP_BSKY_GRAPH = { 44 + DefsModlist: 'app.bsky.graph.defs#modlist', 45 + DefsCuratelist: 'app.bsky.graph.defs#curatelist', 46 + DefsReferencelist: 'app.bsky.graph.defs#referencelist', 47 + } 48 + 49 + export function createServer(options?: XrpcOptions): Server { 50 + return new Server(options) 51 + } 52 + 53 + export class Server { 54 + xrpc: XrpcServer 55 + app: AppNS 56 + com: ComNS 57 + party: PartyNS 58 + 59 + constructor(options?: XrpcOptions) { 60 + this.xrpc = createXrpcServer(schemas, options) 61 + this.app = new AppNS(this) 62 + this.com = new ComNS(this) 63 + this.party = new PartyNS(this) 64 + } 65 + } 66 + 67 + export class AppNS { 68 + _server: Server 69 + bsky: AppBskyNS 70 + 71 + constructor(server: Server) { 72 + this._server = server 73 + this.bsky = new AppBskyNS(server) 74 + } 75 + } 76 + 77 + export class AppBskyNS { 78 + _server: Server 79 + actor: AppBskyActorNS 80 + embed: AppBskyEmbedNS 81 + feed: AppBskyFeedNS 82 + richtext: AppBskyRichtextNS 83 + 84 + constructor(server: Server) { 85 + this._server = server 86 + this.actor = new AppBskyActorNS(server) 87 + this.embed = new AppBskyEmbedNS(server) 88 + this.feed = new AppBskyFeedNS(server) 89 + this.richtext = new AppBskyRichtextNS(server) 90 + } 91 + } 92 + 93 + export class AppBskyActorNS { 94 + _server: Server 95 + 96 + constructor(server: Server) { 97 + this._server = server 98 + } 99 + 100 + getProfile<A extends Auth = void>( 101 + cfg: MethodConfigOrHandler< 102 + A, 103 + AppBskyActorGetProfile.QueryParams, 104 + AppBskyActorGetProfile.HandlerInput, 105 + AppBskyActorGetProfile.HandlerOutput 106 + >, 107 + ) { 108 + const nsid = 'app.bsky.actor.getProfile' // @ts-ignore 109 + return this._server.xrpc.method(nsid, cfg) 110 + } 111 + 112 + getProfiles<A extends Auth = void>( 113 + cfg: MethodConfigOrHandler< 114 + A, 115 + AppBskyActorGetProfiles.QueryParams, 116 + AppBskyActorGetProfiles.HandlerInput, 117 + AppBskyActorGetProfiles.HandlerOutput 118 + >, 119 + ) { 120 + const nsid = 'app.bsky.actor.getProfiles' // @ts-ignore 121 + return this._server.xrpc.method(nsid, cfg) 122 + } 123 + } 124 + 125 + export class AppBskyEmbedNS { 126 + _server: Server 127 + 128 + constructor(server: Server) { 129 + this._server = server 130 + } 131 + } 132 + 133 + export class AppBskyFeedNS { 134 + _server: Server 135 + 136 + constructor(server: Server) { 137 + this._server = server 138 + } 139 + 140 + getActorFeeds<A extends Auth = void>( 141 + cfg: MethodConfigOrHandler< 142 + A, 143 + AppBskyFeedGetActorFeeds.QueryParams, 144 + AppBskyFeedGetActorFeeds.HandlerInput, 145 + AppBskyFeedGetActorFeeds.HandlerOutput 146 + >, 147 + ) { 148 + const nsid = 'app.bsky.feed.getActorFeeds' // @ts-ignore 149 + return this._server.xrpc.method(nsid, cfg) 150 + } 151 + 152 + getFeedGenerator<A extends Auth = void>( 153 + cfg: MethodConfigOrHandler< 154 + A, 155 + AppBskyFeedGetFeedGenerator.QueryParams, 156 + AppBskyFeedGetFeedGenerator.HandlerInput, 157 + AppBskyFeedGetFeedGenerator.HandlerOutput 158 + >, 159 + ) { 160 + const nsid = 'app.bsky.feed.getFeedGenerator' // @ts-ignore 161 + return this._server.xrpc.method(nsid, cfg) 162 + } 163 + 164 + getFeedGenerators<A extends Auth = void>( 165 + cfg: MethodConfigOrHandler< 166 + A, 167 + AppBskyFeedGetFeedGenerators.QueryParams, 168 + AppBskyFeedGetFeedGenerators.HandlerInput, 169 + AppBskyFeedGetFeedGenerators.HandlerOutput 170 + >, 171 + ) { 172 + const nsid = 'app.bsky.feed.getFeedGenerators' // @ts-ignore 173 + return this._server.xrpc.method(nsid, cfg) 174 + } 175 + 176 + getPosts<A extends Auth = void>( 177 + cfg: MethodConfigOrHandler< 178 + A, 179 + AppBskyFeedGetPosts.QueryParams, 180 + AppBskyFeedGetPosts.HandlerInput, 181 + AppBskyFeedGetPosts.HandlerOutput 182 + >, 183 + ) { 184 + const nsid = 'app.bsky.feed.getPosts' // @ts-ignore 185 + return this._server.xrpc.method(nsid, cfg) 186 + } 187 + } 188 + 189 + export class AppBskyRichtextNS { 190 + _server: Server 191 + 192 + constructor(server: Server) { 193 + this._server = server 194 + } 195 + } 196 + 197 + export class ComNS { 198 + _server: Server 199 + atproto: ComAtprotoNS 200 + 201 + constructor(server: Server) { 202 + this._server = server 203 + this.atproto = new ComAtprotoNS(server) 204 + } 205 + } 206 + 207 + export class ComAtprotoNS { 208 + _server: Server 209 + repo: ComAtprotoRepoNS 210 + 211 + constructor(server: Server) { 212 + this._server = server 213 + this.repo = new ComAtprotoRepoNS(server) 214 + } 215 + } 216 + 217 + export class ComAtprotoRepoNS { 218 + _server: Server 219 + 220 + constructor(server: Server) { 221 + this._server = server 222 + } 223 + } 224 + 225 + export class PartyNS { 226 + _server: Server 227 + whey: PartyWheyNS 228 + 229 + constructor(server: Server) { 230 + this._server = server 231 + this.whey = new PartyWheyNS(server) 232 + } 233 + } 234 + 235 + export class PartyWheyNS { 236 + _server: Server 237 + app: PartyWheyAppNS 238 + 239 + constructor(server: Server) { 240 + this._server = server 241 + this.app = new PartyWheyAppNS(server) 242 + } 243 + } 244 + 245 + export class PartyWheyAppNS { 246 + _server: Server 247 + bsky: PartyWheyAppBskyNS 248 + 249 + constructor(server: Server) { 250 + this._server = server 251 + this.bsky = new PartyWheyAppBskyNS(server) 252 + } 253 + } 254 + 255 + export class PartyWheyAppBskyNS { 256 + _server: Server 257 + feed: PartyWheyAppBskyFeedNS 258 + 259 + constructor(server: Server) { 260 + this._server = server 261 + this.feed = new PartyWheyAppBskyFeedNS(server) 262 + } 263 + } 264 + 265 + export class PartyWheyAppBskyFeedNS { 266 + _server: Server 267 + 268 + constructor(server: Server) { 269 + this._server = server 270 + } 271 + 272 + getActorLikesPartial<A extends Auth = void>( 273 + cfg: MethodConfigOrHandler< 274 + A, 275 + PartyWheyAppBskyFeedGetActorLikesPartial.QueryParams, 276 + PartyWheyAppBskyFeedGetActorLikesPartial.HandlerInput, 277 + PartyWheyAppBskyFeedGetActorLikesPartial.HandlerOutput 278 + >, 279 + ) { 280 + const nsid = 'party.whey.app.bsky.feed.getActorLikesPartial' // @ts-ignore 281 + return this._server.xrpc.method(nsid, cfg) 282 + } 283 + 284 + getAuthorFeedPartial<A extends Auth = void>( 285 + cfg: MethodConfigOrHandler< 286 + A, 287 + PartyWheyAppBskyFeedGetAuthorFeedPartial.QueryParams, 288 + PartyWheyAppBskyFeedGetAuthorFeedPartial.HandlerInput, 289 + PartyWheyAppBskyFeedGetAuthorFeedPartial.HandlerOutput 290 + >, 291 + ) { 292 + const nsid = 'party.whey.app.bsky.feed.getAuthorFeedPartial' // @ts-ignore 293 + return this._server.xrpc.method(nsid, cfg) 294 + } 295 + 296 + getLikesPartial<A extends Auth = void>( 297 + cfg: MethodConfigOrHandler< 298 + A, 299 + PartyWheyAppBskyFeedGetLikesPartial.QueryParams, 300 + PartyWheyAppBskyFeedGetLikesPartial.HandlerInput, 301 + PartyWheyAppBskyFeedGetLikesPartial.HandlerOutput 302 + >, 303 + ) { 304 + const nsid = 'party.whey.app.bsky.feed.getLikesPartial' // @ts-ignore 305 + return this._server.xrpc.method(nsid, cfg) 306 + } 307 + 308 + getListFeedPartial<A extends Auth = void>( 309 + cfg: MethodConfigOrHandler< 310 + A, 311 + PartyWheyAppBskyFeedGetListFeedPartial.QueryParams, 312 + PartyWheyAppBskyFeedGetListFeedPartial.HandlerInput, 313 + PartyWheyAppBskyFeedGetListFeedPartial.HandlerOutput 314 + >, 315 + ) { 316 + const nsid = 'party.whey.app.bsky.feed.getListFeedPartial' // @ts-ignore 317 + return this._server.xrpc.method(nsid, cfg) 318 + } 319 + 320 + getPostThreadPartial<A extends Auth = void>( 321 + cfg: MethodConfigOrHandler< 322 + A, 323 + PartyWheyAppBskyFeedGetPostThreadPartial.QueryParams, 324 + PartyWheyAppBskyFeedGetPostThreadPartial.HandlerInput, 325 + PartyWheyAppBskyFeedGetPostThreadPartial.HandlerOutput 326 + >, 327 + ) { 328 + const nsid = 'party.whey.app.bsky.feed.getPostThreadPartial' // @ts-ignore 329 + return this._server.xrpc.method(nsid, cfg) 330 + } 331 + 332 + getQuotesPartial<A extends Auth = void>( 333 + cfg: MethodConfigOrHandler< 334 + A, 335 + PartyWheyAppBskyFeedGetQuotesPartial.QueryParams, 336 + PartyWheyAppBskyFeedGetQuotesPartial.HandlerInput, 337 + PartyWheyAppBskyFeedGetQuotesPartial.HandlerOutput 338 + >, 339 + ) { 340 + const nsid = 'party.whey.app.bsky.feed.getQuotesPartial' // @ts-ignore 341 + return this._server.xrpc.method(nsid, cfg) 342 + } 343 + 344 + getRepostedByPartial<A extends Auth = void>( 345 + cfg: MethodConfigOrHandler< 346 + A, 347 + PartyWheyAppBskyFeedGetRepostedByPartial.QueryParams, 348 + PartyWheyAppBskyFeedGetRepostedByPartial.HandlerInput, 349 + PartyWheyAppBskyFeedGetRepostedByPartial.HandlerOutput 350 + >, 351 + ) { 352 + const nsid = 'party.whey.app.bsky.feed.getRepostedByPartial' // @ts-ignore 353 + return this._server.xrpc.method(nsid, cfg) 354 + } 355 + }
+3566
indexserver/lexicons.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { 5 + type LexiconDoc, 6 + Lexicons, 7 + ValidationError, 8 + type ValidationResult, 9 + } from 'npm:@atproto/lexicon' 10 + import { type $Typed, is$typed, maybe$typed } from './util.ts' 11 + 12 + export const schemaDict = { 13 + AppBskyActorDefs: { 14 + lexicon: 1, 15 + id: 'app.bsky.actor.defs', 16 + defs: { 17 + profileViewBasic: { 18 + type: 'object', 19 + required: ['did', 'handle'], 20 + properties: { 21 + did: { 22 + type: 'string', 23 + format: 'did', 24 + }, 25 + handle: { 26 + type: 'string', 27 + format: 'handle', 28 + }, 29 + displayName: { 30 + type: 'string', 31 + maxGraphemes: 64, 32 + maxLength: 640, 33 + }, 34 + avatar: { 35 + type: 'string', 36 + format: 'uri', 37 + }, 38 + associated: { 39 + type: 'ref', 40 + ref: 'lex:app.bsky.actor.defs#profileAssociated', 41 + }, 42 + viewer: { 43 + type: 'ref', 44 + ref: 'lex:app.bsky.actor.defs#viewerState', 45 + }, 46 + labels: { 47 + type: 'array', 48 + items: { 49 + type: 'ref', 50 + ref: 'lex:com.atproto.label.defs#label', 51 + }, 52 + }, 53 + createdAt: { 54 + type: 'string', 55 + format: 'datetime', 56 + }, 57 + verification: { 58 + type: 'ref', 59 + ref: 'lex:app.bsky.actor.defs#verificationState', 60 + }, 61 + status: { 62 + type: 'ref', 63 + ref: 'lex:app.bsky.actor.defs#statusView', 64 + }, 65 + }, 66 + }, 67 + profileView: { 68 + type: 'object', 69 + required: ['did', 'handle'], 70 + properties: { 71 + did: { 72 + type: 'string', 73 + format: 'did', 74 + }, 75 + handle: { 76 + type: 'string', 77 + format: 'handle', 78 + }, 79 + displayName: { 80 + type: 'string', 81 + maxGraphemes: 64, 82 + maxLength: 640, 83 + }, 84 + description: { 85 + type: 'string', 86 + maxGraphemes: 256, 87 + maxLength: 2560, 88 + }, 89 + avatar: { 90 + type: 'string', 91 + format: 'uri', 92 + }, 93 + associated: { 94 + type: 'ref', 95 + ref: 'lex:app.bsky.actor.defs#profileAssociated', 96 + }, 97 + indexedAt: { 98 + type: 'string', 99 + format: 'datetime', 100 + }, 101 + createdAt: { 102 + type: 'string', 103 + format: 'datetime', 104 + }, 105 + viewer: { 106 + type: 'ref', 107 + ref: 'lex:app.bsky.actor.defs#viewerState', 108 + }, 109 + labels: { 110 + type: 'array', 111 + items: { 112 + type: 'ref', 113 + ref: 'lex:com.atproto.label.defs#label', 114 + }, 115 + }, 116 + verification: { 117 + type: 'ref', 118 + ref: 'lex:app.bsky.actor.defs#verificationState', 119 + }, 120 + status: { 121 + type: 'ref', 122 + ref: 'lex:app.bsky.actor.defs#statusView', 123 + }, 124 + }, 125 + }, 126 + profileViewDetailed: { 127 + type: 'object', 128 + required: ['did', 'handle'], 129 + properties: { 130 + did: { 131 + type: 'string', 132 + format: 'did', 133 + }, 134 + handle: { 135 + type: 'string', 136 + format: 'handle', 137 + }, 138 + displayName: { 139 + type: 'string', 140 + maxGraphemes: 64, 141 + maxLength: 640, 142 + }, 143 + description: { 144 + type: 'string', 145 + maxGraphemes: 256, 146 + maxLength: 2560, 147 + }, 148 + avatar: { 149 + type: 'string', 150 + format: 'uri', 151 + }, 152 + banner: { 153 + type: 'string', 154 + format: 'uri', 155 + }, 156 + followersCount: { 157 + type: 'integer', 158 + }, 159 + followsCount: { 160 + type: 'integer', 161 + }, 162 + postsCount: { 163 + type: 'integer', 164 + }, 165 + associated: { 166 + type: 'ref', 167 + ref: 'lex:app.bsky.actor.defs#profileAssociated', 168 + }, 169 + joinedViaStarterPack: { 170 + type: 'ref', 171 + ref: 'lex:app.bsky.graph.defs#starterPackViewBasic', 172 + }, 173 + indexedAt: { 174 + type: 'string', 175 + format: 'datetime', 176 + }, 177 + createdAt: { 178 + type: 'string', 179 + format: 'datetime', 180 + }, 181 + viewer: { 182 + type: 'ref', 183 + ref: 'lex:app.bsky.actor.defs#viewerState', 184 + }, 185 + labels: { 186 + type: 'array', 187 + items: { 188 + type: 'ref', 189 + ref: 'lex:com.atproto.label.defs#label', 190 + }, 191 + }, 192 + pinnedPost: { 193 + type: 'ref', 194 + ref: 'lex:com.atproto.repo.strongRef', 195 + }, 196 + verification: { 197 + type: 'ref', 198 + ref: 'lex:app.bsky.actor.defs#verificationState', 199 + }, 200 + status: { 201 + type: 'ref', 202 + ref: 'lex:app.bsky.actor.defs#statusView', 203 + }, 204 + }, 205 + }, 206 + profileAssociated: { 207 + type: 'object', 208 + properties: { 209 + lists: { 210 + type: 'integer', 211 + }, 212 + feedgens: { 213 + type: 'integer', 214 + }, 215 + starterPacks: { 216 + type: 'integer', 217 + }, 218 + labeler: { 219 + type: 'boolean', 220 + }, 221 + chat: { 222 + type: 'ref', 223 + ref: 'lex:app.bsky.actor.defs#profileAssociatedChat', 224 + }, 225 + activitySubscription: { 226 + type: 'ref', 227 + ref: 'lex:app.bsky.actor.defs#profileAssociatedActivitySubscription', 228 + }, 229 + }, 230 + }, 231 + profileAssociatedChat: { 232 + type: 'object', 233 + required: ['allowIncoming'], 234 + properties: { 235 + allowIncoming: { 236 + type: 'string', 237 + knownValues: ['all', 'none', 'following'], 238 + }, 239 + }, 240 + }, 241 + profileAssociatedActivitySubscription: { 242 + type: 'object', 243 + required: ['allowSubscriptions'], 244 + properties: { 245 + allowSubscriptions: { 246 + type: 'string', 247 + knownValues: ['followers', 'mutuals', 'none'], 248 + }, 249 + }, 250 + }, 251 + viewerState: { 252 + type: 'object', 253 + description: 254 + "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.", 255 + properties: { 256 + muted: { 257 + type: 'boolean', 258 + }, 259 + mutedByList: { 260 + type: 'ref', 261 + ref: 'lex:app.bsky.graph.defs#listViewBasic', 262 + }, 263 + blockedBy: { 264 + type: 'boolean', 265 + }, 266 + blocking: { 267 + type: 'string', 268 + format: 'at-uri', 269 + }, 270 + blockingByList: { 271 + type: 'ref', 272 + ref: 'lex:app.bsky.graph.defs#listViewBasic', 273 + }, 274 + following: { 275 + type: 'string', 276 + format: 'at-uri', 277 + }, 278 + followedBy: { 279 + type: 'string', 280 + format: 'at-uri', 281 + }, 282 + knownFollowers: { 283 + description: 284 + 'This property is present only in selected cases, as an optimization.', 285 + type: 'ref', 286 + ref: 'lex:app.bsky.actor.defs#knownFollowers', 287 + }, 288 + activitySubscription: { 289 + description: 290 + 'This property is present only in selected cases, as an optimization.', 291 + type: 'ref', 292 + ref: 'lex:app.bsky.notification.defs#activitySubscription', 293 + }, 294 + }, 295 + }, 296 + knownFollowers: { 297 + type: 'object', 298 + description: "The subject's followers whom you also follow", 299 + required: ['count', 'followers'], 300 + properties: { 301 + count: { 302 + type: 'integer', 303 + }, 304 + followers: { 305 + type: 'array', 306 + minLength: 0, 307 + maxLength: 5, 308 + items: { 309 + type: 'ref', 310 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 311 + }, 312 + }, 313 + }, 314 + }, 315 + verificationState: { 316 + type: 'object', 317 + description: 318 + 'Represents the verification information about the user this object is attached to.', 319 + required: ['verifications', 'verifiedStatus', 'trustedVerifierStatus'], 320 + properties: { 321 + verifications: { 322 + type: 'array', 323 + description: 324 + 'All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.', 325 + items: { 326 + type: 'ref', 327 + ref: 'lex:app.bsky.actor.defs#verificationView', 328 + }, 329 + }, 330 + verifiedStatus: { 331 + type: 'string', 332 + description: "The user's status as a verified account.", 333 + knownValues: ['valid', 'invalid', 'none'], 334 + }, 335 + trustedVerifierStatus: { 336 + type: 'string', 337 + description: "The user's status as a trusted verifier.", 338 + knownValues: ['valid', 'invalid', 'none'], 339 + }, 340 + }, 341 + }, 342 + verificationView: { 343 + type: 'object', 344 + description: 'An individual verification for an associated subject.', 345 + required: ['issuer', 'uri', 'isValid', 'createdAt'], 346 + properties: { 347 + issuer: { 348 + type: 'string', 349 + description: 'The user who issued this verification.', 350 + format: 'did', 351 + }, 352 + uri: { 353 + type: 'string', 354 + description: 'The AT-URI of the verification record.', 355 + format: 'at-uri', 356 + }, 357 + isValid: { 358 + type: 'boolean', 359 + description: 360 + 'True if the verification passes validation, otherwise false.', 361 + }, 362 + createdAt: { 363 + type: 'string', 364 + description: 'Timestamp when the verification was created.', 365 + format: 'datetime', 366 + }, 367 + }, 368 + }, 369 + preferences: { 370 + type: 'array', 371 + items: { 372 + type: 'union', 373 + refs: [ 374 + 'lex:app.bsky.actor.defs#adultContentPref', 375 + 'lex:app.bsky.actor.defs#contentLabelPref', 376 + 'lex:app.bsky.actor.defs#savedFeedsPref', 377 + 'lex:app.bsky.actor.defs#savedFeedsPrefV2', 378 + 'lex:app.bsky.actor.defs#personalDetailsPref', 379 + 'lex:app.bsky.actor.defs#feedViewPref', 380 + 'lex:app.bsky.actor.defs#threadViewPref', 381 + 'lex:app.bsky.actor.defs#interestsPref', 382 + 'lex:app.bsky.actor.defs#mutedWordsPref', 383 + 'lex:app.bsky.actor.defs#hiddenPostsPref', 384 + 'lex:app.bsky.actor.defs#bskyAppStatePref', 385 + 'lex:app.bsky.actor.defs#labelersPref', 386 + 'lex:app.bsky.actor.defs#postInteractionSettingsPref', 387 + 'lex:app.bsky.actor.defs#verificationPrefs', 388 + ], 389 + }, 390 + }, 391 + adultContentPref: { 392 + type: 'object', 393 + required: ['enabled'], 394 + properties: { 395 + enabled: { 396 + type: 'boolean', 397 + default: false, 398 + }, 399 + }, 400 + }, 401 + contentLabelPref: { 402 + type: 'object', 403 + required: ['label', 'visibility'], 404 + properties: { 405 + labelerDid: { 406 + type: 'string', 407 + description: 408 + 'Which labeler does this preference apply to? If undefined, applies globally.', 409 + format: 'did', 410 + }, 411 + label: { 412 + type: 'string', 413 + }, 414 + visibility: { 415 + type: 'string', 416 + knownValues: ['ignore', 'show', 'warn', 'hide'], 417 + }, 418 + }, 419 + }, 420 + savedFeed: { 421 + type: 'object', 422 + required: ['id', 'type', 'value', 'pinned'], 423 + properties: { 424 + id: { 425 + type: 'string', 426 + }, 427 + type: { 428 + type: 'string', 429 + knownValues: ['feed', 'list', 'timeline'], 430 + }, 431 + value: { 432 + type: 'string', 433 + }, 434 + pinned: { 435 + type: 'boolean', 436 + }, 437 + }, 438 + }, 439 + savedFeedsPrefV2: { 440 + type: 'object', 441 + required: ['items'], 442 + properties: { 443 + items: { 444 + type: 'array', 445 + items: { 446 + type: 'ref', 447 + ref: 'lex:app.bsky.actor.defs#savedFeed', 448 + }, 449 + }, 450 + }, 451 + }, 452 + savedFeedsPref: { 453 + type: 'object', 454 + required: ['pinned', 'saved'], 455 + properties: { 456 + pinned: { 457 + type: 'array', 458 + items: { 459 + type: 'string', 460 + format: 'at-uri', 461 + }, 462 + }, 463 + saved: { 464 + type: 'array', 465 + items: { 466 + type: 'string', 467 + format: 'at-uri', 468 + }, 469 + }, 470 + timelineIndex: { 471 + type: 'integer', 472 + }, 473 + }, 474 + }, 475 + personalDetailsPref: { 476 + type: 'object', 477 + properties: { 478 + birthDate: { 479 + type: 'string', 480 + format: 'datetime', 481 + description: 'The birth date of account owner.', 482 + }, 483 + }, 484 + }, 485 + feedViewPref: { 486 + type: 'object', 487 + required: ['feed'], 488 + properties: { 489 + feed: { 490 + type: 'string', 491 + description: 492 + 'The URI of the feed, or an identifier which describes the feed.', 493 + }, 494 + hideReplies: { 495 + type: 'boolean', 496 + description: 'Hide replies in the feed.', 497 + }, 498 + hideRepliesByUnfollowed: { 499 + type: 'boolean', 500 + description: 501 + 'Hide replies in the feed if they are not by followed users.', 502 + default: true, 503 + }, 504 + hideRepliesByLikeCount: { 505 + type: 'integer', 506 + description: 507 + 'Hide replies in the feed if they do not have this number of likes.', 508 + }, 509 + hideReposts: { 510 + type: 'boolean', 511 + description: 'Hide reposts in the feed.', 512 + }, 513 + hideQuotePosts: { 514 + type: 'boolean', 515 + description: 'Hide quote posts in the feed.', 516 + }, 517 + }, 518 + }, 519 + threadViewPref: { 520 + type: 'object', 521 + properties: { 522 + sort: { 523 + type: 'string', 524 + description: 'Sorting mode for threads.', 525 + knownValues: [ 526 + 'oldest', 527 + 'newest', 528 + 'most-likes', 529 + 'random', 530 + 'hotness', 531 + ], 532 + }, 533 + prioritizeFollowedUsers: { 534 + type: 'boolean', 535 + description: 'Show followed users at the top of all replies.', 536 + }, 537 + }, 538 + }, 539 + interestsPref: { 540 + type: 'object', 541 + required: ['tags'], 542 + properties: { 543 + tags: { 544 + type: 'array', 545 + maxLength: 100, 546 + items: { 547 + type: 'string', 548 + maxLength: 640, 549 + maxGraphemes: 64, 550 + }, 551 + description: 552 + "A list of tags which describe the account owner's interests gathered during onboarding.", 553 + }, 554 + }, 555 + }, 556 + mutedWordTarget: { 557 + type: 'string', 558 + knownValues: ['content', 'tag'], 559 + maxLength: 640, 560 + maxGraphemes: 64, 561 + }, 562 + mutedWord: { 563 + type: 'object', 564 + description: 'A word that the account owner has muted.', 565 + required: ['value', 'targets'], 566 + properties: { 567 + id: { 568 + type: 'string', 569 + }, 570 + value: { 571 + type: 'string', 572 + description: 'The muted word itself.', 573 + maxLength: 10000, 574 + maxGraphemes: 1000, 575 + }, 576 + targets: { 577 + type: 'array', 578 + description: 'The intended targets of the muted word.', 579 + items: { 580 + type: 'ref', 581 + ref: 'lex:app.bsky.actor.defs#mutedWordTarget', 582 + }, 583 + }, 584 + actorTarget: { 585 + type: 'string', 586 + description: 587 + 'Groups of users to apply the muted word to. If undefined, applies to all users.', 588 + knownValues: ['all', 'exclude-following'], 589 + default: 'all', 590 + }, 591 + expiresAt: { 592 + type: 'string', 593 + format: 'datetime', 594 + description: 595 + 'The date and time at which the muted word will expire and no longer be applied.', 596 + }, 597 + }, 598 + }, 599 + mutedWordsPref: { 600 + type: 'object', 601 + required: ['items'], 602 + properties: { 603 + items: { 604 + type: 'array', 605 + items: { 606 + type: 'ref', 607 + ref: 'lex:app.bsky.actor.defs#mutedWord', 608 + }, 609 + description: 'A list of words the account owner has muted.', 610 + }, 611 + }, 612 + }, 613 + hiddenPostsPref: { 614 + type: 'object', 615 + required: ['items'], 616 + properties: { 617 + items: { 618 + type: 'array', 619 + items: { 620 + type: 'string', 621 + format: 'at-uri', 622 + }, 623 + description: 624 + 'A list of URIs of posts the account owner has hidden.', 625 + }, 626 + }, 627 + }, 628 + labelersPref: { 629 + type: 'object', 630 + required: ['labelers'], 631 + properties: { 632 + labelers: { 633 + type: 'array', 634 + items: { 635 + type: 'ref', 636 + ref: 'lex:app.bsky.actor.defs#labelerPrefItem', 637 + }, 638 + }, 639 + }, 640 + }, 641 + labelerPrefItem: { 642 + type: 'object', 643 + required: ['did'], 644 + properties: { 645 + did: { 646 + type: 'string', 647 + format: 'did', 648 + }, 649 + }, 650 + }, 651 + bskyAppStatePref: { 652 + description: 653 + "A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this.", 654 + type: 'object', 655 + properties: { 656 + activeProgressGuide: { 657 + type: 'ref', 658 + ref: 'lex:app.bsky.actor.defs#bskyAppProgressGuide', 659 + }, 660 + queuedNudges: { 661 + description: 662 + 'An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.', 663 + type: 'array', 664 + maxLength: 1000, 665 + items: { 666 + type: 'string', 667 + maxLength: 100, 668 + }, 669 + }, 670 + nuxs: { 671 + description: 'Storage for NUXs the user has encountered.', 672 + type: 'array', 673 + maxLength: 100, 674 + items: { 675 + type: 'ref', 676 + ref: 'lex:app.bsky.actor.defs#nux', 677 + }, 678 + }, 679 + }, 680 + }, 681 + bskyAppProgressGuide: { 682 + description: 683 + 'If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress.', 684 + type: 'object', 685 + required: ['guide'], 686 + properties: { 687 + guide: { 688 + type: 'string', 689 + maxLength: 100, 690 + }, 691 + }, 692 + }, 693 + nux: { 694 + type: 'object', 695 + description: 'A new user experiences (NUX) storage object', 696 + required: ['id', 'completed'], 697 + properties: { 698 + id: { 699 + type: 'string', 700 + maxLength: 100, 701 + }, 702 + completed: { 703 + type: 'boolean', 704 + default: false, 705 + }, 706 + data: { 707 + description: 708 + 'Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.', 709 + type: 'string', 710 + maxLength: 3000, 711 + maxGraphemes: 300, 712 + }, 713 + expiresAt: { 714 + type: 'string', 715 + format: 'datetime', 716 + description: 717 + 'The date and time at which the NUX will expire and should be considered completed.', 718 + }, 719 + }, 720 + }, 721 + verificationPrefs: { 722 + type: 'object', 723 + description: 'Preferences for how verified accounts appear in the app.', 724 + required: [], 725 + properties: { 726 + hideBadges: { 727 + description: 728 + 'Hide the blue check badges for verified accounts and trusted verifiers.', 729 + type: 'boolean', 730 + default: false, 731 + }, 732 + }, 733 + }, 734 + postInteractionSettingsPref: { 735 + type: 'object', 736 + description: 737 + 'Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly.', 738 + required: [], 739 + properties: { 740 + threadgateAllowRules: { 741 + description: 742 + 'Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply.', 743 + type: 'array', 744 + maxLength: 5, 745 + items: { 746 + type: 'union', 747 + refs: [ 748 + 'lex:app.bsky.feed.threadgate#mentionRule', 749 + 'lex:app.bsky.feed.threadgate#followerRule', 750 + 'lex:app.bsky.feed.threadgate#followingRule', 751 + 'lex:app.bsky.feed.threadgate#listRule', 752 + ], 753 + }, 754 + }, 755 + postgateEmbeddingRules: { 756 + description: 757 + 'Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed.', 758 + type: 'array', 759 + maxLength: 5, 760 + items: { 761 + type: 'union', 762 + refs: ['lex:app.bsky.feed.postgate#disableRule'], 763 + }, 764 + }, 765 + }, 766 + }, 767 + statusView: { 768 + type: 'object', 769 + required: ['status', 'record'], 770 + properties: { 771 + status: { 772 + type: 'string', 773 + description: 'The status for the account.', 774 + knownValues: ['app.bsky.actor.status#live'], 775 + }, 776 + record: { 777 + type: 'unknown', 778 + }, 779 + embed: { 780 + type: 'union', 781 + description: 'An optional embed associated with the status.', 782 + refs: ['lex:app.bsky.embed.external#view'], 783 + }, 784 + expiresAt: { 785 + type: 'string', 786 + description: 787 + 'The date when this status will expire. The application might choose to no longer return the status after expiration.', 788 + format: 'datetime', 789 + }, 790 + isActive: { 791 + type: 'boolean', 792 + description: 793 + 'True if the status is not expired, false if it is expired. Only present if expiration was set.', 794 + }, 795 + }, 796 + }, 797 + }, 798 + }, 799 + AppBskyActorGetProfile: { 800 + lexicon: 1, 801 + id: 'app.bsky.actor.getProfile', 802 + defs: { 803 + main: { 804 + type: 'query', 805 + description: 806 + 'Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth.', 807 + parameters: { 808 + type: 'params', 809 + required: ['actor'], 810 + properties: { 811 + actor: { 812 + type: 'string', 813 + format: 'at-identifier', 814 + description: 'Handle or DID of account to fetch profile of.', 815 + }, 816 + }, 817 + }, 818 + output: { 819 + encoding: 'application/json', 820 + schema: { 821 + type: 'ref', 822 + ref: 'lex:app.bsky.actor.defs#profileViewDetailed', 823 + }, 824 + }, 825 + }, 826 + }, 827 + }, 828 + AppBskyActorGetProfiles: { 829 + lexicon: 1, 830 + id: 'app.bsky.actor.getProfiles', 831 + defs: { 832 + main: { 833 + type: 'query', 834 + description: 'Get detailed profile views of multiple actors.', 835 + parameters: { 836 + type: 'params', 837 + required: ['actors'], 838 + properties: { 839 + actors: { 840 + type: 'array', 841 + items: { 842 + type: 'string', 843 + format: 'at-identifier', 844 + }, 845 + maxLength: 25, 846 + }, 847 + }, 848 + }, 849 + output: { 850 + encoding: 'application/json', 851 + schema: { 852 + type: 'object', 853 + required: ['profiles'], 854 + properties: { 855 + profiles: { 856 + type: 'array', 857 + items: { 858 + type: 'ref', 859 + ref: 'lex:app.bsky.actor.defs#profileViewDetailed', 860 + }, 861 + }, 862 + }, 863 + }, 864 + }, 865 + }, 866 + }, 867 + }, 868 + AppBskyEmbedDefs: { 869 + lexicon: 1, 870 + id: 'app.bsky.embed.defs', 871 + defs: { 872 + aspectRatio: { 873 + type: 'object', 874 + description: 875 + 'width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.', 876 + required: ['width', 'height'], 877 + properties: { 878 + width: { 879 + type: 'integer', 880 + minimum: 1, 881 + }, 882 + height: { 883 + type: 'integer', 884 + minimum: 1, 885 + }, 886 + }, 887 + }, 888 + }, 889 + }, 890 + AppBskyEmbedExternal: { 891 + lexicon: 1, 892 + id: 'app.bsky.embed.external', 893 + defs: { 894 + main: { 895 + type: 'object', 896 + description: 897 + "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).", 898 + required: ['external'], 899 + properties: { 900 + external: { 901 + type: 'ref', 902 + ref: 'lex:app.bsky.embed.external#external', 903 + }, 904 + }, 905 + }, 906 + external: { 907 + type: 'object', 908 + required: ['uri', 'title', 'description'], 909 + properties: { 910 + uri: { 911 + type: 'string', 912 + format: 'uri', 913 + }, 914 + title: { 915 + type: 'string', 916 + }, 917 + description: { 918 + type: 'string', 919 + }, 920 + thumb: { 921 + type: 'blob', 922 + accept: ['image/*'], 923 + maxSize: 1000000, 924 + }, 925 + }, 926 + }, 927 + view: { 928 + type: 'object', 929 + required: ['external'], 930 + properties: { 931 + external: { 932 + type: 'ref', 933 + ref: 'lex:app.bsky.embed.external#viewExternal', 934 + }, 935 + }, 936 + }, 937 + viewExternal: { 938 + type: 'object', 939 + required: ['uri', 'title', 'description'], 940 + properties: { 941 + uri: { 942 + type: 'string', 943 + format: 'uri', 944 + }, 945 + title: { 946 + type: 'string', 947 + }, 948 + description: { 949 + type: 'string', 950 + }, 951 + thumb: { 952 + type: 'string', 953 + format: 'uri', 954 + }, 955 + }, 956 + }, 957 + }, 958 + }, 959 + AppBskyEmbedImages: { 960 + lexicon: 1, 961 + id: 'app.bsky.embed.images', 962 + description: 'A set of images embedded in a Bluesky record (eg, a post).', 963 + defs: { 964 + main: { 965 + type: 'object', 966 + required: ['images'], 967 + properties: { 968 + images: { 969 + type: 'array', 970 + items: { 971 + type: 'ref', 972 + ref: 'lex:app.bsky.embed.images#image', 973 + }, 974 + maxLength: 4, 975 + }, 976 + }, 977 + }, 978 + image: { 979 + type: 'object', 980 + required: ['image', 'alt'], 981 + properties: { 982 + image: { 983 + type: 'blob', 984 + accept: ['image/*'], 985 + maxSize: 1000000, 986 + }, 987 + alt: { 988 + type: 'string', 989 + description: 990 + 'Alt text description of the image, for accessibility.', 991 + }, 992 + aspectRatio: { 993 + type: 'ref', 994 + ref: 'lex:app.bsky.embed.defs#aspectRatio', 995 + }, 996 + }, 997 + }, 998 + view: { 999 + type: 'object', 1000 + required: ['images'], 1001 + properties: { 1002 + images: { 1003 + type: 'array', 1004 + items: { 1005 + type: 'ref', 1006 + ref: 'lex:app.bsky.embed.images#viewImage', 1007 + }, 1008 + maxLength: 4, 1009 + }, 1010 + }, 1011 + }, 1012 + viewImage: { 1013 + type: 'object', 1014 + required: ['thumb', 'fullsize', 'alt'], 1015 + properties: { 1016 + thumb: { 1017 + type: 'string', 1018 + format: 'uri', 1019 + description: 1020 + 'Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View.', 1021 + }, 1022 + fullsize: { 1023 + type: 'string', 1024 + format: 'uri', 1025 + description: 1026 + '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.', 1027 + }, 1028 + alt: { 1029 + type: 'string', 1030 + description: 1031 + 'Alt text description of the image, for accessibility.', 1032 + }, 1033 + aspectRatio: { 1034 + type: 'ref', 1035 + ref: 'lex:app.bsky.embed.defs#aspectRatio', 1036 + }, 1037 + }, 1038 + }, 1039 + }, 1040 + }, 1041 + AppBskyEmbedRecord: { 1042 + lexicon: 1, 1043 + id: 'app.bsky.embed.record', 1044 + description: 1045 + 'A representation of a record embedded in a Bluesky record (eg, a post). For example, a quote-post, or sharing a feed generator record.', 1046 + defs: { 1047 + main: { 1048 + type: 'object', 1049 + required: ['record'], 1050 + properties: { 1051 + record: { 1052 + type: 'ref', 1053 + ref: 'lex:com.atproto.repo.strongRef', 1054 + }, 1055 + }, 1056 + }, 1057 + view: { 1058 + type: 'object', 1059 + required: ['record'], 1060 + properties: { 1061 + record: { 1062 + type: 'union', 1063 + refs: [ 1064 + 'lex:app.bsky.embed.record#viewRecord', 1065 + 'lex:app.bsky.embed.record#viewNotFound', 1066 + 'lex:app.bsky.embed.record#viewBlocked', 1067 + 'lex:app.bsky.embed.record#viewDetached', 1068 + 'lex:app.bsky.feed.defs#generatorView', 1069 + 'lex:app.bsky.graph.defs#listView', 1070 + 'lex:app.bsky.labeler.defs#labelerView', 1071 + 'lex:app.bsky.graph.defs#starterPackViewBasic', 1072 + ], 1073 + }, 1074 + }, 1075 + }, 1076 + viewRecord: { 1077 + type: 'object', 1078 + required: ['uri', 'cid', 'author', 'value', 'indexedAt'], 1079 + properties: { 1080 + uri: { 1081 + type: 'string', 1082 + format: 'at-uri', 1083 + }, 1084 + cid: { 1085 + type: 'string', 1086 + format: 'cid', 1087 + }, 1088 + author: { 1089 + type: 'ref', 1090 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 1091 + }, 1092 + value: { 1093 + type: 'unknown', 1094 + description: 'The record data itself.', 1095 + }, 1096 + labels: { 1097 + type: 'array', 1098 + items: { 1099 + type: 'ref', 1100 + ref: 'lex:com.atproto.label.defs#label', 1101 + }, 1102 + }, 1103 + replyCount: { 1104 + type: 'integer', 1105 + }, 1106 + repostCount: { 1107 + type: 'integer', 1108 + }, 1109 + likeCount: { 1110 + type: 'integer', 1111 + }, 1112 + quoteCount: { 1113 + type: 'integer', 1114 + }, 1115 + embeds: { 1116 + type: 'array', 1117 + items: { 1118 + type: 'union', 1119 + refs: [ 1120 + 'lex:app.bsky.embed.images#view', 1121 + 'lex:app.bsky.embed.video#view', 1122 + 'lex:app.bsky.embed.external#view', 1123 + 'lex:app.bsky.embed.record#view', 1124 + 'lex:app.bsky.embed.recordWithMedia#view', 1125 + ], 1126 + }, 1127 + }, 1128 + indexedAt: { 1129 + type: 'string', 1130 + format: 'datetime', 1131 + }, 1132 + }, 1133 + }, 1134 + viewNotFound: { 1135 + type: 'object', 1136 + required: ['uri', 'notFound'], 1137 + properties: { 1138 + uri: { 1139 + type: 'string', 1140 + format: 'at-uri', 1141 + }, 1142 + notFound: { 1143 + type: 'boolean', 1144 + const: true, 1145 + }, 1146 + }, 1147 + }, 1148 + viewBlocked: { 1149 + type: 'object', 1150 + required: ['uri', 'blocked', 'author'], 1151 + properties: { 1152 + uri: { 1153 + type: 'string', 1154 + format: 'at-uri', 1155 + }, 1156 + blocked: { 1157 + type: 'boolean', 1158 + const: true, 1159 + }, 1160 + author: { 1161 + type: 'ref', 1162 + ref: 'lex:app.bsky.feed.defs#blockedAuthor', 1163 + }, 1164 + }, 1165 + }, 1166 + viewDetached: { 1167 + type: 'object', 1168 + required: ['uri', 'detached'], 1169 + properties: { 1170 + uri: { 1171 + type: 'string', 1172 + format: 'at-uri', 1173 + }, 1174 + detached: { 1175 + type: 'boolean', 1176 + const: true, 1177 + }, 1178 + }, 1179 + }, 1180 + }, 1181 + }, 1182 + AppBskyEmbedRecordWithMedia: { 1183 + lexicon: 1, 1184 + id: 'app.bsky.embed.recordWithMedia', 1185 + description: 1186 + '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.', 1187 + defs: { 1188 + main: { 1189 + type: 'object', 1190 + required: ['record', 'media'], 1191 + properties: { 1192 + record: { 1193 + type: 'ref', 1194 + ref: 'lex:app.bsky.embed.record', 1195 + }, 1196 + media: { 1197 + type: 'union', 1198 + refs: [ 1199 + 'lex:app.bsky.embed.images', 1200 + 'lex:app.bsky.embed.video', 1201 + 'lex:app.bsky.embed.external', 1202 + ], 1203 + }, 1204 + }, 1205 + }, 1206 + view: { 1207 + type: 'object', 1208 + required: ['record', 'media'], 1209 + properties: { 1210 + record: { 1211 + type: 'ref', 1212 + ref: 'lex:app.bsky.embed.record#view', 1213 + }, 1214 + media: { 1215 + type: 'union', 1216 + refs: [ 1217 + 'lex:app.bsky.embed.images#view', 1218 + 'lex:app.bsky.embed.video#view', 1219 + 'lex:app.bsky.embed.external#view', 1220 + ], 1221 + }, 1222 + }, 1223 + }, 1224 + }, 1225 + }, 1226 + AppBskyEmbedVideo: { 1227 + lexicon: 1, 1228 + id: 'app.bsky.embed.video', 1229 + description: 'A video embedded in a Bluesky record (eg, a post).', 1230 + defs: { 1231 + main: { 1232 + type: 'object', 1233 + required: ['video'], 1234 + properties: { 1235 + video: { 1236 + type: 'blob', 1237 + description: 1238 + 'The mp4 video file. May be up to 100mb, formerly limited to 50mb.', 1239 + accept: ['video/mp4'], 1240 + maxSize: 100000000, 1241 + }, 1242 + captions: { 1243 + type: 'array', 1244 + items: { 1245 + type: 'ref', 1246 + ref: 'lex:app.bsky.embed.video#caption', 1247 + }, 1248 + maxLength: 20, 1249 + }, 1250 + alt: { 1251 + type: 'string', 1252 + description: 1253 + 'Alt text description of the video, for accessibility.', 1254 + maxGraphemes: 1000, 1255 + maxLength: 10000, 1256 + }, 1257 + aspectRatio: { 1258 + type: 'ref', 1259 + ref: 'lex:app.bsky.embed.defs#aspectRatio', 1260 + }, 1261 + }, 1262 + }, 1263 + caption: { 1264 + type: 'object', 1265 + required: ['lang', 'file'], 1266 + properties: { 1267 + lang: { 1268 + type: 'string', 1269 + format: 'language', 1270 + }, 1271 + file: { 1272 + type: 'blob', 1273 + accept: ['text/vtt'], 1274 + maxSize: 20000, 1275 + }, 1276 + }, 1277 + }, 1278 + view: { 1279 + type: 'object', 1280 + required: ['cid', 'playlist'], 1281 + properties: { 1282 + cid: { 1283 + type: 'string', 1284 + format: 'cid', 1285 + }, 1286 + playlist: { 1287 + type: 'string', 1288 + format: 'uri', 1289 + }, 1290 + thumbnail: { 1291 + type: 'string', 1292 + format: 'uri', 1293 + }, 1294 + alt: { 1295 + type: 'string', 1296 + maxGraphemes: 1000, 1297 + maxLength: 10000, 1298 + }, 1299 + aspectRatio: { 1300 + type: 'ref', 1301 + ref: 'lex:app.bsky.embed.defs#aspectRatio', 1302 + }, 1303 + }, 1304 + }, 1305 + }, 1306 + }, 1307 + AppBskyFeedDefs: { 1308 + lexicon: 1, 1309 + id: 'app.bsky.feed.defs', 1310 + defs: { 1311 + postView: { 1312 + type: 'object', 1313 + required: ['uri', 'cid', 'author', 'record', 'indexedAt'], 1314 + properties: { 1315 + uri: { 1316 + type: 'string', 1317 + format: 'at-uri', 1318 + }, 1319 + cid: { 1320 + type: 'string', 1321 + format: 'cid', 1322 + }, 1323 + author: { 1324 + type: 'ref', 1325 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 1326 + }, 1327 + record: { 1328 + type: 'unknown', 1329 + }, 1330 + embed: { 1331 + type: 'union', 1332 + refs: [ 1333 + 'lex:app.bsky.embed.images#view', 1334 + 'lex:app.bsky.embed.video#view', 1335 + 'lex:app.bsky.embed.external#view', 1336 + 'lex:app.bsky.embed.record#view', 1337 + 'lex:app.bsky.embed.recordWithMedia#view', 1338 + ], 1339 + }, 1340 + replyCount: { 1341 + type: 'integer', 1342 + }, 1343 + repostCount: { 1344 + type: 'integer', 1345 + }, 1346 + likeCount: { 1347 + type: 'integer', 1348 + }, 1349 + quoteCount: { 1350 + type: 'integer', 1351 + }, 1352 + indexedAt: { 1353 + type: 'string', 1354 + format: 'datetime', 1355 + }, 1356 + viewer: { 1357 + type: 'ref', 1358 + ref: 'lex:app.bsky.feed.defs#viewerState', 1359 + }, 1360 + labels: { 1361 + type: 'array', 1362 + items: { 1363 + type: 'ref', 1364 + ref: 'lex:com.atproto.label.defs#label', 1365 + }, 1366 + }, 1367 + threadgate: { 1368 + type: 'ref', 1369 + ref: 'lex:app.bsky.feed.defs#threadgateView', 1370 + }, 1371 + }, 1372 + }, 1373 + viewerState: { 1374 + type: 'object', 1375 + description: 1376 + "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.", 1377 + properties: { 1378 + repost: { 1379 + type: 'string', 1380 + format: 'at-uri', 1381 + }, 1382 + like: { 1383 + type: 'string', 1384 + format: 'at-uri', 1385 + }, 1386 + threadMuted: { 1387 + type: 'boolean', 1388 + }, 1389 + replyDisabled: { 1390 + type: 'boolean', 1391 + }, 1392 + embeddingDisabled: { 1393 + type: 'boolean', 1394 + }, 1395 + pinned: { 1396 + type: 'boolean', 1397 + }, 1398 + }, 1399 + }, 1400 + threadContext: { 1401 + type: 'object', 1402 + description: 1403 + 'Metadata about this post within the context of the thread it is in.', 1404 + properties: { 1405 + rootAuthorLike: { 1406 + type: 'string', 1407 + format: 'at-uri', 1408 + }, 1409 + }, 1410 + }, 1411 + feedViewPost: { 1412 + type: 'object', 1413 + required: ['post'], 1414 + properties: { 1415 + post: { 1416 + type: 'ref', 1417 + ref: 'lex:app.bsky.feed.defs#postView', 1418 + }, 1419 + reply: { 1420 + type: 'ref', 1421 + ref: 'lex:app.bsky.feed.defs#replyRef', 1422 + }, 1423 + reason: { 1424 + type: 'union', 1425 + refs: [ 1426 + 'lex:app.bsky.feed.defs#reasonRepost', 1427 + 'lex:app.bsky.feed.defs#reasonPin', 1428 + ], 1429 + }, 1430 + feedContext: { 1431 + type: 'string', 1432 + description: 1433 + 'Context provided by feed generator that may be passed back alongside interactions.', 1434 + maxLength: 2000, 1435 + }, 1436 + reqId: { 1437 + type: 'string', 1438 + description: 1439 + 'Unique identifier per request that may be passed back alongside interactions.', 1440 + maxLength: 100, 1441 + }, 1442 + }, 1443 + }, 1444 + replyRef: { 1445 + type: 'object', 1446 + required: ['root', 'parent'], 1447 + properties: { 1448 + root: { 1449 + type: 'union', 1450 + refs: [ 1451 + 'lex:app.bsky.feed.defs#postView', 1452 + 'lex:app.bsky.feed.defs#notFoundPost', 1453 + 'lex:app.bsky.feed.defs#blockedPost', 1454 + ], 1455 + }, 1456 + parent: { 1457 + type: 'union', 1458 + refs: [ 1459 + 'lex:app.bsky.feed.defs#postView', 1460 + 'lex:app.bsky.feed.defs#notFoundPost', 1461 + 'lex:app.bsky.feed.defs#blockedPost', 1462 + ], 1463 + }, 1464 + grandparentAuthor: { 1465 + type: 'ref', 1466 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 1467 + description: 1468 + 'When parent is a reply to another post, this is the author of that post.', 1469 + }, 1470 + }, 1471 + }, 1472 + reasonRepost: { 1473 + type: 'object', 1474 + required: ['by', 'indexedAt'], 1475 + properties: { 1476 + by: { 1477 + type: 'ref', 1478 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 1479 + }, 1480 + uri: { 1481 + type: 'string', 1482 + format: 'at-uri', 1483 + }, 1484 + cid: { 1485 + type: 'string', 1486 + format: 'cid', 1487 + }, 1488 + indexedAt: { 1489 + type: 'string', 1490 + format: 'datetime', 1491 + }, 1492 + }, 1493 + }, 1494 + reasonPin: { 1495 + type: 'object', 1496 + properties: {}, 1497 + }, 1498 + threadViewPost: { 1499 + type: 'object', 1500 + required: ['post'], 1501 + properties: { 1502 + post: { 1503 + type: 'ref', 1504 + ref: 'lex:app.bsky.feed.defs#postView', 1505 + }, 1506 + parent: { 1507 + type: 'union', 1508 + refs: [ 1509 + 'lex:app.bsky.feed.defs#threadViewPost', 1510 + 'lex:app.bsky.feed.defs#notFoundPost', 1511 + 'lex:app.bsky.feed.defs#blockedPost', 1512 + ], 1513 + }, 1514 + replies: { 1515 + type: 'array', 1516 + items: { 1517 + type: 'union', 1518 + refs: [ 1519 + 'lex:app.bsky.feed.defs#threadViewPost', 1520 + 'lex:app.bsky.feed.defs#notFoundPost', 1521 + 'lex:app.bsky.feed.defs#blockedPost', 1522 + ], 1523 + }, 1524 + }, 1525 + threadContext: { 1526 + type: 'ref', 1527 + ref: 'lex:app.bsky.feed.defs#threadContext', 1528 + }, 1529 + }, 1530 + }, 1531 + notFoundPost: { 1532 + type: 'object', 1533 + required: ['uri', 'notFound'], 1534 + properties: { 1535 + uri: { 1536 + type: 'string', 1537 + format: 'at-uri', 1538 + }, 1539 + notFound: { 1540 + type: 'boolean', 1541 + const: true, 1542 + }, 1543 + }, 1544 + }, 1545 + blockedPost: { 1546 + type: 'object', 1547 + required: ['uri', 'blocked', 'author'], 1548 + properties: { 1549 + uri: { 1550 + type: 'string', 1551 + format: 'at-uri', 1552 + }, 1553 + blocked: { 1554 + type: 'boolean', 1555 + const: true, 1556 + }, 1557 + author: { 1558 + type: 'ref', 1559 + ref: 'lex:app.bsky.feed.defs#blockedAuthor', 1560 + }, 1561 + }, 1562 + }, 1563 + blockedAuthor: { 1564 + type: 'object', 1565 + required: ['did'], 1566 + properties: { 1567 + did: { 1568 + type: 'string', 1569 + format: 'did', 1570 + }, 1571 + viewer: { 1572 + type: 'ref', 1573 + ref: 'lex:app.bsky.actor.defs#viewerState', 1574 + }, 1575 + }, 1576 + }, 1577 + generatorView: { 1578 + type: 'object', 1579 + required: ['uri', 'cid', 'did', 'creator', 'displayName', 'indexedAt'], 1580 + properties: { 1581 + uri: { 1582 + type: 'string', 1583 + format: 'at-uri', 1584 + }, 1585 + cid: { 1586 + type: 'string', 1587 + format: 'cid', 1588 + }, 1589 + did: { 1590 + type: 'string', 1591 + format: 'did', 1592 + }, 1593 + creator: { 1594 + type: 'ref', 1595 + ref: 'lex:app.bsky.actor.defs#profileView', 1596 + }, 1597 + displayName: { 1598 + type: 'string', 1599 + }, 1600 + description: { 1601 + type: 'string', 1602 + maxGraphemes: 300, 1603 + maxLength: 3000, 1604 + }, 1605 + descriptionFacets: { 1606 + type: 'array', 1607 + items: { 1608 + type: 'ref', 1609 + ref: 'lex:app.bsky.richtext.facet', 1610 + }, 1611 + }, 1612 + avatar: { 1613 + type: 'string', 1614 + format: 'uri', 1615 + }, 1616 + likeCount: { 1617 + type: 'integer', 1618 + minimum: 0, 1619 + }, 1620 + acceptsInteractions: { 1621 + type: 'boolean', 1622 + }, 1623 + labels: { 1624 + type: 'array', 1625 + items: { 1626 + type: 'ref', 1627 + ref: 'lex:com.atproto.label.defs#label', 1628 + }, 1629 + }, 1630 + viewer: { 1631 + type: 'ref', 1632 + ref: 'lex:app.bsky.feed.defs#generatorViewerState', 1633 + }, 1634 + contentMode: { 1635 + type: 'string', 1636 + knownValues: [ 1637 + 'app.bsky.feed.defs#contentModeUnspecified', 1638 + 'app.bsky.feed.defs#contentModeVideo', 1639 + ], 1640 + }, 1641 + indexedAt: { 1642 + type: 'string', 1643 + format: 'datetime', 1644 + }, 1645 + }, 1646 + }, 1647 + generatorViewerState: { 1648 + type: 'object', 1649 + properties: { 1650 + like: { 1651 + type: 'string', 1652 + format: 'at-uri', 1653 + }, 1654 + }, 1655 + }, 1656 + skeletonFeedPost: { 1657 + type: 'object', 1658 + required: ['post'], 1659 + properties: { 1660 + post: { 1661 + type: 'string', 1662 + format: 'at-uri', 1663 + }, 1664 + reason: { 1665 + type: 'union', 1666 + refs: [ 1667 + 'lex:app.bsky.feed.defs#skeletonReasonRepost', 1668 + 'lex:app.bsky.feed.defs#skeletonReasonPin', 1669 + ], 1670 + }, 1671 + feedContext: { 1672 + type: 'string', 1673 + description: 1674 + 'Context that will be passed through to client and may be passed to feed generator back alongside interactions.', 1675 + maxLength: 2000, 1676 + }, 1677 + }, 1678 + }, 1679 + skeletonReasonRepost: { 1680 + type: 'object', 1681 + required: ['repost'], 1682 + properties: { 1683 + repost: { 1684 + type: 'string', 1685 + format: 'at-uri', 1686 + }, 1687 + }, 1688 + }, 1689 + skeletonReasonPin: { 1690 + type: 'object', 1691 + properties: {}, 1692 + }, 1693 + threadgateView: { 1694 + type: 'object', 1695 + properties: { 1696 + uri: { 1697 + type: 'string', 1698 + format: 'at-uri', 1699 + }, 1700 + cid: { 1701 + type: 'string', 1702 + format: 'cid', 1703 + }, 1704 + record: { 1705 + type: 'unknown', 1706 + }, 1707 + lists: { 1708 + type: 'array', 1709 + items: { 1710 + type: 'ref', 1711 + ref: 'lex:app.bsky.graph.defs#listViewBasic', 1712 + }, 1713 + }, 1714 + }, 1715 + }, 1716 + interaction: { 1717 + type: 'object', 1718 + properties: { 1719 + item: { 1720 + type: 'string', 1721 + format: 'at-uri', 1722 + }, 1723 + event: { 1724 + type: 'string', 1725 + knownValues: [ 1726 + 'app.bsky.feed.defs#requestLess', 1727 + 'app.bsky.feed.defs#requestMore', 1728 + 'app.bsky.feed.defs#clickthroughItem', 1729 + 'app.bsky.feed.defs#clickthroughAuthor', 1730 + 'app.bsky.feed.defs#clickthroughReposter', 1731 + 'app.bsky.feed.defs#clickthroughEmbed', 1732 + 'app.bsky.feed.defs#interactionSeen', 1733 + 'app.bsky.feed.defs#interactionLike', 1734 + 'app.bsky.feed.defs#interactionRepost', 1735 + 'app.bsky.feed.defs#interactionReply', 1736 + 'app.bsky.feed.defs#interactionQuote', 1737 + 'app.bsky.feed.defs#interactionShare', 1738 + ], 1739 + }, 1740 + feedContext: { 1741 + type: 'string', 1742 + description: 1743 + 'Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.', 1744 + maxLength: 2000, 1745 + }, 1746 + reqId: { 1747 + type: 'string', 1748 + description: 1749 + 'Unique identifier per request that may be passed back alongside interactions.', 1750 + maxLength: 100, 1751 + }, 1752 + }, 1753 + }, 1754 + requestLess: { 1755 + type: 'token', 1756 + description: 1757 + 'Request that less content like the given feed item be shown in the feed', 1758 + }, 1759 + requestMore: { 1760 + type: 'token', 1761 + description: 1762 + 'Request that more content like the given feed item be shown in the feed', 1763 + }, 1764 + clickthroughItem: { 1765 + type: 'token', 1766 + description: 'User clicked through to the feed item', 1767 + }, 1768 + clickthroughAuthor: { 1769 + type: 'token', 1770 + description: 'User clicked through to the author of the feed item', 1771 + }, 1772 + clickthroughReposter: { 1773 + type: 'token', 1774 + description: 'User clicked through to the reposter of the feed item', 1775 + }, 1776 + clickthroughEmbed: { 1777 + type: 'token', 1778 + description: 1779 + 'User clicked through to the embedded content of the feed item', 1780 + }, 1781 + contentModeUnspecified: { 1782 + type: 'token', 1783 + description: 'Declares the feed generator returns any types of posts.', 1784 + }, 1785 + contentModeVideo: { 1786 + type: 'token', 1787 + description: 1788 + 'Declares the feed generator returns posts containing app.bsky.embed.video embeds.', 1789 + }, 1790 + interactionSeen: { 1791 + type: 'token', 1792 + description: 'Feed item was seen by user', 1793 + }, 1794 + interactionLike: { 1795 + type: 'token', 1796 + description: 'User liked the feed item', 1797 + }, 1798 + interactionRepost: { 1799 + type: 'token', 1800 + description: 'User reposted the feed item', 1801 + }, 1802 + interactionReply: { 1803 + type: 'token', 1804 + description: 'User replied to the feed item', 1805 + }, 1806 + interactionQuote: { 1807 + type: 'token', 1808 + description: 'User quoted the feed item', 1809 + }, 1810 + interactionShare: { 1811 + type: 'token', 1812 + description: 'User shared the feed item', 1813 + }, 1814 + }, 1815 + }, 1816 + AppBskyFeedGetActorFeeds: { 1817 + lexicon: 1, 1818 + id: 'app.bsky.feed.getActorFeeds', 1819 + defs: { 1820 + main: { 1821 + type: 'query', 1822 + description: 1823 + "Get a list of feeds (feed generator records) created by the actor (in the actor's repo).", 1824 + parameters: { 1825 + type: 'params', 1826 + required: ['actor'], 1827 + properties: { 1828 + actor: { 1829 + type: 'string', 1830 + format: 'at-identifier', 1831 + }, 1832 + limit: { 1833 + type: 'integer', 1834 + minimum: 1, 1835 + maximum: 100, 1836 + default: 50, 1837 + }, 1838 + cursor: { 1839 + type: 'string', 1840 + }, 1841 + }, 1842 + }, 1843 + output: { 1844 + encoding: 'application/json', 1845 + schema: { 1846 + type: 'object', 1847 + required: ['feeds'], 1848 + properties: { 1849 + cursor: { 1850 + type: 'string', 1851 + }, 1852 + feeds: { 1853 + type: 'array', 1854 + items: { 1855 + type: 'ref', 1856 + ref: 'lex:app.bsky.feed.defs#generatorView', 1857 + }, 1858 + }, 1859 + }, 1860 + }, 1861 + }, 1862 + }, 1863 + }, 1864 + }, 1865 + AppBskyFeedGetFeedGenerator: { 1866 + lexicon: 1, 1867 + id: 'app.bsky.feed.getFeedGenerator', 1868 + defs: { 1869 + main: { 1870 + type: 'query', 1871 + description: 1872 + 'Get information about a feed generator. Implemented by AppView.', 1873 + parameters: { 1874 + type: 'params', 1875 + required: ['feed'], 1876 + properties: { 1877 + feed: { 1878 + type: 'string', 1879 + format: 'at-uri', 1880 + description: 'AT-URI of the feed generator record.', 1881 + }, 1882 + }, 1883 + }, 1884 + output: { 1885 + encoding: 'application/json', 1886 + schema: { 1887 + type: 'object', 1888 + required: ['view', 'isOnline', 'isValid'], 1889 + properties: { 1890 + view: { 1891 + type: 'ref', 1892 + ref: 'lex:app.bsky.feed.defs#generatorView', 1893 + }, 1894 + isOnline: { 1895 + type: 'boolean', 1896 + description: 1897 + 'Indicates whether the feed generator service has been online recently, or else seems to be inactive.', 1898 + }, 1899 + isValid: { 1900 + type: 'boolean', 1901 + description: 1902 + 'Indicates whether the feed generator service is compatible with the record declaration.', 1903 + }, 1904 + }, 1905 + }, 1906 + }, 1907 + }, 1908 + }, 1909 + }, 1910 + AppBskyFeedGetFeedGenerators: { 1911 + lexicon: 1, 1912 + id: 'app.bsky.feed.getFeedGenerators', 1913 + defs: { 1914 + main: { 1915 + type: 'query', 1916 + description: 'Get information about a list of feed generators.', 1917 + parameters: { 1918 + type: 'params', 1919 + required: ['feeds'], 1920 + properties: { 1921 + feeds: { 1922 + type: 'array', 1923 + items: { 1924 + type: 'string', 1925 + format: 'at-uri', 1926 + }, 1927 + }, 1928 + }, 1929 + }, 1930 + output: { 1931 + encoding: 'application/json', 1932 + schema: { 1933 + type: 'object', 1934 + required: ['feeds'], 1935 + properties: { 1936 + feeds: { 1937 + type: 'array', 1938 + items: { 1939 + type: 'ref', 1940 + ref: 'lex:app.bsky.feed.defs#generatorView', 1941 + }, 1942 + }, 1943 + }, 1944 + }, 1945 + }, 1946 + }, 1947 + }, 1948 + }, 1949 + AppBskyFeedGetPosts: { 1950 + lexicon: 1, 1951 + id: 'app.bsky.feed.getPosts', 1952 + defs: { 1953 + main: { 1954 + type: 'query', 1955 + description: 1956 + "Gets post views for a specified list of posts (by AT-URI). This is sometimes referred to as 'hydrating' a 'feed skeleton'.", 1957 + parameters: { 1958 + type: 'params', 1959 + required: ['uris'], 1960 + properties: { 1961 + uris: { 1962 + type: 'array', 1963 + description: 'List of post AT-URIs to return hydrated views for.', 1964 + items: { 1965 + type: 'string', 1966 + format: 'at-uri', 1967 + }, 1968 + maxLength: 25, 1969 + }, 1970 + }, 1971 + }, 1972 + output: { 1973 + encoding: 'application/json', 1974 + schema: { 1975 + type: 'object', 1976 + required: ['posts'], 1977 + properties: { 1978 + posts: { 1979 + type: 'array', 1980 + items: { 1981 + type: 'ref', 1982 + ref: 'lex:app.bsky.feed.defs#postView', 1983 + }, 1984 + }, 1985 + }, 1986 + }, 1987 + }, 1988 + }, 1989 + }, 1990 + }, 1991 + AppBskyFeedPostgate: { 1992 + lexicon: 1, 1993 + id: 'app.bsky.feed.postgate', 1994 + defs: { 1995 + main: { 1996 + type: 'record', 1997 + key: 'tid', 1998 + description: 1999 + 'Record defining interaction rules for a post. The record key (rkey) of the postgate record must match the record key of the post, and that record must be in the same repository.', 2000 + record: { 2001 + type: 'object', 2002 + required: ['post', 'createdAt'], 2003 + properties: { 2004 + createdAt: { 2005 + type: 'string', 2006 + format: 'datetime', 2007 + }, 2008 + post: { 2009 + type: 'string', 2010 + format: 'at-uri', 2011 + description: 'Reference (AT-URI) to the post record.', 2012 + }, 2013 + detachedEmbeddingUris: { 2014 + type: 'array', 2015 + maxLength: 50, 2016 + items: { 2017 + type: 'string', 2018 + format: 'at-uri', 2019 + }, 2020 + description: 2021 + 'List of AT-URIs embedding this post that the author has detached from.', 2022 + }, 2023 + embeddingRules: { 2024 + description: 2025 + 'List of rules defining who can embed this post. If value is an empty array or is undefined, no particular rules apply and anyone can embed.', 2026 + type: 'array', 2027 + maxLength: 5, 2028 + items: { 2029 + type: 'union', 2030 + refs: ['lex:app.bsky.feed.postgate#disableRule'], 2031 + }, 2032 + }, 2033 + }, 2034 + }, 2035 + }, 2036 + disableRule: { 2037 + type: 'object', 2038 + description: 'Disables embedding of this post.', 2039 + properties: {}, 2040 + }, 2041 + }, 2042 + }, 2043 + AppBskyFeedThreadgate: { 2044 + lexicon: 1, 2045 + id: 'app.bsky.feed.threadgate', 2046 + defs: { 2047 + main: { 2048 + type: 'record', 2049 + key: 'tid', 2050 + description: 2051 + "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.", 2052 + record: { 2053 + type: 'object', 2054 + required: ['post', 'createdAt'], 2055 + properties: { 2056 + post: { 2057 + type: 'string', 2058 + format: 'at-uri', 2059 + description: 'Reference (AT-URI) to the post record.', 2060 + }, 2061 + allow: { 2062 + description: 2063 + 'List of rules defining who can reply to this post. If value is an empty array, no one can reply. If value is undefined, anyone can reply.', 2064 + type: 'array', 2065 + maxLength: 5, 2066 + items: { 2067 + type: 'union', 2068 + refs: [ 2069 + 'lex:app.bsky.feed.threadgate#mentionRule', 2070 + 'lex:app.bsky.feed.threadgate#followerRule', 2071 + 'lex:app.bsky.feed.threadgate#followingRule', 2072 + 'lex:app.bsky.feed.threadgate#listRule', 2073 + ], 2074 + }, 2075 + }, 2076 + createdAt: { 2077 + type: 'string', 2078 + format: 'datetime', 2079 + }, 2080 + hiddenReplies: { 2081 + type: 'array', 2082 + maxLength: 50, 2083 + items: { 2084 + type: 'string', 2085 + format: 'at-uri', 2086 + }, 2087 + description: 'List of hidden reply URIs.', 2088 + }, 2089 + }, 2090 + }, 2091 + }, 2092 + mentionRule: { 2093 + type: 'object', 2094 + description: 'Allow replies from actors mentioned in your post.', 2095 + properties: {}, 2096 + }, 2097 + followerRule: { 2098 + type: 'object', 2099 + description: 'Allow replies from actors who follow you.', 2100 + properties: {}, 2101 + }, 2102 + followingRule: { 2103 + type: 'object', 2104 + description: 'Allow replies from actors you follow.', 2105 + properties: {}, 2106 + }, 2107 + listRule: { 2108 + type: 'object', 2109 + description: 'Allow replies from actors on a list.', 2110 + required: ['list'], 2111 + properties: { 2112 + list: { 2113 + type: 'string', 2114 + format: 'at-uri', 2115 + }, 2116 + }, 2117 + }, 2118 + }, 2119 + }, 2120 + AppBskyGraphDefs: { 2121 + lexicon: 1, 2122 + id: 'app.bsky.graph.defs', 2123 + defs: { 2124 + listViewBasic: { 2125 + type: 'object', 2126 + required: ['uri', 'cid', 'name', 'purpose'], 2127 + properties: { 2128 + uri: { 2129 + type: 'string', 2130 + format: 'at-uri', 2131 + }, 2132 + cid: { 2133 + type: 'string', 2134 + format: 'cid', 2135 + }, 2136 + name: { 2137 + type: 'string', 2138 + maxLength: 64, 2139 + minLength: 1, 2140 + }, 2141 + purpose: { 2142 + type: 'ref', 2143 + ref: 'lex:app.bsky.graph.defs#listPurpose', 2144 + }, 2145 + avatar: { 2146 + type: 'string', 2147 + format: 'uri', 2148 + }, 2149 + listItemCount: { 2150 + type: 'integer', 2151 + minimum: 0, 2152 + }, 2153 + labels: { 2154 + type: 'array', 2155 + items: { 2156 + type: 'ref', 2157 + ref: 'lex:com.atproto.label.defs#label', 2158 + }, 2159 + }, 2160 + viewer: { 2161 + type: 'ref', 2162 + ref: 'lex:app.bsky.graph.defs#listViewerState', 2163 + }, 2164 + indexedAt: { 2165 + type: 'string', 2166 + format: 'datetime', 2167 + }, 2168 + }, 2169 + }, 2170 + listView: { 2171 + type: 'object', 2172 + required: ['uri', 'cid', 'creator', 'name', 'purpose', 'indexedAt'], 2173 + properties: { 2174 + uri: { 2175 + type: 'string', 2176 + format: 'at-uri', 2177 + }, 2178 + cid: { 2179 + type: 'string', 2180 + format: 'cid', 2181 + }, 2182 + creator: { 2183 + type: 'ref', 2184 + ref: 'lex:app.bsky.actor.defs#profileView', 2185 + }, 2186 + name: { 2187 + type: 'string', 2188 + maxLength: 64, 2189 + minLength: 1, 2190 + }, 2191 + purpose: { 2192 + type: 'ref', 2193 + ref: 'lex:app.bsky.graph.defs#listPurpose', 2194 + }, 2195 + description: { 2196 + type: 'string', 2197 + maxGraphemes: 300, 2198 + maxLength: 3000, 2199 + }, 2200 + descriptionFacets: { 2201 + type: 'array', 2202 + items: { 2203 + type: 'ref', 2204 + ref: 'lex:app.bsky.richtext.facet', 2205 + }, 2206 + }, 2207 + avatar: { 2208 + type: 'string', 2209 + format: 'uri', 2210 + }, 2211 + listItemCount: { 2212 + type: 'integer', 2213 + minimum: 0, 2214 + }, 2215 + labels: { 2216 + type: 'array', 2217 + items: { 2218 + type: 'ref', 2219 + ref: 'lex:com.atproto.label.defs#label', 2220 + }, 2221 + }, 2222 + viewer: { 2223 + type: 'ref', 2224 + ref: 'lex:app.bsky.graph.defs#listViewerState', 2225 + }, 2226 + indexedAt: { 2227 + type: 'string', 2228 + format: 'datetime', 2229 + }, 2230 + }, 2231 + }, 2232 + listItemView: { 2233 + type: 'object', 2234 + required: ['uri', 'subject'], 2235 + properties: { 2236 + uri: { 2237 + type: 'string', 2238 + format: 'at-uri', 2239 + }, 2240 + subject: { 2241 + type: 'ref', 2242 + ref: 'lex:app.bsky.actor.defs#profileView', 2243 + }, 2244 + }, 2245 + }, 2246 + starterPackView: { 2247 + type: 'object', 2248 + required: ['uri', 'cid', 'record', 'creator', 'indexedAt'], 2249 + properties: { 2250 + uri: { 2251 + type: 'string', 2252 + format: 'at-uri', 2253 + }, 2254 + cid: { 2255 + type: 'string', 2256 + format: 'cid', 2257 + }, 2258 + record: { 2259 + type: 'unknown', 2260 + }, 2261 + creator: { 2262 + type: 'ref', 2263 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 2264 + }, 2265 + list: { 2266 + type: 'ref', 2267 + ref: 'lex:app.bsky.graph.defs#listViewBasic', 2268 + }, 2269 + listItemsSample: { 2270 + type: 'array', 2271 + maxLength: 12, 2272 + items: { 2273 + type: 'ref', 2274 + ref: 'lex:app.bsky.graph.defs#listItemView', 2275 + }, 2276 + }, 2277 + feeds: { 2278 + type: 'array', 2279 + maxLength: 3, 2280 + items: { 2281 + type: 'ref', 2282 + ref: 'lex:app.bsky.feed.defs#generatorView', 2283 + }, 2284 + }, 2285 + joinedWeekCount: { 2286 + type: 'integer', 2287 + minimum: 0, 2288 + }, 2289 + joinedAllTimeCount: { 2290 + type: 'integer', 2291 + minimum: 0, 2292 + }, 2293 + labels: { 2294 + type: 'array', 2295 + items: { 2296 + type: 'ref', 2297 + ref: 'lex:com.atproto.label.defs#label', 2298 + }, 2299 + }, 2300 + indexedAt: { 2301 + type: 'string', 2302 + format: 'datetime', 2303 + }, 2304 + }, 2305 + }, 2306 + starterPackViewBasic: { 2307 + type: 'object', 2308 + required: ['uri', 'cid', 'record', 'creator', 'indexedAt'], 2309 + properties: { 2310 + uri: { 2311 + type: 'string', 2312 + format: 'at-uri', 2313 + }, 2314 + cid: { 2315 + type: 'string', 2316 + format: 'cid', 2317 + }, 2318 + record: { 2319 + type: 'unknown', 2320 + }, 2321 + creator: { 2322 + type: 'ref', 2323 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 2324 + }, 2325 + listItemCount: { 2326 + type: 'integer', 2327 + minimum: 0, 2328 + }, 2329 + joinedWeekCount: { 2330 + type: 'integer', 2331 + minimum: 0, 2332 + }, 2333 + joinedAllTimeCount: { 2334 + type: 'integer', 2335 + minimum: 0, 2336 + }, 2337 + labels: { 2338 + type: 'array', 2339 + items: { 2340 + type: 'ref', 2341 + ref: 'lex:com.atproto.label.defs#label', 2342 + }, 2343 + }, 2344 + indexedAt: { 2345 + type: 'string', 2346 + format: 'datetime', 2347 + }, 2348 + }, 2349 + }, 2350 + listPurpose: { 2351 + type: 'string', 2352 + knownValues: [ 2353 + 'app.bsky.graph.defs#modlist', 2354 + 'app.bsky.graph.defs#curatelist', 2355 + 'app.bsky.graph.defs#referencelist', 2356 + ], 2357 + }, 2358 + modlist: { 2359 + type: 'token', 2360 + description: 2361 + 'A list of actors to apply an aggregate moderation action (mute/block) on.', 2362 + }, 2363 + curatelist: { 2364 + type: 'token', 2365 + description: 2366 + 'A list of actors used for curation purposes such as list feeds or interaction gating.', 2367 + }, 2368 + referencelist: { 2369 + type: 'token', 2370 + description: 2371 + 'A list of actors used for only for reference purposes such as within a starter pack.', 2372 + }, 2373 + listViewerState: { 2374 + type: 'object', 2375 + properties: { 2376 + muted: { 2377 + type: 'boolean', 2378 + }, 2379 + blocked: { 2380 + type: 'string', 2381 + format: 'at-uri', 2382 + }, 2383 + }, 2384 + }, 2385 + notFoundActor: { 2386 + type: 'object', 2387 + description: 'indicates that a handle or DID could not be resolved', 2388 + required: ['actor', 'notFound'], 2389 + properties: { 2390 + actor: { 2391 + type: 'string', 2392 + format: 'at-identifier', 2393 + }, 2394 + notFound: { 2395 + type: 'boolean', 2396 + const: true, 2397 + }, 2398 + }, 2399 + }, 2400 + relationship: { 2401 + type: 'object', 2402 + description: 2403 + 'lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)', 2404 + required: ['did'], 2405 + properties: { 2406 + did: { 2407 + type: 'string', 2408 + format: 'did', 2409 + }, 2410 + following: { 2411 + type: 'string', 2412 + format: 'at-uri', 2413 + description: 2414 + 'if the actor follows this DID, this is the AT-URI of the follow record', 2415 + }, 2416 + followedBy: { 2417 + type: 'string', 2418 + format: 'at-uri', 2419 + description: 2420 + 'if the actor is followed by this DID, contains the AT-URI of the follow record', 2421 + }, 2422 + }, 2423 + }, 2424 + }, 2425 + }, 2426 + AppBskyNotificationDefs: { 2427 + lexicon: 1, 2428 + id: 'app.bsky.notification.defs', 2429 + defs: { 2430 + recordDeleted: { 2431 + type: 'object', 2432 + properties: {}, 2433 + }, 2434 + chatPreference: { 2435 + type: 'object', 2436 + required: ['include', 'push'], 2437 + properties: { 2438 + include: { 2439 + type: 'string', 2440 + knownValues: ['all', 'accepted'], 2441 + }, 2442 + push: { 2443 + type: 'boolean', 2444 + }, 2445 + }, 2446 + }, 2447 + filterablePreference: { 2448 + type: 'object', 2449 + required: ['include', 'list', 'push'], 2450 + properties: { 2451 + include: { 2452 + type: 'string', 2453 + knownValues: ['all', 'follows'], 2454 + }, 2455 + list: { 2456 + type: 'boolean', 2457 + }, 2458 + push: { 2459 + type: 'boolean', 2460 + }, 2461 + }, 2462 + }, 2463 + preference: { 2464 + type: 'object', 2465 + required: ['list', 'push'], 2466 + properties: { 2467 + list: { 2468 + type: 'boolean', 2469 + }, 2470 + push: { 2471 + type: 'boolean', 2472 + }, 2473 + }, 2474 + }, 2475 + preferences: { 2476 + type: 'object', 2477 + required: [ 2478 + 'chat', 2479 + 'follow', 2480 + 'like', 2481 + 'likeViaRepost', 2482 + 'mention', 2483 + 'quote', 2484 + 'reply', 2485 + 'repost', 2486 + 'repostViaRepost', 2487 + 'starterpackJoined', 2488 + 'subscribedPost', 2489 + 'unverified', 2490 + 'verified', 2491 + ], 2492 + properties: { 2493 + chat: { 2494 + type: 'ref', 2495 + ref: 'lex:app.bsky.notification.defs#chatPreference', 2496 + }, 2497 + follow: { 2498 + type: 'ref', 2499 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2500 + }, 2501 + like: { 2502 + type: 'ref', 2503 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2504 + }, 2505 + likeViaRepost: { 2506 + type: 'ref', 2507 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2508 + }, 2509 + mention: { 2510 + type: 'ref', 2511 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2512 + }, 2513 + quote: { 2514 + type: 'ref', 2515 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2516 + }, 2517 + reply: { 2518 + type: 'ref', 2519 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2520 + }, 2521 + repost: { 2522 + type: 'ref', 2523 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2524 + }, 2525 + repostViaRepost: { 2526 + type: 'ref', 2527 + ref: 'lex:app.bsky.notification.defs#filterablePreference', 2528 + }, 2529 + starterpackJoined: { 2530 + type: 'ref', 2531 + ref: 'lex:app.bsky.notification.defs#preference', 2532 + }, 2533 + subscribedPost: { 2534 + type: 'ref', 2535 + ref: 'lex:app.bsky.notification.defs#preference', 2536 + }, 2537 + unverified: { 2538 + type: 'ref', 2539 + ref: 'lex:app.bsky.notification.defs#preference', 2540 + }, 2541 + verified: { 2542 + type: 'ref', 2543 + ref: 'lex:app.bsky.notification.defs#preference', 2544 + }, 2545 + }, 2546 + }, 2547 + activitySubscription: { 2548 + type: 'object', 2549 + required: ['post', 'reply'], 2550 + properties: { 2551 + post: { 2552 + type: 'boolean', 2553 + }, 2554 + reply: { 2555 + type: 'boolean', 2556 + }, 2557 + }, 2558 + }, 2559 + subjectActivitySubscription: { 2560 + description: 2561 + 'Object used to store activity subscription data in stash.', 2562 + type: 'object', 2563 + required: ['subject', 'activitySubscription'], 2564 + properties: { 2565 + subject: { 2566 + type: 'string', 2567 + format: 'did', 2568 + }, 2569 + activitySubscription: { 2570 + type: 'ref', 2571 + ref: 'lex:app.bsky.notification.defs#activitySubscription', 2572 + }, 2573 + }, 2574 + }, 2575 + }, 2576 + }, 2577 + AppBskyRichtextFacet: { 2578 + lexicon: 1, 2579 + id: 'app.bsky.richtext.facet', 2580 + defs: { 2581 + main: { 2582 + type: 'object', 2583 + description: 'Annotation of a sub-string within rich text.', 2584 + required: ['index', 'features'], 2585 + properties: { 2586 + index: { 2587 + type: 'ref', 2588 + ref: 'lex:app.bsky.richtext.facet#byteSlice', 2589 + }, 2590 + features: { 2591 + type: 'array', 2592 + items: { 2593 + type: 'union', 2594 + refs: [ 2595 + 'lex:app.bsky.richtext.facet#mention', 2596 + 'lex:app.bsky.richtext.facet#link', 2597 + 'lex:app.bsky.richtext.facet#tag', 2598 + ], 2599 + }, 2600 + }, 2601 + }, 2602 + }, 2603 + mention: { 2604 + type: 'object', 2605 + description: 2606 + "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.", 2607 + required: ['did'], 2608 + properties: { 2609 + did: { 2610 + type: 'string', 2611 + format: 'did', 2612 + }, 2613 + }, 2614 + }, 2615 + link: { 2616 + type: 'object', 2617 + description: 2618 + 'Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.', 2619 + required: ['uri'], 2620 + properties: { 2621 + uri: { 2622 + type: 'string', 2623 + format: 'uri', 2624 + }, 2625 + }, 2626 + }, 2627 + tag: { 2628 + type: 'object', 2629 + description: 2630 + "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').", 2631 + required: ['tag'], 2632 + properties: { 2633 + tag: { 2634 + type: 'string', 2635 + maxLength: 640, 2636 + maxGraphemes: 64, 2637 + }, 2638 + }, 2639 + }, 2640 + byteSlice: { 2641 + type: 'object', 2642 + description: 2643 + '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.', 2644 + required: ['byteStart', 'byteEnd'], 2645 + properties: { 2646 + byteStart: { 2647 + type: 'integer', 2648 + minimum: 0, 2649 + }, 2650 + byteEnd: { 2651 + type: 'integer', 2652 + minimum: 0, 2653 + }, 2654 + }, 2655 + }, 2656 + }, 2657 + }, 2658 + ComAtprotoLabelDefs: { 2659 + lexicon: 1, 2660 + id: 'com.atproto.label.defs', 2661 + defs: { 2662 + label: { 2663 + type: 'object', 2664 + description: 2665 + 'Metadata tag on an atproto resource (eg, repo or record).', 2666 + required: ['src', 'uri', 'val', 'cts'], 2667 + properties: { 2668 + ver: { 2669 + type: 'integer', 2670 + description: 'The AT Protocol version of the label object.', 2671 + }, 2672 + src: { 2673 + type: 'string', 2674 + format: 'did', 2675 + description: 'DID of the actor who created this label.', 2676 + }, 2677 + uri: { 2678 + type: 'string', 2679 + format: 'uri', 2680 + description: 2681 + 'AT URI of the record, repository (account), or other resource that this label applies to.', 2682 + }, 2683 + cid: { 2684 + type: 'string', 2685 + format: 'cid', 2686 + description: 2687 + "Optionally, CID specifying the specific version of 'uri' resource this label applies to.", 2688 + }, 2689 + val: { 2690 + type: 'string', 2691 + maxLength: 128, 2692 + description: 2693 + 'The short string name of the value or type of this label.', 2694 + }, 2695 + neg: { 2696 + type: 'boolean', 2697 + description: 2698 + 'If true, this is a negation label, overwriting a previous label.', 2699 + }, 2700 + cts: { 2701 + type: 'string', 2702 + format: 'datetime', 2703 + description: 'Timestamp when this label was created.', 2704 + }, 2705 + exp: { 2706 + type: 'string', 2707 + format: 'datetime', 2708 + description: 2709 + 'Timestamp at which this label expires (no longer applies).', 2710 + }, 2711 + sig: { 2712 + type: 'bytes', 2713 + description: 'Signature of dag-cbor encoded label.', 2714 + }, 2715 + }, 2716 + }, 2717 + selfLabels: { 2718 + type: 'object', 2719 + description: 2720 + 'Metadata tags on an atproto record, published by the author within the record.', 2721 + required: ['values'], 2722 + properties: { 2723 + values: { 2724 + type: 'array', 2725 + items: { 2726 + type: 'ref', 2727 + ref: 'lex:com.atproto.label.defs#selfLabel', 2728 + }, 2729 + maxLength: 10, 2730 + }, 2731 + }, 2732 + }, 2733 + selfLabel: { 2734 + type: 'object', 2735 + description: 2736 + 'Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel.', 2737 + required: ['val'], 2738 + properties: { 2739 + val: { 2740 + type: 'string', 2741 + maxLength: 128, 2742 + description: 2743 + 'The short string name of the value or type of this label.', 2744 + }, 2745 + }, 2746 + }, 2747 + labelValueDefinition: { 2748 + type: 'object', 2749 + description: 2750 + 'Declares a label value and its expected interpretations and behaviors.', 2751 + required: ['identifier', 'severity', 'blurs', 'locales'], 2752 + properties: { 2753 + identifier: { 2754 + type: 'string', 2755 + description: 2756 + "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).", 2757 + maxLength: 100, 2758 + maxGraphemes: 100, 2759 + }, 2760 + severity: { 2761 + type: 'string', 2762 + description: 2763 + "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.", 2764 + knownValues: ['inform', 'alert', 'none'], 2765 + }, 2766 + blurs: { 2767 + type: 'string', 2768 + description: 2769 + "What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.", 2770 + knownValues: ['content', 'media', 'none'], 2771 + }, 2772 + defaultSetting: { 2773 + type: 'string', 2774 + description: 'The default setting for this label.', 2775 + knownValues: ['ignore', 'warn', 'hide'], 2776 + default: 'warn', 2777 + }, 2778 + adultOnly: { 2779 + type: 'boolean', 2780 + description: 2781 + 'Does the user need to have adult content enabled in order to configure this label?', 2782 + }, 2783 + locales: { 2784 + type: 'array', 2785 + items: { 2786 + type: 'ref', 2787 + ref: 'lex:com.atproto.label.defs#labelValueDefinitionStrings', 2788 + }, 2789 + }, 2790 + }, 2791 + }, 2792 + labelValueDefinitionStrings: { 2793 + type: 'object', 2794 + description: 2795 + 'Strings which describe the label in the UI, localized into a specific language.', 2796 + required: ['lang', 'name', 'description'], 2797 + properties: { 2798 + lang: { 2799 + type: 'string', 2800 + description: 2801 + 'The code of the language these strings are written in.', 2802 + format: 'language', 2803 + }, 2804 + name: { 2805 + type: 'string', 2806 + description: 'A short human-readable name for the label.', 2807 + maxGraphemes: 64, 2808 + maxLength: 640, 2809 + }, 2810 + description: { 2811 + type: 'string', 2812 + description: 2813 + 'A longer description of what the label means and why it might be applied.', 2814 + maxGraphemes: 10000, 2815 + maxLength: 100000, 2816 + }, 2817 + }, 2818 + }, 2819 + labelValue: { 2820 + type: 'string', 2821 + knownValues: [ 2822 + '!hide', 2823 + '!no-promote', 2824 + '!warn', 2825 + '!no-unauthenticated', 2826 + 'dmca-violation', 2827 + 'doxxing', 2828 + 'porn', 2829 + 'sexual', 2830 + 'nudity', 2831 + 'nsfl', 2832 + 'gore', 2833 + ], 2834 + }, 2835 + }, 2836 + }, 2837 + ComAtprotoRepoStrongRef: { 2838 + lexicon: 1, 2839 + id: 'com.atproto.repo.strongRef', 2840 + description: 'A URI with a content-hash fingerprint.', 2841 + defs: { 2842 + main: { 2843 + type: 'object', 2844 + required: ['uri', 'cid'], 2845 + properties: { 2846 + uri: { 2847 + type: 'string', 2848 + format: 'at-uri', 2849 + }, 2850 + cid: { 2851 + type: 'string', 2852 + format: 'cid', 2853 + }, 2854 + }, 2855 + }, 2856 + }, 2857 + }, 2858 + PartyWheyAppBskyActorDefs: { 2859 + lexicon: 1, 2860 + id: 'party.whey.app.bsky.actor.defs', 2861 + defs: { 2862 + profileViewBasicRef: { 2863 + type: 'object', 2864 + required: ['did'], 2865 + properties: { 2866 + did: { 2867 + type: 'string', 2868 + format: 'did', 2869 + }, 2870 + }, 2871 + }, 2872 + profileViewRef: { 2873 + type: 'object', 2874 + required: ['did'], 2875 + properties: { 2876 + did: { 2877 + type: 'string', 2878 + format: 'did', 2879 + }, 2880 + }, 2881 + }, 2882 + profileViewDetailedRef: { 2883 + type: 'object', 2884 + required: ['did'], 2885 + properties: { 2886 + did: { 2887 + type: 'string', 2888 + format: 'did', 2889 + }, 2890 + }, 2891 + }, 2892 + }, 2893 + }, 2894 + PartyWheyAppBskyFeedDefs: { 2895 + lexicon: 1, 2896 + id: 'party.whey.app.bsky.feed.defs', 2897 + defs: { 2898 + postViewRef: { 2899 + type: 'object', 2900 + description: 'A pointer to a app.bsky.feed.defs#postView', 2901 + required: ['uri', 'cid'], 2902 + properties: { 2903 + uri: { 2904 + type: 'string', 2905 + format: 'at-uri', 2906 + }, 2907 + cid: { 2908 + type: 'string', 2909 + format: 'cid', 2910 + }, 2911 + }, 2912 + }, 2913 + feedViewPostRef: { 2914 + type: 'object', 2915 + required: ['post'], 2916 + properties: { 2917 + post: { 2918 + type: 'union', 2919 + refs: [ 2920 + 'lex:app.bsky.feed.defs#postView', 2921 + 'lex:party.whey.app.bsky.feed.defs#postViewRef', 2922 + ], 2923 + }, 2924 + reply: { 2925 + type: 'union', 2926 + refs: [ 2927 + 'lex:app.bsky.feed.defs#replyRef', 2928 + 'lex:party.whey.app.bsky.feed.defs#replyRef', 2929 + ], 2930 + }, 2931 + reason: { 2932 + type: 'union', 2933 + refs: [ 2934 + 'lex:app.bsky.feed.defs#reasonRepost', 2935 + 'lex:app.bsky.feed.defs#reasonPin', 2936 + ], 2937 + }, 2938 + feedContext: { 2939 + type: 'string', 2940 + description: 2941 + 'Context provided by feed generator that may be passed back alongside interactions.', 2942 + maxLength: 2000, 2943 + }, 2944 + reqId: { 2945 + type: 'string', 2946 + description: 2947 + 'Unique identifier per request that may be passed back alongside interactions.', 2948 + maxLength: 100, 2949 + }, 2950 + }, 2951 + }, 2952 + replyRef: { 2953 + type: 'object', 2954 + required: ['root', 'parent'], 2955 + properties: { 2956 + root: { 2957 + type: 'union', 2958 + refs: [ 2959 + 'lex:party.whey.app.bsky.feed.defs#postViewRef', 2960 + 'lex:app.bsky.feed.defs#postView', 2961 + 'lex:app.bsky.feed.defs#notFoundPost', 2962 + 'lex:app.bsky.feed.defs#blockedPost', 2963 + ], 2964 + }, 2965 + parent: { 2966 + type: 'union', 2967 + refs: [ 2968 + 'lex:party.whey.app.bsky.feed.defs#postViewRef', 2969 + 'lex:app.bsky.feed.defs#postView', 2970 + 'lex:app.bsky.feed.defs#notFoundPost', 2971 + 'lex:app.bsky.feed.defs#blockedPost', 2972 + ], 2973 + }, 2974 + grandparentAuthor: { 2975 + type: 'union', 2976 + refs: [ 2977 + 'lex:party.whey.app.bsky.actor.defs#profileViewBasicRef', 2978 + 'lex:app.bsky.actor.defs#profileViewBasic', 2979 + ], 2980 + description: 2981 + 'When parent is a reply to another post, this is the author of that post.', 2982 + }, 2983 + }, 2984 + }, 2985 + threadViewPostRef: { 2986 + type: 'object', 2987 + required: ['post'], 2988 + properties: { 2989 + post: { 2990 + type: 'union', 2991 + refs: [ 2992 + 'lex:party.whey.app.bsky.feed.defs#postViewRef', 2993 + 'lex:app.bsky.feed.defs#postView', 2994 + ], 2995 + }, 2996 + parent: { 2997 + type: 'union', 2998 + refs: [ 2999 + 'lex:party.whey.app.bsky.feed.defs#threadViewPostRef', 3000 + 'lex:app.bsky.feed.defs#threadViewPost', 3001 + 'lex:app.bsky.feed.defs#notFoundPost', 3002 + 'lex:app.bsky.feed.defs#blockedPost', 3003 + ], 3004 + }, 3005 + replies: { 3006 + type: 'array', 3007 + items: { 3008 + type: 'union', 3009 + refs: [ 3010 + 'lex:party.whey.app.bsky.feed.defs#threadViewPostRef', 3011 + 'lex:app.bsky.feed.defs#threadViewPost', 3012 + 'lex:app.bsky.feed.defs#notFoundPost', 3013 + 'lex:app.bsky.feed.defs#blockedPost', 3014 + ], 3015 + }, 3016 + }, 3017 + threadContext: { 3018 + type: 'ref', 3019 + ref: 'lex:app.bsky.feed.defs#threadContext', 3020 + }, 3021 + }, 3022 + }, 3023 + }, 3024 + }, 3025 + PartyWheyAppBskyFeedGetActorLikesPartial: { 3026 + lexicon: 1, 3027 + id: 'party.whey.app.bsky.feed.getActorLikesPartial', 3028 + defs: { 3029 + main: { 3030 + type: 'query', 3031 + description: 3032 + 'Get a list of posts liked by an actor. May require auth, (if so, actor must be the requesting account).', 3033 + parameters: { 3034 + type: 'params', 3035 + required: ['actor'], 3036 + properties: { 3037 + actor: { 3038 + type: 'string', 3039 + format: 'at-identifier', 3040 + }, 3041 + limit: { 3042 + type: 'integer', 3043 + minimum: 1, 3044 + maximum: 100, 3045 + default: 50, 3046 + }, 3047 + cursor: { 3048 + type: 'string', 3049 + }, 3050 + }, 3051 + }, 3052 + output: { 3053 + encoding: 'application/json', 3054 + schema: { 3055 + type: 'object', 3056 + required: ['feed'], 3057 + properties: { 3058 + cursor: { 3059 + type: 'string', 3060 + }, 3061 + feed: { 3062 + type: 'array', 3063 + items: { 3064 + type: 'union', 3065 + refs: [ 3066 + 'lex:party.whey.app.bsky.feed.defs#feedViewPostRef', 3067 + 'lex:app.bsky.feed.defs#feedViewPost', 3068 + ], 3069 + }, 3070 + }, 3071 + }, 3072 + }, 3073 + }, 3074 + errors: [ 3075 + { 3076 + name: 'BlockedActor', 3077 + }, 3078 + { 3079 + name: 'BlockedByActor', 3080 + }, 3081 + ], 3082 + }, 3083 + }, 3084 + }, 3085 + PartyWheyAppBskyFeedGetAuthorFeedPartial: { 3086 + lexicon: 1, 3087 + id: 'party.whey.app.bsky.feed.getAuthorFeedPartial', 3088 + defs: { 3089 + main: { 3090 + type: 'query', 3091 + description: 3092 + "Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth.", 3093 + parameters: { 3094 + type: 'params', 3095 + required: ['actor'], 3096 + properties: { 3097 + actor: { 3098 + type: 'string', 3099 + format: 'at-identifier', 3100 + }, 3101 + limit: { 3102 + type: 'integer', 3103 + minimum: 1, 3104 + maximum: 100, 3105 + default: 50, 3106 + }, 3107 + cursor: { 3108 + type: 'string', 3109 + }, 3110 + filter: { 3111 + type: 'string', 3112 + description: 3113 + 'Combinations of post/repost types to include in response.', 3114 + knownValues: [ 3115 + 'posts_with_replies', 3116 + 'posts_no_replies', 3117 + 'posts_with_media', 3118 + 'posts_and_author_threads', 3119 + 'posts_with_video', 3120 + ], 3121 + default: 'posts_with_replies', 3122 + }, 3123 + includePins: { 3124 + type: 'boolean', 3125 + default: false, 3126 + }, 3127 + }, 3128 + }, 3129 + output: { 3130 + encoding: 'application/json', 3131 + schema: { 3132 + type: 'object', 3133 + required: ['feed'], 3134 + properties: { 3135 + cursor: { 3136 + type: 'string', 3137 + }, 3138 + feed: { 3139 + type: 'array', 3140 + items: { 3141 + type: 'union', 3142 + refs: [ 3143 + 'lex:party.whey.app.bsky.feed.defs#feedViewPostRef', 3144 + 'lex:app.bsky.feed.defs#feedViewPost', 3145 + ], 3146 + }, 3147 + }, 3148 + }, 3149 + }, 3150 + }, 3151 + errors: [ 3152 + { 3153 + name: 'BlockedActor', 3154 + }, 3155 + { 3156 + name: 'BlockedByActor', 3157 + }, 3158 + ], 3159 + }, 3160 + }, 3161 + }, 3162 + PartyWheyAppBskyFeedGetLikesPartial: { 3163 + lexicon: 1, 3164 + id: 'party.whey.app.bsky.feed.getLikesPartial', 3165 + defs: { 3166 + main: { 3167 + type: 'query', 3168 + description: 3169 + 'Get like records which reference a subject (by AT-URI and CID).', 3170 + parameters: { 3171 + type: 'params', 3172 + required: ['uri'], 3173 + properties: { 3174 + uri: { 3175 + type: 'string', 3176 + format: 'at-uri', 3177 + description: 'AT-URI of the subject (eg, a post record).', 3178 + }, 3179 + cid: { 3180 + type: 'string', 3181 + format: 'cid', 3182 + description: 3183 + 'CID of the subject record (aka, specific version of record), to filter likes.', 3184 + }, 3185 + limit: { 3186 + type: 'integer', 3187 + minimum: 1, 3188 + maximum: 100, 3189 + default: 50, 3190 + }, 3191 + cursor: { 3192 + type: 'string', 3193 + }, 3194 + }, 3195 + }, 3196 + output: { 3197 + encoding: 'application/json', 3198 + schema: { 3199 + type: 'object', 3200 + required: ['uri', 'likes'], 3201 + properties: { 3202 + uri: { 3203 + type: 'string', 3204 + format: 'at-uri', 3205 + }, 3206 + cid: { 3207 + type: 'string', 3208 + format: 'cid', 3209 + }, 3210 + cursor: { 3211 + type: 'string', 3212 + }, 3213 + likes: { 3214 + type: 'array', 3215 + items: { 3216 + type: 'ref', 3217 + ref: 'lex:party.whey.app.bsky.feed.getLikesPartial#like', 3218 + }, 3219 + }, 3220 + }, 3221 + }, 3222 + }, 3223 + }, 3224 + like: { 3225 + type: 'object', 3226 + required: ['indexedAt', 'createdAt', 'actor'], 3227 + properties: { 3228 + indexedAt: { 3229 + type: 'string', 3230 + format: 'datetime', 3231 + }, 3232 + createdAt: { 3233 + type: 'string', 3234 + format: 'datetime', 3235 + }, 3236 + actor: { 3237 + type: 'ref', 3238 + ref: 'lex:party.whey.app.bsky.actor.defs#profileViewRef', 3239 + }, 3240 + }, 3241 + }, 3242 + }, 3243 + }, 3244 + PartyWheyAppBskyFeedGetListFeedPartial: { 3245 + lexicon: 1, 3246 + id: 'party.whey.app.bsky.feed.getListFeedPartial', 3247 + defs: { 3248 + main: { 3249 + type: 'query', 3250 + description: 3251 + 'Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.', 3252 + parameters: { 3253 + type: 'params', 3254 + required: ['list'], 3255 + properties: { 3256 + list: { 3257 + type: 'string', 3258 + format: 'at-uri', 3259 + description: 'Reference (AT-URI) to the list record.', 3260 + }, 3261 + limit: { 3262 + type: 'integer', 3263 + minimum: 1, 3264 + maximum: 100, 3265 + default: 50, 3266 + }, 3267 + cursor: { 3268 + type: 'string', 3269 + }, 3270 + }, 3271 + }, 3272 + output: { 3273 + encoding: 'application/json', 3274 + schema: { 3275 + type: 'object', 3276 + required: ['feed'], 3277 + properties: { 3278 + cursor: { 3279 + type: 'string', 3280 + }, 3281 + feed: { 3282 + type: 'array', 3283 + items: { 3284 + type: 'ref', 3285 + ref: 'lex:party.whey.app.bsky.feed.defs#feedViewPostRef', 3286 + }, 3287 + }, 3288 + }, 3289 + }, 3290 + }, 3291 + errors: [ 3292 + { 3293 + name: 'UnknownList', 3294 + }, 3295 + ], 3296 + }, 3297 + }, 3298 + }, 3299 + PartyWheyAppBskyFeedGetPostThreadPartial: { 3300 + lexicon: 1, 3301 + id: 'party.whey.app.bsky.feed.getPostThreadPartial', 3302 + defs: { 3303 + main: { 3304 + type: 'query', 3305 + description: 3306 + 'Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.', 3307 + parameters: { 3308 + type: 'params', 3309 + required: ['uri'], 3310 + properties: { 3311 + uri: { 3312 + type: 'string', 3313 + format: 'at-uri', 3314 + description: 'Reference (AT-URI) to post record.', 3315 + }, 3316 + depth: { 3317 + type: 'integer', 3318 + description: 3319 + 'How many levels of reply depth should be included in response.', 3320 + default: 6, 3321 + minimum: 0, 3322 + maximum: 1000, 3323 + }, 3324 + parentHeight: { 3325 + type: 'integer', 3326 + description: 3327 + 'How many levels of parent (and grandparent, etc) post to include.', 3328 + default: 80, 3329 + minimum: 0, 3330 + maximum: 1000, 3331 + }, 3332 + }, 3333 + }, 3334 + output: { 3335 + encoding: 'application/json', 3336 + schema: { 3337 + type: 'object', 3338 + required: ['thread'], 3339 + properties: { 3340 + thread: { 3341 + type: 'union', 3342 + refs: [ 3343 + 'lex:party.whey.app.bsky.feed.defs#threadViewPostRef', 3344 + 'lex:app.bsky.feed.defs#threadViewPost', 3345 + 'lex:app.bsky.feed.defs#notFoundPost', 3346 + 'lex:app.bsky.feed.defs#blockedPost', 3347 + ], 3348 + }, 3349 + threadgate: { 3350 + type: 'ref', 3351 + ref: 'lex:app.bsky.feed.defs#threadgateView', 3352 + }, 3353 + }, 3354 + }, 3355 + }, 3356 + errors: [ 3357 + { 3358 + name: 'NotFound', 3359 + }, 3360 + ], 3361 + }, 3362 + }, 3363 + }, 3364 + PartyWheyAppBskyFeedGetQuotesPartial: { 3365 + lexicon: 1, 3366 + id: 'party.whey.app.bsky.feed.getQuotesPartial', 3367 + defs: { 3368 + main: { 3369 + type: 'query', 3370 + description: 'Get a list of quotes for a given post.', 3371 + parameters: { 3372 + type: 'params', 3373 + required: ['uri'], 3374 + properties: { 3375 + uri: { 3376 + type: 'string', 3377 + format: 'at-uri', 3378 + description: 'Reference (AT-URI) of post record', 3379 + }, 3380 + cid: { 3381 + type: 'string', 3382 + format: 'cid', 3383 + description: 3384 + 'If supplied, filters to quotes of specific version (by CID) of the post record.', 3385 + }, 3386 + limit: { 3387 + type: 'integer', 3388 + minimum: 1, 3389 + maximum: 100, 3390 + default: 50, 3391 + }, 3392 + cursor: { 3393 + type: 'string', 3394 + }, 3395 + }, 3396 + }, 3397 + output: { 3398 + encoding: 'application/json', 3399 + schema: { 3400 + type: 'object', 3401 + required: ['uri', 'posts'], 3402 + properties: { 3403 + uri: { 3404 + type: 'string', 3405 + format: 'at-uri', 3406 + }, 3407 + cid: { 3408 + type: 'string', 3409 + format: 'cid', 3410 + }, 3411 + cursor: { 3412 + type: 'string', 3413 + }, 3414 + posts: { 3415 + type: 'array', 3416 + items: { 3417 + type: 'union', 3418 + refs: [ 3419 + 'lex:party.whey.app.bsky.feed.defs#postViewRef', 3420 + 'lex:app.bsky.feed.defs#postView', 3421 + ], 3422 + }, 3423 + }, 3424 + }, 3425 + }, 3426 + }, 3427 + }, 3428 + }, 3429 + }, 3430 + PartyWheyAppBskyFeedGetRepostedByPartial: { 3431 + lexicon: 1, 3432 + id: 'party.whey.app.bsky.feed.getRepostedByPartial', 3433 + defs: { 3434 + main: { 3435 + type: 'query', 3436 + description: 'Get a list of reposts for a given post.', 3437 + parameters: { 3438 + type: 'params', 3439 + required: ['uri'], 3440 + properties: { 3441 + uri: { 3442 + type: 'string', 3443 + format: 'at-uri', 3444 + description: 'Reference (AT-URI) of post record', 3445 + }, 3446 + cid: { 3447 + type: 'string', 3448 + format: 'cid', 3449 + description: 3450 + 'If supplied, filters to reposts of specific version (by CID) of the post record.', 3451 + }, 3452 + limit: { 3453 + type: 'integer', 3454 + minimum: 1, 3455 + maximum: 100, 3456 + default: 50, 3457 + }, 3458 + cursor: { 3459 + type: 'string', 3460 + }, 3461 + }, 3462 + }, 3463 + output: { 3464 + encoding: 'application/json', 3465 + schema: { 3466 + type: 'object', 3467 + required: ['uri', 'repostedBy'], 3468 + properties: { 3469 + uri: { 3470 + type: 'string', 3471 + format: 'at-uri', 3472 + }, 3473 + cid: { 3474 + type: 'string', 3475 + format: 'cid', 3476 + }, 3477 + cursor: { 3478 + type: 'string', 3479 + }, 3480 + repostedBy: { 3481 + type: 'array', 3482 + items: { 3483 + type: 'union', 3484 + refs: [ 3485 + 'lex:party.whey.app.bsky.actor.defs#profileViewRef', 3486 + 'lex:app.bsky.actor.defs#profileView', 3487 + ], 3488 + }, 3489 + }, 3490 + }, 3491 + }, 3492 + }, 3493 + }, 3494 + }, 3495 + }, 3496 + } as const satisfies Record<string, LexiconDoc> 3497 + export const schemas = Object.values(schemaDict) satisfies LexiconDoc[] 3498 + export const lexicons: Lexicons = new Lexicons(schemas) 3499 + 3500 + export function validate<T extends { $type: string }>( 3501 + v: unknown, 3502 + id: string, 3503 + hash: string, 3504 + requiredType: true, 3505 + ): ValidationResult<T> 3506 + export function validate<T extends { $type?: string }>( 3507 + v: unknown, 3508 + id: string, 3509 + hash: string, 3510 + requiredType?: false, 3511 + ): ValidationResult<T> 3512 + export function validate( 3513 + v: unknown, 3514 + id: string, 3515 + hash: string, 3516 + requiredType?: boolean, 3517 + ): ValidationResult { 3518 + return (requiredType ? is$typed : maybe$typed)(v, id, hash) 3519 + ? lexicons.validate(`${id}#${hash}`, v) 3520 + : { 3521 + success: false, 3522 + error: new ValidationError( 3523 + `Must be an object with "${hash === 'main' ? id : `${id}#${hash}`}" $type property`, 3524 + ), 3525 + } 3526 + } 3527 + 3528 + export const ids = { 3529 + AppBskyActorDefs: 'app.bsky.actor.defs', 3530 + AppBskyActorGetProfile: 'app.bsky.actor.getProfile', 3531 + AppBskyActorGetProfiles: 'app.bsky.actor.getProfiles', 3532 + AppBskyEmbedDefs: 'app.bsky.embed.defs', 3533 + AppBskyEmbedExternal: 'app.bsky.embed.external', 3534 + AppBskyEmbedImages: 'app.bsky.embed.images', 3535 + AppBskyEmbedRecord: 'app.bsky.embed.record', 3536 + AppBskyEmbedRecordWithMedia: 'app.bsky.embed.recordWithMedia', 3537 + AppBskyEmbedVideo: 'app.bsky.embed.video', 3538 + AppBskyFeedDefs: 'app.bsky.feed.defs', 3539 + AppBskyFeedGetActorFeeds: 'app.bsky.feed.getActorFeeds', 3540 + AppBskyFeedGetFeedGenerator: 'app.bsky.feed.getFeedGenerator', 3541 + AppBskyFeedGetFeedGenerators: 'app.bsky.feed.getFeedGenerators', 3542 + AppBskyFeedGetPosts: 'app.bsky.feed.getPosts', 3543 + AppBskyFeedPostgate: 'app.bsky.feed.postgate', 3544 + AppBskyFeedThreadgate: 'app.bsky.feed.threadgate', 3545 + AppBskyGraphDefs: 'app.bsky.graph.defs', 3546 + AppBskyNotificationDefs: 'app.bsky.notification.defs', 3547 + AppBskyRichtextFacet: 'app.bsky.richtext.facet', 3548 + ComAtprotoLabelDefs: 'com.atproto.label.defs', 3549 + ComAtprotoRepoStrongRef: 'com.atproto.repo.strongRef', 3550 + PartyWheyAppBskyActorDefs: 'party.whey.app.bsky.actor.defs', 3551 + PartyWheyAppBskyFeedDefs: 'party.whey.app.bsky.feed.defs', 3552 + PartyWheyAppBskyFeedGetActorLikesPartial: 3553 + 'party.whey.app.bsky.feed.getActorLikesPartial', 3554 + PartyWheyAppBskyFeedGetAuthorFeedPartial: 3555 + 'party.whey.app.bsky.feed.getAuthorFeedPartial', 3556 + PartyWheyAppBskyFeedGetLikesPartial: 3557 + 'party.whey.app.bsky.feed.getLikesPartial', 3558 + PartyWheyAppBskyFeedGetListFeedPartial: 3559 + 'party.whey.app.bsky.feed.getListFeedPartial', 3560 + PartyWheyAppBskyFeedGetPostThreadPartial: 3561 + 'party.whey.app.bsky.feed.getPostThreadPartial', 3562 + PartyWheyAppBskyFeedGetQuotesPartial: 3563 + 'party.whey.app.bsky.feed.getQuotesPartial', 3564 + PartyWheyAppBskyFeedGetRepostedByPartial: 3565 + 'party.whey.app.bsky.feed.getRepostedByPartial', 3566 + } as const
+88
indexserver/lexicons/app/bsky/notification/defs.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.notification.defs", 4 + "defs": { 5 + "recordDeleted": { 6 + "type": "object", 7 + "properties": {} 8 + }, 9 + "chatPreference": { 10 + "type": "object", 11 + "required": ["include", "push"], 12 + "properties": { 13 + "include": { "type": "string", "knownValues": ["all", "accepted"] }, 14 + "push": { "type": "boolean" } 15 + } 16 + }, 17 + "filterablePreference": { 18 + "type": "object", 19 + "required": ["include", "list", "push"], 20 + "properties": { 21 + "include": { "type": "string", "knownValues": ["all", "follows"] }, 22 + "list": { "type": "boolean" }, 23 + "push": { "type": "boolean" } 24 + } 25 + }, 26 + "preference": { 27 + "type": "object", 28 + "required": ["list", "push"], 29 + "properties": { 30 + "list": { "type": "boolean" }, 31 + "push": { "type": "boolean" } 32 + } 33 + }, 34 + "preferences": { 35 + "type": "object", 36 + "required": [ 37 + "chat", 38 + "follow", 39 + "like", 40 + "likeViaRepost", 41 + "mention", 42 + "quote", 43 + "reply", 44 + "repost", 45 + "repostViaRepost", 46 + "starterpackJoined", 47 + "subscribedPost", 48 + "unverified", 49 + "verified" 50 + ], 51 + "properties": { 52 + "chat": { "type": "ref", "ref": "#chatPreference" }, 53 + "follow": { "type": "ref", "ref": "#filterablePreference" }, 54 + "like": { "type": "ref", "ref": "#filterablePreference" }, 55 + "likeViaRepost": { "type": "ref", "ref": "#filterablePreference" }, 56 + "mention": { "type": "ref", "ref": "#filterablePreference" }, 57 + "quote": { "type": "ref", "ref": "#filterablePreference" }, 58 + "reply": { "type": "ref", "ref": "#filterablePreference" }, 59 + "repost": { "type": "ref", "ref": "#filterablePreference" }, 60 + "repostViaRepost": { "type": "ref", "ref": "#filterablePreference" }, 61 + "starterpackJoined": { "type": "ref", "ref": "#preference" }, 62 + "subscribedPost": { "type": "ref", "ref": "#preference" }, 63 + "unverified": { "type": "ref", "ref": "#preference" }, 64 + "verified": { "type": "ref", "ref": "#preference" } 65 + } 66 + }, 67 + "activitySubscription": { 68 + "type": "object", 69 + "required": ["post", "reply"], 70 + "properties": { 71 + "post": { "type": "boolean" }, 72 + "reply": { "type": "boolean" } 73 + } 74 + }, 75 + "subjectActivitySubscription": { 76 + "description": "Object used to store activity subscription data in stash.", 77 + "type": "object", 78 + "required": ["subject", "activitySubscription"], 79 + "properties": { 80 + "subject": { "type": "string", "format": "did" }, 81 + "activitySubscription": { 82 + "type": "ref", 83 + "ref": "#activitySubscription" 84 + } 85 + } 86 + } 87 + } 88 + }
+51
indexserver/lexicons/app/bsky/richtext/facet.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.richtext.facet", 4 + "defs": { 5 + "main": { 6 + "type": "object", 7 + "description": "Annotation of a sub-string within rich text.", 8 + "required": ["index", "features"], 9 + "properties": { 10 + "index": { "type": "ref", "ref": "#byteSlice" }, 11 + "features": { 12 + "type": "array", 13 + "items": { "type": "union", "refs": ["#mention", "#link", "#tag"] } 14 + } 15 + } 16 + }, 17 + "mention": { 18 + "type": "object", 19 + "description": "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.", 20 + "required": ["did"], 21 + "properties": { 22 + "did": { "type": "string", "format": "did" } 23 + } 24 + }, 25 + "link": { 26 + "type": "object", 27 + "description": "Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.", 28 + "required": ["uri"], 29 + "properties": { 30 + "uri": { "type": "string", "format": "uri" } 31 + } 32 + }, 33 + "tag": { 34 + "type": "object", 35 + "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').", 36 + "required": ["tag"], 37 + "properties": { 38 + "tag": { "type": "string", "maxLength": 640, "maxGraphemes": 64 } 39 + } 40 + }, 41 + "byteSlice": { 42 + "type": "object", 43 + "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.", 44 + "required": ["byteStart", "byteEnd"], 45 + "properties": { 46 + "byteStart": { "type": "integer", "minimum": 0 }, 47 + "byteEnd": { "type": "integer", "minimum": 0 } 48 + } 49 + } 50 + } 51 + }
+156
indexserver/lexicons/com/atproto/label/defs.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "com.atproto.label.defs", 4 + "defs": { 5 + "label": { 6 + "type": "object", 7 + "description": "Metadata tag on an atproto resource (eg, repo or record).", 8 + "required": ["src", "uri", "val", "cts"], 9 + "properties": { 10 + "ver": { 11 + "type": "integer", 12 + "description": "The AT Protocol version of the label object." 13 + }, 14 + "src": { 15 + "type": "string", 16 + "format": "did", 17 + "description": "DID of the actor who created this label." 18 + }, 19 + "uri": { 20 + "type": "string", 21 + "format": "uri", 22 + "description": "AT URI of the record, repository (account), or other resource that this label applies to." 23 + }, 24 + "cid": { 25 + "type": "string", 26 + "format": "cid", 27 + "description": "Optionally, CID specifying the specific version of 'uri' resource this label applies to." 28 + }, 29 + "val": { 30 + "type": "string", 31 + "maxLength": 128, 32 + "description": "The short string name of the value or type of this label." 33 + }, 34 + "neg": { 35 + "type": "boolean", 36 + "description": "If true, this is a negation label, overwriting a previous label." 37 + }, 38 + "cts": { 39 + "type": "string", 40 + "format": "datetime", 41 + "description": "Timestamp when this label was created." 42 + }, 43 + "exp": { 44 + "type": "string", 45 + "format": "datetime", 46 + "description": "Timestamp at which this label expires (no longer applies)." 47 + }, 48 + "sig": { 49 + "type": "bytes", 50 + "description": "Signature of dag-cbor encoded label." 51 + } 52 + } 53 + }, 54 + "selfLabels": { 55 + "type": "object", 56 + "description": "Metadata tags on an atproto record, published by the author within the record.", 57 + "required": ["values"], 58 + "properties": { 59 + "values": { 60 + "type": "array", 61 + "items": { "type": "ref", "ref": "#selfLabel" }, 62 + "maxLength": 10 63 + } 64 + } 65 + }, 66 + "selfLabel": { 67 + "type": "object", 68 + "description": "Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel.", 69 + "required": ["val"], 70 + "properties": { 71 + "val": { 72 + "type": "string", 73 + "maxLength": 128, 74 + "description": "The short string name of the value or type of this label." 75 + } 76 + } 77 + }, 78 + "labelValueDefinition": { 79 + "type": "object", 80 + "description": "Declares a label value and its expected interpretations and behaviors.", 81 + "required": ["identifier", "severity", "blurs", "locales"], 82 + "properties": { 83 + "identifier": { 84 + "type": "string", 85 + "description": "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).", 86 + "maxLength": 100, 87 + "maxGraphemes": 100 88 + }, 89 + "severity": { 90 + "type": "string", 91 + "description": "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.", 92 + "knownValues": ["inform", "alert", "none"] 93 + }, 94 + "blurs": { 95 + "type": "string", 96 + "description": "What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.", 97 + "knownValues": ["content", "media", "none"] 98 + }, 99 + "defaultSetting": { 100 + "type": "string", 101 + "description": "The default setting for this label.", 102 + "knownValues": ["ignore", "warn", "hide"], 103 + "default": "warn" 104 + }, 105 + "adultOnly": { 106 + "type": "boolean", 107 + "description": "Does the user need to have adult content enabled in order to configure this label?" 108 + }, 109 + "locales": { 110 + "type": "array", 111 + "items": { "type": "ref", "ref": "#labelValueDefinitionStrings" } 112 + } 113 + } 114 + }, 115 + "labelValueDefinitionStrings": { 116 + "type": "object", 117 + "description": "Strings which describe the label in the UI, localized into a specific language.", 118 + "required": ["lang", "name", "description"], 119 + "properties": { 120 + "lang": { 121 + "type": "string", 122 + "description": "The code of the language these strings are written in.", 123 + "format": "language" 124 + }, 125 + "name": { 126 + "type": "string", 127 + "description": "A short human-readable name for the label.", 128 + "maxGraphemes": 64, 129 + "maxLength": 640 130 + }, 131 + "description": { 132 + "type": "string", 133 + "description": "A longer description of what the label means and why it might be applied.", 134 + "maxGraphemes": 10000, 135 + "maxLength": 100000 136 + } 137 + } 138 + }, 139 + "labelValue": { 140 + "type": "string", 141 + "knownValues": [ 142 + "!hide", 143 + "!no-promote", 144 + "!warn", 145 + "!no-unauthenticated", 146 + "dmca-violation", 147 + "doxxing", 148 + "porn", 149 + "sexual", 150 + "nudity", 151 + "nsfl", 152 + "gore" 153 + ] 154 + } 155 + } 156 + }
+15
indexserver/lexicons/com/atproto/repo/strongRef.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "com.atproto.repo.strongRef", 4 + "description": "A URI with a content-hash fingerprint.", 5 + "defs": { 6 + "main": { 7 + "type": "object", 8 + "required": ["uri", "cid"], 9 + "properties": { 10 + "uri": { "type": "string", "format": "at-uri" }, 11 + "cid": { "type": "string", "format": "cid" } 12 + } 13 + } 14 + } 15 + }
+27
indexserver/lexicons/party/whey/app/bsky/actor/defs.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "party.whey.app.bsky.actor.defs", 4 + "defs": { 5 + "profileViewBasicRef": { 6 + "type": "object", 7 + "required": ["did"], 8 + "properties": { 9 + "did": { "type": "string", "format": "did" } 10 + } 11 + }, 12 + "profileViewRef": { 13 + "type": "object", 14 + "required": ["did"], 15 + "properties": { 16 + "did": { "type": "string", "format": "did" } 17 + } 18 + }, 19 + "profileViewDetailedRef": { 20 + "type": "object", 21 + "required": ["did"], 22 + "properties": { 23 + "did": { "type": "string", "format": "did" } 24 + } 25 + } 26 + } 27 + }
+91
indexserver/lexicons/party/whey/app/bsky/feed/defs.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "party.whey.app.bsky.feed.defs", 4 + "defs": { 5 + "postViewRef": { 6 + "type": "object", 7 + "description": "A pointer to a app.bsky.feed.defs#postView", 8 + "required": ["uri", "cid"], 9 + "properties": { 10 + "uri": { "type": "string", "format": "at-uri" }, 11 + "cid": { "type": "string", "format": "cid" } 12 + } 13 + }, 14 + "feedViewPostRef": { 15 + "type": "object", 16 + "required": ["post"], 17 + "properties": { 18 + "post": { 19 + "type": "union", 20 + "refs": ["app.bsky.feed.defs#postView", "#postViewRef"] 21 + }, 22 + "reply": { 23 + "type": "union", 24 + "refs": ["app.bsky.feed.defs#replyRef", "#replyRef"] 25 + }, 26 + "reason": { "type": "union", "refs": ["app.bsky.feed.defs#reasonRepost", "app.bsky.feed.defs#reasonPin"] }, 27 + "feedContext": { 28 + "type": "string", 29 + "description": "Context provided by feed generator that may be passed back alongside interactions.", 30 + "maxLength": 2000 31 + }, 32 + "reqId": { 33 + "type": "string", 34 + "description": "Unique identifier per request that may be passed back alongside interactions.", 35 + "maxLength": 100 36 + } 37 + } 38 + }, 39 + "replyRef": { 40 + "type": "object", 41 + "required": ["root", "parent"], 42 + "properties": { 43 + "root": { 44 + "type": "union", 45 + "refs": ["#postViewRef", "app.bsky.feed.defs#postView", "app.bsky.feed.defs#notFoundPost", "app.bsky.feed.defs#blockedPost"] 46 + }, 47 + "parent": { 48 + "type": "union", 49 + "refs": ["#postViewRef", "app.bsky.feed.defs#postView", "app.bsky.feed.defs#notFoundPost", "app.bsky.feed.defs#blockedPost"] 50 + }, 51 + "grandparentAuthor": { 52 + "type": "union", 53 + "refs": ["party.whey.app.bsky.actor.defs#profileViewBasicRef","app.bsky.actor.defs#profileViewBasic"], 54 + "description": "When parent is a reply to another post, this is the author of that post." 55 + } 56 + } 57 + }, 58 + "threadViewPostRef": { 59 + "type": "object", 60 + "required": ["post"], 61 + "properties": { 62 + "post": { 63 + "type": "union", 64 + "refs": ["#postViewRef", "app.bsky.feed.defs#postView"] 65 + }, 66 + "parent": { 67 + "type": "union", 68 + "refs": [ 69 + "#threadViewPostRef", 70 + "app.bsky.feed.defs#threadViewPost", 71 + "app.bsky.feed.defs#notFoundPost", 72 + "app.bsky.feed.defs#blockedPost" 73 + ] 74 + }, 75 + "replies": { 76 + "type": "array", 77 + "items": { 78 + "type": "union", 79 + "refs": [ 80 + "#threadViewPostRef", 81 + "app.bsky.feed.defs#threadViewPost", 82 + "app.bsky.feed.defs#notFoundPost", 83 + "app.bsky.feed.defs#blockedPost" 84 + ] 85 + } 86 + }, 87 + "threadContext": { "type": "ref", "ref": "app.bsky.feed.defs#threadContext" } 88 + } 89 + } 90 + } 91 + }
+42
indexserver/lexicons/party/whey/app/bsky/feed/getActorLikesPartial.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "party.whey.app.bsky.feed.getActorLikesPartial", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a list of posts liked by an actor. May require auth, (if so, actor must be the requesting account).", 8 + "parameters": { 9 + "type": "params", 10 + "required": ["actor"], 11 + "properties": { 12 + "actor": { "type": "string", "format": "at-identifier" }, 13 + "limit": { 14 + "type": "integer", 15 + "minimum": 1, 16 + "maximum": 100, 17 + "default": 50 18 + }, 19 + "cursor": { "type": "string" } 20 + } 21 + }, 22 + "output": { 23 + "encoding": "application/json", 24 + "schema": { 25 + "type": "object", 26 + "required": ["feed"], 27 + "properties": { 28 + "cursor": { "type": "string" }, 29 + "feed": { 30 + "type": "array", 31 + "items": { 32 + "type": "union", 33 + "refs": ["party.whey.app.bsky.feed.defs#feedViewPostRef","app.bsky.feed.defs#feedViewPost"] 34 + } 35 + } 36 + } 37 + } 38 + }, 39 + "errors": [{ "name": "BlockedActor" }, { "name": "BlockedByActor" }] 40 + } 41 + } 42 + }
+58
indexserver/lexicons/party/whey/app/bsky/feed/getAuthorFeedPartial.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "party.whey.app.bsky.feed.getAuthorFeedPartial", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth.", 8 + "parameters": { 9 + "type": "params", 10 + "required": ["actor"], 11 + "properties": { 12 + "actor": { "type": "string", "format": "at-identifier" }, 13 + "limit": { 14 + "type": "integer", 15 + "minimum": 1, 16 + "maximum": 100, 17 + "default": 50 18 + }, 19 + "cursor": { "type": "string" }, 20 + "filter": { 21 + "type": "string", 22 + "description": "Combinations of post/repost types to include in response.", 23 + "knownValues": [ 24 + "posts_with_replies", 25 + "posts_no_replies", 26 + "posts_with_media", 27 + "posts_and_author_threads", 28 + "posts_with_video" 29 + ], 30 + "default": "posts_with_replies" 31 + }, 32 + "includePins": { 33 + "type": "boolean", 34 + "default": false 35 + } 36 + } 37 + }, 38 + "output": { 39 + "encoding": "application/json", 40 + "schema": { 41 + "type": "object", 42 + "required": ["feed"], 43 + "properties": { 44 + "cursor": { "type": "string" }, 45 + "feed": { 46 + "type": "array", 47 + "items": { 48 + "type": "union", 49 + "refs": ["party.whey.app.bsky.feed.defs#feedViewPostRef","app.bsky.feed.defs#feedViewPost"] 50 + } 51 + } 52 + } 53 + } 54 + }, 55 + "errors": [{ "name": "BlockedActor" }, { "name": "BlockedByActor" }] 56 + } 57 + } 58 + }
+58
indexserver/lexicons/party/whey/app/bsky/feed/getLikesPartial.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "party.whey.app.bsky.feed.getLikesPartial", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get like records which reference a subject (by AT-URI and CID).", 8 + "parameters": { 9 + "type": "params", 10 + "required": ["uri"], 11 + "properties": { 12 + "uri": { 13 + "type": "string", 14 + "format": "at-uri", 15 + "description": "AT-URI of the subject (eg, a post record)." 16 + }, 17 + "cid": { 18 + "type": "string", 19 + "format": "cid", 20 + "description": "CID of the subject record (aka, specific version of record), to filter likes." 21 + }, 22 + "limit": { 23 + "type": "integer", 24 + "minimum": 1, 25 + "maximum": 100, 26 + "default": 50 27 + }, 28 + "cursor": { "type": "string" } 29 + } 30 + }, 31 + "output": { 32 + "encoding": "application/json", 33 + "schema": { 34 + "type": "object", 35 + "required": ["uri", "likes"], 36 + "properties": { 37 + "uri": { "type": "string", "format": "at-uri" }, 38 + "cid": { "type": "string", "format": "cid" }, 39 + "cursor": { "type": "string" }, 40 + "likes": { 41 + "type": "array", 42 + "items": { "type": "ref", "ref": "#like" } 43 + } 44 + } 45 + } 46 + } 47 + }, 48 + "like": { 49 + "type": "object", 50 + "required": ["indexedAt", "createdAt", "actor"], 51 + "properties": { 52 + "indexedAt": { "type": "string", "format": "datetime" }, 53 + "createdAt": { "type": "string", "format": "datetime" }, 54 + "actor": { "type": "ref", "ref": "party.whey.app.bsky.actor.defs#profileViewRef" } 55 + } 56 + } 57 + } 58 + }
+46
indexserver/lexicons/party/whey/app/bsky/feed/getListFeedPartial.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "party.whey.app.bsky.feed.getListFeedPartial", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.", 8 + "parameters": { 9 + "type": "params", 10 + "required": ["list"], 11 + "properties": { 12 + "list": { 13 + "type": "string", 14 + "format": "at-uri", 15 + "description": "Reference (AT-URI) to the list record." 16 + }, 17 + "limit": { 18 + "type": "integer", 19 + "minimum": 1, 20 + "maximum": 100, 21 + "default": 50 22 + }, 23 + "cursor": { "type": "string" } 24 + } 25 + }, 26 + "output": { 27 + "encoding": "application/json", 28 + "schema": { 29 + "type": "object", 30 + "required": ["feed"], 31 + "properties": { 32 + "cursor": { "type": "string" }, 33 + "feed": { 34 + "type": "array", 35 + "items": { 36 + "type": "ref", 37 + "ref": "party.whey.app.bsky.feed.defs#feedViewPostRef" 38 + } 39 + } 40 + } 41 + } 42 + }, 43 + "errors": [{ "name": "UnknownList" }] 44 + } 45 + } 46 + }
+58
indexserver/lexicons/party/whey/app/bsky/feed/getPostThreadPartial.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "party.whey.app.bsky.feed.getPostThreadPartial", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.", 8 + "parameters": { 9 + "type": "params", 10 + "required": ["uri"], 11 + "properties": { 12 + "uri": { 13 + "type": "string", 14 + "format": "at-uri", 15 + "description": "Reference (AT-URI) to post record." 16 + }, 17 + "depth": { 18 + "type": "integer", 19 + "description": "How many levels of reply depth should be included in response.", 20 + "default": 6, 21 + "minimum": 0, 22 + "maximum": 1000 23 + }, 24 + "parentHeight": { 25 + "type": "integer", 26 + "description": "How many levels of parent (and grandparent, etc) post to include.", 27 + "default": 80, 28 + "minimum": 0, 29 + "maximum": 1000 30 + } 31 + } 32 + }, 33 + "output": { 34 + "encoding": "application/json", 35 + "schema": { 36 + "type": "object", 37 + "required": ["thread"], 38 + "properties": { 39 + "thread": { 40 + "type": "union", 41 + "refs": [ 42 + "party.whey.app.bsky.feed.defs#threadViewPostRef", 43 + "app.bsky.feed.defs#threadViewPost", 44 + "app.bsky.feed.defs#notFoundPost", 45 + "app.bsky.feed.defs#blockedPost" 46 + ] 47 + }, 48 + "threadgate": { 49 + "type": "ref", 50 + "ref": "app.bsky.feed.defs#threadgateView" 51 + } 52 + } 53 + } 54 + }, 55 + "errors": [{ "name": "NotFound" }] 56 + } 57 + } 58 + }
+52
indexserver/lexicons/party/whey/app/bsky/feed/getQuotesPartial.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "party.whey.app.bsky.feed.getQuotesPartial", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a list of quotes for a given post.", 8 + "parameters": { 9 + "type": "params", 10 + "required": ["uri"], 11 + "properties": { 12 + "uri": { 13 + "type": "string", 14 + "format": "at-uri", 15 + "description": "Reference (AT-URI) of post record" 16 + }, 17 + "cid": { 18 + "type": "string", 19 + "format": "cid", 20 + "description": "If supplied, filters to quotes of specific version (by CID) of the post record." 21 + }, 22 + "limit": { 23 + "type": "integer", 24 + "minimum": 1, 25 + "maximum": 100, 26 + "default": 50 27 + }, 28 + "cursor": { "type": "string" } 29 + } 30 + }, 31 + "output": { 32 + "encoding": "application/json", 33 + "schema": { 34 + "type": "object", 35 + "required": ["uri", "posts"], 36 + "properties": { 37 + "uri": { "type": "string", "format": "at-uri" }, 38 + "cid": { "type": "string", "format": "cid" }, 39 + "cursor": { "type": "string" }, 40 + "posts": { 41 + "type": "array", 42 + "items": { 43 + "type": "union", 44 + "refs": ["party.whey.app.bsky.feed.defs#postViewRef","app.bsky.feed.defs#postView"] 45 + } 46 + } 47 + } 48 + } 49 + } 50 + } 51 + } 52 + }
+52
indexserver/lexicons/party/whey/app/bsky/feed/getRepostedByPartial.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "party.whey.app.bsky.feed.getRepostedByPartial", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a list of reposts for a given post.", 8 + "parameters": { 9 + "type": "params", 10 + "required": ["uri"], 11 + "properties": { 12 + "uri": { 13 + "type": "string", 14 + "format": "at-uri", 15 + "description": "Reference (AT-URI) of post record" 16 + }, 17 + "cid": { 18 + "type": "string", 19 + "format": "cid", 20 + "description": "If supplied, filters to reposts of specific version (by CID) of the post record." 21 + }, 22 + "limit": { 23 + "type": "integer", 24 + "minimum": 1, 25 + "maximum": 100, 26 + "default": 50 27 + }, 28 + "cursor": { "type": "string" } 29 + } 30 + }, 31 + "output": { 32 + "encoding": "application/json", 33 + "schema": { 34 + "type": "object", 35 + "required": ["uri", "repostedBy"], 36 + "properties": { 37 + "uri": { "type": "string", "format": "at-uri" }, 38 + "cid": { "type": "string", "format": "cid" }, 39 + "cursor": { "type": "string" }, 40 + "repostedBy": { 41 + "type": "array", 42 + "items": { 43 + "type": "union", 44 + "refs": ["party.whey.app.bsky.actor.defs#profileViewRef","app.bsky.actor.defs#profileView"] 45 + } 46 + } 47 + } 48 + } 49 + } 50 + } 51 + } 52 + }
+643
indexserver/types/app/bsky/actor/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + import type * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs.ts' 13 + import type * as AppBskyGraphDefs from '../graph/defs.ts' 14 + import type * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef.ts' 15 + import type * as AppBskyNotificationDefs from '../notification/defs.ts' 16 + import type * as AppBskyFeedThreadgate from '../feed/threadgate.ts' 17 + import type * as AppBskyFeedPostgate from '../feed/postgate.ts' 18 + import type * as AppBskyEmbedExternal from '../embed/external.ts' 19 + 20 + const is$typed = _is$typed, 21 + validate = _validate 22 + const id = 'app.bsky.actor.defs' 23 + 24 + export interface ProfileViewBasic { 25 + $type?: 'app.bsky.actor.defs#profileViewBasic' 26 + did: string 27 + handle: string 28 + displayName?: string 29 + avatar?: string 30 + associated?: ProfileAssociated 31 + viewer?: ViewerState 32 + labels?: ComAtprotoLabelDefs.Label[] 33 + createdAt?: string 34 + verification?: VerificationState 35 + status?: StatusView 36 + } 37 + 38 + const hashProfileViewBasic = 'profileViewBasic' 39 + 40 + export function isProfileViewBasic<V>(v: V) { 41 + return is$typed(v, id, hashProfileViewBasic) 42 + } 43 + 44 + export function validateProfileViewBasic<V>(v: V) { 45 + return validate<ProfileViewBasic & V>(v, id, hashProfileViewBasic) 46 + } 47 + 48 + export interface ProfileView { 49 + $type?: 'app.bsky.actor.defs#profileView' 50 + did: string 51 + handle: string 52 + displayName?: string 53 + description?: string 54 + avatar?: string 55 + associated?: ProfileAssociated 56 + indexedAt?: string 57 + createdAt?: string 58 + viewer?: ViewerState 59 + labels?: ComAtprotoLabelDefs.Label[] 60 + verification?: VerificationState 61 + status?: StatusView 62 + } 63 + 64 + const hashProfileView = 'profileView' 65 + 66 + export function isProfileView<V>(v: V) { 67 + return is$typed(v, id, hashProfileView) 68 + } 69 + 70 + export function validateProfileView<V>(v: V) { 71 + return validate<ProfileView & V>(v, id, hashProfileView) 72 + } 73 + 74 + export interface ProfileViewDetailed { 75 + $type?: 'app.bsky.actor.defs#profileViewDetailed' 76 + did: string 77 + handle: string 78 + displayName?: string 79 + description?: string 80 + avatar?: string 81 + banner?: string 82 + followersCount?: number 83 + followsCount?: number 84 + postsCount?: number 85 + associated?: ProfileAssociated 86 + joinedViaStarterPack?: AppBskyGraphDefs.StarterPackViewBasic 87 + indexedAt?: string 88 + createdAt?: string 89 + viewer?: ViewerState 90 + labels?: ComAtprotoLabelDefs.Label[] 91 + pinnedPost?: ComAtprotoRepoStrongRef.Main 92 + verification?: VerificationState 93 + status?: StatusView 94 + } 95 + 96 + const hashProfileViewDetailed = 'profileViewDetailed' 97 + 98 + export function isProfileViewDetailed<V>(v: V) { 99 + return is$typed(v, id, hashProfileViewDetailed) 100 + } 101 + 102 + export function validateProfileViewDetailed<V>(v: V) { 103 + return validate<ProfileViewDetailed & V>(v, id, hashProfileViewDetailed) 104 + } 105 + 106 + export interface ProfileAssociated { 107 + $type?: 'app.bsky.actor.defs#profileAssociated' 108 + lists?: number 109 + feedgens?: number 110 + starterPacks?: number 111 + labeler?: boolean 112 + chat?: ProfileAssociatedChat 113 + activitySubscription?: ProfileAssociatedActivitySubscription 114 + } 115 + 116 + const hashProfileAssociated = 'profileAssociated' 117 + 118 + export function isProfileAssociated<V>(v: V) { 119 + return is$typed(v, id, hashProfileAssociated) 120 + } 121 + 122 + export function validateProfileAssociated<V>(v: V) { 123 + return validate<ProfileAssociated & V>(v, id, hashProfileAssociated) 124 + } 125 + 126 + export interface ProfileAssociatedChat { 127 + $type?: 'app.bsky.actor.defs#profileAssociatedChat' 128 + allowIncoming: 'all' | 'none' | 'following' | (string & {}) 129 + } 130 + 131 + const hashProfileAssociatedChat = 'profileAssociatedChat' 132 + 133 + export function isProfileAssociatedChat<V>(v: V) { 134 + return is$typed(v, id, hashProfileAssociatedChat) 135 + } 136 + 137 + export function validateProfileAssociatedChat<V>(v: V) { 138 + return validate<ProfileAssociatedChat & V>(v, id, hashProfileAssociatedChat) 139 + } 140 + 141 + export interface ProfileAssociatedActivitySubscription { 142 + $type?: 'app.bsky.actor.defs#profileAssociatedActivitySubscription' 143 + allowSubscriptions: 'followers' | 'mutuals' | 'none' | (string & {}) 144 + } 145 + 146 + const hashProfileAssociatedActivitySubscription = 147 + 'profileAssociatedActivitySubscription' 148 + 149 + export function isProfileAssociatedActivitySubscription<V>(v: V) { 150 + return is$typed(v, id, hashProfileAssociatedActivitySubscription) 151 + } 152 + 153 + export function validateProfileAssociatedActivitySubscription<V>(v: V) { 154 + return validate<ProfileAssociatedActivitySubscription & V>( 155 + v, 156 + id, 157 + hashProfileAssociatedActivitySubscription, 158 + ) 159 + } 160 + 161 + /** Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests. */ 162 + export interface ViewerState { 163 + $type?: 'app.bsky.actor.defs#viewerState' 164 + muted?: boolean 165 + mutedByList?: AppBskyGraphDefs.ListViewBasic 166 + blockedBy?: boolean 167 + blocking?: string 168 + blockingByList?: AppBskyGraphDefs.ListViewBasic 169 + following?: string 170 + followedBy?: string 171 + knownFollowers?: KnownFollowers 172 + activitySubscription?: AppBskyNotificationDefs.ActivitySubscription 173 + } 174 + 175 + const hashViewerState = 'viewerState' 176 + 177 + export function isViewerState<V>(v: V) { 178 + return is$typed(v, id, hashViewerState) 179 + } 180 + 181 + export function validateViewerState<V>(v: V) { 182 + return validate<ViewerState & V>(v, id, hashViewerState) 183 + } 184 + 185 + /** The subject's followers whom you also follow */ 186 + export interface KnownFollowers { 187 + $type?: 'app.bsky.actor.defs#knownFollowers' 188 + count: number 189 + followers: ProfileViewBasic[] 190 + } 191 + 192 + const hashKnownFollowers = 'knownFollowers' 193 + 194 + export function isKnownFollowers<V>(v: V) { 195 + return is$typed(v, id, hashKnownFollowers) 196 + } 197 + 198 + export function validateKnownFollowers<V>(v: V) { 199 + return validate<KnownFollowers & V>(v, id, hashKnownFollowers) 200 + } 201 + 202 + /** Represents the verification information about the user this object is attached to. */ 203 + export interface VerificationState { 204 + $type?: 'app.bsky.actor.defs#verificationState' 205 + /** All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included. */ 206 + verifications: VerificationView[] 207 + /** The user's status as a verified account. */ 208 + verifiedStatus: 'valid' | 'invalid' | 'none' | (string & {}) 209 + /** The user's status as a trusted verifier. */ 210 + trustedVerifierStatus: 'valid' | 'invalid' | 'none' | (string & {}) 211 + } 212 + 213 + const hashVerificationState = 'verificationState' 214 + 215 + export function isVerificationState<V>(v: V) { 216 + return is$typed(v, id, hashVerificationState) 217 + } 218 + 219 + export function validateVerificationState<V>(v: V) { 220 + return validate<VerificationState & V>(v, id, hashVerificationState) 221 + } 222 + 223 + /** An individual verification for an associated subject. */ 224 + export interface VerificationView { 225 + $type?: 'app.bsky.actor.defs#verificationView' 226 + /** The user who issued this verification. */ 227 + issuer: string 228 + /** The AT-URI of the verification record. */ 229 + uri: string 230 + /** True if the verification passes validation, otherwise false. */ 231 + isValid: boolean 232 + /** Timestamp when the verification was created. */ 233 + createdAt: string 234 + } 235 + 236 + const hashVerificationView = 'verificationView' 237 + 238 + export function isVerificationView<V>(v: V) { 239 + return is$typed(v, id, hashVerificationView) 240 + } 241 + 242 + export function validateVerificationView<V>(v: V) { 243 + return validate<VerificationView & V>(v, id, hashVerificationView) 244 + } 245 + 246 + export type Preferences = ( 247 + | $Typed<AdultContentPref> 248 + | $Typed<ContentLabelPref> 249 + | $Typed<SavedFeedsPref> 250 + | $Typed<SavedFeedsPrefV2> 251 + | $Typed<PersonalDetailsPref> 252 + | $Typed<FeedViewPref> 253 + | $Typed<ThreadViewPref> 254 + | $Typed<InterestsPref> 255 + | $Typed<MutedWordsPref> 256 + | $Typed<HiddenPostsPref> 257 + | $Typed<BskyAppStatePref> 258 + | $Typed<LabelersPref> 259 + | $Typed<PostInteractionSettingsPref> 260 + | $Typed<VerificationPrefs> 261 + | { $type: string } 262 + )[] 263 + 264 + export interface AdultContentPref { 265 + $type?: 'app.bsky.actor.defs#adultContentPref' 266 + enabled: boolean 267 + } 268 + 269 + const hashAdultContentPref = 'adultContentPref' 270 + 271 + export function isAdultContentPref<V>(v: V) { 272 + return is$typed(v, id, hashAdultContentPref) 273 + } 274 + 275 + export function validateAdultContentPref<V>(v: V) { 276 + return validate<AdultContentPref & V>(v, id, hashAdultContentPref) 277 + } 278 + 279 + export interface ContentLabelPref { 280 + $type?: 'app.bsky.actor.defs#contentLabelPref' 281 + /** Which labeler does this preference apply to? If undefined, applies globally. */ 282 + labelerDid?: string 283 + label: string 284 + visibility: 'ignore' | 'show' | 'warn' | 'hide' | (string & {}) 285 + } 286 + 287 + const hashContentLabelPref = 'contentLabelPref' 288 + 289 + export function isContentLabelPref<V>(v: V) { 290 + return is$typed(v, id, hashContentLabelPref) 291 + } 292 + 293 + export function validateContentLabelPref<V>(v: V) { 294 + return validate<ContentLabelPref & V>(v, id, hashContentLabelPref) 295 + } 296 + 297 + export interface SavedFeed { 298 + $type?: 'app.bsky.actor.defs#savedFeed' 299 + id: string 300 + type: 'feed' | 'list' | 'timeline' | (string & {}) 301 + value: string 302 + pinned: boolean 303 + } 304 + 305 + const hashSavedFeed = 'savedFeed' 306 + 307 + export function isSavedFeed<V>(v: V) { 308 + return is$typed(v, id, hashSavedFeed) 309 + } 310 + 311 + export function validateSavedFeed<V>(v: V) { 312 + return validate<SavedFeed & V>(v, id, hashSavedFeed) 313 + } 314 + 315 + export interface SavedFeedsPrefV2 { 316 + $type?: 'app.bsky.actor.defs#savedFeedsPrefV2' 317 + items: SavedFeed[] 318 + } 319 + 320 + const hashSavedFeedsPrefV2 = 'savedFeedsPrefV2' 321 + 322 + export function isSavedFeedsPrefV2<V>(v: V) { 323 + return is$typed(v, id, hashSavedFeedsPrefV2) 324 + } 325 + 326 + export function validateSavedFeedsPrefV2<V>(v: V) { 327 + return validate<SavedFeedsPrefV2 & V>(v, id, hashSavedFeedsPrefV2) 328 + } 329 + 330 + export interface SavedFeedsPref { 331 + $type?: 'app.bsky.actor.defs#savedFeedsPref' 332 + pinned: string[] 333 + saved: string[] 334 + timelineIndex?: number 335 + } 336 + 337 + const hashSavedFeedsPref = 'savedFeedsPref' 338 + 339 + export function isSavedFeedsPref<V>(v: V) { 340 + return is$typed(v, id, hashSavedFeedsPref) 341 + } 342 + 343 + export function validateSavedFeedsPref<V>(v: V) { 344 + return validate<SavedFeedsPref & V>(v, id, hashSavedFeedsPref) 345 + } 346 + 347 + export interface PersonalDetailsPref { 348 + $type?: 'app.bsky.actor.defs#personalDetailsPref' 349 + /** The birth date of account owner. */ 350 + birthDate?: string 351 + } 352 + 353 + const hashPersonalDetailsPref = 'personalDetailsPref' 354 + 355 + export function isPersonalDetailsPref<V>(v: V) { 356 + return is$typed(v, id, hashPersonalDetailsPref) 357 + } 358 + 359 + export function validatePersonalDetailsPref<V>(v: V) { 360 + return validate<PersonalDetailsPref & V>(v, id, hashPersonalDetailsPref) 361 + } 362 + 363 + export interface FeedViewPref { 364 + $type?: 'app.bsky.actor.defs#feedViewPref' 365 + /** The URI of the feed, or an identifier which describes the feed. */ 366 + feed: string 367 + /** Hide replies in the feed. */ 368 + hideReplies?: boolean 369 + /** Hide replies in the feed if they are not by followed users. */ 370 + hideRepliesByUnfollowed: boolean 371 + /** Hide replies in the feed if they do not have this number of likes. */ 372 + hideRepliesByLikeCount?: number 373 + /** Hide reposts in the feed. */ 374 + hideReposts?: boolean 375 + /** Hide quote posts in the feed. */ 376 + hideQuotePosts?: boolean 377 + } 378 + 379 + const hashFeedViewPref = 'feedViewPref' 380 + 381 + export function isFeedViewPref<V>(v: V) { 382 + return is$typed(v, id, hashFeedViewPref) 383 + } 384 + 385 + export function validateFeedViewPref<V>(v: V) { 386 + return validate<FeedViewPref & V>(v, id, hashFeedViewPref) 387 + } 388 + 389 + export interface ThreadViewPref { 390 + $type?: 'app.bsky.actor.defs#threadViewPref' 391 + /** Sorting mode for threads. */ 392 + sort?: 393 + | 'oldest' 394 + | 'newest' 395 + | 'most-likes' 396 + | 'random' 397 + | 'hotness' 398 + | (string & {}) 399 + /** Show followed users at the top of all replies. */ 400 + prioritizeFollowedUsers?: boolean 401 + } 402 + 403 + const hashThreadViewPref = 'threadViewPref' 404 + 405 + export function isThreadViewPref<V>(v: V) { 406 + return is$typed(v, id, hashThreadViewPref) 407 + } 408 + 409 + export function validateThreadViewPref<V>(v: V) { 410 + return validate<ThreadViewPref & V>(v, id, hashThreadViewPref) 411 + } 412 + 413 + export interface InterestsPref { 414 + $type?: 'app.bsky.actor.defs#interestsPref' 415 + /** A list of tags which describe the account owner's interests gathered during onboarding. */ 416 + tags: string[] 417 + } 418 + 419 + const hashInterestsPref = 'interestsPref' 420 + 421 + export function isInterestsPref<V>(v: V) { 422 + return is$typed(v, id, hashInterestsPref) 423 + } 424 + 425 + export function validateInterestsPref<V>(v: V) { 426 + return validate<InterestsPref & V>(v, id, hashInterestsPref) 427 + } 428 + 429 + export type MutedWordTarget = 'content' | 'tag' | (string & {}) 430 + 431 + /** A word that the account owner has muted. */ 432 + export interface MutedWord { 433 + $type?: 'app.bsky.actor.defs#mutedWord' 434 + id?: string 435 + /** The muted word itself. */ 436 + value: string 437 + /** The intended targets of the muted word. */ 438 + targets: MutedWordTarget[] 439 + /** Groups of users to apply the muted word to. If undefined, applies to all users. */ 440 + actorTarget: 'all' | 'exclude-following' | (string & {}) 441 + /** The date and time at which the muted word will expire and no longer be applied. */ 442 + expiresAt?: string 443 + } 444 + 445 + const hashMutedWord = 'mutedWord' 446 + 447 + export function isMutedWord<V>(v: V) { 448 + return is$typed(v, id, hashMutedWord) 449 + } 450 + 451 + export function validateMutedWord<V>(v: V) { 452 + return validate<MutedWord & V>(v, id, hashMutedWord) 453 + } 454 + 455 + export interface MutedWordsPref { 456 + $type?: 'app.bsky.actor.defs#mutedWordsPref' 457 + /** A list of words the account owner has muted. */ 458 + items: MutedWord[] 459 + } 460 + 461 + const hashMutedWordsPref = 'mutedWordsPref' 462 + 463 + export function isMutedWordsPref<V>(v: V) { 464 + return is$typed(v, id, hashMutedWordsPref) 465 + } 466 + 467 + export function validateMutedWordsPref<V>(v: V) { 468 + return validate<MutedWordsPref & V>(v, id, hashMutedWordsPref) 469 + } 470 + 471 + export interface HiddenPostsPref { 472 + $type?: 'app.bsky.actor.defs#hiddenPostsPref' 473 + /** A list of URIs of posts the account owner has hidden. */ 474 + items: string[] 475 + } 476 + 477 + const hashHiddenPostsPref = 'hiddenPostsPref' 478 + 479 + export function isHiddenPostsPref<V>(v: V) { 480 + return is$typed(v, id, hashHiddenPostsPref) 481 + } 482 + 483 + export function validateHiddenPostsPref<V>(v: V) { 484 + return validate<HiddenPostsPref & V>(v, id, hashHiddenPostsPref) 485 + } 486 + 487 + export interface LabelersPref { 488 + $type?: 'app.bsky.actor.defs#labelersPref' 489 + labelers: LabelerPrefItem[] 490 + } 491 + 492 + const hashLabelersPref = 'labelersPref' 493 + 494 + export function isLabelersPref<V>(v: V) { 495 + return is$typed(v, id, hashLabelersPref) 496 + } 497 + 498 + export function validateLabelersPref<V>(v: V) { 499 + return validate<LabelersPref & V>(v, id, hashLabelersPref) 500 + } 501 + 502 + export interface LabelerPrefItem { 503 + $type?: 'app.bsky.actor.defs#labelerPrefItem' 504 + did: string 505 + } 506 + 507 + const hashLabelerPrefItem = 'labelerPrefItem' 508 + 509 + export function isLabelerPrefItem<V>(v: V) { 510 + return is$typed(v, id, hashLabelerPrefItem) 511 + } 512 + 513 + export function validateLabelerPrefItem<V>(v: V) { 514 + return validate<LabelerPrefItem & V>(v, id, hashLabelerPrefItem) 515 + } 516 + 517 + /** A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this. */ 518 + export interface BskyAppStatePref { 519 + $type?: 'app.bsky.actor.defs#bskyAppStatePref' 520 + activeProgressGuide?: BskyAppProgressGuide 521 + /** An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user. */ 522 + queuedNudges?: string[] 523 + /** Storage for NUXs the user has encountered. */ 524 + nuxs?: Nux[] 525 + } 526 + 527 + const hashBskyAppStatePref = 'bskyAppStatePref' 528 + 529 + export function isBskyAppStatePref<V>(v: V) { 530 + return is$typed(v, id, hashBskyAppStatePref) 531 + } 532 + 533 + export function validateBskyAppStatePref<V>(v: V) { 534 + return validate<BskyAppStatePref & V>(v, id, hashBskyAppStatePref) 535 + } 536 + 537 + /** If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress. */ 538 + export interface BskyAppProgressGuide { 539 + $type?: 'app.bsky.actor.defs#bskyAppProgressGuide' 540 + guide: string 541 + } 542 + 543 + const hashBskyAppProgressGuide = 'bskyAppProgressGuide' 544 + 545 + export function isBskyAppProgressGuide<V>(v: V) { 546 + return is$typed(v, id, hashBskyAppProgressGuide) 547 + } 548 + 549 + export function validateBskyAppProgressGuide<V>(v: V) { 550 + return validate<BskyAppProgressGuide & V>(v, id, hashBskyAppProgressGuide) 551 + } 552 + 553 + /** A new user experiences (NUX) storage object */ 554 + export interface Nux { 555 + $type?: 'app.bsky.actor.defs#nux' 556 + id: string 557 + completed: boolean 558 + /** Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters. */ 559 + data?: string 560 + /** The date and time at which the NUX will expire and should be considered completed. */ 561 + expiresAt?: string 562 + } 563 + 564 + const hashNux = 'nux' 565 + 566 + export function isNux<V>(v: V) { 567 + return is$typed(v, id, hashNux) 568 + } 569 + 570 + export function validateNux<V>(v: V) { 571 + return validate<Nux & V>(v, id, hashNux) 572 + } 573 + 574 + /** Preferences for how verified accounts appear in the app. */ 575 + export interface VerificationPrefs { 576 + $type?: 'app.bsky.actor.defs#verificationPrefs' 577 + /** Hide the blue check badges for verified accounts and trusted verifiers. */ 578 + hideBadges: boolean 579 + } 580 + 581 + const hashVerificationPrefs = 'verificationPrefs' 582 + 583 + export function isVerificationPrefs<V>(v: V) { 584 + return is$typed(v, id, hashVerificationPrefs) 585 + } 586 + 587 + export function validateVerificationPrefs<V>(v: V) { 588 + return validate<VerificationPrefs & V>(v, id, hashVerificationPrefs) 589 + } 590 + 591 + /** Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly. */ 592 + export interface PostInteractionSettingsPref { 593 + $type?: 'app.bsky.actor.defs#postInteractionSettingsPref' 594 + /** Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply. */ 595 + threadgateAllowRules?: ( 596 + | $Typed<AppBskyFeedThreadgate.MentionRule> 597 + | $Typed<AppBskyFeedThreadgate.FollowerRule> 598 + | $Typed<AppBskyFeedThreadgate.FollowingRule> 599 + | $Typed<AppBskyFeedThreadgate.ListRule> 600 + | { $type: string } 601 + )[] 602 + /** Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed. */ 603 + postgateEmbeddingRules?: ( 604 + | $Typed<AppBskyFeedPostgate.DisableRule> 605 + | { $type: string } 606 + )[] 607 + } 608 + 609 + const hashPostInteractionSettingsPref = 'postInteractionSettingsPref' 610 + 611 + export function isPostInteractionSettingsPref<V>(v: V) { 612 + return is$typed(v, id, hashPostInteractionSettingsPref) 613 + } 614 + 615 + export function validatePostInteractionSettingsPref<V>(v: V) { 616 + return validate<PostInteractionSettingsPref & V>( 617 + v, 618 + id, 619 + hashPostInteractionSettingsPref, 620 + ) 621 + } 622 + 623 + export interface StatusView { 624 + $type?: 'app.bsky.actor.defs#statusView' 625 + /** The status for the account. */ 626 + status: 'app.bsky.actor.status#live' | (string & {}) 627 + record: { [_ in string]: unknown } 628 + embed?: $Typed<AppBskyEmbedExternal.View> | { $type: string } 629 + /** The date when this status will expire. The application might choose to no longer return the status after expiration. */ 630 + expiresAt?: string 631 + /** True if the status is not expired, false if it is expired. Only present if expiration was set. */ 632 + isActive?: boolean 633 + } 634 + 635 + const hashStatusView = 'statusView' 636 + 637 + export function isStatusView<V>(v: V) { 638 + return is$typed(v, id, hashStatusView) 639 + } 640 + 641 + export function validateStatusView<V>(v: V) { 642 + return validate<StatusView & V>(v, id, hashStatusView) 643 + }
+37
indexserver/types/app/bsky/actor/getProfile.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + import type * as AppBskyActorDefs from './defs.ts' 13 + 14 + const is$typed = _is$typed, 15 + validate = _validate 16 + const id = 'app.bsky.actor.getProfile' 17 + 18 + export type QueryParams = { 19 + /** Handle or DID of account to fetch profile of. */ 20 + actor: string 21 + } 22 + export type InputSchema = undefined 23 + export type OutputSchema = AppBskyActorDefs.ProfileViewDetailed 24 + export type HandlerInput = void 25 + 26 + export interface HandlerSuccess { 27 + encoding: 'application/json' 28 + body: OutputSchema 29 + headers?: { [key: string]: string } 30 + } 31 + 32 + export interface HandlerError { 33 + status: number 34 + message?: string 35 + } 36 + 37 + export type HandlerOutput = HandlerError | HandlerSuccess
+40
indexserver/types/app/bsky/actor/getProfiles.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + import type * as AppBskyActorDefs from './defs.ts' 13 + 14 + const is$typed = _is$typed, 15 + validate = _validate 16 + const id = 'app.bsky.actor.getProfiles' 17 + 18 + export type QueryParams = { 19 + actors: string[] 20 + } 21 + export type InputSchema = undefined 22 + 23 + export interface OutputSchema { 24 + profiles: AppBskyActorDefs.ProfileViewDetailed[] 25 + } 26 + 27 + export type HandlerInput = void 28 + 29 + export interface HandlerSuccess { 30 + encoding: 'application/json' 31 + body: OutputSchema 32 + headers?: { [key: string]: string } 33 + } 34 + 35 + export interface HandlerError { 36 + status: number 37 + message?: string 38 + } 39 + 40 + export type HandlerOutput = HandlerError | HandlerSuccess
+32
indexserver/types/app/bsky/embed/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'app.bsky.embed.defs' 16 + 17 + /** width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit. */ 18 + export interface AspectRatio { 19 + $type?: 'app.bsky.embed.defs#aspectRatio' 20 + width: number 21 + height: number 22 + } 23 + 24 + const hashAspectRatio = 'aspectRatio' 25 + 26 + export function isAspectRatio<V>(v: V) { 27 + return is$typed(v, id, hashAspectRatio) 28 + } 29 + 30 + export function validateAspectRatio<V>(v: V) { 31 + return validate<AspectRatio & V>(v, id, hashAspectRatio) 32 + }
+82
indexserver/types/app/bsky/embed/external.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'app.bsky.embed.external' 16 + 17 + /** A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post). */ 18 + export interface Main { 19 + $type?: 'app.bsky.embed.external' 20 + external: External 21 + } 22 + 23 + const hashMain = 'main' 24 + 25 + export function isMain<V>(v: V) { 26 + return is$typed(v, id, hashMain) 27 + } 28 + 29 + export function validateMain<V>(v: V) { 30 + return validate<Main & V>(v, id, hashMain) 31 + } 32 + 33 + export interface External { 34 + $type?: 'app.bsky.embed.external#external' 35 + uri: string 36 + title: string 37 + description: string 38 + thumb?: BlobRef 39 + } 40 + 41 + const hashExternal = 'external' 42 + 43 + export function isExternal<V>(v: V) { 44 + return is$typed(v, id, hashExternal) 45 + } 46 + 47 + export function validateExternal<V>(v: V) { 48 + return validate<External & V>(v, id, hashExternal) 49 + } 50 + 51 + export interface View { 52 + $type?: 'app.bsky.embed.external#view' 53 + external: ViewExternal 54 + } 55 + 56 + const hashView = 'view' 57 + 58 + export function isView<V>(v: V) { 59 + return is$typed(v, id, hashView) 60 + } 61 + 62 + export function validateView<V>(v: V) { 63 + return validate<View & V>(v, id, hashView) 64 + } 65 + 66 + export interface ViewExternal { 67 + $type?: 'app.bsky.embed.external#viewExternal' 68 + uri: string 69 + title: string 70 + description: string 71 + thumb?: string 72 + } 73 + 74 + const hashViewExternal = 'viewExternal' 75 + 76 + export function isViewExternal<V>(v: V) { 77 + return is$typed(v, id, hashViewExternal) 78 + } 79 + 80 + export function validateViewExternal<V>(v: V) { 81 + return validate<ViewExternal & V>(v, id, hashViewExternal) 82 + }
+85
indexserver/types/app/bsky/embed/images.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + import type * as AppBskyEmbedDefs from './defs.ts' 13 + 14 + const is$typed = _is$typed, 15 + validate = _validate 16 + const id = 'app.bsky.embed.images' 17 + 18 + export interface Main { 19 + $type?: 'app.bsky.embed.images' 20 + images: Image[] 21 + } 22 + 23 + const hashMain = 'main' 24 + 25 + export function isMain<V>(v: V) { 26 + return is$typed(v, id, hashMain) 27 + } 28 + 29 + export function validateMain<V>(v: V) { 30 + return validate<Main & V>(v, id, hashMain) 31 + } 32 + 33 + export interface Image { 34 + $type?: 'app.bsky.embed.images#image' 35 + image: BlobRef 36 + /** Alt text description of the image, for accessibility. */ 37 + alt: string 38 + aspectRatio?: AppBskyEmbedDefs.AspectRatio 39 + } 40 + 41 + const hashImage = 'image' 42 + 43 + export function isImage<V>(v: V) { 44 + return is$typed(v, id, hashImage) 45 + } 46 + 47 + export function validateImage<V>(v: V) { 48 + return validate<Image & V>(v, id, hashImage) 49 + } 50 + 51 + export interface View { 52 + $type?: 'app.bsky.embed.images#view' 53 + images: ViewImage[] 54 + } 55 + 56 + const hashView = 'view' 57 + 58 + export function isView<V>(v: V) { 59 + return is$typed(v, id, hashView) 60 + } 61 + 62 + export function validateView<V>(v: V) { 63 + return validate<View & V>(v, id, hashView) 64 + } 65 + 66 + export interface ViewImage { 67 + $type?: 'app.bsky.embed.images#viewImage' 68 + /** Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View. */ 69 + thumb: string 70 + /** 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. */ 71 + fullsize: string 72 + /** Alt text description of the image, for accessibility. */ 73 + alt: string 74 + aspectRatio?: AppBskyEmbedDefs.AspectRatio 75 + } 76 + 77 + const hashViewImage = 'viewImage' 78 + 79 + export function isViewImage<V>(v: V) { 80 + return is$typed(v, id, hashViewImage) 81 + } 82 + 83 + export function validateViewImage<V>(v: V) { 84 + return validate<ViewImage & V>(v, id, hashViewImage) 85 + }
+146
indexserver/types/app/bsky/embed/record.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + import type * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef.ts' 13 + import type * as AppBskyFeedDefs from '../feed/defs.ts' 14 + import type * as AppBskyGraphDefs from '../graph/defs.ts' 15 + import type * as AppBskyLabelerDefs from '../labeler/defs.ts' 16 + import type * as AppBskyActorDefs from '../actor/defs.ts' 17 + import type * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs.ts' 18 + import type * as AppBskyEmbedImages from './images.ts' 19 + import type * as AppBskyEmbedVideo from './video.ts' 20 + import type * as AppBskyEmbedExternal from './external.ts' 21 + import type * as AppBskyEmbedRecordWithMedia from './recordWithMedia.ts' 22 + 23 + const is$typed = _is$typed, 24 + validate = _validate 25 + const id = 'app.bsky.embed.record' 26 + 27 + export interface Main { 28 + $type?: 'app.bsky.embed.record' 29 + record: ComAtprotoRepoStrongRef.Main 30 + } 31 + 32 + const hashMain = 'main' 33 + 34 + export function isMain<V>(v: V) { 35 + return is$typed(v, id, hashMain) 36 + } 37 + 38 + export function validateMain<V>(v: V) { 39 + return validate<Main & V>(v, id, hashMain) 40 + } 41 + 42 + export interface View { 43 + $type?: 'app.bsky.embed.record#view' 44 + record: 45 + | $Typed<ViewRecord> 46 + | $Typed<ViewNotFound> 47 + | $Typed<ViewBlocked> 48 + | $Typed<ViewDetached> 49 + | $Typed<AppBskyFeedDefs.GeneratorView> 50 + | $Typed<AppBskyGraphDefs.ListView> 51 + | $Typed<AppBskyLabelerDefs.LabelerView> 52 + | $Typed<AppBskyGraphDefs.StarterPackViewBasic> 53 + | { $type: string } 54 + } 55 + 56 + const hashView = 'view' 57 + 58 + export function isView<V>(v: V) { 59 + return is$typed(v, id, hashView) 60 + } 61 + 62 + export function validateView<V>(v: V) { 63 + return validate<View & V>(v, id, hashView) 64 + } 65 + 66 + export interface ViewRecord { 67 + $type?: 'app.bsky.embed.record#viewRecord' 68 + uri: string 69 + cid: string 70 + author: AppBskyActorDefs.ProfileViewBasic 71 + /** The record data itself. */ 72 + value: { [_ in string]: unknown } 73 + labels?: ComAtprotoLabelDefs.Label[] 74 + replyCount?: number 75 + repostCount?: number 76 + likeCount?: number 77 + quoteCount?: number 78 + embeds?: ( 79 + | $Typed<AppBskyEmbedImages.View> 80 + | $Typed<AppBskyEmbedVideo.View> 81 + | $Typed<AppBskyEmbedExternal.View> 82 + | $Typed<View> 83 + | $Typed<AppBskyEmbedRecordWithMedia.View> 84 + | { $type: string } 85 + )[] 86 + indexedAt: string 87 + } 88 + 89 + const hashViewRecord = 'viewRecord' 90 + 91 + export function isViewRecord<V>(v: V) { 92 + return is$typed(v, id, hashViewRecord) 93 + } 94 + 95 + export function validateViewRecord<V>(v: V) { 96 + return validate<ViewRecord & V>(v, id, hashViewRecord) 97 + } 98 + 99 + export interface ViewNotFound { 100 + $type?: 'app.bsky.embed.record#viewNotFound' 101 + uri: string 102 + notFound: true 103 + } 104 + 105 + const hashViewNotFound = 'viewNotFound' 106 + 107 + export function isViewNotFound<V>(v: V) { 108 + return is$typed(v, id, hashViewNotFound) 109 + } 110 + 111 + export function validateViewNotFound<V>(v: V) { 112 + return validate<ViewNotFound & V>(v, id, hashViewNotFound) 113 + } 114 + 115 + export interface ViewBlocked { 116 + $type?: 'app.bsky.embed.record#viewBlocked' 117 + uri: string 118 + blocked: true 119 + author: AppBskyFeedDefs.BlockedAuthor 120 + } 121 + 122 + const hashViewBlocked = 'viewBlocked' 123 + 124 + export function isViewBlocked<V>(v: V) { 125 + return is$typed(v, id, hashViewBlocked) 126 + } 127 + 128 + export function validateViewBlocked<V>(v: V) { 129 + return validate<ViewBlocked & V>(v, id, hashViewBlocked) 130 + } 131 + 132 + export interface ViewDetached { 133 + $type?: 'app.bsky.embed.record#viewDetached' 134 + uri: string 135 + detached: true 136 + } 137 + 138 + const hashViewDetached = 'viewDetached' 139 + 140 + export function isViewDetached<V>(v: V) { 141 + return is$typed(v, id, hashViewDetached) 142 + } 143 + 144 + export function validateViewDetached<V>(v: V) { 145 + return validate<ViewDetached & V>(v, id, hashViewDetached) 146 + }
+59
indexserver/types/app/bsky/embed/recordWithMedia.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + import type * as AppBskyEmbedRecord from './record.ts' 13 + import type * as AppBskyEmbedImages from './images.ts' 14 + import type * as AppBskyEmbedVideo from './video.ts' 15 + import type * as AppBskyEmbedExternal from './external.ts' 16 + 17 + const is$typed = _is$typed, 18 + validate = _validate 19 + const id = 'app.bsky.embed.recordWithMedia' 20 + 21 + export interface Main { 22 + $type?: 'app.bsky.embed.recordWithMedia' 23 + record: AppBskyEmbedRecord.Main 24 + media: 25 + | $Typed<AppBskyEmbedImages.Main> 26 + | $Typed<AppBskyEmbedVideo.Main> 27 + | $Typed<AppBskyEmbedExternal.Main> 28 + | { $type: string } 29 + } 30 + 31 + const hashMain = 'main' 32 + 33 + export function isMain<V>(v: V) { 34 + return is$typed(v, id, hashMain) 35 + } 36 + 37 + export function validateMain<V>(v: V) { 38 + return validate<Main & V>(v, id, hashMain) 39 + } 40 + 41 + export interface View { 42 + $type?: 'app.bsky.embed.recordWithMedia#view' 43 + record: AppBskyEmbedRecord.View 44 + media: 45 + | $Typed<AppBskyEmbedImages.View> 46 + | $Typed<AppBskyEmbedVideo.View> 47 + | $Typed<AppBskyEmbedExternal.View> 48 + | { $type: string } 49 + } 50 + 51 + const hashView = 'view' 52 + 53 + export function isView<V>(v: V) { 54 + return is$typed(v, id, hashView) 55 + } 56 + 57 + export function validateView<V>(v: V) { 58 + return validate<View & V>(v, id, hashView) 59 + }
+71
indexserver/types/app/bsky/embed/video.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + import type * as AppBskyEmbedDefs from './defs.ts' 13 + 14 + const is$typed = _is$typed, 15 + validate = _validate 16 + const id = 'app.bsky.embed.video' 17 + 18 + export interface Main { 19 + $type?: 'app.bsky.embed.video' 20 + /** The mp4 video file. May be up to 100mb, formerly limited to 50mb. */ 21 + video: BlobRef 22 + captions?: Caption[] 23 + /** Alt text description of the video, for accessibility. */ 24 + alt?: string 25 + aspectRatio?: AppBskyEmbedDefs.AspectRatio 26 + } 27 + 28 + const hashMain = 'main' 29 + 30 + export function isMain<V>(v: V) { 31 + return is$typed(v, id, hashMain) 32 + } 33 + 34 + export function validateMain<V>(v: V) { 35 + return validate<Main & V>(v, id, hashMain) 36 + } 37 + 38 + export interface Caption { 39 + $type?: 'app.bsky.embed.video#caption' 40 + lang: string 41 + file: BlobRef 42 + } 43 + 44 + const hashCaption = 'caption' 45 + 46 + export function isCaption<V>(v: V) { 47 + return is$typed(v, id, hashCaption) 48 + } 49 + 50 + export function validateCaption<V>(v: V) { 51 + return validate<Caption & V>(v, id, hashCaption) 52 + } 53 + 54 + export interface View { 55 + $type?: 'app.bsky.embed.video#view' 56 + cid: string 57 + playlist: string 58 + thumbnail?: string 59 + alt?: string 60 + aspectRatio?: AppBskyEmbedDefs.AspectRatio 61 + } 62 + 63 + const hashView = 'view' 64 + 65 + export function isView<V>(v: V) { 66 + return is$typed(v, id, hashView) 67 + } 68 + 69 + export function validateView<V>(v: V) { 70 + return validate<View & V>(v, id, hashView) 71 + }
+198
indexserver/types/app/bsky/graph/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + import type * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs.ts' 13 + import type * as AppBskyActorDefs from '../actor/defs.ts' 14 + import type * as AppBskyRichtextFacet from '../richtext/facet.ts' 15 + import type * as AppBskyFeedDefs from '../feed/defs.ts' 16 + 17 + const is$typed = _is$typed, 18 + validate = _validate 19 + const id = 'app.bsky.graph.defs' 20 + 21 + export interface ListViewBasic { 22 + $type?: 'app.bsky.graph.defs#listViewBasic' 23 + uri: string 24 + cid: string 25 + name: string 26 + purpose: ListPurpose 27 + avatar?: string 28 + listItemCount?: number 29 + labels?: ComAtprotoLabelDefs.Label[] 30 + viewer?: ListViewerState 31 + indexedAt?: string 32 + } 33 + 34 + const hashListViewBasic = 'listViewBasic' 35 + 36 + export function isListViewBasic<V>(v: V) { 37 + return is$typed(v, id, hashListViewBasic) 38 + } 39 + 40 + export function validateListViewBasic<V>(v: V) { 41 + return validate<ListViewBasic & V>(v, id, hashListViewBasic) 42 + } 43 + 44 + export interface ListView { 45 + $type?: 'app.bsky.graph.defs#listView' 46 + uri: string 47 + cid: string 48 + creator: AppBskyActorDefs.ProfileView 49 + name: string 50 + purpose: ListPurpose 51 + description?: string 52 + descriptionFacets?: AppBskyRichtextFacet.Main[] 53 + avatar?: string 54 + listItemCount?: number 55 + labels?: ComAtprotoLabelDefs.Label[] 56 + viewer?: ListViewerState 57 + indexedAt: string 58 + } 59 + 60 + const hashListView = 'listView' 61 + 62 + export function isListView<V>(v: V) { 63 + return is$typed(v, id, hashListView) 64 + } 65 + 66 + export function validateListView<V>(v: V) { 67 + return validate<ListView & V>(v, id, hashListView) 68 + } 69 + 70 + export interface ListItemView { 71 + $type?: 'app.bsky.graph.defs#listItemView' 72 + uri: string 73 + subject: AppBskyActorDefs.ProfileView 74 + } 75 + 76 + const hashListItemView = 'listItemView' 77 + 78 + export function isListItemView<V>(v: V) { 79 + return is$typed(v, id, hashListItemView) 80 + } 81 + 82 + export function validateListItemView<V>(v: V) { 83 + return validate<ListItemView & V>(v, id, hashListItemView) 84 + } 85 + 86 + export interface StarterPackView { 87 + $type?: 'app.bsky.graph.defs#starterPackView' 88 + uri: string 89 + cid: string 90 + record: { [_ in string]: unknown } 91 + creator: AppBskyActorDefs.ProfileViewBasic 92 + list?: ListViewBasic 93 + listItemsSample?: ListItemView[] 94 + feeds?: AppBskyFeedDefs.GeneratorView[] 95 + joinedWeekCount?: number 96 + joinedAllTimeCount?: number 97 + labels?: ComAtprotoLabelDefs.Label[] 98 + indexedAt: string 99 + } 100 + 101 + const hashStarterPackView = 'starterPackView' 102 + 103 + export function isStarterPackView<V>(v: V) { 104 + return is$typed(v, id, hashStarterPackView) 105 + } 106 + 107 + export function validateStarterPackView<V>(v: V) { 108 + return validate<StarterPackView & V>(v, id, hashStarterPackView) 109 + } 110 + 111 + export interface StarterPackViewBasic { 112 + $type?: 'app.bsky.graph.defs#starterPackViewBasic' 113 + uri: string 114 + cid: string 115 + record: { [_ in string]: unknown } 116 + creator: AppBskyActorDefs.ProfileViewBasic 117 + listItemCount?: number 118 + joinedWeekCount?: number 119 + joinedAllTimeCount?: number 120 + labels?: ComAtprotoLabelDefs.Label[] 121 + indexedAt: string 122 + } 123 + 124 + const hashStarterPackViewBasic = 'starterPackViewBasic' 125 + 126 + export function isStarterPackViewBasic<V>(v: V) { 127 + return is$typed(v, id, hashStarterPackViewBasic) 128 + } 129 + 130 + export function validateStarterPackViewBasic<V>(v: V) { 131 + return validate<StarterPackViewBasic & V>(v, id, hashStarterPackViewBasic) 132 + } 133 + 134 + export type ListPurpose = 135 + | 'app.bsky.graph.defs#modlist' 136 + | 'app.bsky.graph.defs#curatelist' 137 + | 'app.bsky.graph.defs#referencelist' 138 + | (string & {}) 139 + 140 + /** A list of actors to apply an aggregate moderation action (mute/block) on. */ 141 + export const MODLIST = `${id}#modlist` 142 + /** A list of actors used for curation purposes such as list feeds or interaction gating. */ 143 + export const CURATELIST = `${id}#curatelist` 144 + /** A list of actors used for only for reference purposes such as within a starter pack. */ 145 + export const REFERENCELIST = `${id}#referencelist` 146 + 147 + export interface ListViewerState { 148 + $type?: 'app.bsky.graph.defs#listViewerState' 149 + muted?: boolean 150 + blocked?: string 151 + } 152 + 153 + const hashListViewerState = 'listViewerState' 154 + 155 + export function isListViewerState<V>(v: V) { 156 + return is$typed(v, id, hashListViewerState) 157 + } 158 + 159 + export function validateListViewerState<V>(v: V) { 160 + return validate<ListViewerState & V>(v, id, hashListViewerState) 161 + } 162 + 163 + /** indicates that a handle or DID could not be resolved */ 164 + export interface NotFoundActor { 165 + $type?: 'app.bsky.graph.defs#notFoundActor' 166 + actor: string 167 + notFound: true 168 + } 169 + 170 + const hashNotFoundActor = 'notFoundActor' 171 + 172 + export function isNotFoundActor<V>(v: V) { 173 + return is$typed(v, id, hashNotFoundActor) 174 + } 175 + 176 + export function validateNotFoundActor<V>(v: V) { 177 + return validate<NotFoundActor & V>(v, id, hashNotFoundActor) 178 + } 179 + 180 + /** lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object) */ 181 + export interface Relationship { 182 + $type?: 'app.bsky.graph.defs#relationship' 183 + did: string 184 + /** if the actor follows this DID, this is the AT-URI of the follow record */ 185 + following?: string 186 + /** if the actor is followed by this DID, contains the AT-URI of the follow record */ 187 + followedBy?: string 188 + } 189 + 190 + const hashRelationship = 'relationship' 191 + 192 + export function isRelationship<V>(v: V) { 193 + return is$typed(v, id, hashRelationship) 194 + } 195 + 196 + export function validateRelationship<V>(v: V) { 197 + return validate<Relationship & V>(v, id, hashRelationship) 198 + }
+60
indexserver/types/party/whey/app/bsky/actor/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../../../util.ts' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'party.whey.app.bsky.actor.defs' 16 + 17 + export interface ProfileViewBasicRef { 18 + $type?: 'party.whey.app.bsky.actor.defs#profileViewBasicRef' 19 + did: string 20 + } 21 + 22 + const hashProfileViewBasicRef = 'profileViewBasicRef' 23 + 24 + export function isProfileViewBasicRef<V>(v: V) { 25 + return is$typed(v, id, hashProfileViewBasicRef) 26 + } 27 + 28 + export function validateProfileViewBasicRef<V>(v: V) { 29 + return validate<ProfileViewBasicRef & V>(v, id, hashProfileViewBasicRef) 30 + } 31 + 32 + export interface ProfileViewRef { 33 + $type?: 'party.whey.app.bsky.actor.defs#profileViewRef' 34 + did: string 35 + } 36 + 37 + const hashProfileViewRef = 'profileViewRef' 38 + 39 + export function isProfileViewRef<V>(v: V) { 40 + return is$typed(v, id, hashProfileViewRef) 41 + } 42 + 43 + export function validateProfileViewRef<V>(v: V) { 44 + return validate<ProfileViewRef & V>(v, id, hashProfileViewRef) 45 + } 46 + 47 + export interface ProfileViewDetailedRef { 48 + $type?: 'party.whey.app.bsky.actor.defs#profileViewDetailedRef' 49 + did: string 50 + } 51 + 52 + const hashProfileViewDetailedRef = 'profileViewDetailedRef' 53 + 54 + export function isProfileViewDetailedRef<V>(v: V) { 55 + return is$typed(v, id, hashProfileViewDetailedRef) 56 + } 57 + 58 + export function validateProfileViewDetailedRef<V>(v: V) { 59 + return validate<ProfileViewDetailedRef & V>(v, id, hashProfileViewDetailedRef) 60 + }
+127
indexserver/types/party/whey/app/bsky/feed/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../../../util.ts' 12 + import type * as AppBskyFeedDefs from '../../../../../app/bsky/feed/defs.ts' 13 + import type * as PartyWheyAppBskyActorDefs from '../actor/defs.ts' 14 + import type * as AppBskyActorDefs from '../../../../../app/bsky/actor/defs.ts' 15 + 16 + const is$typed = _is$typed, 17 + validate = _validate 18 + const id = 'party.whey.app.bsky.feed.defs' 19 + 20 + /** A pointer to a app.bsky.feed.defs#postView */ 21 + export interface PostViewRef { 22 + $type?: 'party.whey.app.bsky.feed.defs#postViewRef' 23 + uri: string 24 + cid: string 25 + } 26 + 27 + const hashPostViewRef = 'postViewRef' 28 + 29 + export function isPostViewRef<V>(v: V) { 30 + return is$typed(v, id, hashPostViewRef) 31 + } 32 + 33 + export function validatePostViewRef<V>(v: V) { 34 + return validate<PostViewRef & V>(v, id, hashPostViewRef) 35 + } 36 + 37 + export interface FeedViewPostRef { 38 + $type?: 'party.whey.app.bsky.feed.defs#feedViewPostRef' 39 + post: 40 + | $Typed<AppBskyFeedDefs.PostView> 41 + | $Typed<PostViewRef> 42 + | { $type: string } 43 + reply?: 44 + | $Typed<AppBskyFeedDefs.ReplyRef> 45 + | $Typed<ReplyRef> 46 + | { $type: string } 47 + reason?: 48 + | $Typed<AppBskyFeedDefs.ReasonRepost> 49 + | $Typed<AppBskyFeedDefs.ReasonPin> 50 + | { $type: string } 51 + /** Context provided by feed generator that may be passed back alongside interactions. */ 52 + feedContext?: string 53 + /** Unique identifier per request that may be passed back alongside interactions. */ 54 + reqId?: string 55 + } 56 + 57 + const hashFeedViewPostRef = 'feedViewPostRef' 58 + 59 + export function isFeedViewPostRef<V>(v: V) { 60 + return is$typed(v, id, hashFeedViewPostRef) 61 + } 62 + 63 + export function validateFeedViewPostRef<V>(v: V) { 64 + return validate<FeedViewPostRef & V>(v, id, hashFeedViewPostRef) 65 + } 66 + 67 + export interface ReplyRef { 68 + $type?: 'party.whey.app.bsky.feed.defs#replyRef' 69 + root: 70 + | $Typed<PostViewRef> 71 + | $Typed<AppBskyFeedDefs.PostView> 72 + | $Typed<AppBskyFeedDefs.NotFoundPost> 73 + | $Typed<AppBskyFeedDefs.BlockedPost> 74 + | { $type: string } 75 + parent: 76 + | $Typed<PostViewRef> 77 + | $Typed<AppBskyFeedDefs.PostView> 78 + | $Typed<AppBskyFeedDefs.NotFoundPost> 79 + | $Typed<AppBskyFeedDefs.BlockedPost> 80 + | { $type: string } 81 + grandparentAuthor?: 82 + | $Typed<PartyWheyAppBskyActorDefs.ProfileViewBasicRef> 83 + | $Typed<AppBskyActorDefs.ProfileViewBasic> 84 + | { $type: string } 85 + } 86 + 87 + const hashReplyRef = 'replyRef' 88 + 89 + export function isReplyRef<V>(v: V) { 90 + return is$typed(v, id, hashReplyRef) 91 + } 92 + 93 + export function validateReplyRef<V>(v: V) { 94 + return validate<ReplyRef & V>(v, id, hashReplyRef) 95 + } 96 + 97 + export interface ThreadViewPostRef { 98 + $type?: 'party.whey.app.bsky.feed.defs#threadViewPostRef' 99 + post: 100 + | $Typed<PostViewRef> 101 + | $Typed<AppBskyFeedDefs.PostView> 102 + | { $type: string } 103 + parent?: 104 + | $Typed<ThreadViewPostRef> 105 + | $Typed<AppBskyFeedDefs.ThreadViewPost> 106 + | $Typed<AppBskyFeedDefs.NotFoundPost> 107 + | $Typed<AppBskyFeedDefs.BlockedPost> 108 + | { $type: string } 109 + replies?: ( 110 + | $Typed<ThreadViewPostRef> 111 + | $Typed<AppBskyFeedDefs.ThreadViewPost> 112 + | $Typed<AppBskyFeedDefs.NotFoundPost> 113 + | $Typed<AppBskyFeedDefs.BlockedPost> 114 + | { $type: string } 115 + )[] 116 + threadContext?: AppBskyFeedDefs.ThreadContext 117 + } 118 + 119 + const hashThreadViewPostRef = 'threadViewPostRef' 120 + 121 + export function isThreadViewPostRef<V>(v: V) { 122 + return is$typed(v, id, hashThreadViewPostRef) 123 + } 124 + 125 + export function validateThreadViewPostRef<V>(v: V) { 126 + return validate<ThreadViewPostRef & V>(v, id, hashThreadViewPostRef) 127 + }
+49
indexserver/types/party/whey/app/bsky/feed/getActorLikesPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../../../util.ts' 12 + import type * as PartyWheyAppBskyFeedDefs from './defs.ts' 13 + import type * as AppBskyFeedDefs from '../../../../../app/bsky/feed/defs.ts' 14 + 15 + const is$typed = _is$typed, 16 + validate = _validate 17 + const id = 'party.whey.app.bsky.feed.getActorLikesPartial' 18 + 19 + export type QueryParams = { 20 + actor: string 21 + limit: number 22 + cursor?: string 23 + } 24 + export type InputSchema = undefined 25 + 26 + export interface OutputSchema { 27 + cursor?: string 28 + feed: ( 29 + | $Typed<PartyWheyAppBskyFeedDefs.FeedViewPostRef> 30 + | $Typed<AppBskyFeedDefs.FeedViewPost> 31 + | { $type: string } 32 + )[] 33 + } 34 + 35 + export type HandlerInput = void 36 + 37 + export interface HandlerSuccess { 38 + encoding: 'application/json' 39 + body: OutputSchema 40 + headers?: { [key: string]: string } 41 + } 42 + 43 + export interface HandlerError { 44 + status: number 45 + message?: string 46 + error?: 'BlockedActor' | 'BlockedByActor' 47 + } 48 + 49 + export type HandlerOutput = HandlerError | HandlerSuccess
+58
indexserver/types/party/whey/app/bsky/feed/getAuthorFeedPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../../../util.ts' 12 + import type * as PartyWheyAppBskyFeedDefs from './defs.ts' 13 + import type * as AppBskyFeedDefs from '../../../../../app/bsky/feed/defs.ts' 14 + 15 + const is$typed = _is$typed, 16 + validate = _validate 17 + const id = 'party.whey.app.bsky.feed.getAuthorFeedPartial' 18 + 19 + export type QueryParams = { 20 + actor: string 21 + limit: number 22 + cursor?: string 23 + /** Combinations of post/repost types to include in response. */ 24 + filter: 25 + | 'posts_with_replies' 26 + | 'posts_no_replies' 27 + | 'posts_with_media' 28 + | 'posts_and_author_threads' 29 + | 'posts_with_video' 30 + | (string & {}) 31 + includePins: boolean 32 + } 33 + export type InputSchema = undefined 34 + 35 + export interface OutputSchema { 36 + cursor?: string 37 + feed: ( 38 + | $Typed<PartyWheyAppBskyFeedDefs.FeedViewPostRef> 39 + | $Typed<AppBskyFeedDefs.FeedViewPost> 40 + | { $type: string } 41 + )[] 42 + } 43 + 44 + export type HandlerInput = void 45 + 46 + export interface HandlerSuccess { 47 + encoding: 'application/json' 48 + body: OutputSchema 49 + headers?: { [key: string]: string } 50 + } 51 + 52 + export interface HandlerError { 53 + status: number 54 + message?: string 55 + error?: 'BlockedActor' | 'BlockedByActor' 56 + } 57 + 58 + export type HandlerOutput = HandlerError | HandlerSuccess
+65
indexserver/types/party/whey/app/bsky/feed/getLikesPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../../../util.ts' 12 + import type * as PartyWheyAppBskyActorDefs from '../actor/defs.ts' 13 + 14 + const is$typed = _is$typed, 15 + validate = _validate 16 + const id = 'party.whey.app.bsky.feed.getLikesPartial' 17 + 18 + export type QueryParams = { 19 + /** AT-URI of the subject (eg, a post record). */ 20 + uri: string 21 + /** CID of the subject record (aka, specific version of record), to filter likes. */ 22 + cid?: string 23 + limit: number 24 + cursor?: string 25 + } 26 + export type InputSchema = undefined 27 + 28 + export interface OutputSchema { 29 + uri: string 30 + cid?: string 31 + cursor?: string 32 + likes: Like[] 33 + } 34 + 35 + export type HandlerInput = void 36 + 37 + export interface HandlerSuccess { 38 + encoding: 'application/json' 39 + body: OutputSchema 40 + headers?: { [key: string]: string } 41 + } 42 + 43 + export interface HandlerError { 44 + status: number 45 + message?: string 46 + } 47 + 48 + export type HandlerOutput = HandlerError | HandlerSuccess 49 + 50 + export interface Like { 51 + $type?: 'party.whey.app.bsky.feed.getLikesPartial#like' 52 + indexedAt: string 53 + createdAt: string 54 + actor: PartyWheyAppBskyActorDefs.ProfileViewRef 55 + } 56 + 57 + const hashLike = 'like' 58 + 59 + export function isLike<V>(v: V) { 60 + return is$typed(v, id, hashLike) 61 + } 62 + 63 + export function validateLike<V>(v: V) { 64 + return validate<Like & V>(v, id, hashLike) 65 + }
+45
indexserver/types/party/whey/app/bsky/feed/getListFeedPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../../../util.ts' 12 + import type * as PartyWheyAppBskyFeedDefs from './defs.ts' 13 + 14 + const is$typed = _is$typed, 15 + validate = _validate 16 + const id = 'party.whey.app.bsky.feed.getListFeedPartial' 17 + 18 + export type QueryParams = { 19 + /** Reference (AT-URI) to the list record. */ 20 + list: string 21 + limit: number 22 + cursor?: string 23 + } 24 + export type InputSchema = undefined 25 + 26 + export interface OutputSchema { 27 + cursor?: string 28 + feed: PartyWheyAppBskyFeedDefs.FeedViewPostRef[] 29 + } 30 + 31 + export type HandlerInput = void 32 + 33 + export interface HandlerSuccess { 34 + encoding: 'application/json' 35 + body: OutputSchema 36 + headers?: { [key: string]: string } 37 + } 38 + 39 + export interface HandlerError { 40 + status: number 41 + message?: string 42 + error?: 'UnknownList' 43 + } 44 + 45 + export type HandlerOutput = HandlerError | HandlerSuccess
+53
indexserver/types/party/whey/app/bsky/feed/getPostThreadPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../../../util.ts' 12 + import type * as PartyWheyAppBskyFeedDefs from './defs.ts' 13 + import type * as AppBskyFeedDefs from '../../../../../app/bsky/feed/defs.ts' 14 + 15 + const is$typed = _is$typed, 16 + validate = _validate 17 + const id = 'party.whey.app.bsky.feed.getPostThreadPartial' 18 + 19 + export type QueryParams = { 20 + /** Reference (AT-URI) to post record. */ 21 + uri: string 22 + /** How many levels of reply depth should be included in response. */ 23 + depth: number 24 + /** How many levels of parent (and grandparent, etc) post to include. */ 25 + parentHeight: number 26 + } 27 + export type InputSchema = undefined 28 + 29 + export interface OutputSchema { 30 + thread: 31 + | $Typed<PartyWheyAppBskyFeedDefs.ThreadViewPostRef> 32 + | $Typed<AppBskyFeedDefs.ThreadViewPost> 33 + | $Typed<AppBskyFeedDefs.NotFoundPost> 34 + | $Typed<AppBskyFeedDefs.BlockedPost> 35 + | { $type: string } 36 + threadgate?: AppBskyFeedDefs.ThreadgateView 37 + } 38 + 39 + export type HandlerInput = void 40 + 41 + export interface HandlerSuccess { 42 + encoding: 'application/json' 43 + body: OutputSchema 44 + headers?: { [key: string]: string } 45 + } 46 + 47 + export interface HandlerError { 48 + status: number 49 + message?: string 50 + error?: 'NotFound' 51 + } 52 + 53 + export type HandlerOutput = HandlerError | HandlerSuccess
+53
indexserver/types/party/whey/app/bsky/feed/getQuotesPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../../../util.ts' 12 + import type * as PartyWheyAppBskyFeedDefs from './defs.ts' 13 + import type * as AppBskyFeedDefs from '../../../../../app/bsky/feed/defs.ts' 14 + 15 + const is$typed = _is$typed, 16 + validate = _validate 17 + const id = 'party.whey.app.bsky.feed.getQuotesPartial' 18 + 19 + export type QueryParams = { 20 + /** Reference (AT-URI) of post record */ 21 + uri: string 22 + /** If supplied, filters to quotes of specific version (by CID) of the post record. */ 23 + cid?: string 24 + limit: number 25 + cursor?: string 26 + } 27 + export type InputSchema = undefined 28 + 29 + export interface OutputSchema { 30 + uri: string 31 + cid?: string 32 + cursor?: string 33 + posts: ( 34 + | $Typed<PartyWheyAppBskyFeedDefs.PostViewRef> 35 + | $Typed<AppBskyFeedDefs.PostView> 36 + | { $type: string } 37 + )[] 38 + } 39 + 40 + export type HandlerInput = void 41 + 42 + export interface HandlerSuccess { 43 + encoding: 'application/json' 44 + body: OutputSchema 45 + headers?: { [key: string]: string } 46 + } 47 + 48 + export interface HandlerError { 49 + status: number 50 + message?: string 51 + } 52 + 53 + export type HandlerOutput = HandlerError | HandlerSuccess
+53
indexserver/types/party/whey/app/bsky/feed/getRepostedByPartial.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../../../util.ts' 12 + import type * as PartyWheyAppBskyActorDefs from '../actor/defs.ts' 13 + import type * as AppBskyActorDefs from '../../../../../app/bsky/actor/defs.ts' 14 + 15 + const is$typed = _is$typed, 16 + validate = _validate 17 + const id = 'party.whey.app.bsky.feed.getRepostedByPartial' 18 + 19 + export type QueryParams = { 20 + /** Reference (AT-URI) of post record */ 21 + uri: string 22 + /** If supplied, filters to reposts of specific version (by CID) of the post record. */ 23 + cid?: string 24 + limit: number 25 + cursor?: string 26 + } 27 + export type InputSchema = undefined 28 + 29 + export interface OutputSchema { 30 + uri: string 31 + cid?: string 32 + cursor?: string 33 + repostedBy: ( 34 + | $Typed<PartyWheyAppBskyActorDefs.ProfileViewRef> 35 + | $Typed<AppBskyActorDefs.ProfileView> 36 + | { $type: string } 37 + )[] 38 + } 39 + 40 + export type HandlerInput = void 41 + 42 + export interface HandlerSuccess { 43 + encoding: 'application/json' 44 + body: OutputSchema 45 + headers?: { [key: string]: string } 46 + } 47 + 48 + export interface HandlerError { 49 + status: number 50 + message?: string 51 + } 52 + 53 + export type HandlerOutput = HandlerError | HandlerSuccess
+681 -486
main.ts
··· 8 //import express from "npm:express"; 9 //import { createServer } from "./xrpc/index.ts"; 10 import { indexHandlerContext } from "./index/types.ts"; 11 - import * as XRPCTypes from "./utils/xrpc.ts"; 12 import { didDocument } from "./utils/diddoc.ts"; 13 14 // ------------------------------------------ 15 // AppView Setup 16 // ------------------------------------------ ··· 28 29 setupAuth({ 30 // local3768forumtest is just my tunnel from my dev env to the outside web that im reusing from forumtest 31 - serviceDid: "did:web:local3768forumtest.whey.party", 32 //keyCacheSize: 500, 33 //keyCacheTTL: 10 * 60 * 1000, 34 }); ··· 40 // begin the hell of implementing api requests and incoming records 41 //const seenStrings = new Set<string>(); 42 43 let preferences: any = undefined; 44 - Deno.serve({ port: 3768 }, async (req: Request): Promise<Response> => { 45 const url = new URL(req.url); 46 - const pathname = new URL(req.url).pathname; 47 let reqBody: undefined | string; 48 let jsonbody: undefined | Record<string, unknown>; 49 if (req.body) { 50 const body = await req.json(); 51 jsonbody = body; 52 - console.log( 53 - `called at euh reqreqreqreq: ${pathname}\n\n${JSON.stringify(body)}` 54 - ); 55 reqBody = JSON.stringify(body, null, 2); 56 } 57 - if (pathname === "/.well-known/did.json") { 58 - return new Response(JSON.stringify(didDocument), { 59 - headers: withCors({ "Content-Type": "application/json" }), 60 - }); 61 - } 62 - if (pathname === "/health") { 63 - return new Response("OK", { 64 - status: 200, 65 - headers: withCors({ 66 - "Content-Type": "text/plain", 67 - }), 68 - }); 69 - } 70 - 71 - // if (seenStrings.has(url.hash)) { 72 - // // The string has been seen before 73 - // seenStrings.delete(url.hash); 74 - // return new Response("OK", { 75 - // status: 204, 76 - // headers: withCors({ 77 - // "Content-Type": "text/plain", 78 - // }), 79 - // }); 80 - // } 81 - // seenStrings.add(url.hash); 82 - //const reqBody = req.body ? await req.text() : null; 83 - 84 - console.log("→ Path:", pathname); 85 - console.log("→ Auth:", req.headers.get("authorization")); 86 - console.log("→ Body:", reqBody); 87 - 88 const bskyUrl = `https://api.bsky.app${pathname}${url.search}`; 89 - const hasAuth = req.headers.has("authorization"); 90 - const xrpcMethod = pathname.startsWith("/xrpc/") 91 - ? pathname.slice("/xrpc/".length) 92 - : null; 93 94 - //if (xrpcMethod !== 'app.bsky.actor.getPreferences' && xrpcMethod !== 'app.bsky.notification.listNotifications') { 95 - if ( 96 - (!hasAuth || 97 - xrpcMethod === "app.bsky.labeler.getServices" || 98 - xrpcMethod === "app.bsky.unspecced.getConfig") && 99 - xrpcMethod !== "app.bsky.notification.putPreferences" 100 - ) { 101 - const proxyHeaders = new Headers(req.headers); 102 103 - // Remove Authorization and set browser-like User-Agent 104 - proxyHeaders.delete("authorization"); 105 - proxyHeaders.delete("Access-Control-Allow-Origin"), 106 - proxyHeaders.set( 107 - "user-agent", 108 - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36" 109 - ); 110 - proxyHeaders.set("Access-Control-Allow-Origin", "*"); 111 112 - const proxyRes = await fetch(bskyUrl, { 113 - method: req.method, 114 - headers: proxyHeaders, 115 - body: ["GET", "HEAD"].includes(req.method.toUpperCase()) 116 - ? undefined 117 - : reqBody, 118 - }); 119 120 - const resBody = await proxyRes.text(); 121 122 - console.log( 123 - "← Response:", 124 - JSON.stringify(await JSON.parse(resBody), null, 2) 125 - ); 126 127 - return new Response(resBody, { 128 - status: proxyRes.status, 129 - headers: proxyRes.headers, 130 - }); 131 - } 132 133 - const authDID = "did:plc:mn45tewwnse5btfftvd3powc"; //getAuthenticatedDid(req); 134 135 - const jsonUntyped = jsonbody; 136 137 - switch (xrpcMethod) { 138 - case "app.bsky.actor.getPreferences": { 139 - const jsonTyped = 140 - jsonUntyped as XRPCTypes.AppBskyActorGetPreferences.QueryParams; 141 - // if (!(await authDID)) 142 - // return new Response("Unauthorized", { status: 401 }); 143 144 - const response: XRPCTypes.AppBskyActorGetPreferences.OutputSchema = { 145 - preferences: [ 146 - { 147 - $type: "app.bsky.actor.defs#savedFeedsPrefV2", 148 - items: [ 149 - { 150 - $type: "app.bsky.actor.defs#savedFeed", 151 - id: "3l6wlykrwdk2w", 152 - type: "feed", 153 - value: 154 - "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot", 155 - pinned: true, 156 - }, 157 - ], 158 - }, 159 - { 160 - $type: "app.bsky.actor.defs#savedFeedsPref", 161 - pinned: [ 162 - "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot", 163 - ], 164 - saved: [ 165 - "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot", 166 - ], 167 - }, 168 - { 169 - $type: "app.bsky.actor.defs#bskyAppStatePref", 170 - nuxs: [ 171 - { 172 - $type: "app.bsky.actor.defs#nux", 173 - id: "TenMillionDialog", 174 - completed: true, 175 - }, 176 - { id: "NeueTypography", completed: true }, 177 - { id: "NeueChar", completed: true }, 178 - { id: "InitialVerificationAnnouncement", completed: true }, 179 - { id: "ActivitySubscriptions", completed: true }, 180 - { id: "PolicyUpdate202508", completed: true }, 181 - ], 182 - }, 183 - ], 184 - }; 185 - // { 186 - // preferences: [ 187 - // { 188 - // $type: "app.bsky.actor.defs#savedFeedsPref", 189 - // pinned: [""], 190 - // saved: [""], 191 - // }, 192 - // ], 193 - // }; 194 195 - if (preferences === undefined) { 196 - preferences = response.preferences; 197 - } 198 199 - const newprefswowowowow: XRPCTypes.AppBskyActorGetPreferences.OutputSchema = 200 { 201 - preferences: preferences, 202 }; 203 204 - return new Response(JSON.stringify(newprefswowowowow), { 205 headers: withCors({ "Content-Type": "application/json" }), 206 }); 207 } 208 - case "app.bsky.actor.getProfile": { 209 - const jsonTyped = 210 - jsonUntyped as XRPCTypes.AppBskyActorGetProfile.QueryParams; 211 212 - const response: XRPCTypes.AppBskyActorGetProfile.OutputSchema = { 213 - $type: "app.bsky.actor.defs#profileViewDetailed", 214 - did: "did:plc:mn45tewwnse5btfftvd3powc", 215 - handle: "whey.party", 216 - displayName: "Whey!?@??#?", 217 - description: "idiot piece of shit", 218 - avatar: 219 - "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:mn45tewwnse5btfftvd3powc/bafkreid4nhd5pdbzqshkcfxwwcpfz4a5xk2n4gk5truu6hyfk6abynpaze@jpeg", 220 - associated: { 221 - $type: "app.bsky.actor.defs#profileAssociated", 222 - lists: 2, 223 - feedgens: 4, 224 - starterPacks: 6, 225 - labeler: false, 226 - chat: { 227 - $type: "app.bsky.actor.defs#profileAssociatedChat", 228 - allowIncoming: "all", 229 - }, 230 - activitySubscription: { 231 - $type: "app.bsky.actor.defs#profileAssociatedActivitySubscription", 232 - allowSubscriptions: "followers", 233 - }, 234 - }, 235 - indexedAt: "2024-10-23T08:55:16.641Z", 236 - createdAt: "2024-10-23T08:55:16.641Z", 237 - banner: 238 - "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:mn45tewwnse5btfftvd3powc/bafkreibqkz2eq3wzpqh44vuicbezckeo6i4g6m66v5ifek5hc5frc6ihdq@jpeg", 239 - followersCount: 69420, 240 - followsCount: 69420, 241 - postsCount: 69420, 242 - //associated?: ProfileAssociated 243 - //joinedViaStarterPack?: AppBskyGraphDefs.StarterPackViewBasic 244 - //indexedAt?: string 245 - //createdAt?: string 246 - viewer: { 247 - $type: "app.bsky.actor.defs#viewerState", 248 - muted: false, 249 - //mutedByList: AppBskyGraphDefs.ListViewBasic 250 - blockedBy: false, 251 - //blocking?: string 252 - //blockingByList?: AppBskyGraphDefs.ListViewBasic 253 - //following?: string 254 - //followedBy?: string 255 - //knownFollowers?: KnownFollowers 256 - activitySubscription: { 257 - $type: "app.bsky.notification.defs#activitySubscription", 258 - post: true, 259 - reply: true, 260 - }, 261 - }, 262 - labels: [ 263 - { 264 - $type: "com.atproto.label.defs#label", 265 - /** The AT Protocol version of the label object. */ 266 - ver: 1, 267 - /** DID of the actor who created this label. */ 268 - src: "did:plc:ar7c4by46qjdydhdevvrndac", 269 - /** AT URI of the record, repository (account), or other resource that this label applies to. */ 270 - uri: "at://did:plc:ar7c4by46qjdydhdevvrndac", 271 - /** Optionally, CID specifying the specific version of 'uri' resource this label applies to. */ 272 - //cid?: string 273 - /** The short string name of the value or type of this label. */ 274 - val: "idiot", 275 - /** If true, this is a negation label, overwriting a previous label. */ 276 - //neg?: boolean 277 - /** Timestamp when this label was created. */ 278 - cts: "2024-10-23T08:55:16.641Z", 279 - /** Timestamp at which this label expires (no longer applies). */ 280 - //exp?: string 281 - /** Signature of dag-cbor encoded label. */ 282 - //sig?: Uint8Array 283 - }, 284 - ], 285 - pinnedPost: { 286 - $type: "com.atproto.repo.strongRef", 287 - uri: "at://did:plc:mn45tewwnse5btfftvd3powc/app.bsky.feed.post/3lvybv7b6ic2h", 288 - cid: "bafyreie44fqjarvwv3n3se6fhpf2mvodlguiwahqh7ugm3nyyujlmd36ce", 289 - }, 290 - verification: { 291 - $type: "app.bsky.actor.defs#verificationState", 292 - /** All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included. */ 293 - verifications: [ 294 - { 295 - $type: "app.bsky.actor.defs#verificationView", 296 - /** The user who issued this verification. */ 297 - issuer: "did:plc:ar7c4by46qjdydhdevvrndac", 298 - /** The AT-URI of the verification record. */ 299 - uri: "at://did:plc:mn45tewwnse5btfftvd3powc/app.bsky.feed.post/3lvybv7b6ic2h", 300 - /** True if the verification passes validation, otherwise false. */ 301 - isValid: true, 302 - /** Timestamp when the verification was created. */ 303 - createdAt: "2024-10-23T08:55:16.641Z", 304 - }, 305 - ], 306 - /** The user's status as a verified account. */ 307 - verifiedStatus: "valid", 308 - /** The user's status as a trusted verifier. */ 309 - trustedVerifierStatus: "valid", 310 - }, 311 - status: { 312 - $type: "app.bsky.actor.defs#statusView", 313 - /** The status for the account. */ 314 - status: "app.bsky.actor.status#live", 315 - record: { 316 - $type: "app.bsky.graph.verification", 317 - createdAt: "2025-05-02T18:12:17.199Z", 318 - displayName: "teq (lowercase)", 319 - handle: "quilling.dev", 320 - subject: "did:plc:jrtgsidnmxaen4offglr5lsh", 321 - }, 322 - //embed?: $Typed<AppBskyEmbedExternal.View> | { $type: string } 323 - /** The date when this status will expire. The application might choose to no longer return the status after expiration. */ 324 - expiresAt: "2028-10-23T08:55:16.641Z", 325 - /** True if the status is not expired, false if it is expired. Only present if expiration was set. */ 326 - isActive: true, 327 - }, 328 - }; 329 330 - return new Response(JSON.stringify(response), { 331 - headers: withCors({ "Content-Type": "application/json" }), 332 - }); 333 - } 334 - case "app.bsky.actor.getProfiles": { 335 - const jsonTyped = 336 - jsonUntyped as XRPCTypes.AppBskyActorGetProfiles.QueryParams; 337 338 - const response: XRPCTypes.AppBskyActorGetProfiles.OutputSchema = { 339 - profiles: [ 340 - { 341 - $type: "app.bsky.actor.defs#profileViewDetailed", 342 - did: "did:plc:mn45tewwnse5btfftvd3powc", 343 - handle: "whey.party", 344 - displayName: "Whey!?@??#?", 345 - description: "idiot piece of shit", 346 - avatar: 347 - "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:mn45tewwnse5btfftvd3powc/bafkreid4nhd5pdbzqshkcfxwwcpfz4a5xk2n4gk5truu6hyfk6abynpaze@jpeg", 348 - //associated?: ProfileAssociated 349 - indexedAt: "2024-10-23T08:55:16.641Z", 350 - createdAt: "2024-10-23T08:55:16.641Z", 351 - //banner?: string 352 - followersCount: 69420, 353 - followsCount: 69420, 354 - postsCount: 69420, 355 - //associated?: ProfileAssociated 356 - //joinedViaStarterPack?: AppBskyGraphDefs.StarterPackViewBasic 357 - //indexedAt?: string 358 - //createdAt?: string 359 - //viewer?: ViewerState 360 - //labels?: ComAtprotoLabelDefs.Label[] 361 - //pinnedPost?: ComAtprotoRepoStrongRef.Main 362 - //verification?: VerificationState 363 - //status?: StatusView 364 - }, 365 - ], 366 - }; 367 368 - return new Response(JSON.stringify(response), { 369 - headers: withCors({ "Content-Type": "application/json" }), 370 - }); 371 - } 372 - case "app.bsky.notification.listNotifications": { 373 - const jsonTyped = 374 - jsonUntyped as XRPCTypes.AppBskyNotificationListNotifications.QueryParams; 375 376 - const response: XRPCTypes.AppBskyNotificationListNotifications.OutputSchema = 377 - { 378 - notifications: [ 379 - { 380 - $type: "app.bsky.notification.listNotifications#notification", 381 - uri: "at://did:plc:mn45tewwnse5btfftvd3powc/app.bsky.feed.post/3lvybv7b6ic2h", 382 - cid: "bafyreie44fqjarvwv3n3se6fhpf2mvodlguiwahqh7ugm3nyyujlmd36ce", 383 - author: { 384 - $type: "app.bsky.actor.defs#profileView", 385 - did: "did:plc:mn45tewwnse5btfftvd3powc", 386 - handle: "whey.party", 387 - displayName: "Whey!?@??#?", 388 - description: "idiot piece of shit", 389 - avatar: 390 - "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:mn45tewwnse5btfftvd3powc/bafkreid4nhd5pdbzqshkcfxwwcpfz4a5xk2n4gk5truu6hyfk6abynpaze@jpeg", 391 - //associated?: ProfileAssociated 392 - indexedAt: "2024-10-23T08:55:16.641Z", 393 - createdAt: "2024-10-23T08:55:16.641Z", 394 - viewer: { 395 - $type: "app.bsky.actor.defs#viewerState", 396 - muted: false, 397 - //mutedByList?: AppBskyGraphDefs.ListViewBasic 398 - //blockedBy?: boolean 399 - //blocking?: string 400 - //blockingByList?: AppBskyGraphDefs.ListViewBasic 401 - //following?: string 402 - //followedBy?: string 403 - //knownFollowers?: KnownFollowers 404 - //activitySubscription?: AppBskyNotificationDefs.ActivitySubscription 405 - }, 406 - //labels?: ComAtprotoLabelDefs.Label[] 407 - //verification?: VerificationState 408 - //status?: StatusView 409 - }, 410 - reason: "follow", 411 - //reasonSubject?: string 412 - record: { 413 - $type: "app.bsky.graph.follow", 414 - subject: "did:plc:lulmyldiq4sb2ikags5sfb25", 415 - createdAt: "2025-08-12T04:58:14.657Z", 416 - }, 417 - isRead: false, 418 - indexedAt: "2024-10-23T08:55:16.641Z", 419 - //labels?: ComAtprotoLabelDefs.Label[] 420 - }, 421 - ], 422 }; 423 424 - return new Response(JSON.stringify(response), { 425 - headers: withCors({ "Content-Type": "application/json" }), 426 - }); 427 - } 428 - case "app.bsky.notification.putPreferences": { 429 - if (jsonbody) { 430 - const body = jsonbody; 431 - //console.log("Body:", body); 432 - preferences = body.preferences; 433 } 434 435 - const response: XRPCTypes.AppBskyUnspeccedGetConfig.OutputSchema = { 436 - checkEmailConfirmed: true, 437 - liveNow: [ 438 - { 439 - $type: "app.bsky.unspecced.getConfig#liveNowConfig", 440 - did: "did:plc:mn45tewwnse5btfftvd3powc", 441 - domains: ["local3768forumtest.whey.party"], 442 - }, 443 - ], 444 - }; 445 446 - return new Response(JSON.stringify(response), { 447 - headers: withCors({ "Content-Type": "application/json" }), 448 - }); 449 450 - // const response: XRPCTypes.AppBskyActorPutPreferences.OutputSchema = 451 - // undefined; 452 - return new Response(`{"hello":"world"}`, { 453 - status: 200, 454 - headers: withCors(), 455 - }); 456 - } 457 - case "app.bsky.actor.putPreferencesshittyholleeeheoeoelelllo": { 458 - if (jsonbody) { 459 - const body = jsonbody; 460 - //console.log("Body:", body); 461 - preferences = body.preferences; 462 } 463 464 - const response: XRPCTypes.AppBskyUnspeccedGetConfig.OutputSchema = { 465 - checkEmailConfirmed: true, 466 - liveNow: [ 467 - { 468 - $type: "app.bsky.unspecced.getConfig#liveNowConfig", 469 - did: "did:plc:mn45tewwnse5btfftvd3powc", 470 - domains: ["local3768forumtest.whey.party"], 471 - }, 472 - ], 473 - }; 474 475 - return new Response(JSON.stringify(response), { 476 - headers: withCors({ "Content-Type": "application/json" }), 477 - }); 478 479 - // const response: XRPCTypes.AppBskyActorPutPreferences.OutputSchema = 480 - // undefined; 481 - return new Response(`{"hello":"world"}`, { 482 - status: 200, 483 - headers: withCors(), 484 - }); 485 - } 486 - case "chat.bsky.convo.getLog": { 487 - const jsonTyped = 488 - jsonUntyped as XRPCTypes.ChatBskyConvoGetLog.QueryParams; 489 490 - const response: XRPCTypes.ChatBskyConvoGetLog.OutputSchema = { 491 - logs: [], 492 - }; 493 494 - return new Response(JSON.stringify(response), { 495 - headers: withCors({ "Content-Type": "application/json" }), 496 - }); 497 - } 498 - case "chat.bsky.convo.listConvos": { 499 - const jsonTyped = 500 - jsonUntyped as XRPCTypes.ChatBskyConvoListConvos.QueryParams; 501 502 - const response: XRPCTypes.ChatBskyConvoListConvos.OutputSchema = { 503 - convos: [], 504 - }; 505 506 - return new Response(JSON.stringify(response), { 507 - headers: withCors({ "Content-Type": "application/json" }), 508 - }); 509 - } 510 - case "app.bsky.unspecced.getConfig": { 511 - const jsonTyped = 512 - jsonUntyped as XRPCTypes.AppBskyUnspeccedGetConfig.QueryParams; 513 514 - const response: XRPCTypes.AppBskyUnspeccedGetConfig.OutputSchema = { 515 - checkEmailConfirmed: true, 516 - liveNow: [ 517 - { 518 - $type: "app.bsky.unspecced.getConfig#liveNowConfig", 519 - did: "did:plc:mn45tewwnse5btfftvd3powc", 520 - domains: ["local3768forumtest.whey.party"], 521 - }, 522 - ], 523 - }; 524 525 - return new Response(JSON.stringify(response), { 526 - headers: withCors({ "Content-Type": "application/json" }), 527 - }); 528 - } 529 - case "app.bsky.graph.getLists": { 530 - const jsonTyped = 531 - jsonUntyped as XRPCTypes.AppBskyGraphGetLists.QueryParams; 532 533 - const response: XRPCTypes.AppBskyGraphGetLists.OutputSchema = { 534 - lists: [], 535 - }; 536 537 - return new Response(JSON.stringify(response), { 538 - headers: withCors({ "Content-Type": "application/json" }), 539 - }); 540 - } 541 - //https://shimeji.us-east.host.bsky.network/xrpc/app.bsky.unspecced.getTrendingTopics?limit=14 542 - case "app.bsky.unspecced.getTrendingTopics": { 543 - const jsonTyped = 544 - jsonUntyped as XRPCTypes.AppBskyUnspeccedGetTrendingTopics.QueryParams; 545 546 - const response: XRPCTypes.AppBskyUnspeccedGetTrendingTopics.OutputSchema = 547 - { 548 - topics: [ 549 - { 550 - $type: "app.bsky.unspecced.defs#trendingTopic", 551 - topic: "coolio", 552 - displayName: "coolio", 553 - description: "coolio", 554 - link: "https://custom-appview.deer-social.pages.dev/lists", 555 - }, 556 - ], 557 - suggested: [ 558 { 559 - $type: "app.bsky.unspecced.defs#trendingTopic", 560 - topic: "coolio", 561 - displayName: "coolio", 562 - description: "coolio", 563 - link: "https://custom-appview.deer-social.pages.dev/lists", 564 }, 565 ], 566 }; 567 568 - return new Response(JSON.stringify(response), { 569 - headers: withCors({ "Content-Type": "application/json" }), 570 - }); 571 - } 572 - default: { 573 - return new Response( 574 - JSON.stringify({ 575 - error: "XRPCNotSupported", 576 - message: "HEY hello there my name is whey dot party and you have used my custom appview that is very cool but have you considered that XRPC Not Supported", 577 - }), 578 - { 579 - status: 404, 580 headers: withCors({ "Content-Type": "application/json" }), 581 - } 582 - ); 583 } 584 } 585 - }); 586 587 function withCors(headers: HeadersInit = {}) { 588 return { ··· 596 "Access-Control-Allow-Headers": "Content-Type, Authorization", 597 }; 598 const json = "application/json"; 599 - 600 601 // ------------------------------------------ 602 // Indexer
··· 8 //import express from "npm:express"; 9 //import { createServer } from "./xrpc/index.ts"; 10 import { indexHandlerContext } from "./index/types.ts"; 11 + import * as XRPCTypes from "./utils/viewserver.ts"; 12 + import * as ATPAPI from "npm:@atproto/api"; 13 import { didDocument } from "./utils/diddoc.ts"; 14 15 + import ky from "npm:ky"; 16 + import QuickLRU from "npm:quick-lru"; 17 + import { isGeneratorView } from "./viewserver/types/app/bsky/feed/defs.ts"; 18 + import { createHash } from "node:crypto"; 19 + 20 + const cache = new QuickLRU({ maxSize: 10000 }); 21 + 22 + function simpleHashAuth(auth: string): string { 23 + return createHash("sha256").update(auth).digest("hex"); 24 + } 25 + export async function cachedFetch(url: string, auth?: string) { 26 + const cacheKey = auth ? `${url}|${simpleHashAuth(auth)}` : url; 27 + if (cache.has(cacheKey)) return cache.get(cacheKey); 28 + 29 + const data = await ky 30 + .get(url, { 31 + headers: { 32 + Authorization: `${auth}`, // or `Basic`, etc. depending on your needs 33 + }, 34 + }) 35 + .json(); 36 + 37 + cache.set(cacheKey, data); 38 + return data; 39 + } 40 + 41 + const slingshoturl = Deno.env.get("SLINGSHOT_URL"); 42 + const constellationurl = Deno.env.get("CONSTELLATION_URL"); 43 + const spacedusturl = Deno.env.get("SPACEDUST_URL"); 44 + 45 // ------------------------------------------ 46 // AppView Setup 47 // ------------------------------------------ ··· 59 60 setupAuth({ 61 // local3768forumtest is just my tunnel from my dev env to the outside web that im reusing from forumtest 62 + serviceDid: `${Deno.env.get("SERVICE_DID")}`, 63 //keyCacheSize: 500, 64 //keyCacheTTL: 10 * 60 * 1000, 65 }); ··· 71 // begin the hell of implementing api requests and incoming records 72 //const seenStrings = new Set<string>(); 73 74 + type SlingshotMiniDoc = { 75 + did: string; 76 + handle: string; 77 + pds: string; 78 + signing_key: string; 79 + }; 80 + type ConstellationDistinctDids = { 81 + total: number; 82 + linking_dids: string[]; 83 + cursor: string; 84 + }; 85 + type GetRecord = { 86 + uri: string; 87 + cid: string; 88 + value: Record<string, unknown>; 89 + }; 90 let preferences: any = undefined; 91 + 92 + function searchParamsToJson(params: URLSearchParams): Record<string, unknown> { 93 + const result: Record<string, string | string[]> = {}; 94 + 95 + for (const [key, value] of params.entries()) { 96 + if (result.hasOwnProperty(key)) { 97 + const existing = result[key]; 98 + if (Array.isArray(existing)) { 99 + existing.push(value); 100 + } else { 101 + result[key] = [existing, value]; 102 + } 103 + } else { 104 + result[key] = value; 105 + } 106 + } 107 + 108 + return result; 109 + } 110 + 111 + async function resolveIdentity(actor: string): Promise<SlingshotMiniDoc> { 112 + const url = `${slingshoturl}/xrpc/com.bad-example.identity.resolveMiniDoc?identifier=${actor}`; 113 + return (await cachedFetch(url)) as SlingshotMiniDoc; 114 + } 115 + async function getRecord({ 116 + pds, 117 + did, 118 + collection, 119 + rkey, 120 + }: { 121 + pds: string; 122 + did: string; 123 + collection: string; 124 + rkey: string; 125 + }): Promise<{ cursor?: string; records: GetRecord[] }> { 126 + const url = `${pds}/xrpc/com.atproto.repo.getRecord?repo=${did}&collection=${collection}&rkey=${rkey}`; 127 + const result = (await cachedFetch(url)) as { 128 + cursor?: string; 129 + records: GetRecord[]; 130 + }; 131 + return result as { 132 + cursor?: string; 133 + records: { 134 + uri: string; 135 + cid: string; 136 + value: ATPAPI.AppBskyFeedPost.Record; 137 + }[]; 138 + }; 139 + } 140 + 141 + async function listPostRecords({ 142 + pds, 143 + did, 144 + limit = 50, 145 + cursor, 146 + }: { 147 + pds: string; 148 + did: string; 149 + limit: number; 150 + cursor?: string; 151 + }): Promise<{ 152 + cursor?: string; 153 + records: { uri: string; cid: string; value: ATPAPI.AppBskyFeedPost.Record }[]; 154 + }> { 155 + const url = `${pds}/xrpc/com.atproto.repo.listRecords?repo=${did}&collection=app.bsky.feed.post&limit=${limit}${ 156 + cursor ? `&cursor=${cursor}` : "" 157 + }`; 158 + const result = (await cachedFetch(url)) as { 159 + cursor?: string; 160 + records: GetRecord[]; 161 + }; 162 + return result as { 163 + cursor?: string; 164 + records: { 165 + uri: string; 166 + cid: string; 167 + value: ATPAPI.AppBskyFeedPost.Record; 168 + }[]; 169 + }; 170 + } 171 + 172 + async function getSlingshotRecord( 173 + did: string, 174 + collection: string, 175 + rkey: string 176 + ): Promise<GetRecord> { 177 + const url = `${slingshoturl}/xrpc/com.atproto.repo.getRecord?repo=${did}&collection=${collection}&rkey=${rkey}`; 178 + const result = (await cachedFetch(url)) as GetRecord; 179 + return result as GetRecord; 180 + } 181 + 182 + // async function getProfileRecord(did: string): Promise<ATPAPI.AppBskyActorProfile.Record> { 183 + // const url = `${slingshoturl}/xrpc/com.atproto.repo.getRecord?repo=${did}&collection=app.bsky.actor.profile&rkey=self`; 184 + // const result = await cachedFetch(url) as GetRecord; 185 + // return result.value as ATPAPI.AppBskyActorProfile.Record; 186 + // } 187 + 188 + async function getUniqueCount({ 189 + did, 190 + collection, 191 + path, 192 + }: { 193 + did: string; 194 + collection: string; 195 + path: string; 196 + }): Promise<number> { 197 + const url = `${constellationurl}/links/count/distinct-dids?target=${did}&collection=${collection}&path=${path}`; 198 + const result = (await cachedFetch(url)) as ConstellationDistinctDids; 199 + return result.total; 200 + } 201 + 202 + function buildBlobUrl( 203 + pds: string, 204 + did: string, 205 + cid: string 206 + ): string | undefined { 207 + if (!pds || !did || !cid) return undefined; 208 + return `${pds}/xrpc/com.atproto.sync.getBlob?did=${did}&cid=${cid}`; 209 + } 210 + 211 + function didWebToHttps(did: string) { 212 + if (!did.startsWith("did:web:")) return null; 213 + const parts = did.slice("did:web:".length).split(":"); 214 + const [domain, ...path] = parts; 215 + return `https://${domain}${path.length ? "/" + path.join("/") : ""}`; 216 + } 217 + 218 + async function sendItToApiBskyApp(req: Request): Promise<Response> { 219 const url = new URL(req.url); 220 + const pathname = url.pathname; 221 + const searchParams = searchParamsToJson(url.searchParams); 222 let reqBody: undefined | string; 223 let jsonbody: undefined | Record<string, unknown>; 224 if (req.body) { 225 const body = await req.json(); 226 jsonbody = body; 227 + // console.log( 228 + // `called at euh reqreqreqreq: ${pathname}\n\n${JSON.stringify(body)}` 229 + // ); 230 reqBody = JSON.stringify(body, null, 2); 231 } 232 const bskyUrl = `https://api.bsky.app${pathname}${url.search}`; 233 + const proxyHeaders = new Headers(req.headers); 234 235 + // Remove Authorization and set browser-like User-Agent 236 + proxyHeaders.delete("authorization"); 237 + proxyHeaders.delete("Access-Control-Allow-Origin"), 238 + proxyHeaders.set( 239 + "user-agent", 240 + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36" 241 + ); 242 + proxyHeaders.set("Access-Control-Allow-Origin", "*"); 243 244 + const proxyRes = await fetch(bskyUrl, { 245 + method: req.method, 246 + headers: proxyHeaders, 247 + body: ["GET", "HEAD"].includes(req.method.toUpperCase()) 248 + ? undefined 249 + : reqBody, 250 + }); 251 252 + const resBody = await proxyRes.text(); 253 254 + // console.log( 255 + // "← Response:", 256 + // JSON.stringify(await JSON.parse(resBody), null, 2) 257 + // ); 258 259 + return new Response(resBody, { 260 + status: proxyRes.status, 261 + headers: proxyRes.headers, 262 + }); 263 + } 264 265 + Deno.serve( 266 + { port: Number(`${Deno.env.get("SERVER_PORT")}`) }, 267 + async (req: Request): Promise<Response> => { 268 + const url = new URL(req.url); 269 + const pathname = url.pathname; 270 + const searchParams = searchParamsToJson(url.searchParams); 271 + let reqBody: undefined | string; 272 + let jsonbody: undefined | Record<string, unknown>; 273 + try { 274 + const clone = req.clone(); 275 + jsonbody = await clone.json(); 276 + } catch (e) { 277 + console.warn("Request body is not valid JSON:", e); 278 + } 279 + if (pathname === "/.well-known/did.json") { 280 + return new Response(JSON.stringify(didDocument), { 281 + headers: withCors({ "Content-Type": "application/json" }), 282 + }); 283 + } 284 + if (pathname === "/health") { 285 + return new Response("OK", { 286 + status: 200, 287 + headers: withCors({ 288 + "Content-Type": "text/plain", 289 + }), 290 + }); 291 + } 292 + if (req.method === "OPTIONS") { 293 + return new Response(null, { 294 + status: 204, 295 + headers: { 296 + "Access-Control-Allow-Origin": "*", 297 + "Access-Control-Allow-Methods": "GET, POST, OPTIONS", 298 + "Access-Control-Allow-Headers": "*", 299 + }, 300 + }); 301 + } 302 303 + // if (seenStrings.has(url.hash)) { 304 + // // The string has been seen before 305 + // seenStrings.delete(url.hash); 306 + // return new Response("OK", { 307 + // status: 204, 308 + // headers: withCors({ 309 + // "Content-Type": "text/plain", 310 + // }), 311 + // }); 312 + // } 313 + // seenStrings.add(url.hash); 314 + //const reqBody = req.body ? await req.text() : null; 315 316 + console.log("→ Path:", pathname); 317 + console.log("→ Auth:", req.headers.get("authorization")); 318 + console.log("→ Body:", reqBody); 319 + console.log("→ Params:", searchParams); 320 321 + const bskyUrl = `https://api.bsky.app${pathname}${url.search}`; 322 + const hasAuth = req.headers.has("authorization"); 323 + const xrpcMethod = pathname.startsWith("/xrpc/") 324 + ? pathname.slice("/xrpc/".length) 325 + : null; 326 327 + if (xrpcMethod === "app.bsky.unspecced.getTrendingTopics") { 328 + // const jsonTyped = 329 + // jsonUntyped as XRPCTypes.AppBskyUnspeccedGetTrendingTopics.QueryParams; 330 331 + const faketopics: ATPAPI.AppBskyUnspeccedDefs.TrendingTopic[] = [ 332 + { 333 + $type: "app.bsky.unspecced.defs#trendingTopic", 334 + topic: "Git Repo", 335 + displayName: "Git Repo", 336 + description: "Git Repo", 337 + link: "https://tangled.sh/@whey.party/skylite", 338 + }, 339 + { 340 + $type: "app.bsky.unspecced.defs#trendingTopic", 341 + topic: "Red Dwarf Lite", 342 + displayName: "Red Dwarf Lite", 343 + description: "Red Dwarf Lite", 344 + link: "https://reddwarflite.whey.party/", 345 + }, 346 + { 347 + $type: "app.bsky.unspecced.defs#trendingTopic", 348 + topic: "whey dot party", 349 + displayName: "whey dot party", 350 + description: "whey dot party", 351 + link: "https://whey.party/", 352 + }, 353 + ]; 354 355 + const response: XRPCTypes.AppBskyUnspeccedGetTrendingTopics.OutputSchema = 356 { 357 + topics: faketopics, 358 + suggested: faketopics, 359 }; 360 361 + return new Response(JSON.stringify(response), { 362 headers: withCors({ "Content-Type": "application/json" }), 363 }); 364 } 365 + 366 + //if (xrpcMethod !== 'app.bsky.actor.getPreferences' && xrpcMethod !== 'app.bsky.notification.listNotifications') { 367 + if ( 368 + !hasAuth 369 + // (!hasAuth || 370 + // xrpcMethod === "app.bsky.labeler.getServices" || 371 + // xrpcMethod === "app.bsky.unspecced.getConfig") && 372 + // xrpcMethod !== "app.bsky.notification.putPreferences" 373 + ) { 374 + return new Response( 375 + JSON.stringify({ 376 + error: "XRPCNotSupported", 377 + message: 378 + "HEY hello there my name is whey dot party and you have used my custom appview that is very cool but have you considered that XRPC Not Supported", 379 + }), 380 + { 381 + status: 404, 382 + headers: withCors({ "Content-Type": "application/json" }), 383 + } 384 + ); 385 + //return await sendItToApiBskyApp(req); 386 + } 387 + if ( 388 + // !hasAuth || 389 + xrpcMethod === "app.bsky.labeler.getServices" || 390 + xrpcMethod === "app.bsky.unspecced.getConfig" //&& 391 + //xrpcMethod !== "app.bsky.notification.putPreferences" 392 + ) { 393 + return new Response( 394 + JSON.stringify({ 395 + error: "XRPCNotSupported", 396 + message: 397 + "HEY hello there my name is whey dot party and you have used my custom appview that is very cool but have you considered that XRPC Not Supported", 398 + }), 399 + { 400 + status: 404, 401 + headers: withCors({ "Content-Type": "application/json" }), 402 + } 403 + ); 404 + //return await sendItToApiBskyApp(req); 405 + } 406 + 407 + const authDID = "did:plc:mn45tewwnse5btfftvd3powc"; //getAuthenticatedDid(req); 408 + 409 + const jsonUntyped = searchParams; 410 + 411 + switch (xrpcMethod) { 412 + case "app.bsky.feed.getFeedGenerators": { 413 + const jsonTyped = 414 + jsonUntyped as XRPCTypes.AppBskyFeedGetFeedGenerators.QueryParams; 415 + 416 + const feeds: ATPAPI.AppBskyFeedDefs.GeneratorView[] = ( 417 + await Promise.all( 418 + jsonTyped.feeds.map(async (feed) => { 419 + try { 420 + const did = new ATPAPI.AtUri(feed).hostname; 421 + const rkey = new ATPAPI.AtUri(feed).rkey; 422 + const identity = await resolveIdentity(did); 423 + const feedgetRecord = await getSlingshotRecord( 424 + identity.did, 425 + "app.bsky.feed.generator", 426 + rkey 427 + ); 428 + const profile = ( 429 + await getSlingshotRecord( 430 + identity.did, 431 + "app.bsky.actor.profile", 432 + "self" 433 + ) 434 + ).value as ATPAPI.AppBskyActorProfile.Record; 435 + const anyprofile = profile as any; 436 + const value = 437 + feedgetRecord.value as ATPAPI.AppBskyFeedGenerator.Record; 438 + 439 + return { 440 + $type: "app.bsky.feed.defs#generatorView", 441 + uri: feed, 442 + cid: feedgetRecord.cid, 443 + did: identity.did, 444 + creator: /*AppBskyActorDefs.ProfileView*/ { 445 + $type: "app.bsky.actor.defs#profileView", 446 + did: identity.did, 447 + handle: identity.handle, 448 + displayName: profile.displayName, 449 + description: profile.description, 450 + avatar: buildBlobUrl( 451 + identity.pds, 452 + identity.did, 453 + anyprofile.avatar.ref["$link"] 454 + ), 455 + //associated?: ProfileAssociated 456 + //indexedAt?: string 457 + //createdAt?: string 458 + //viewer?: ViewerState 459 + //labels?: ComAtprotoLabelDefs.Label[] 460 + //verification?: VerificationState 461 + //status?: StatusView 462 + }, 463 + displayName: value.displayName, 464 + description: value.description, 465 + //descriptionFacets?: AppBskyRichtextFacet.Main[] 466 + avatar: buildBlobUrl( 467 + identity.pds, 468 + identity.did, 469 + (value as any).avatar.ref["$link"] 470 + ), 471 + //likeCount?: number 472 + //acceptsInteractions?: boolean 473 + //labels?: ComAtprotoLabelDefs.Label[] 474 + //viewer?: GeneratorViewerState 475 + contentMode: value.contentMode, 476 + indexedAt: new Date().toISOString(), 477 + }; 478 + } catch (err) { 479 + return undefined; 480 + } 481 + }) 482 + ) 483 + ).filter(isGeneratorView); 484 + 485 + const response: XRPCTypes.AppBskyFeedGetFeedGenerators.OutputSchema = { 486 + feeds: feeds ? feeds : [], 487 + }; 488 + 489 + return new Response(JSON.stringify(response), { 490 + headers: withCors({ "Content-Type": "application/json" }), 491 + }); 492 + } 493 + case "app.bsky.feed.getFeed": { 494 + const jsonTyped = 495 + jsonUntyped as XRPCTypes.AppBskyFeedGetFeed.QueryParams; 496 + const cursor = jsonTyped.cursor; 497 + const feed = jsonTyped.feed; 498 + const limit = jsonTyped.limit; 499 + const proxyauth = req.headers.get("authorization") || ""; 500 + 501 + const did = new ATPAPI.AtUri(feed).hostname; 502 + const rkey = new ATPAPI.AtUri(feed).rkey; 503 + const identity = await resolveIdentity(did); 504 + const feedgetRecord = ( 505 + await getSlingshotRecord( 506 + identity.did, 507 + "app.bsky.feed.generator", 508 + rkey 509 + ) 510 + ).value as ATPAPI.AppBskyFeedGenerator.Record; 511 + 512 + const skeleton = (await cachedFetch( 513 + `${didWebToHttps( 514 + feedgetRecord.did 515 + )}/xrpc/app.bsky.feed.getFeedSkeleton?feed=${jsonTyped.feed}${ 516 + cursor ? `&cursor=${cursor}` : "" 517 + }${limit ? `&limit=${limit}` : ""}`, 518 + proxyauth 519 + )) as ATPAPI.AppBskyFeedGetFeedSkeleton.OutputSchema; 520 521 + const nextcursor = skeleton.cursor; 522 + const dbgrqstid = skeleton.reqId; 523 + const uriarray = skeleton.feed; 524 525 + // Step 1: Chunk into 25 max 526 + const chunks = []; 527 + for (let i = 0; i < uriarray.length; i += 25) { 528 + chunks.push(uriarray.slice(i, i + 25)); 529 + } 530 531 + // Step 2: Hydrate via getPosts 532 + const hydratedPosts: ATPAPI.AppBskyFeedDefs.FeedViewPost[] = []; 533 534 + for (const chunk of chunks) { 535 + const searchParams = new URLSearchParams(); 536 + for (const uri of chunk.map((item) => item.post)) { 537 + searchParams.append("uris", uri); 538 + } 539 540 + const postResp = await ky 541 + .get(`https://api.bsky.app/xrpc/app.bsky.feed.getPosts`, { 542 + // headers: { 543 + // Authorization: proxyauth, 544 + // }, 545 + searchParams, 546 + }) 547 + .json<ATPAPI.AppBskyFeedGetPosts.OutputSchema>(); 548 + 549 + for (const post of postResp.posts) { 550 + const matchingSkeleton = uriarray.find( 551 + (item) => item.post === post.uri 552 + ); 553 + if (matchingSkeleton) { 554 + //post.author.handle = post.author.handle + ".percent40.api.bsky.app"; // or any logic to modify it 555 + hydratedPosts.push({ 556 + post, 557 + reason: matchingSkeleton.reason, 558 + //reply: matchingSkeleton, 559 + }); 560 + } 561 + } 562 + } 563 + 564 + // Step 3: Compose final response 565 + const response: XRPCTypes.AppBskyFeedGetFeed.OutputSchema = { 566 + feed: hydratedPosts, 567 + cursor: nextcursor, 568 }; 569 570 + return new Response(JSON.stringify(response), { 571 + headers: withCors({ "Content-Type": "application/json" }), 572 + }); 573 + } 574 + case "app.bsky.actor.getProfile": { 575 + const jsonTyped = 576 + jsonUntyped as XRPCTypes.AppBskyActorGetProfile.QueryParams; 577 + 578 + const userindexservice = ""; 579 + const isbskyfallback = true; 580 + if (isbskyfallback) { 581 + return sendItToApiBskyApp(req); 582 + } 583 + 584 + const response: XRPCTypes.AppBskyActorGetProfile.OutputSchema = {}; 585 + 586 + return new Response(JSON.stringify(response), { 587 + headers: withCors({ "Content-Type": "application/json" }), 588 + }); 589 + } 590 + 591 + case "app.bsky.actor.getProfiles": { 592 + const jsonTyped = 593 + jsonUntyped as XRPCTypes.AppBskyActorGetProfiles.QueryParams; 594 + 595 + const userindexservice = ""; 596 + const isbskyfallback = true; 597 + if (isbskyfallback) { 598 + return sendItToApiBskyApp(req); 599 + } 600 + 601 + const response: XRPCTypes.AppBskyActorGetProfiles.OutputSchema = {}; 602 + 603 + return new Response(JSON.stringify(response), { 604 + headers: withCors({ "Content-Type": "application/json" }), 605 + }); 606 } 607 + case "app.bsky.feed.getAuthorFeed": { 608 + const jsonTyped = 609 + jsonUntyped as XRPCTypes.AppBskyFeedGetAuthorFeed.QueryParams; 610 611 + const userindexservice = ""; 612 + const isbskyfallback = true; 613 + if (isbskyfallback) { 614 + return sendItToApiBskyApp(req); 615 + } 616 617 + const response: XRPCTypes.AppBskyFeedGetAuthorFeed.OutputSchema = {}; 618 619 + return new Response(JSON.stringify(response), { 620 + headers: withCors({ "Content-Type": "application/json" }), 621 + }); 622 } 623 + case "app.bsky.feed.getPostThread": { 624 + const jsonTyped = 625 + jsonUntyped as XRPCTypes.AppBskyFeedGetPostThread.QueryParams; 626 627 + const userindexservice = ""; 628 + const isbskyfallback = true; 629 + if (isbskyfallback) { 630 + return sendItToApiBskyApp(req); 631 + } 632 633 + const response: XRPCTypes.AppBskyFeedGetPostThread.OutputSchema = {}; 634 635 + return new Response(JSON.stringify(response), { 636 + headers: withCors({ "Content-Type": "application/json" }), 637 + }); 638 + } 639 + case "app.bsky.unspecced.getPostThreadV2": { 640 + const jsonTyped = 641 + jsonUntyped as XRPCTypes.AppBskyUnspeccedGetPostThreadV2.QueryParams; 642 + 643 + const userindexservice = ""; 644 + const isbskyfallback = true; 645 + if (isbskyfallback) { 646 + return sendItToApiBskyApp(req); 647 + } 648 + 649 + const response: XRPCTypes.AppBskyUnspeccedGetPostThreadV2.OutputSchema = 650 + {}; 651 + 652 + return new Response(JSON.stringify(response), { 653 + headers: withCors({ "Content-Type": "application/json" }), 654 + }); 655 + } 656 657 + // case "app.bsky.actor.getProfile": { 658 + // const jsonTyped = 659 + // jsonUntyped as XRPCTypes.AppBskyActorGetProfile.QueryParams; 660 + 661 + // const response: XRPCTypes.AppBskyActorGetProfile.OutputSchema= {}; 662 + 663 + // return new Response(JSON.stringify(response), { 664 + // headers: withCors({ "Content-Type": "application/json" }), 665 + // }); 666 + // } 667 + // case "app.bsky.actor.getProfiles": { 668 + // const jsonTyped = jsonUntyped as XRPCTypes.AppBskyActorGetProfiles.QueryParams; 669 670 + // const response: XRPCTypes.AppBskyActorGetProfiles.OutputSchema = {}; 671 672 + // return new Response(JSON.stringify(response), { 673 + // headers: withCors({ "Content-Type": "application/json" }), 674 + // }); 675 + // } 676 + // case "whatever": { 677 + // const jsonTyped = jsonUntyped as XRPCTypes.AppBskyFeedGetAuthorFeed.QueryParams; 678 679 + // const response: XRPCTypes.AppBskyFeedGetAuthorFeed.OutputSchema = {} 680 681 + // return new Response(JSON.stringify(response), { 682 + // headers: withCors({ "Content-Type": "application/json" }), 683 + // }); 684 + // } 685 + // case "app.bsky.notification.listNotifications": { 686 + // const jsonTyped = 687 + // jsonUntyped as XRPCTypes.AppBskyNotificationListNotifications.QueryParams; 688 689 + // const response: XRPCTypes.AppBskyNotificationListNotifications.OutputSchema = {}; 690 691 + // return new Response(JSON.stringify(response), { 692 + // headers: withCors({ "Content-Type": "application/json" }), 693 + // }); 694 + // } 695 696 + case "app.bsky.unspecced.getConfig": { 697 + const jsonTyped = 698 + jsonUntyped as XRPCTypes.AppBskyUnspeccedGetConfig.QueryParams; 699 700 + const response: XRPCTypes.AppBskyUnspeccedGetConfig.OutputSchema = { 701 + checkEmailConfirmed: true, 702 + liveNow: [ 703 { 704 + $type: "app.bsky.unspecced.getConfig#liveNowConfig", 705 + did: "did:plc:mn45tewwnse5btfftvd3powc", 706 + domains: ["local3768forumtest.whey.party"], 707 }, 708 ], 709 }; 710 711 + return new Response(JSON.stringify(response), { 712 + headers: withCors({ "Content-Type": "application/json" }), 713 + }); 714 + } 715 + case "app.bsky.graph.getLists": { 716 + const jsonTyped = 717 + jsonUntyped as XRPCTypes.AppBskyGraphGetLists.QueryParams; 718 + 719 + const response: XRPCTypes.AppBskyGraphGetLists.OutputSchema = { 720 + lists: [], 721 + }; 722 + 723 + return new Response(JSON.stringify(response), { 724 headers: withCors({ "Content-Type": "application/json" }), 725 + }); 726 + } 727 + //https://shimeji.us-east.host.bsky.network/xrpc/app.bsky.unspecced.getTrendingTopics?limit=14 728 + case "app.bsky.unspecced.getTrendingTopics": { 729 + const jsonTyped = 730 + jsonUntyped as XRPCTypes.AppBskyUnspeccedGetTrendingTopics.QueryParams; 731 + 732 + const faketopics: ATPAPI.AppBskyUnspeccedDefs.TrendingTopic[] = [ 733 + { 734 + $type: "app.bsky.unspecced.defs#trendingTopic", 735 + topic: "Git Repo", 736 + displayName: "Git Repo", 737 + description: "Git Repo", 738 + link: "https://tangled.sh/@whey.party/skylite", 739 + }, 740 + { 741 + $type: "app.bsky.unspecced.defs#trendingTopic", 742 + topic: "Red Dwarf Lite", 743 + displayName: "Red Dwarf Lite", 744 + description: "Red Dwarf Lite", 745 + link: "https://reddwarf.whey.party/", 746 + }, 747 + { 748 + $type: "app.bsky.unspecced.defs#trendingTopic", 749 + topic: "whey dot party", 750 + displayName: "whey dot party", 751 + description: "whey dot party", 752 + link: "https://whey.party/", 753 + }, 754 + ]; 755 + 756 + const response: XRPCTypes.AppBskyUnspeccedGetTrendingTopics.OutputSchema = 757 + { 758 + topics: faketopics, 759 + suggested: faketopics, 760 + }; 761 + 762 + return new Response(JSON.stringify(response), { 763 + headers: withCors({ "Content-Type": "application/json" }), 764 + }); 765 + } 766 + default: { 767 + return new Response( 768 + JSON.stringify({ 769 + error: "XRPCNotSupported", 770 + message: 771 + "HEY hello there my name is whey dot party and you have used my custom appview that is very cool but have you considered that XRPC Not Supported", 772 + }), 773 + { 774 + status: 404, 775 + headers: withCors({ "Content-Type": "application/json" }), 776 + } 777 + ); 778 + } 779 } 780 } 781 + ); 782 783 function withCors(headers: HeadersInit = {}) { 784 return { ··· 792 "Access-Control-Allow-Headers": "Content-Type, Authorization", 793 }; 794 const json = "application/json"; 795 796 // ------------------------------------------ 797 // Indexer
+16
utils/dbsetup.ts
··· 17 const createIndexINE = "CREATE INDEX IF NOT EXISTS"; 18 19 db.exec(` 20 ${createTableINE} did ( 21 did TEXT PRIMARY KEY NOT NULL, 22 method TEXT,
··· 17 const createIndexINE = "CREATE INDEX IF NOT EXISTS"; 18 19 db.exec(` 20 + ${createTableINE} users ( 21 + did TEXT PRIMARY KEY NOT NULL, 22 + role TEXT, 23 + registrationdate TEXT, 24 + onboardingstatus TEXT 25 + ); 26 + 27 + ${createTableINE} remoteprofileview ( 28 + did TEXT PRIMARY KEY NOT NULL, 29 + handle TEXT, 30 + displayname TEXT, 31 + description TEXT, 32 + avatar TEXT, 33 + banner TEXT 34 + ); 35 + 36 ${createTableINE} did ( 37 did TEXT PRIMARY KEY NOT NULL, 38 method TEXT,
+5 -5
utils/diddoc.ts
··· 3 "https://www.w3.org/ns/did/v1", 4 "https://w3id.org/security/multikey/v1", 5 ], 6 - id: "did:web:local3768forumtest.whey.party", 7 verificationMethod: [ 8 { 9 - id: "did:web:local3768forumtest.whey.party#atproto", 10 type: "Multikey", 11 - controller: "did:web:local3768forumtest.whey.party", 12 publicKeyMultibase: "bullshit", 13 }, 14 ], ··· 16 { 17 id: "#bsky_notif", 18 type: "BskyNotificationService", 19 - serviceEndpoint: "https://local3768forumtest.whey.party", 20 }, 21 { 22 id: "#bsky_appview", 23 type: "BskyAppView", 24 - serviceEndpoint: "https://local3768forumtest.whey.party", 25 }, 26 ], 27 };
··· 3 "https://www.w3.org/ns/did/v1", 4 "https://w3id.org/security/multikey/v1", 5 ], 6 + id: `${Deno.env.get("SERVICE_DID")}`, 7 verificationMethod: [ 8 { 9 + id: `${Deno.env.get("SERVICE_DID")}#atproto`, 10 type: "Multikey", 11 + controller: `${Deno.env.get("SERVICE_DID")}`, 12 publicKeyMultibase: "bullshit", 13 }, 14 ], ··· 16 { 17 id: "#bsky_notif", 18 type: "BskyNotificationService", 19 + serviceEndpoint: `${Deno.env.get("SERVICE_ENDPOINT")}`, 20 }, 21 { 22 id: "#bsky_appview", 23 type: "BskyAppView", 24 + serviceEndpoint: `${Deno.env.get("SERVICE_ENDPOINT")}`, 25 }, 26 ], 27 };
utils/indexserver.ts

This is a binary file and will not be displayed.

+2 -2
utils/sharders.ts
··· 245 export class JetstreamManager extends ShardedConnectionManager<JetstreamParams> { 246 constructor(onMessage: (msg: any) => void) { 247 super( 248 - 'wss://jetstream2.us-east.bsky.network/subscribe', 249 { wantedDids: 10000, wantedCollections: 100 }, 250 onMessage 251 ); ··· 255 export class SpacedustManager extends ShardedConnectionManager<SpacedustParams> { 256 constructor(onMessage: (msg: any) => void) { 257 super( 258 - 'wss://spacedust.microcosm.blue/subscribe', 259 { wantedSubjects: 100, wantedSubjectDids: 100, wantedSources: 100 }, 260 onMessage 261 );
··· 245 export class JetstreamManager extends ShardedConnectionManager<JetstreamParams> { 246 constructor(onMessage: (msg: any) => void) { 247 super( 248 + `${Deno.env.get("JETSTREAM_URL")}/subscribe`, 249 { wantedDids: 10000, wantedCollections: 100 }, 250 onMessage 251 ); ··· 255 export class SpacedustManager extends ShardedConnectionManager<SpacedustParams> { 256 constructor(onMessage: (msg: any) => void) { 257 super( 258 + `${Deno.env.get("SPACEDUST_URL")}/subscribe`, 259 { wantedSubjects: 100, wantedSubjectDids: 100, wantedSources: 100 }, 260 onMessage 261 );
+229
utils/viewserver.ts
···
··· 1 + export * as AppBskyActorGetPreferences from '../viewserver/types/app/bsky/actor/getPreferences.ts' 2 + export * as AppBskyActorGetProfile from '../viewserver/types/app/bsky/actor/getProfile.ts' 3 + export * as AppBskyActorGetProfiles from '../viewserver/types/app/bsky/actor/getProfiles.ts' 4 + export * as AppBskyActorGetSuggestions from '../viewserver/types/app/bsky/actor/getSuggestions.ts' 5 + export * as AppBskyActorPutPreferences from '../viewserver/types/app/bsky/actor/putPreferences.ts' 6 + export * as AppBskyActorSearchActors from '../viewserver/types/app/bsky/actor/searchActors.ts' 7 + export * as AppBskyActorSearchActorsTypeahead from '../viewserver/types/app/bsky/actor/searchActorsTypeahead.ts' 8 + export * as AppBskyFeedDescribeFeedGenerator from '../viewserver/types/app/bsky/feed/describeFeedGenerator.ts' 9 + export * as AppBskyFeedGetActorFeeds from '../viewserver/types/app/bsky/feed/getActorFeeds.ts' 10 + export * as AppBskyFeedGetActorLikes from '../viewserver/types/app/bsky/feed/getActorLikes.ts' 11 + export * as AppBskyFeedGetAuthorFeed from '../viewserver/types/app/bsky/feed/getAuthorFeed.ts' 12 + export * as AppBskyFeedGetFeed from '../viewserver/types/app/bsky/feed/getFeed.ts' 13 + export * as AppBskyFeedGetFeedGenerator from '../viewserver/types/app/bsky/feed/getFeedGenerator.ts' 14 + export * as AppBskyFeedGetFeedGenerators from '../viewserver/types/app/bsky/feed/getFeedGenerators.ts' 15 + export * as AppBskyFeedGetFeedSkeleton from '../viewserver/types/app/bsky/feed/getFeedSkeleton.ts' 16 + export * as AppBskyFeedGetLikes from '../viewserver/types/app/bsky/feed/getLikes.ts' 17 + export * as AppBskyFeedGetListFeed from '../viewserver/types/app/bsky/feed/getListFeed.ts' 18 + export * as AppBskyFeedGetPostThread from '../viewserver/types/app/bsky/feed/getPostThread.ts' 19 + export * as AppBskyFeedGetPosts from '../viewserver/types/app/bsky/feed/getPosts.ts' 20 + export * as AppBskyFeedGetQuotes from '../viewserver/types/app/bsky/feed/getQuotes.ts' 21 + export * as AppBskyFeedGetRepostedBy from '../viewserver/types/app/bsky/feed/getRepostedBy.ts' 22 + export * as AppBskyFeedGetSuggestedFeeds from '../viewserver/types/app/bsky/feed/getSuggestedFeeds.ts' 23 + export * as AppBskyFeedGetTimeline from '../viewserver/types/app/bsky/feed/getTimeline.ts' 24 + export * as AppBskyFeedSearchPosts from '../viewserver/types/app/bsky/feed/searchPosts.ts' 25 + export * as AppBskyFeedSendInteractions from '../viewserver/types/app/bsky/feed/sendInteractions.ts' 26 + export * as AppBskyGraphGetActorStarterPacks from '../viewserver/types/app/bsky/graph/getActorStarterPacks.ts' 27 + export * as AppBskyGraphGetBlocks from '../viewserver/types/app/bsky/graph/getBlocks.ts' 28 + export * as AppBskyGraphGetFollowers from '../viewserver/types/app/bsky/graph/getFollowers.ts' 29 + export * as AppBskyGraphGetFollows from '../viewserver/types/app/bsky/graph/getFollows.ts' 30 + export * as AppBskyGraphGetKnownFollowers from '../viewserver/types/app/bsky/graph/getKnownFollowers.ts' 31 + export * as AppBskyGraphGetList from '../viewserver/types/app/bsky/graph/getList.ts' 32 + export * as AppBskyGraphGetListBlocks from '../viewserver/types/app/bsky/graph/getListBlocks.ts' 33 + export * as AppBskyGraphGetListMutes from '../viewserver/types/app/bsky/graph/getListMutes.ts' 34 + export * as AppBskyGraphGetLists from '../viewserver/types/app/bsky/graph/getLists.ts' 35 + export * as AppBskyGraphGetListsWithMembership from '../viewserver/types/app/bsky/graph/getListsWithMembership.ts' 36 + export * as AppBskyGraphGetMutes from '../viewserver/types/app/bsky/graph/getMutes.ts' 37 + export * as AppBskyGraphGetRelationships from '../viewserver/types/app/bsky/graph/getRelationships.ts' 38 + export * as AppBskyGraphGetStarterPack from '../viewserver/types/app/bsky/graph/getStarterPack.ts' 39 + export * as AppBskyGraphGetStarterPacks from '../viewserver/types/app/bsky/graph/getStarterPacks.ts' 40 + export * as AppBskyGraphGetStarterPacksWithMembership from '../viewserver/types/app/bsky/graph/getStarterPacksWithMembership.ts' 41 + export * as AppBskyGraphGetSuggestedFollowsByActor from '../viewserver/types/app/bsky/graph/getSuggestedFollowsByActor.ts' 42 + export * as AppBskyGraphMuteActor from '../viewserver/types/app/bsky/graph/muteActor.ts' 43 + export * as AppBskyGraphMuteActorList from '../viewserver/types/app/bsky/graph/muteActorList.ts' 44 + export * as AppBskyGraphMuteThread from '../viewserver/types/app/bsky/graph/muteThread.ts' 45 + export * as AppBskyGraphSearchStarterPacks from '../viewserver/types/app/bsky/graph/searchStarterPacks.ts' 46 + export * as AppBskyGraphUnmuteActor from '../viewserver/types/app/bsky/graph/unmuteActor.ts' 47 + export * as AppBskyGraphUnmuteActorList from '../viewserver/types/app/bsky/graph/unmuteActorList.ts' 48 + export * as AppBskyGraphUnmuteThread from '../viewserver/types/app/bsky/graph/unmuteThread.ts' 49 + export * as AppBskyLabelerGetServices from '../viewserver/types/app/bsky/labeler/getServices.ts' 50 + export * as AppBskyNotificationGetPreferences from '../viewserver/types/app/bsky/notification/getPreferences.ts' 51 + export * as AppBskyNotificationGetUnreadCount from '../viewserver/types/app/bsky/notification/getUnreadCount.ts' 52 + export * as AppBskyNotificationListActivitySubscriptions from '../viewserver/types/app/bsky/notification/listActivitySubscriptions.ts' 53 + export * as AppBskyNotificationListNotifications from '../viewserver/types/app/bsky/notification/listNotifications.ts' 54 + export * as AppBskyNotificationPutActivitySubscription from '../viewserver/types/app/bsky/notification/putActivitySubscription.ts' 55 + export * as AppBskyNotificationPutPreferences from '../viewserver/types/app/bsky/notification/putPreferences.ts' 56 + export * as AppBskyNotificationPutPreferencesV2 from '../viewserver/types/app/bsky/notification/putPreferencesV2.ts' 57 + export * as AppBskyNotificationRegisterPush from '../viewserver/types/app/bsky/notification/registerPush.ts' 58 + export * as AppBskyNotificationUnregisterPush from '../viewserver/types/app/bsky/notification/unregisterPush.ts' 59 + export * as AppBskyNotificationUpdateSeen from '../viewserver/types/app/bsky/notification/updateSeen.ts' 60 + export * as AppBskyUnspeccedGetAgeAssuranceState from '../viewserver/types/app/bsky/unspecced/getAgeAssuranceState.ts' 61 + export * as AppBskyUnspeccedGetConfig from '../viewserver/types/app/bsky/unspecced/getConfig.ts' 62 + export * as AppBskyUnspeccedGetPopularFeedGenerators from '../viewserver/types/app/bsky/unspecced/getPopularFeedGenerators.ts' 63 + export * as AppBskyUnspeccedGetPostThreadOtherV2 from '../viewserver/types/app/bsky/unspecced/getPostThreadOtherV2.ts' 64 + export * as AppBskyUnspeccedGetPostThreadV2 from '../viewserver/types/app/bsky/unspecced/getPostThreadV2.ts' 65 + export * as AppBskyUnspeccedGetSuggestedFeeds from '../viewserver/types/app/bsky/unspecced/getSuggestedFeeds.ts' 66 + export * as AppBskyUnspeccedGetSuggestedFeedsSkeleton from '../viewserver/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.ts' 67 + export * as AppBskyUnspeccedGetSuggestedStarterPacks from '../viewserver/types/app/bsky/unspecced/getSuggestedStarterPacks.ts' 68 + export * as AppBskyUnspeccedGetSuggestedStarterPacksSkeleton from '../viewserver/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts' 69 + export * as AppBskyUnspeccedGetSuggestedUsers from '../viewserver/types/app/bsky/unspecced/getSuggestedUsers.ts' 70 + export * as AppBskyUnspeccedGetSuggestedUsersSkeleton from '../viewserver/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts' 71 + export * as AppBskyUnspeccedGetSuggestionsSkeleton from '../viewserver/types/app/bsky/unspecced/getSuggestionsSkeleton.ts' 72 + export * as AppBskyUnspeccedGetTaggedSuggestions from '../viewserver/types/app/bsky/unspecced/getTaggedSuggestions.ts' 73 + export * as AppBskyUnspeccedGetTrendingTopics from '../viewserver/types/app/bsky/unspecced/getTrendingTopics.ts' 74 + export * as AppBskyUnspeccedGetTrends from '../viewserver/types/app/bsky/unspecced/getTrends.ts' 75 + export * as AppBskyUnspeccedGetTrendsSkeleton from '../viewserver/types/app/bsky/unspecced/getTrendsSkeleton.ts' 76 + export * as AppBskyUnspeccedInitAgeAssurance from '../viewserver/types/app/bsky/unspecced/initAgeAssurance.ts' 77 + export * as AppBskyUnspeccedSearchActorsSkeleton from '../viewserver/types/app/bsky/unspecced/searchActorsSkeleton.ts' 78 + export * as AppBskyUnspeccedSearchPostsSkeleton from '../viewserver/types/app/bsky/unspecced/searchPostsSkeleton.ts' 79 + export * as AppBskyUnspeccedSearchStarterPacksSkeleton from '../viewserver/types/app/bsky/unspecced/searchStarterPacksSkeleton.ts' 80 + export * as AppBskyVideoGetJobStatus from '../viewserver/types/app/bsky/video/getJobStatus.ts' 81 + export * as AppBskyVideoGetUploadLimits from '../viewserver/types/app/bsky/video/getUploadLimits.ts' 82 + export * as AppBskyVideoUploadVideo from '../viewserver/types/app/bsky/video/uploadVideo.ts' 83 + export * as ChatBskyActorDeleteAccount from '../viewserver/types/chat/bsky/actor/deleteAccount.ts' 84 + export * as ChatBskyActorExportAccountData from '../viewserver/types/chat/bsky/actor/exportAccountData.ts' 85 + export * as ChatBskyConvoAcceptConvo from '../viewserver/types/chat/bsky/convo/acceptConvo.ts' 86 + export * as ChatBskyConvoAddReaction from '../viewserver/types/chat/bsky/convo/addReaction.ts' 87 + export * as ChatBskyConvoDeleteMessageForSelf from '../viewserver/types/chat/bsky/convo/deleteMessageForSelf.ts' 88 + export * as ChatBskyConvoGetConvo from '../viewserver/types/chat/bsky/convo/getConvo.ts' 89 + export * as ChatBskyConvoGetConvoAvailability from '../viewserver/types/chat/bsky/convo/getConvoAvailability.ts' 90 + export * as ChatBskyConvoGetConvoForMembers from '../viewserver/types/chat/bsky/convo/getConvoForMembers.ts' 91 + export * as ChatBskyConvoGetLog from '../viewserver/types/chat/bsky/convo/getLog.ts' 92 + export * as ChatBskyConvoGetMessages from '../viewserver/types/chat/bsky/convo/getMessages.ts' 93 + export * as ChatBskyConvoLeaveConvo from '../viewserver/types/chat/bsky/convo/leaveConvo.ts' 94 + export * as ChatBskyConvoListConvos from '../viewserver/types/chat/bsky/convo/listConvos.ts' 95 + export * as ChatBskyConvoMuteConvo from '../viewserver/types/chat/bsky/convo/muteConvo.ts' 96 + export * as ChatBskyConvoRemoveReaction from '../viewserver/types/chat/bsky/convo/removeReaction.ts' 97 + export * as ChatBskyConvoSendMessage from '../viewserver/types/chat/bsky/convo/sendMessage.ts' 98 + export * as ChatBskyConvoSendMessageBatch from '../viewserver/types/chat/bsky/convo/sendMessageBatch.ts' 99 + export * as ChatBskyConvoUnmuteConvo from '../viewserver/types/chat/bsky/convo/unmuteConvo.ts' 100 + export * as ChatBskyConvoUpdateAllRead from '../viewserver/types/chat/bsky/convo/updateAllRead.ts' 101 + export * as ChatBskyConvoUpdateRead from '../viewserver/types/chat/bsky/convo/updateRead.ts' 102 + export * as ChatBskyModerationGetActorMetadata from '../viewserver/types/chat/bsky/moderation/getActorMetadata.ts' 103 + export * as ChatBskyModerationGetMessageContext from '../viewserver/types/chat/bsky/moderation/getMessageContext.ts' 104 + export * as ChatBskyModerationUpdateActorAccess from '../viewserver/types/chat/bsky/moderation/updateActorAccess.ts' 105 + export * as ComAtprotoAdminDeleteAccount from '../viewserver/types/com/atproto/admin/deleteAccount.ts' 106 + export * as ComAtprotoAdminDisableAccountInvites from '../viewserver/types/com/atproto/admin/disableAccountInvites.ts' 107 + export * as ComAtprotoAdminDisableInviteCodes from '../viewserver/types/com/atproto/admin/disableInviteCodes.ts' 108 + export * as ComAtprotoAdminEnableAccountInvites from '../viewserver/types/com/atproto/admin/enableAccountInvites.ts' 109 + export * as ComAtprotoAdminGetAccountInfo from '../viewserver/types/com/atproto/admin/getAccountInfo.ts' 110 + export * as ComAtprotoAdminGetAccountInfos from '../viewserver/types/com/atproto/admin/getAccountInfos.ts' 111 + export * as ComAtprotoAdminGetInviteCodes from '../viewserver/types/com/atproto/admin/getInviteCodes.ts' 112 + export * as ComAtprotoAdminGetSubjectStatus from '../viewserver/types/com/atproto/admin/getSubjectStatus.ts' 113 + export * as ComAtprotoAdminSearchAccounts from '../viewserver/types/com/atproto/admin/searchAccounts.ts' 114 + export * as ComAtprotoAdminSendEmail from '../viewserver/types/com/atproto/admin/sendEmail.ts' 115 + export * as ComAtprotoAdminUpdateAccountEmail from '../viewserver/types/com/atproto/admin/updateAccountEmail.ts' 116 + export * as ComAtprotoAdminUpdateAccountHandle from '../viewserver/types/com/atproto/admin/updateAccountHandle.ts' 117 + export * as ComAtprotoAdminUpdateAccountPassword from '../viewserver/types/com/atproto/admin/updateAccountPassword.ts' 118 + export * as ComAtprotoAdminUpdateAccountSigningKey from '../viewserver/types/com/atproto/admin/updateAccountSigningKey.ts' 119 + export * as ComAtprotoAdminUpdateSubjectStatus from '../viewserver/types/com/atproto/admin/updateSubjectStatus.ts' 120 + export * as ComAtprotoIdentityGetRecommendedDidCredentials from '../viewserver/types/com/atproto/identity/getRecommendedDidCredentials.ts' 121 + export * as ComAtprotoIdentityRefreshIdentity from '../viewserver/types/com/atproto/identity/refreshIdentity.ts' 122 + export * as ComAtprotoIdentityRequestPlcOperationSignature from '../viewserver/types/com/atproto/identity/requestPlcOperationSignature.ts' 123 + export * as ComAtprotoIdentityResolveDid from '../viewserver/types/com/atproto/identity/resolveDid.ts' 124 + export * as ComAtprotoIdentityResolveHandle from '../viewserver/types/com/atproto/identity/resolveHandle.ts' 125 + export * as ComAtprotoIdentityResolveIdentity from '../viewserver/types/com/atproto/identity/resolveIdentity.ts' 126 + export * as ComAtprotoIdentitySignPlcOperation from '../viewserver/types/com/atproto/identity/signPlcOperation.ts' 127 + export * as ComAtprotoIdentitySubmitPlcOperation from '../viewserver/types/com/atproto/identity/submitPlcOperation.ts' 128 + export * as ComAtprotoIdentityUpdateHandle from '../viewserver/types/com/atproto/identity/updateHandle.ts' 129 + export * as ComAtprotoLabelQueryLabels from '../viewserver/types/com/atproto/label/queryLabels.ts' 130 + export * as ComAtprotoLabelSubscribeLabels from '../viewserver/types/com/atproto/label/subscribeLabels.ts' 131 + export * as ComAtprotoModerationCreateReport from '../viewserver/types/com/atproto/moderation/createReport.ts' 132 + export * as ComAtprotoRepoApplyWrites from '../viewserver/types/com/atproto/repo/applyWrites.ts' 133 + export * as ComAtprotoRepoCreateRecord from '../viewserver/types/com/atproto/repo/createRecord.ts' 134 + export * as ComAtprotoRepoDeleteRecord from '../viewserver/types/com/atproto/repo/deleteRecord.ts' 135 + export * as ComAtprotoRepoDescribeRepo from '../viewserver/types/com/atproto/repo/describeRepo.ts' 136 + export * as ComAtprotoRepoGetRecord from '../viewserver/types/com/atproto/repo/getRecord.ts' 137 + export * as ComAtprotoRepoImportRepo from '../viewserver/types/com/atproto/repo/importRepo.ts' 138 + export * as ComAtprotoRepoListMissingBlobs from '../viewserver/types/com/atproto/repo/listMissingBlobs.ts' 139 + export * as ComAtprotoRepoListRecords from '../viewserver/types/com/atproto/repo/listRecords.ts' 140 + export * as ComAtprotoRepoPutRecord from '../viewserver/types/com/atproto/repo/putRecord.ts' 141 + export * as ComAtprotoRepoUploadBlob from '../viewserver/types/com/atproto/repo/uploadBlob.ts' 142 + export * as ComAtprotoServerActivateAccount from '../viewserver/types/com/atproto/server/activateAccount.ts' 143 + export * as ComAtprotoServerCheckAccountStatus from '../viewserver/types/com/atproto/server/checkAccountStatus.ts' 144 + export * as ComAtprotoServerConfirmEmail from '../viewserver/types/com/atproto/server/confirmEmail.ts' 145 + export * as ComAtprotoServerCreateAccount from '../viewserver/types/com/atproto/server/createAccount.ts' 146 + export * as ComAtprotoServerCreateAppPassword from '../viewserver/types/com/atproto/server/createAppPassword.ts' 147 + export * as ComAtprotoServerCreateInviteCode from '../viewserver/types/com/atproto/server/createInviteCode.ts' 148 + export * as ComAtprotoServerCreateInviteCodes from '../viewserver/types/com/atproto/server/createInviteCodes.ts' 149 + export * as ComAtprotoServerCreateSession from '../viewserver/types/com/atproto/server/createSession.ts' 150 + export * as ComAtprotoServerDeactivateAccount from '../viewserver/types/com/atproto/server/deactivateAccount.ts' 151 + export * as ComAtprotoServerDeleteAccount from '../viewserver/types/com/atproto/server/deleteAccount.ts' 152 + export * as ComAtprotoServerDeleteSession from '../viewserver/types/com/atproto/server/deleteSession.ts' 153 + export * as ComAtprotoServerDescribeServer from '../viewserver/types/com/atproto/server/describeServer.ts' 154 + export * as ComAtprotoServerGetAccountInviteCodes from '../viewserver/types/com/atproto/server/getAccountInviteCodes.ts' 155 + export * as ComAtprotoServerGetServiceAuth from '../viewserver/types/com/atproto/server/getServiceAuth.ts' 156 + export * as ComAtprotoServerGetSession from '../viewserver/types/com/atproto/server/getSession.ts' 157 + export * as ComAtprotoServerListAppPasswords from '../viewserver/types/com/atproto/server/listAppPasswords.ts' 158 + export * as ComAtprotoServerRefreshSession from '../viewserver/types/com/atproto/server/refreshSession.ts' 159 + export * as ComAtprotoServerRequestAccountDelete from '../viewserver/types/com/atproto/server/requestAccountDelete.ts' 160 + export * as ComAtprotoServerRequestEmailConfirmation from '../viewserver/types/com/atproto/server/requestEmailConfirmation.ts' 161 + export * as ComAtprotoServerRequestEmailUpdate from '../viewserver/types/com/atproto/server/requestEmailUpdate.ts' 162 + export * as ComAtprotoServerRequestPasswordReset from '../viewserver/types/com/atproto/server/requestPasswordReset.ts' 163 + export * as ComAtprotoServerReserveSigningKey from '../viewserver/types/com/atproto/server/reserveSigningKey.ts' 164 + export * as ComAtprotoServerResetPassword from '../viewserver/types/com/atproto/server/resetPassword.ts' 165 + export * as ComAtprotoServerRevokeAppPassword from '../viewserver/types/com/atproto/server/revokeAppPassword.ts' 166 + export * as ComAtprotoServerUpdateEmail from '../viewserver/types/com/atproto/server/updateEmail.ts' 167 + export * as ComAtprotoSyncGetBlob from '../viewserver/types/com/atproto/sync/getBlob.ts' 168 + export * as ComAtprotoSyncGetBlocks from '../viewserver/types/com/atproto/sync/getBlocks.ts' 169 + export * as ComAtprotoSyncGetCheckout from '../viewserver/types/com/atproto/sync/getCheckout.ts' 170 + export * as ComAtprotoSyncGetHead from '../viewserver/types/com/atproto/sync/getHead.ts' 171 + export * as ComAtprotoSyncGetHostStatus from '../viewserver/types/com/atproto/sync/getHostStatus.ts' 172 + export * as ComAtprotoSyncGetLatestCommit from '../viewserver/types/com/atproto/sync/getLatestCommit.ts' 173 + export * as ComAtprotoSyncGetRecord from '../viewserver/types/com/atproto/sync/getRecord.ts' 174 + export * as ComAtprotoSyncGetRepo from '../viewserver/types/com/atproto/sync/getRepo.ts' 175 + export * as ComAtprotoSyncGetRepoStatus from '../viewserver/types/com/atproto/sync/getRepoStatus.ts' 176 + export * as ComAtprotoSyncListBlobs from '../viewserver/types/com/atproto/sync/listBlobs.ts' 177 + export * as ComAtprotoSyncListHosts from '../viewserver/types/com/atproto/sync/listHosts.ts' 178 + export * as ComAtprotoSyncListRepos from '../viewserver/types/com/atproto/sync/listRepos.ts' 179 + export * as ComAtprotoSyncListReposByCollection from '../viewserver/types/com/atproto/sync/listReposByCollection.ts' 180 + export * as ComAtprotoSyncNotifyOfUpdate from '../viewserver/types/com/atproto/sync/notifyOfUpdate.ts' 181 + export * as ComAtprotoSyncRequestCrawl from '../viewserver/types/com/atproto/sync/requestCrawl.ts' 182 + export * as ComAtprotoSyncSubscribeRepos from '../viewserver/types/com/atproto/sync/subscribeRepos.ts' 183 + export * as ComAtprotoTempAddReservedHandle from '../viewserver/types/com/atproto/temp/addReservedHandle.ts' 184 + export * as ComAtprotoTempCheckHandleAvailability from '../viewserver/types/com/atproto/temp/checkHandleAvailability.ts' 185 + export * as ComAtprotoTempCheckSignupQueue from '../viewserver/types/com/atproto/temp/checkSignupQueue.ts' 186 + export * as ComAtprotoTempFetchLabels from '../viewserver/types/com/atproto/temp/fetchLabels.ts' 187 + export * as ComAtprotoTempRequestPhoneVerification from '../viewserver/types/com/atproto/temp/requestPhoneVerification.ts' 188 + export * as ToolsOzoneCommunicationCreateTemplate from '../viewserver/types/tools/ozone/communication/createTemplate.ts' 189 + export * as ToolsOzoneCommunicationDeleteTemplate from '../viewserver/types/tools/ozone/communication/deleteTemplate.ts' 190 + export * as ToolsOzoneCommunicationListTemplates from '../viewserver/types/tools/ozone/communication/listTemplates.ts' 191 + export * as ToolsOzoneCommunicationUpdateTemplate from '../viewserver/types/tools/ozone/communication/updateTemplate.ts' 192 + export * as ToolsOzoneHostingGetAccountHistory from '../viewserver/types/tools/ozone/hosting/getAccountHistory.ts' 193 + export * as ToolsOzoneModerationEmitEvent from '../viewserver/types/tools/ozone/moderation/emitEvent.ts' 194 + export * as ToolsOzoneModerationGetAccountTimeline from '../viewserver/types/tools/ozone/moderation/getAccountTimeline.ts' 195 + export * as ToolsOzoneModerationGetEvent from '../viewserver/types/tools/ozone/moderation/getEvent.ts' 196 + export * as ToolsOzoneModerationGetRecord from '../viewserver/types/tools/ozone/moderation/getRecord.ts' 197 + export * as ToolsOzoneModerationGetRecords from '../viewserver/types/tools/ozone/moderation/getRecords.ts' 198 + export * as ToolsOzoneModerationGetRepo from '../viewserver/types/tools/ozone/moderation/getRepo.ts' 199 + export * as ToolsOzoneModerationGetReporterStats from '../viewserver/types/tools/ozone/moderation/getReporterStats.ts' 200 + export * as ToolsOzoneModerationGetRepos from '../viewserver/types/tools/ozone/moderation/getRepos.ts' 201 + export * as ToolsOzoneModerationGetSubjects from '../viewserver/types/tools/ozone/moderation/getSubjects.ts' 202 + export * as ToolsOzoneModerationQueryEvents from '../viewserver/types/tools/ozone/moderation/queryEvents.ts' 203 + export * as ToolsOzoneModerationQueryStatuses from '../viewserver/types/tools/ozone/moderation/queryStatuses.ts' 204 + export * as ToolsOzoneModerationSearchRepos from '../viewserver/types/tools/ozone/moderation/searchRepos.ts' 205 + export * as ToolsOzoneSafelinkAddRule from '../viewserver/types/tools/ozone/safelink/addRule.ts' 206 + export * as ToolsOzoneSafelinkQueryEvents from '../viewserver/types/tools/ozone/safelink/queryEvents.ts' 207 + export * as ToolsOzoneSafelinkQueryRules from '../viewserver/types/tools/ozone/safelink/queryRules.ts' 208 + export * as ToolsOzoneSafelinkRemoveRule from '../viewserver/types/tools/ozone/safelink/removeRule.ts' 209 + export * as ToolsOzoneSafelinkUpdateRule from '../viewserver/types/tools/ozone/safelink/updateRule.ts' 210 + export * as ToolsOzoneServerGetConfig from '../viewserver/types/tools/ozone/server/getConfig.ts' 211 + export * as ToolsOzoneSetAddValues from '../viewserver/types/tools/ozone/set/addValues.ts' 212 + export * as ToolsOzoneSetDeleteSet from '../viewserver/types/tools/ozone/set/deleteSet.ts' 213 + export * as ToolsOzoneSetDeleteValues from '../viewserver/types/tools/ozone/set/deleteValues.ts' 214 + export * as ToolsOzoneSetGetValues from '../viewserver/types/tools/ozone/set/getValues.ts' 215 + export * as ToolsOzoneSetQuerySets from '../viewserver/types/tools/ozone/set/querySets.ts' 216 + export * as ToolsOzoneSetUpsertSet from '../viewserver/types/tools/ozone/set/upsertSet.ts' 217 + export * as ToolsOzoneSettingListOptions from '../viewserver/types/tools/ozone/setting/listOptions.ts' 218 + export * as ToolsOzoneSettingRemoveOptions from '../viewserver/types/tools/ozone/setting/removeOptions.ts' 219 + export * as ToolsOzoneSettingUpsertOption from '../viewserver/types/tools/ozone/setting/upsertOption.ts' 220 + export * as ToolsOzoneSignatureFindCorrelation from '../viewserver/types/tools/ozone/signature/findCorrelation.ts' 221 + export * as ToolsOzoneSignatureFindRelatedAccounts from '../viewserver/types/tools/ozone/signature/findRelatedAccounts.ts' 222 + export * as ToolsOzoneSignatureSearchAccounts from '../viewserver/types/tools/ozone/signature/searchAccounts.ts' 223 + export * as ToolsOzoneTeamAddMember from '../viewserver/types/tools/ozone/team/addMember.ts' 224 + export * as ToolsOzoneTeamDeleteMember from '../viewserver/types/tools/ozone/team/deleteMember.ts' 225 + export * as ToolsOzoneTeamListMembers from '../viewserver/types/tools/ozone/team/listMembers.ts' 226 + export * as ToolsOzoneTeamUpdateMember from '../viewserver/types/tools/ozone/team/updateMember.ts' 227 + export * as ToolsOzoneVerificationGrantVerifications from '../viewserver/types/tools/ozone/verification/grantVerifications.ts' 228 + export * as ToolsOzoneVerificationListVerifications from '../viewserver/types/tools/ozone/verification/listVerifications.ts' 229 + export * as ToolsOzoneVerificationRevokeVerifications from '../viewserver/types/tools/ozone/verification/revokeVerifications.ts'
-229
utils/xrpc.ts
··· 1 - export * as AppBskyActorGetPreferences from '../xrpc/types/app/bsky/actor/getPreferences.ts' 2 - export * as AppBskyActorGetProfile from '../xrpc/types/app/bsky/actor/getProfile.ts' 3 - export * as AppBskyActorGetProfiles from '../xrpc/types/app/bsky/actor/getProfiles.ts' 4 - export * as AppBskyActorGetSuggestions from '../xrpc/types/app/bsky/actor/getSuggestions.ts' 5 - export * as AppBskyActorPutPreferences from '../xrpc/types/app/bsky/actor/putPreferences.ts' 6 - export * as AppBskyActorSearchActors from '../xrpc/types/app/bsky/actor/searchActors.ts' 7 - export * as AppBskyActorSearchActorsTypeahead from '../xrpc/types/app/bsky/actor/searchActorsTypeahead.ts' 8 - export * as AppBskyFeedDescribeFeedGenerator from '../xrpc/types/app/bsky/feed/describeFeedGenerator.ts' 9 - export * as AppBskyFeedGetActorFeeds from '../xrpc/types/app/bsky/feed/getActorFeeds.ts' 10 - export * as AppBskyFeedGetActorLikes from '../xrpc/types/app/bsky/feed/getActorLikes.ts' 11 - export * as AppBskyFeedGetAuthorFeed from '../xrpc/types/app/bsky/feed/getAuthorFeed.ts' 12 - export * as AppBskyFeedGetFeed from '../xrpc/types/app/bsky/feed/getFeed.ts' 13 - export * as AppBskyFeedGetFeedGenerator from '../xrpc/types/app/bsky/feed/getFeedGenerator.ts' 14 - export * as AppBskyFeedGetFeedGenerators from '../xrpc/types/app/bsky/feed/getFeedGenerators.ts' 15 - export * as AppBskyFeedGetFeedSkeleton from '../xrpc/types/app/bsky/feed/getFeedSkeleton.ts' 16 - export * as AppBskyFeedGetLikes from '../xrpc/types/app/bsky/feed/getLikes.ts' 17 - export * as AppBskyFeedGetListFeed from '../xrpc/types/app/bsky/feed/getListFeed.ts' 18 - export * as AppBskyFeedGetPostThread from '../xrpc/types/app/bsky/feed/getPostThread.ts' 19 - export * as AppBskyFeedGetPosts from '../xrpc/types/app/bsky/feed/getPosts.ts' 20 - export * as AppBskyFeedGetQuotes from '../xrpc/types/app/bsky/feed/getQuotes.ts' 21 - export * as AppBskyFeedGetRepostedBy from '../xrpc/types/app/bsky/feed/getRepostedBy.ts' 22 - export * as AppBskyFeedGetSuggestedFeeds from '../xrpc/types/app/bsky/feed/getSuggestedFeeds.ts' 23 - export * as AppBskyFeedGetTimeline from '../xrpc/types/app/bsky/feed/getTimeline.ts' 24 - export * as AppBskyFeedSearchPosts from '../xrpc/types/app/bsky/feed/searchPosts.ts' 25 - export * as AppBskyFeedSendInteractions from '../xrpc/types/app/bsky/feed/sendInteractions.ts' 26 - export * as AppBskyGraphGetActorStarterPacks from '../xrpc/types/app/bsky/graph/getActorStarterPacks.ts' 27 - export * as AppBskyGraphGetBlocks from '../xrpc/types/app/bsky/graph/getBlocks.ts' 28 - export * as AppBskyGraphGetFollowers from '../xrpc/types/app/bsky/graph/getFollowers.ts' 29 - export * as AppBskyGraphGetFollows from '../xrpc/types/app/bsky/graph/getFollows.ts' 30 - export * as AppBskyGraphGetKnownFollowers from '../xrpc/types/app/bsky/graph/getKnownFollowers.ts' 31 - export * as AppBskyGraphGetList from '../xrpc/types/app/bsky/graph/getList.ts' 32 - export * as AppBskyGraphGetListBlocks from '../xrpc/types/app/bsky/graph/getListBlocks.ts' 33 - export * as AppBskyGraphGetListMutes from '../xrpc/types/app/bsky/graph/getListMutes.ts' 34 - export * as AppBskyGraphGetLists from '../xrpc/types/app/bsky/graph/getLists.ts' 35 - export * as AppBskyGraphGetListsWithMembership from '../xrpc/types/app/bsky/graph/getListsWithMembership.ts' 36 - export * as AppBskyGraphGetMutes from '../xrpc/types/app/bsky/graph/getMutes.ts' 37 - export * as AppBskyGraphGetRelationships from '../xrpc/types/app/bsky/graph/getRelationships.ts' 38 - export * as AppBskyGraphGetStarterPack from '../xrpc/types/app/bsky/graph/getStarterPack.ts' 39 - export * as AppBskyGraphGetStarterPacks from '../xrpc/types/app/bsky/graph/getStarterPacks.ts' 40 - export * as AppBskyGraphGetStarterPacksWithMembership from '../xrpc/types/app/bsky/graph/getStarterPacksWithMembership.ts' 41 - export * as AppBskyGraphGetSuggestedFollowsByActor from '../xrpc/types/app/bsky/graph/getSuggestedFollowsByActor.ts' 42 - export * as AppBskyGraphMuteActor from '../xrpc/types/app/bsky/graph/muteActor.ts' 43 - export * as AppBskyGraphMuteActorList from '../xrpc/types/app/bsky/graph/muteActorList.ts' 44 - export * as AppBskyGraphMuteThread from '../xrpc/types/app/bsky/graph/muteThread.ts' 45 - export * as AppBskyGraphSearchStarterPacks from '../xrpc/types/app/bsky/graph/searchStarterPacks.ts' 46 - export * as AppBskyGraphUnmuteActor from '../xrpc/types/app/bsky/graph/unmuteActor.ts' 47 - export * as AppBskyGraphUnmuteActorList from '../xrpc/types/app/bsky/graph/unmuteActorList.ts' 48 - export * as AppBskyGraphUnmuteThread from '../xrpc/types/app/bsky/graph/unmuteThread.ts' 49 - export * as AppBskyLabelerGetServices from '../xrpc/types/app/bsky/labeler/getServices.ts' 50 - export * as AppBskyNotificationGetPreferences from '../xrpc/types/app/bsky/notification/getPreferences.ts' 51 - export * as AppBskyNotificationGetUnreadCount from '../xrpc/types/app/bsky/notification/getUnreadCount.ts' 52 - export * as AppBskyNotificationListActivitySubscriptions from '../xrpc/types/app/bsky/notification/listActivitySubscriptions.ts' 53 - export * as AppBskyNotificationListNotifications from '../xrpc/types/app/bsky/notification/listNotifications.ts' 54 - export * as AppBskyNotificationPutActivitySubscription from '../xrpc/types/app/bsky/notification/putActivitySubscription.ts' 55 - export * as AppBskyNotificationPutPreferences from '../xrpc/types/app/bsky/notification/putPreferences.ts' 56 - export * as AppBskyNotificationPutPreferencesV2 from '../xrpc/types/app/bsky/notification/putPreferencesV2.ts' 57 - export * as AppBskyNotificationRegisterPush from '../xrpc/types/app/bsky/notification/registerPush.ts' 58 - export * as AppBskyNotificationUnregisterPush from '../xrpc/types/app/bsky/notification/unregisterPush.ts' 59 - export * as AppBskyNotificationUpdateSeen from '../xrpc/types/app/bsky/notification/updateSeen.ts' 60 - export * as AppBskyUnspeccedGetAgeAssuranceState from '../xrpc/types/app/bsky/unspecced/getAgeAssuranceState.ts' 61 - export * as AppBskyUnspeccedGetConfig from '../xrpc/types/app/bsky/unspecced/getConfig.ts' 62 - export * as AppBskyUnspeccedGetPopularFeedGenerators from '../xrpc/types/app/bsky/unspecced/getPopularFeedGenerators.ts' 63 - export * as AppBskyUnspeccedGetPostThreadOtherV2 from '../xrpc/types/app/bsky/unspecced/getPostThreadOtherV2.ts' 64 - export * as AppBskyUnspeccedGetPostThreadV2 from '../xrpc/types/app/bsky/unspecced/getPostThreadV2.ts' 65 - export * as AppBskyUnspeccedGetSuggestedFeeds from '../xrpc/types/app/bsky/unspecced/getSuggestedFeeds.ts' 66 - export * as AppBskyUnspeccedGetSuggestedFeedsSkeleton from '../xrpc/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.ts' 67 - export * as AppBskyUnspeccedGetSuggestedStarterPacks from '../xrpc/types/app/bsky/unspecced/getSuggestedStarterPacks.ts' 68 - export * as AppBskyUnspeccedGetSuggestedStarterPacksSkeleton from '../xrpc/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts' 69 - export * as AppBskyUnspeccedGetSuggestedUsers from '../xrpc/types/app/bsky/unspecced/getSuggestedUsers.ts' 70 - export * as AppBskyUnspeccedGetSuggestedUsersSkeleton from '../xrpc/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts' 71 - export * as AppBskyUnspeccedGetSuggestionsSkeleton from '../xrpc/types/app/bsky/unspecced/getSuggestionsSkeleton.ts' 72 - export * as AppBskyUnspeccedGetTaggedSuggestions from '../xrpc/types/app/bsky/unspecced/getTaggedSuggestions.ts' 73 - export * as AppBskyUnspeccedGetTrendingTopics from '../xrpc/types/app/bsky/unspecced/getTrendingTopics.ts' 74 - export * as AppBskyUnspeccedGetTrends from '../xrpc/types/app/bsky/unspecced/getTrends.ts' 75 - export * as AppBskyUnspeccedGetTrendsSkeleton from '../xrpc/types/app/bsky/unspecced/getTrendsSkeleton.ts' 76 - export * as AppBskyUnspeccedInitAgeAssurance from '../xrpc/types/app/bsky/unspecced/initAgeAssurance.ts' 77 - export * as AppBskyUnspeccedSearchActorsSkeleton from '../xrpc/types/app/bsky/unspecced/searchActorsSkeleton.ts' 78 - export * as AppBskyUnspeccedSearchPostsSkeleton from '../xrpc/types/app/bsky/unspecced/searchPostsSkeleton.ts' 79 - export * as AppBskyUnspeccedSearchStarterPacksSkeleton from '../xrpc/types/app/bsky/unspecced/searchStarterPacksSkeleton.ts' 80 - export * as AppBskyVideoGetJobStatus from '../xrpc/types/app/bsky/video/getJobStatus.ts' 81 - export * as AppBskyVideoGetUploadLimits from '../xrpc/types/app/bsky/video/getUploadLimits.ts' 82 - export * as AppBskyVideoUploadVideo from '../xrpc/types/app/bsky/video/uploadVideo.ts' 83 - export * as ChatBskyActorDeleteAccount from '../xrpc/types/chat/bsky/actor/deleteAccount.ts' 84 - export * as ChatBskyActorExportAccountData from '../xrpc/types/chat/bsky/actor/exportAccountData.ts' 85 - export * as ChatBskyConvoAcceptConvo from '../xrpc/types/chat/bsky/convo/acceptConvo.ts' 86 - export * as ChatBskyConvoAddReaction from '../xrpc/types/chat/bsky/convo/addReaction.ts' 87 - export * as ChatBskyConvoDeleteMessageForSelf from '../xrpc/types/chat/bsky/convo/deleteMessageForSelf.ts' 88 - export * as ChatBskyConvoGetConvo from '../xrpc/types/chat/bsky/convo/getConvo.ts' 89 - export * as ChatBskyConvoGetConvoAvailability from '../xrpc/types/chat/bsky/convo/getConvoAvailability.ts' 90 - export * as ChatBskyConvoGetConvoForMembers from '../xrpc/types/chat/bsky/convo/getConvoForMembers.ts' 91 - export * as ChatBskyConvoGetLog from '../xrpc/types/chat/bsky/convo/getLog.ts' 92 - export * as ChatBskyConvoGetMessages from '../xrpc/types/chat/bsky/convo/getMessages.ts' 93 - export * as ChatBskyConvoLeaveConvo from '../xrpc/types/chat/bsky/convo/leaveConvo.ts' 94 - export * as ChatBskyConvoListConvos from '../xrpc/types/chat/bsky/convo/listConvos.ts' 95 - export * as ChatBskyConvoMuteConvo from '../xrpc/types/chat/bsky/convo/muteConvo.ts' 96 - export * as ChatBskyConvoRemoveReaction from '../xrpc/types/chat/bsky/convo/removeReaction.ts' 97 - export * as ChatBskyConvoSendMessage from '../xrpc/types/chat/bsky/convo/sendMessage.ts' 98 - export * as ChatBskyConvoSendMessageBatch from '../xrpc/types/chat/bsky/convo/sendMessageBatch.ts' 99 - export * as ChatBskyConvoUnmuteConvo from '../xrpc/types/chat/bsky/convo/unmuteConvo.ts' 100 - export * as ChatBskyConvoUpdateAllRead from '../xrpc/types/chat/bsky/convo/updateAllRead.ts' 101 - export * as ChatBskyConvoUpdateRead from '../xrpc/types/chat/bsky/convo/updateRead.ts' 102 - export * as ChatBskyModerationGetActorMetadata from '../xrpc/types/chat/bsky/moderation/getActorMetadata.ts' 103 - export * as ChatBskyModerationGetMessageContext from '../xrpc/types/chat/bsky/moderation/getMessageContext.ts' 104 - export * as ChatBskyModerationUpdateActorAccess from '../xrpc/types/chat/bsky/moderation/updateActorAccess.ts' 105 - export * as ComAtprotoAdminDeleteAccount from '../xrpc/types/com/atproto/admin/deleteAccount.ts' 106 - export * as ComAtprotoAdminDisableAccountInvites from '../xrpc/types/com/atproto/admin/disableAccountInvites.ts' 107 - export * as ComAtprotoAdminDisableInviteCodes from '../xrpc/types/com/atproto/admin/disableInviteCodes.ts' 108 - export * as ComAtprotoAdminEnableAccountInvites from '../xrpc/types/com/atproto/admin/enableAccountInvites.ts' 109 - export * as ComAtprotoAdminGetAccountInfo from '../xrpc/types/com/atproto/admin/getAccountInfo.ts' 110 - export * as ComAtprotoAdminGetAccountInfos from '../xrpc/types/com/atproto/admin/getAccountInfos.ts' 111 - export * as ComAtprotoAdminGetInviteCodes from '../xrpc/types/com/atproto/admin/getInviteCodes.ts' 112 - export * as ComAtprotoAdminGetSubjectStatus from '../xrpc/types/com/atproto/admin/getSubjectStatus.ts' 113 - export * as ComAtprotoAdminSearchAccounts from '../xrpc/types/com/atproto/admin/searchAccounts.ts' 114 - export * as ComAtprotoAdminSendEmail from '../xrpc/types/com/atproto/admin/sendEmail.ts' 115 - export * as ComAtprotoAdminUpdateAccountEmail from '../xrpc/types/com/atproto/admin/updateAccountEmail.ts' 116 - export * as ComAtprotoAdminUpdateAccountHandle from '../xrpc/types/com/atproto/admin/updateAccountHandle.ts' 117 - export * as ComAtprotoAdminUpdateAccountPassword from '../xrpc/types/com/atproto/admin/updateAccountPassword.ts' 118 - export * as ComAtprotoAdminUpdateAccountSigningKey from '../xrpc/types/com/atproto/admin/updateAccountSigningKey.ts' 119 - export * as ComAtprotoAdminUpdateSubjectStatus from '../xrpc/types/com/atproto/admin/updateSubjectStatus.ts' 120 - export * as ComAtprotoIdentityGetRecommendedDidCredentials from '../xrpc/types/com/atproto/identity/getRecommendedDidCredentials.ts' 121 - export * as ComAtprotoIdentityRefreshIdentity from '../xrpc/types/com/atproto/identity/refreshIdentity.ts' 122 - export * as ComAtprotoIdentityRequestPlcOperationSignature from '../xrpc/types/com/atproto/identity/requestPlcOperationSignature.ts' 123 - export * as ComAtprotoIdentityResolveDid from '../xrpc/types/com/atproto/identity/resolveDid.ts' 124 - export * as ComAtprotoIdentityResolveHandle from '../xrpc/types/com/atproto/identity/resolveHandle.ts' 125 - export * as ComAtprotoIdentityResolveIdentity from '../xrpc/types/com/atproto/identity/resolveIdentity.ts' 126 - export * as ComAtprotoIdentitySignPlcOperation from '../xrpc/types/com/atproto/identity/signPlcOperation.ts' 127 - export * as ComAtprotoIdentitySubmitPlcOperation from '../xrpc/types/com/atproto/identity/submitPlcOperation.ts' 128 - export * as ComAtprotoIdentityUpdateHandle from '../xrpc/types/com/atproto/identity/updateHandle.ts' 129 - export * as ComAtprotoLabelQueryLabels from '../xrpc/types/com/atproto/label/queryLabels.ts' 130 - export * as ComAtprotoLabelSubscribeLabels from '../xrpc/types/com/atproto/label/subscribeLabels.ts' 131 - export * as ComAtprotoModerationCreateReport from '../xrpc/types/com/atproto/moderation/createReport.ts' 132 - export * as ComAtprotoRepoApplyWrites from '../xrpc/types/com/atproto/repo/applyWrites.ts' 133 - export * as ComAtprotoRepoCreateRecord from '../xrpc/types/com/atproto/repo/createRecord.ts' 134 - export * as ComAtprotoRepoDeleteRecord from '../xrpc/types/com/atproto/repo/deleteRecord.ts' 135 - export * as ComAtprotoRepoDescribeRepo from '../xrpc/types/com/atproto/repo/describeRepo.ts' 136 - export * as ComAtprotoRepoGetRecord from '../xrpc/types/com/atproto/repo/getRecord.ts' 137 - export * as ComAtprotoRepoImportRepo from '../xrpc/types/com/atproto/repo/importRepo.ts' 138 - export * as ComAtprotoRepoListMissingBlobs from '../xrpc/types/com/atproto/repo/listMissingBlobs.ts' 139 - export * as ComAtprotoRepoListRecords from '../xrpc/types/com/atproto/repo/listRecords.ts' 140 - export * as ComAtprotoRepoPutRecord from '../xrpc/types/com/atproto/repo/putRecord.ts' 141 - export * as ComAtprotoRepoUploadBlob from '../xrpc/types/com/atproto/repo/uploadBlob.ts' 142 - export * as ComAtprotoServerActivateAccount from '../xrpc/types/com/atproto/server/activateAccount.ts' 143 - export * as ComAtprotoServerCheckAccountStatus from '../xrpc/types/com/atproto/server/checkAccountStatus.ts' 144 - export * as ComAtprotoServerConfirmEmail from '../xrpc/types/com/atproto/server/confirmEmail.ts' 145 - export * as ComAtprotoServerCreateAccount from '../xrpc/types/com/atproto/server/createAccount.ts' 146 - export * as ComAtprotoServerCreateAppPassword from '../xrpc/types/com/atproto/server/createAppPassword.ts' 147 - export * as ComAtprotoServerCreateInviteCode from '../xrpc/types/com/atproto/server/createInviteCode.ts' 148 - export * as ComAtprotoServerCreateInviteCodes from '../xrpc/types/com/atproto/server/createInviteCodes.ts' 149 - export * as ComAtprotoServerCreateSession from '../xrpc/types/com/atproto/server/createSession.ts' 150 - export * as ComAtprotoServerDeactivateAccount from '../xrpc/types/com/atproto/server/deactivateAccount.ts' 151 - export * as ComAtprotoServerDeleteAccount from '../xrpc/types/com/atproto/server/deleteAccount.ts' 152 - export * as ComAtprotoServerDeleteSession from '../xrpc/types/com/atproto/server/deleteSession.ts' 153 - export * as ComAtprotoServerDescribeServer from '../xrpc/types/com/atproto/server/describeServer.ts' 154 - export * as ComAtprotoServerGetAccountInviteCodes from '../xrpc/types/com/atproto/server/getAccountInviteCodes.ts' 155 - export * as ComAtprotoServerGetServiceAuth from '../xrpc/types/com/atproto/server/getServiceAuth.ts' 156 - export * as ComAtprotoServerGetSession from '../xrpc/types/com/atproto/server/getSession.ts' 157 - export * as ComAtprotoServerListAppPasswords from '../xrpc/types/com/atproto/server/listAppPasswords.ts' 158 - export * as ComAtprotoServerRefreshSession from '../xrpc/types/com/atproto/server/refreshSession.ts' 159 - export * as ComAtprotoServerRequestAccountDelete from '../xrpc/types/com/atproto/server/requestAccountDelete.ts' 160 - export * as ComAtprotoServerRequestEmailConfirmation from '../xrpc/types/com/atproto/server/requestEmailConfirmation.ts' 161 - export * as ComAtprotoServerRequestEmailUpdate from '../xrpc/types/com/atproto/server/requestEmailUpdate.ts' 162 - export * as ComAtprotoServerRequestPasswordReset from '../xrpc/types/com/atproto/server/requestPasswordReset.ts' 163 - export * as ComAtprotoServerReserveSigningKey from '../xrpc/types/com/atproto/server/reserveSigningKey.ts' 164 - export * as ComAtprotoServerResetPassword from '../xrpc/types/com/atproto/server/resetPassword.ts' 165 - export * as ComAtprotoServerRevokeAppPassword from '../xrpc/types/com/atproto/server/revokeAppPassword.ts' 166 - export * as ComAtprotoServerUpdateEmail from '../xrpc/types/com/atproto/server/updateEmail.ts' 167 - export * as ComAtprotoSyncGetBlob from '../xrpc/types/com/atproto/sync/getBlob.ts' 168 - export * as ComAtprotoSyncGetBlocks from '../xrpc/types/com/atproto/sync/getBlocks.ts' 169 - export * as ComAtprotoSyncGetCheckout from '../xrpc/types/com/atproto/sync/getCheckout.ts' 170 - export * as ComAtprotoSyncGetHead from '../xrpc/types/com/atproto/sync/getHead.ts' 171 - export * as ComAtprotoSyncGetHostStatus from '../xrpc/types/com/atproto/sync/getHostStatus.ts' 172 - export * as ComAtprotoSyncGetLatestCommit from '../xrpc/types/com/atproto/sync/getLatestCommit.ts' 173 - export * as ComAtprotoSyncGetRecord from '../xrpc/types/com/atproto/sync/getRecord.ts' 174 - export * as ComAtprotoSyncGetRepo from '../xrpc/types/com/atproto/sync/getRepo.ts' 175 - export * as ComAtprotoSyncGetRepoStatus from '../xrpc/types/com/atproto/sync/getRepoStatus.ts' 176 - export * as ComAtprotoSyncListBlobs from '../xrpc/types/com/atproto/sync/listBlobs.ts' 177 - export * as ComAtprotoSyncListHosts from '../xrpc/types/com/atproto/sync/listHosts.ts' 178 - export * as ComAtprotoSyncListRepos from '../xrpc/types/com/atproto/sync/listRepos.ts' 179 - export * as ComAtprotoSyncListReposByCollection from '../xrpc/types/com/atproto/sync/listReposByCollection.ts' 180 - export * as ComAtprotoSyncNotifyOfUpdate from '../xrpc/types/com/atproto/sync/notifyOfUpdate.ts' 181 - export * as ComAtprotoSyncRequestCrawl from '../xrpc/types/com/atproto/sync/requestCrawl.ts' 182 - export * as ComAtprotoSyncSubscribeRepos from '../xrpc/types/com/atproto/sync/subscribeRepos.ts' 183 - export * as ComAtprotoTempAddReservedHandle from '../xrpc/types/com/atproto/temp/addReservedHandle.ts' 184 - export * as ComAtprotoTempCheckHandleAvailability from '../xrpc/types/com/atproto/temp/checkHandleAvailability.ts' 185 - export * as ComAtprotoTempCheckSignupQueue from '../xrpc/types/com/atproto/temp/checkSignupQueue.ts' 186 - export * as ComAtprotoTempFetchLabels from '../xrpc/types/com/atproto/temp/fetchLabels.ts' 187 - export * as ComAtprotoTempRequestPhoneVerification from '../xrpc/types/com/atproto/temp/requestPhoneVerification.ts' 188 - export * as ToolsOzoneCommunicationCreateTemplate from '../xrpc/types/tools/ozone/communication/createTemplate.ts' 189 - export * as ToolsOzoneCommunicationDeleteTemplate from '../xrpc/types/tools/ozone/communication/deleteTemplate.ts' 190 - export * as ToolsOzoneCommunicationListTemplates from '../xrpc/types/tools/ozone/communication/listTemplates.ts' 191 - export * as ToolsOzoneCommunicationUpdateTemplate from '../xrpc/types/tools/ozone/communication/updateTemplate.ts' 192 - export * as ToolsOzoneHostingGetAccountHistory from '../xrpc/types/tools/ozone/hosting/getAccountHistory.ts' 193 - export * as ToolsOzoneModerationEmitEvent from '../xrpc/types/tools/ozone/moderation/emitEvent.ts' 194 - export * as ToolsOzoneModerationGetAccountTimeline from '../xrpc/types/tools/ozone/moderation/getAccountTimeline.ts' 195 - export * as ToolsOzoneModerationGetEvent from '../xrpc/types/tools/ozone/moderation/getEvent.ts' 196 - export * as ToolsOzoneModerationGetRecord from '../xrpc/types/tools/ozone/moderation/getRecord.ts' 197 - export * as ToolsOzoneModerationGetRecords from '../xrpc/types/tools/ozone/moderation/getRecords.ts' 198 - export * as ToolsOzoneModerationGetRepo from '../xrpc/types/tools/ozone/moderation/getRepo.ts' 199 - export * as ToolsOzoneModerationGetReporterStats from '../xrpc/types/tools/ozone/moderation/getReporterStats.ts' 200 - export * as ToolsOzoneModerationGetRepos from '../xrpc/types/tools/ozone/moderation/getRepos.ts' 201 - export * as ToolsOzoneModerationGetSubjects from '../xrpc/types/tools/ozone/moderation/getSubjects.ts' 202 - export * as ToolsOzoneModerationQueryEvents from '../xrpc/types/tools/ozone/moderation/queryEvents.ts' 203 - export * as ToolsOzoneModerationQueryStatuses from '../xrpc/types/tools/ozone/moderation/queryStatuses.ts' 204 - export * as ToolsOzoneModerationSearchRepos from '../xrpc/types/tools/ozone/moderation/searchRepos.ts' 205 - export * as ToolsOzoneSafelinkAddRule from '../xrpc/types/tools/ozone/safelink/addRule.ts' 206 - export * as ToolsOzoneSafelinkQueryEvents from '../xrpc/types/tools/ozone/safelink/queryEvents.ts' 207 - export * as ToolsOzoneSafelinkQueryRules from '../xrpc/types/tools/ozone/safelink/queryRules.ts' 208 - export * as ToolsOzoneSafelinkRemoveRule from '../xrpc/types/tools/ozone/safelink/removeRule.ts' 209 - export * as ToolsOzoneSafelinkUpdateRule from '../xrpc/types/tools/ozone/safelink/updateRule.ts' 210 - export * as ToolsOzoneServerGetConfig from '../xrpc/types/tools/ozone/server/getConfig.ts' 211 - export * as ToolsOzoneSetAddValues from '../xrpc/types/tools/ozone/set/addValues.ts' 212 - export * as ToolsOzoneSetDeleteSet from '../xrpc/types/tools/ozone/set/deleteSet.ts' 213 - export * as ToolsOzoneSetDeleteValues from '../xrpc/types/tools/ozone/set/deleteValues.ts' 214 - export * as ToolsOzoneSetGetValues from '../xrpc/types/tools/ozone/set/getValues.ts' 215 - export * as ToolsOzoneSetQuerySets from '../xrpc/types/tools/ozone/set/querySets.ts' 216 - export * as ToolsOzoneSetUpsertSet from '../xrpc/types/tools/ozone/set/upsertSet.ts' 217 - export * as ToolsOzoneSettingListOptions from '../xrpc/types/tools/ozone/setting/listOptions.ts' 218 - export * as ToolsOzoneSettingRemoveOptions from '../xrpc/types/tools/ozone/setting/removeOptions.ts' 219 - export * as ToolsOzoneSettingUpsertOption from '../xrpc/types/tools/ozone/setting/upsertOption.ts' 220 - export * as ToolsOzoneSignatureFindCorrelation from '../xrpc/types/tools/ozone/signature/findCorrelation.ts' 221 - export * as ToolsOzoneSignatureFindRelatedAccounts from '../xrpc/types/tools/ozone/signature/findRelatedAccounts.ts' 222 - export * as ToolsOzoneSignatureSearchAccounts from '../xrpc/types/tools/ozone/signature/searchAccounts.ts' 223 - export * as ToolsOzoneTeamAddMember from '../xrpc/types/tools/ozone/team/addMember.ts' 224 - export * as ToolsOzoneTeamDeleteMember from '../xrpc/types/tools/ozone/team/deleteMember.ts' 225 - export * as ToolsOzoneTeamListMembers from '../xrpc/types/tools/ozone/team/listMembers.ts' 226 - export * as ToolsOzoneTeamUpdateMember from '../xrpc/types/tools/ozone/team/updateMember.ts' 227 - export * as ToolsOzoneVerificationGrantVerifications from '../xrpc/types/tools/ozone/verification/grantVerifications.ts' 228 - export * as ToolsOzoneVerificationListVerifications from '../xrpc/types/tools/ozone/verification/listVerifications.ts' 229 - export * as ToolsOzoneVerificationRevokeVerifications from '../xrpc/types/tools/ozone/verification/revokeVerifications.ts'
···
+635
viewserver/lexicons/app/bsky/actor/defs.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.actor.defs", 4 + "defs": { 5 + "profileViewBasic": { 6 + "type": "object", 7 + "required": ["did", "handle"], 8 + "properties": { 9 + "did": { "type": "string", "format": "did" }, 10 + "handle": { "type": "string", "format": "handle" }, 11 + "displayName": { 12 + "type": "string", 13 + "maxGraphemes": 64, 14 + "maxLength": 640 15 + }, 16 + "avatar": { "type": "string", "format": "uri" }, 17 + "associated": { 18 + "type": "ref", 19 + "ref": "#profileAssociated" 20 + }, 21 + "viewer": { "type": "ref", "ref": "#viewerState" }, 22 + "labels": { 23 + "type": "array", 24 + "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 25 + }, 26 + "createdAt": { "type": "string", "format": "datetime" }, 27 + "verification": { 28 + "type": "ref", 29 + "ref": "#verificationState" 30 + }, 31 + "status": { 32 + "type": "ref", 33 + "ref": "#statusView" 34 + } 35 + } 36 + }, 37 + "profileView": { 38 + "type": "object", 39 + "required": ["did", "handle"], 40 + "properties": { 41 + "did": { "type": "string", "format": "did" }, 42 + "handle": { "type": "string", "format": "handle" }, 43 + "displayName": { 44 + "type": "string", 45 + "maxGraphemes": 64, 46 + "maxLength": 640 47 + }, 48 + "description": { 49 + "type": "string", 50 + "maxGraphemes": 256, 51 + "maxLength": 2560 52 + }, 53 + "avatar": { "type": "string", "format": "uri" }, 54 + "associated": { 55 + "type": "ref", 56 + "ref": "#profileAssociated" 57 + }, 58 + "indexedAt": { "type": "string", "format": "datetime" }, 59 + "createdAt": { "type": "string", "format": "datetime" }, 60 + "viewer": { "type": "ref", "ref": "#viewerState" }, 61 + "labels": { 62 + "type": "array", 63 + "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 64 + }, 65 + "verification": { 66 + "type": "ref", 67 + "ref": "#verificationState" 68 + }, 69 + "status": { 70 + "type": "ref", 71 + "ref": "#statusView" 72 + } 73 + } 74 + }, 75 + "profileViewDetailed": { 76 + "type": "object", 77 + "required": ["did", "handle"], 78 + "properties": { 79 + "did": { "type": "string", "format": "did" }, 80 + "handle": { "type": "string", "format": "handle" }, 81 + "displayName": { 82 + "type": "string", 83 + "maxGraphemes": 64, 84 + "maxLength": 640 85 + }, 86 + "description": { 87 + "type": "string", 88 + "maxGraphemes": 256, 89 + "maxLength": 2560 90 + }, 91 + "avatar": { "type": "string", "format": "uri" }, 92 + "banner": { "type": "string", "format": "uri" }, 93 + "followersCount": { "type": "integer" }, 94 + "followsCount": { "type": "integer" }, 95 + "postsCount": { "type": "integer" }, 96 + "associated": { 97 + "type": "ref", 98 + "ref": "#profileAssociated" 99 + }, 100 + "joinedViaStarterPack": { 101 + "type": "ref", 102 + "ref": "app.bsky.graph.defs#starterPackViewBasic" 103 + }, 104 + "indexedAt": { "type": "string", "format": "datetime" }, 105 + "createdAt": { "type": "string", "format": "datetime" }, 106 + "viewer": { "type": "ref", "ref": "#viewerState" }, 107 + "labels": { 108 + "type": "array", 109 + "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 110 + }, 111 + "pinnedPost": { 112 + "type": "ref", 113 + "ref": "com.atproto.repo.strongRef" 114 + }, 115 + "verification": { 116 + "type": "ref", 117 + "ref": "#verificationState" 118 + }, 119 + "status": { 120 + "type": "ref", 121 + "ref": "#statusView" 122 + } 123 + } 124 + }, 125 + "profileAssociated": { 126 + "type": "object", 127 + "properties": { 128 + "lists": { "type": "integer" }, 129 + "feedgens": { "type": "integer" }, 130 + "starterPacks": { "type": "integer" }, 131 + "labeler": { "type": "boolean" }, 132 + "chat": { "type": "ref", "ref": "#profileAssociatedChat" }, 133 + "activitySubscription": { 134 + "type": "ref", 135 + "ref": "#profileAssociatedActivitySubscription" 136 + } 137 + } 138 + }, 139 + "profileAssociatedChat": { 140 + "type": "object", 141 + "required": ["allowIncoming"], 142 + "properties": { 143 + "allowIncoming": { 144 + "type": "string", 145 + "knownValues": ["all", "none", "following"] 146 + } 147 + } 148 + }, 149 + "profileAssociatedActivitySubscription": { 150 + "type": "object", 151 + "required": ["allowSubscriptions"], 152 + "properties": { 153 + "allowSubscriptions": { 154 + "type": "string", 155 + "knownValues": ["followers", "mutuals", "none"] 156 + } 157 + } 158 + }, 159 + "viewerState": { 160 + "type": "object", 161 + "description": "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.", 162 + "properties": { 163 + "muted": { "type": "boolean" }, 164 + "mutedByList": { 165 + "type": "ref", 166 + "ref": "app.bsky.graph.defs#listViewBasic" 167 + }, 168 + "blockedBy": { "type": "boolean" }, 169 + "blocking": { "type": "string", "format": "at-uri" }, 170 + "blockingByList": { 171 + "type": "ref", 172 + "ref": "app.bsky.graph.defs#listViewBasic" 173 + }, 174 + "following": { "type": "string", "format": "at-uri" }, 175 + "followedBy": { "type": "string", "format": "at-uri" }, 176 + "knownFollowers": { 177 + "description": "This property is present only in selected cases, as an optimization.", 178 + "type": "ref", 179 + "ref": "#knownFollowers" 180 + }, 181 + "activitySubscription": { 182 + "description": "This property is present only in selected cases, as an optimization.", 183 + "type": "ref", 184 + "ref": "app.bsky.notification.defs#activitySubscription" 185 + } 186 + } 187 + }, 188 + "knownFollowers": { 189 + "type": "object", 190 + "description": "The subject's followers whom you also follow", 191 + "required": ["count", "followers"], 192 + "properties": { 193 + "count": { "type": "integer" }, 194 + "followers": { 195 + "type": "array", 196 + "minLength": 0, 197 + "maxLength": 5, 198 + "items": { 199 + "type": "ref", 200 + "ref": "#profileViewBasic" 201 + } 202 + } 203 + } 204 + }, 205 + "verificationState": { 206 + "type": "object", 207 + "description": "Represents the verification information about the user this object is attached to.", 208 + "required": ["verifications", "verifiedStatus", "trustedVerifierStatus"], 209 + "properties": { 210 + "verifications": { 211 + "type": "array", 212 + "description": "All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.", 213 + "items": { "type": "ref", "ref": "#verificationView" } 214 + }, 215 + "verifiedStatus": { 216 + "type": "string", 217 + "description": "The user's status as a verified account.", 218 + "knownValues": ["valid", "invalid", "none"] 219 + }, 220 + "trustedVerifierStatus": { 221 + "type": "string", 222 + "description": "The user's status as a trusted verifier.", 223 + "knownValues": ["valid", "invalid", "none"] 224 + } 225 + } 226 + }, 227 + "verificationView": { 228 + "type": "object", 229 + "description": "An individual verification for an associated subject.", 230 + "required": ["issuer", "uri", "isValid", "createdAt"], 231 + "properties": { 232 + "issuer": { 233 + "type": "string", 234 + "description": "The user who issued this verification.", 235 + "format": "did" 236 + }, 237 + "uri": { 238 + "type": "string", 239 + "description": "The AT-URI of the verification record.", 240 + "format": "at-uri" 241 + }, 242 + "isValid": { 243 + "type": "boolean", 244 + "description": "True if the verification passes validation, otherwise false." 245 + }, 246 + "createdAt": { 247 + "type": "string", 248 + "description": "Timestamp when the verification was created.", 249 + "format": "datetime" 250 + } 251 + } 252 + }, 253 + "preferences": { 254 + "type": "array", 255 + "items": { 256 + "type": "union", 257 + "refs": [ 258 + "#adultContentPref", 259 + "#contentLabelPref", 260 + "#savedFeedsPref", 261 + "#savedFeedsPrefV2", 262 + "#personalDetailsPref", 263 + "#feedViewPref", 264 + "#threadViewPref", 265 + "#interestsPref", 266 + "#mutedWordsPref", 267 + "#hiddenPostsPref", 268 + "#bskyAppStatePref", 269 + "#labelersPref", 270 + "#postInteractionSettingsPref", 271 + "#verificationPrefs" 272 + ] 273 + } 274 + }, 275 + "adultContentPref": { 276 + "type": "object", 277 + "required": ["enabled"], 278 + "properties": { 279 + "enabled": { "type": "boolean", "default": false } 280 + } 281 + }, 282 + "contentLabelPref": { 283 + "type": "object", 284 + "required": ["label", "visibility"], 285 + "properties": { 286 + "labelerDid": { 287 + "type": "string", 288 + "description": "Which labeler does this preference apply to? If undefined, applies globally.", 289 + "format": "did" 290 + }, 291 + "label": { "type": "string" }, 292 + "visibility": { 293 + "type": "string", 294 + "knownValues": ["ignore", "show", "warn", "hide"] 295 + } 296 + } 297 + }, 298 + "savedFeed": { 299 + "type": "object", 300 + "required": ["id", "type", "value", "pinned"], 301 + "properties": { 302 + "id": { 303 + "type": "string" 304 + }, 305 + "type": { 306 + "type": "string", 307 + "knownValues": ["feed", "list", "timeline"] 308 + }, 309 + "value": { 310 + "type": "string" 311 + }, 312 + "pinned": { 313 + "type": "boolean" 314 + } 315 + } 316 + }, 317 + "savedFeedsPrefV2": { 318 + "type": "object", 319 + "required": ["items"], 320 + "properties": { 321 + "items": { 322 + "type": "array", 323 + "items": { 324 + "type": "ref", 325 + "ref": "app.bsky.actor.defs#savedFeed" 326 + } 327 + } 328 + } 329 + }, 330 + "savedFeedsPref": { 331 + "type": "object", 332 + "required": ["pinned", "saved"], 333 + "properties": { 334 + "pinned": { 335 + "type": "array", 336 + "items": { 337 + "type": "string", 338 + "format": "at-uri" 339 + } 340 + }, 341 + "saved": { 342 + "type": "array", 343 + "items": { 344 + "type": "string", 345 + "format": "at-uri" 346 + } 347 + }, 348 + "timelineIndex": { 349 + "type": "integer" 350 + } 351 + } 352 + }, 353 + "personalDetailsPref": { 354 + "type": "object", 355 + "properties": { 356 + "birthDate": { 357 + "type": "string", 358 + "format": "datetime", 359 + "description": "The birth date of account owner." 360 + } 361 + } 362 + }, 363 + "feedViewPref": { 364 + "type": "object", 365 + "required": ["feed"], 366 + "properties": { 367 + "feed": { 368 + "type": "string", 369 + "description": "The URI of the feed, or an identifier which describes the feed." 370 + }, 371 + "hideReplies": { 372 + "type": "boolean", 373 + "description": "Hide replies in the feed." 374 + }, 375 + "hideRepliesByUnfollowed": { 376 + "type": "boolean", 377 + "description": "Hide replies in the feed if they are not by followed users.", 378 + "default": true 379 + }, 380 + "hideRepliesByLikeCount": { 381 + "type": "integer", 382 + "description": "Hide replies in the feed if they do not have this number of likes." 383 + }, 384 + "hideReposts": { 385 + "type": "boolean", 386 + "description": "Hide reposts in the feed." 387 + }, 388 + "hideQuotePosts": { 389 + "type": "boolean", 390 + "description": "Hide quote posts in the feed." 391 + } 392 + } 393 + }, 394 + "threadViewPref": { 395 + "type": "object", 396 + "properties": { 397 + "sort": { 398 + "type": "string", 399 + "description": "Sorting mode for threads.", 400 + "knownValues": ["oldest", "newest", "most-likes", "random", "hotness"] 401 + }, 402 + "prioritizeFollowedUsers": { 403 + "type": "boolean", 404 + "description": "Show followed users at the top of all replies." 405 + } 406 + } 407 + }, 408 + "interestsPref": { 409 + "type": "object", 410 + "required": ["tags"], 411 + "properties": { 412 + "tags": { 413 + "type": "array", 414 + "maxLength": 100, 415 + "items": { "type": "string", "maxLength": 640, "maxGraphemes": 64 }, 416 + "description": "A list of tags which describe the account owner's interests gathered during onboarding." 417 + } 418 + } 419 + }, 420 + "mutedWordTarget": { 421 + "type": "string", 422 + "knownValues": ["content", "tag"], 423 + "maxLength": 640, 424 + "maxGraphemes": 64 425 + }, 426 + "mutedWord": { 427 + "type": "object", 428 + "description": "A word that the account owner has muted.", 429 + "required": ["value", "targets"], 430 + "properties": { 431 + "id": { "type": "string" }, 432 + "value": { 433 + "type": "string", 434 + "description": "The muted word itself.", 435 + "maxLength": 10000, 436 + "maxGraphemes": 1000 437 + }, 438 + "targets": { 439 + "type": "array", 440 + "description": "The intended targets of the muted word.", 441 + "items": { 442 + "type": "ref", 443 + "ref": "app.bsky.actor.defs#mutedWordTarget" 444 + } 445 + }, 446 + "actorTarget": { 447 + "type": "string", 448 + "description": "Groups of users to apply the muted word to. If undefined, applies to all users.", 449 + "knownValues": ["all", "exclude-following"], 450 + "default": "all" 451 + }, 452 + "expiresAt": { 453 + "type": "string", 454 + "format": "datetime", 455 + "description": "The date and time at which the muted word will expire and no longer be applied." 456 + } 457 + } 458 + }, 459 + "mutedWordsPref": { 460 + "type": "object", 461 + "required": ["items"], 462 + "properties": { 463 + "items": { 464 + "type": "array", 465 + "items": { 466 + "type": "ref", 467 + "ref": "app.bsky.actor.defs#mutedWord" 468 + }, 469 + "description": "A list of words the account owner has muted." 470 + } 471 + } 472 + }, 473 + "hiddenPostsPref": { 474 + "type": "object", 475 + "required": ["items"], 476 + "properties": { 477 + "items": { 478 + "type": "array", 479 + "items": { "type": "string", "format": "at-uri" }, 480 + "description": "A list of URIs of posts the account owner has hidden." 481 + } 482 + } 483 + }, 484 + "labelersPref": { 485 + "type": "object", 486 + "required": ["labelers"], 487 + "properties": { 488 + "labelers": { 489 + "type": "array", 490 + "items": { 491 + "type": "ref", 492 + "ref": "#labelerPrefItem" 493 + } 494 + } 495 + } 496 + }, 497 + "labelerPrefItem": { 498 + "type": "object", 499 + "required": ["did"], 500 + "properties": { 501 + "did": { 502 + "type": "string", 503 + "format": "did" 504 + } 505 + } 506 + }, 507 + "bskyAppStatePref": { 508 + "description": "A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this.", 509 + "type": "object", 510 + "properties": { 511 + "activeProgressGuide": { 512 + "type": "ref", 513 + "ref": "#bskyAppProgressGuide" 514 + }, 515 + "queuedNudges": { 516 + "description": "An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.", 517 + "type": "array", 518 + "maxLength": 1000, 519 + "items": { "type": "string", "maxLength": 100 } 520 + }, 521 + "nuxs": { 522 + "description": "Storage for NUXs the user has encountered.", 523 + "type": "array", 524 + "maxLength": 100, 525 + "items": { 526 + "type": "ref", 527 + "ref": "app.bsky.actor.defs#nux" 528 + } 529 + } 530 + } 531 + }, 532 + "bskyAppProgressGuide": { 533 + "description": "If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress.", 534 + "type": "object", 535 + "required": ["guide"], 536 + "properties": { 537 + "guide": { "type": "string", "maxLength": 100 } 538 + } 539 + }, 540 + "nux": { 541 + "type": "object", 542 + "description": "A new user experiences (NUX) storage object", 543 + "required": ["id", "completed"], 544 + "properties": { 545 + "id": { 546 + "type": "string", 547 + "maxLength": 100 548 + }, 549 + "completed": { 550 + "type": "boolean", 551 + "default": false 552 + }, 553 + "data": { 554 + "description": "Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.", 555 + "type": "string", 556 + "maxLength": 3000, 557 + "maxGraphemes": 300 558 + }, 559 + "expiresAt": { 560 + "type": "string", 561 + "format": "datetime", 562 + "description": "The date and time at which the NUX will expire and should be considered completed." 563 + } 564 + } 565 + }, 566 + "verificationPrefs": { 567 + "type": "object", 568 + "description": "Preferences for how verified accounts appear in the app.", 569 + "required": [], 570 + "properties": { 571 + "hideBadges": { 572 + "description": "Hide the blue check badges for verified accounts and trusted verifiers.", 573 + "type": "boolean", 574 + "default": false 575 + } 576 + } 577 + }, 578 + "postInteractionSettingsPref": { 579 + "type": "object", 580 + "description": "Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly.", 581 + "required": [], 582 + "properties": { 583 + "threadgateAllowRules": { 584 + "description": "Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply.", 585 + "type": "array", 586 + "maxLength": 5, 587 + "items": { 588 + "type": "union", 589 + "refs": [ 590 + "app.bsky.feed.threadgate#mentionRule", 591 + "app.bsky.feed.threadgate#followerRule", 592 + "app.bsky.feed.threadgate#followingRule", 593 + "app.bsky.feed.threadgate#listRule" 594 + ] 595 + } 596 + }, 597 + "postgateEmbeddingRules": { 598 + "description": "Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed.", 599 + "type": "array", 600 + "maxLength": 5, 601 + "items": { 602 + "type": "union", 603 + "refs": ["app.bsky.feed.postgate#disableRule"] 604 + } 605 + } 606 + } 607 + }, 608 + "statusView": { 609 + "type": "object", 610 + "required": ["status", "record"], 611 + "properties": { 612 + "status": { 613 + "type": "string", 614 + "description": "The status for the account.", 615 + "knownValues": ["app.bsky.actor.status#live"] 616 + }, 617 + "record": { "type": "unknown" }, 618 + "embed": { 619 + "type": "union", 620 + "description": "An optional embed associated with the status.", 621 + "refs": ["app.bsky.embed.external#view"] 622 + }, 623 + "expiresAt": { 624 + "type": "string", 625 + "description": "The date when this status will expire. The application might choose to no longer return the status after expiration.", 626 + "format": "datetime" 627 + }, 628 + "isActive": { 629 + "type": "boolean", 630 + "description": "True if the status is not expired, false if it is expired. Only present if expiration was set." 631 + } 632 + } 633 + } 634 + } 635 + }
+28
viewserver/lexicons/app/bsky/actor/getProfile.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.actor.getProfile", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth.", 8 + "parameters": { 9 + "type": "params", 10 + "required": ["actor"], 11 + "properties": { 12 + "actor": { 13 + "type": "string", 14 + "format": "at-identifier", 15 + "description": "Handle or DID of account to fetch profile of." 16 + } 17 + } 18 + }, 19 + "output": { 20 + "encoding": "application/json", 21 + "schema": { 22 + "type": "ref", 23 + "ref": "app.bsky.actor.defs#profileViewDetailed" 24 + } 25 + } 26 + } 27 + } 28 + }
+37
viewserver/lexicons/app/bsky/actor/getProfiles.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.actor.getProfiles", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get detailed profile views of multiple actors.", 8 + "parameters": { 9 + "type": "params", 10 + "required": ["actors"], 11 + "properties": { 12 + "actors": { 13 + "type": "array", 14 + "items": { "type": "string", "format": "at-identifier" }, 15 + "maxLength": 25 16 + } 17 + } 18 + }, 19 + "output": { 20 + "encoding": "application/json", 21 + "schema": { 22 + "type": "object", 23 + "required": ["profiles"], 24 + "properties": { 25 + "profiles": { 26 + "type": "array", 27 + "items": { 28 + "type": "ref", 29 + "ref": "app.bsky.actor.defs#profileViewDetailed" 30 + } 31 + } 32 + } 33 + } 34 + } 35 + } 36 + } 37 + }
+15
viewserver/lexicons/app/bsky/embed/defs.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.embed.defs", 4 + "defs": { 5 + "aspectRatio": { 6 + "type": "object", 7 + "description": "width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.", 8 + "required": ["width", "height"], 9 + "properties": { 10 + "width": { "type": "integer", "minimum": 1 }, 11 + "height": { "type": "integer", "minimum": 1 } 12 + } 13 + } 14 + } 15 + }
+51
viewserver/lexicons/app/bsky/embed/external.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.embed.external", 4 + "defs": { 5 + "main": { 6 + "type": "object", 7 + "description": "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).", 8 + "required": ["external"], 9 + "properties": { 10 + "external": { 11 + "type": "ref", 12 + "ref": "#external" 13 + } 14 + } 15 + }, 16 + "external": { 17 + "type": "object", 18 + "required": ["uri", "title", "description"], 19 + "properties": { 20 + "uri": { "type": "string", "format": "uri" }, 21 + "title": { "type": "string" }, 22 + "description": { "type": "string" }, 23 + "thumb": { 24 + "type": "blob", 25 + "accept": ["image/*"], 26 + "maxSize": 1000000 27 + } 28 + } 29 + }, 30 + "view": { 31 + "type": "object", 32 + "required": ["external"], 33 + "properties": { 34 + "external": { 35 + "type": "ref", 36 + "ref": "#viewExternal" 37 + } 38 + } 39 + }, 40 + "viewExternal": { 41 + "type": "object", 42 + "required": ["uri", "title", "description"], 43 + "properties": { 44 + "uri": { "type": "string", "format": "uri" }, 45 + "title": { "type": "string" }, 46 + "description": { "type": "string" }, 47 + "thumb": { "type": "string", "format": "uri" } 48 + } 49 + } 50 + } 51 + }
+72
viewserver/lexicons/app/bsky/embed/images.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.embed.images", 4 + "description": "A set of images embedded in a Bluesky record (eg, a post).", 5 + "defs": { 6 + "main": { 7 + "type": "object", 8 + "required": ["images"], 9 + "properties": { 10 + "images": { 11 + "type": "array", 12 + "items": { "type": "ref", "ref": "#image" }, 13 + "maxLength": 4 14 + } 15 + } 16 + }, 17 + "image": { 18 + "type": "object", 19 + "required": ["image", "alt"], 20 + "properties": { 21 + "image": { 22 + "type": "blob", 23 + "accept": ["image/*"], 24 + "maxSize": 1000000 25 + }, 26 + "alt": { 27 + "type": "string", 28 + "description": "Alt text description of the image, for accessibility." 29 + }, 30 + "aspectRatio": { 31 + "type": "ref", 32 + "ref": "app.bsky.embed.defs#aspectRatio" 33 + } 34 + } 35 + }, 36 + "view": { 37 + "type": "object", 38 + "required": ["images"], 39 + "properties": { 40 + "images": { 41 + "type": "array", 42 + "items": { "type": "ref", "ref": "#viewImage" }, 43 + "maxLength": 4 44 + } 45 + } 46 + }, 47 + "viewImage": { 48 + "type": "object", 49 + "required": ["thumb", "fullsize", "alt"], 50 + "properties": { 51 + "thumb": { 52 + "type": "string", 53 + "format": "uri", 54 + "description": "Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View." 55 + }, 56 + "fullsize": { 57 + "type": "string", 58 + "format": "uri", 59 + "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." 60 + }, 61 + "alt": { 62 + "type": "string", 63 + "description": "Alt text description of the image, for accessibility." 64 + }, 65 + "aspectRatio": { 66 + "type": "ref", 67 + "ref": "app.bsky.embed.defs#aspectRatio" 68 + } 69 + } 70 + } 71 + } 72 + }
+96
viewserver/lexicons/app/bsky/embed/record.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.embed.record", 4 + "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.", 5 + "defs": { 6 + "main": { 7 + "type": "object", 8 + "required": ["record"], 9 + "properties": { 10 + "record": { "type": "ref", "ref": "com.atproto.repo.strongRef" } 11 + } 12 + }, 13 + "view": { 14 + "type": "object", 15 + "required": ["record"], 16 + "properties": { 17 + "record": { 18 + "type": "union", 19 + "refs": [ 20 + "#viewRecord", 21 + "#viewNotFound", 22 + "#viewBlocked", 23 + "#viewDetached", 24 + "app.bsky.feed.defs#generatorView", 25 + "app.bsky.graph.defs#listView", 26 + "app.bsky.labeler.defs#labelerView", 27 + "app.bsky.graph.defs#starterPackViewBasic" 28 + ] 29 + } 30 + } 31 + }, 32 + "viewRecord": { 33 + "type": "object", 34 + "required": ["uri", "cid", "author", "value", "indexedAt"], 35 + "properties": { 36 + "uri": { "type": "string", "format": "at-uri" }, 37 + "cid": { "type": "string", "format": "cid" }, 38 + "author": { 39 + "type": "ref", 40 + "ref": "app.bsky.actor.defs#profileViewBasic" 41 + }, 42 + "value": { 43 + "type": "unknown", 44 + "description": "The record data itself." 45 + }, 46 + "labels": { 47 + "type": "array", 48 + "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 49 + }, 50 + "replyCount": { "type": "integer" }, 51 + "repostCount": { "type": "integer" }, 52 + "likeCount": { "type": "integer" }, 53 + "quoteCount": { "type": "integer" }, 54 + "embeds": { 55 + "type": "array", 56 + "items": { 57 + "type": "union", 58 + "refs": [ 59 + "app.bsky.embed.images#view", 60 + "app.bsky.embed.video#view", 61 + "app.bsky.embed.external#view", 62 + "app.bsky.embed.record#view", 63 + "app.bsky.embed.recordWithMedia#view" 64 + ] 65 + } 66 + }, 67 + "indexedAt": { "type": "string", "format": "datetime" } 68 + } 69 + }, 70 + "viewNotFound": { 71 + "type": "object", 72 + "required": ["uri", "notFound"], 73 + "properties": { 74 + "uri": { "type": "string", "format": "at-uri" }, 75 + "notFound": { "type": "boolean", "const": true } 76 + } 77 + }, 78 + "viewBlocked": { 79 + "type": "object", 80 + "required": ["uri", "blocked", "author"], 81 + "properties": { 82 + "uri": { "type": "string", "format": "at-uri" }, 83 + "blocked": { "type": "boolean", "const": true }, 84 + "author": { "type": "ref", "ref": "app.bsky.feed.defs#blockedAuthor" } 85 + } 86 + }, 87 + "viewDetached": { 88 + "type": "object", 89 + "required": ["uri", "detached"], 90 + "properties": { 91 + "uri": { "type": "string", "format": "at-uri" }, 92 + "detached": { "type": "boolean", "const": true } 93 + } 94 + } 95 + } 96 + }
+43
viewserver/lexicons/app/bsky/embed/recordWithMedia.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.embed.recordWithMedia", 4 + "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.", 5 + "defs": { 6 + "main": { 7 + "type": "object", 8 + "required": ["record", "media"], 9 + "properties": { 10 + "record": { 11 + "type": "ref", 12 + "ref": "app.bsky.embed.record" 13 + }, 14 + "media": { 15 + "type": "union", 16 + "refs": [ 17 + "app.bsky.embed.images", 18 + "app.bsky.embed.video", 19 + "app.bsky.embed.external" 20 + ] 21 + } 22 + } 23 + }, 24 + "view": { 25 + "type": "object", 26 + "required": ["record", "media"], 27 + "properties": { 28 + "record": { 29 + "type": "ref", 30 + "ref": "app.bsky.embed.record#view" 31 + }, 32 + "media": { 33 + "type": "union", 34 + "refs": [ 35 + "app.bsky.embed.images#view", 36 + "app.bsky.embed.video#view", 37 + "app.bsky.embed.external#view" 38 + ] 39 + } 40 + } 41 + } 42 + } 43 + }
+67
viewserver/lexicons/app/bsky/embed/video.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.embed.video", 4 + "description": "A video embedded in a Bluesky record (eg, a post).", 5 + "defs": { 6 + "main": { 7 + "type": "object", 8 + "required": ["video"], 9 + "properties": { 10 + "video": { 11 + "type": "blob", 12 + "description": "The mp4 video file. May be up to 100mb, formerly limited to 50mb.", 13 + "accept": ["video/mp4"], 14 + "maxSize": 100000000 15 + }, 16 + "captions": { 17 + "type": "array", 18 + "items": { "type": "ref", "ref": "#caption" }, 19 + "maxLength": 20 20 + }, 21 + "alt": { 22 + "type": "string", 23 + "description": "Alt text description of the video, for accessibility.", 24 + "maxGraphemes": 1000, 25 + "maxLength": 10000 26 + }, 27 + "aspectRatio": { 28 + "type": "ref", 29 + "ref": "app.bsky.embed.defs#aspectRatio" 30 + } 31 + } 32 + }, 33 + "caption": { 34 + "type": "object", 35 + "required": ["lang", "file"], 36 + "properties": { 37 + "lang": { 38 + "type": "string", 39 + "format": "language" 40 + }, 41 + "file": { 42 + "type": "blob", 43 + "accept": ["text/vtt"], 44 + "maxSize": 20000 45 + } 46 + } 47 + }, 48 + "view": { 49 + "type": "object", 50 + "required": ["cid", "playlist"], 51 + "properties": { 52 + "cid": { "type": "string", "format": "cid" }, 53 + "playlist": { "type": "string", "format": "uri" }, 54 + "thumbnail": { "type": "string", "format": "uri" }, 55 + "alt": { 56 + "type": "string", 57 + "maxGraphemes": 1000, 58 + "maxLength": 10000 59 + }, 60 + "aspectRatio": { 61 + "type": "ref", 62 + "ref": "app.bsky.embed.defs#aspectRatio" 63 + } 64 + } 65 + } 66 + } 67 + }
+325
viewserver/lexicons/app/bsky/feed/defs.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.feed.defs", 4 + "defs": { 5 + "postView": { 6 + "type": "object", 7 + "required": ["uri", "cid", "author", "record", "indexedAt"], 8 + "properties": { 9 + "uri": { "type": "string", "format": "at-uri" }, 10 + "cid": { "type": "string", "format": "cid" }, 11 + "author": { 12 + "type": "ref", 13 + "ref": "app.bsky.actor.defs#profileViewBasic" 14 + }, 15 + "record": { "type": "unknown" }, 16 + "embed": { 17 + "type": "union", 18 + "refs": [ 19 + "app.bsky.embed.images#view", 20 + "app.bsky.embed.video#view", 21 + "app.bsky.embed.external#view", 22 + "app.bsky.embed.record#view", 23 + "app.bsky.embed.recordWithMedia#view" 24 + ] 25 + }, 26 + "replyCount": { "type": "integer" }, 27 + "repostCount": { "type": "integer" }, 28 + "likeCount": { "type": "integer" }, 29 + "quoteCount": { "type": "integer" }, 30 + "indexedAt": { "type": "string", "format": "datetime" }, 31 + "viewer": { "type": "ref", "ref": "#viewerState" }, 32 + "labels": { 33 + "type": "array", 34 + "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 35 + }, 36 + "threadgate": { "type": "ref", "ref": "#threadgateView" } 37 + } 38 + }, 39 + "viewerState": { 40 + "type": "object", 41 + "description": "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.", 42 + "properties": { 43 + "repost": { "type": "string", "format": "at-uri" }, 44 + "like": { "type": "string", "format": "at-uri" }, 45 + "threadMuted": { "type": "boolean" }, 46 + "replyDisabled": { "type": "boolean" }, 47 + "embeddingDisabled": { "type": "boolean" }, 48 + "pinned": { "type": "boolean" } 49 + } 50 + }, 51 + "threadContext": { 52 + "type": "object", 53 + "description": "Metadata about this post within the context of the thread it is in.", 54 + "properties": { 55 + "rootAuthorLike": { "type": "string", "format": "at-uri" } 56 + } 57 + }, 58 + "feedViewPost": { 59 + "type": "object", 60 + "required": ["post"], 61 + "properties": { 62 + "post": { "type": "ref", "ref": "#postView" }, 63 + "reply": { "type": "ref", "ref": "#replyRef" }, 64 + "reason": { "type": "union", "refs": ["#reasonRepost", "#reasonPin"] }, 65 + "feedContext": { 66 + "type": "string", 67 + "description": "Context provided by feed generator that may be passed back alongside interactions.", 68 + "maxLength": 2000 69 + }, 70 + "reqId": { 71 + "type": "string", 72 + "description": "Unique identifier per request that may be passed back alongside interactions.", 73 + "maxLength": 100 74 + } 75 + } 76 + }, 77 + "replyRef": { 78 + "type": "object", 79 + "required": ["root", "parent"], 80 + "properties": { 81 + "root": { 82 + "type": "union", 83 + "refs": ["#postView", "#notFoundPost", "#blockedPost"] 84 + }, 85 + "parent": { 86 + "type": "union", 87 + "refs": ["#postView", "#notFoundPost", "#blockedPost"] 88 + }, 89 + "grandparentAuthor": { 90 + "type": "ref", 91 + "ref": "app.bsky.actor.defs#profileViewBasic", 92 + "description": "When parent is a reply to another post, this is the author of that post." 93 + } 94 + } 95 + }, 96 + "reasonRepost": { 97 + "type": "object", 98 + "required": ["by", "indexedAt"], 99 + "properties": { 100 + "by": { "type": "ref", "ref": "app.bsky.actor.defs#profileViewBasic" }, 101 + "uri": { "type": "string", "format": "at-uri" }, 102 + "cid": { "type": "string", "format": "cid" }, 103 + "indexedAt": { "type": "string", "format": "datetime" } 104 + } 105 + }, 106 + "reasonPin": { 107 + "type": "object", 108 + "properties": {} 109 + }, 110 + "threadViewPost": { 111 + "type": "object", 112 + "required": ["post"], 113 + "properties": { 114 + "post": { "type": "ref", "ref": "#postView" }, 115 + "parent": { 116 + "type": "union", 117 + "refs": ["#threadViewPost", "#notFoundPost", "#blockedPost"] 118 + }, 119 + "replies": { 120 + "type": "array", 121 + "items": { 122 + "type": "union", 123 + "refs": ["#threadViewPost", "#notFoundPost", "#blockedPost"] 124 + } 125 + }, 126 + "threadContext": { "type": "ref", "ref": "#threadContext" } 127 + } 128 + }, 129 + "notFoundPost": { 130 + "type": "object", 131 + "required": ["uri", "notFound"], 132 + "properties": { 133 + "uri": { "type": "string", "format": "at-uri" }, 134 + "notFound": { "type": "boolean", "const": true } 135 + } 136 + }, 137 + "blockedPost": { 138 + "type": "object", 139 + "required": ["uri", "blocked", "author"], 140 + "properties": { 141 + "uri": { "type": "string", "format": "at-uri" }, 142 + "blocked": { "type": "boolean", "const": true }, 143 + "author": { "type": "ref", "ref": "#blockedAuthor" } 144 + } 145 + }, 146 + "blockedAuthor": { 147 + "type": "object", 148 + "required": ["did"], 149 + "properties": { 150 + "did": { "type": "string", "format": "did" }, 151 + "viewer": { "type": "ref", "ref": "app.bsky.actor.defs#viewerState" } 152 + } 153 + }, 154 + "generatorView": { 155 + "type": "object", 156 + "required": ["uri", "cid", "did", "creator", "displayName", "indexedAt"], 157 + "properties": { 158 + "uri": { "type": "string", "format": "at-uri" }, 159 + "cid": { "type": "string", "format": "cid" }, 160 + "did": { "type": "string", "format": "did" }, 161 + "creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" }, 162 + "displayName": { "type": "string" }, 163 + "description": { 164 + "type": "string", 165 + "maxGraphemes": 300, 166 + "maxLength": 3000 167 + }, 168 + "descriptionFacets": { 169 + "type": "array", 170 + "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } 171 + }, 172 + "avatar": { "type": "string", "format": "uri" }, 173 + "likeCount": { "type": "integer", "minimum": 0 }, 174 + "acceptsInteractions": { "type": "boolean" }, 175 + "labels": { 176 + "type": "array", 177 + "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 178 + }, 179 + "viewer": { "type": "ref", "ref": "#generatorViewerState" }, 180 + "contentMode": { 181 + "type": "string", 182 + "knownValues": [ 183 + "app.bsky.feed.defs#contentModeUnspecified", 184 + "app.bsky.feed.defs#contentModeVideo" 185 + ] 186 + }, 187 + "indexedAt": { "type": "string", "format": "datetime" } 188 + } 189 + }, 190 + "generatorViewerState": { 191 + "type": "object", 192 + "properties": { 193 + "like": { "type": "string", "format": "at-uri" } 194 + } 195 + }, 196 + "skeletonFeedPost": { 197 + "type": "object", 198 + "required": ["post"], 199 + "properties": { 200 + "post": { "type": "string", "format": "at-uri" }, 201 + "reason": { 202 + "type": "union", 203 + "refs": ["#skeletonReasonRepost", "#skeletonReasonPin"] 204 + }, 205 + "feedContext": { 206 + "type": "string", 207 + "description": "Context that will be passed through to client and may be passed to feed generator back alongside interactions.", 208 + "maxLength": 2000 209 + } 210 + } 211 + }, 212 + "skeletonReasonRepost": { 213 + "type": "object", 214 + "required": ["repost"], 215 + "properties": { 216 + "repost": { "type": "string", "format": "at-uri" } 217 + } 218 + }, 219 + "skeletonReasonPin": { 220 + "type": "object", 221 + "properties": {} 222 + }, 223 + "threadgateView": { 224 + "type": "object", 225 + "properties": { 226 + "uri": { "type": "string", "format": "at-uri" }, 227 + "cid": { "type": "string", "format": "cid" }, 228 + "record": { "type": "unknown" }, 229 + "lists": { 230 + "type": "array", 231 + "items": { "type": "ref", "ref": "app.bsky.graph.defs#listViewBasic" } 232 + } 233 + } 234 + }, 235 + "interaction": { 236 + "type": "object", 237 + "properties": { 238 + "item": { "type": "string", "format": "at-uri" }, 239 + "event": { 240 + "type": "string", 241 + "knownValues": [ 242 + "app.bsky.feed.defs#requestLess", 243 + "app.bsky.feed.defs#requestMore", 244 + "app.bsky.feed.defs#clickthroughItem", 245 + "app.bsky.feed.defs#clickthroughAuthor", 246 + "app.bsky.feed.defs#clickthroughReposter", 247 + "app.bsky.feed.defs#clickthroughEmbed", 248 + "app.bsky.feed.defs#interactionSeen", 249 + "app.bsky.feed.defs#interactionLike", 250 + "app.bsky.feed.defs#interactionRepost", 251 + "app.bsky.feed.defs#interactionReply", 252 + "app.bsky.feed.defs#interactionQuote", 253 + "app.bsky.feed.defs#interactionShare" 254 + ] 255 + }, 256 + "feedContext": { 257 + "type": "string", 258 + "description": "Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.", 259 + "maxLength": 2000 260 + }, 261 + "reqId": { 262 + "type": "string", 263 + "description": "Unique identifier per request that may be passed back alongside interactions.", 264 + "maxLength": 100 265 + } 266 + } 267 + }, 268 + "requestLess": { 269 + "type": "token", 270 + "description": "Request that less content like the given feed item be shown in the feed" 271 + }, 272 + "requestMore": { 273 + "type": "token", 274 + "description": "Request that more content like the given feed item be shown in the feed" 275 + }, 276 + "clickthroughItem": { 277 + "type": "token", 278 + "description": "User clicked through to the feed item" 279 + }, 280 + "clickthroughAuthor": { 281 + "type": "token", 282 + "description": "User clicked through to the author of the feed item" 283 + }, 284 + "clickthroughReposter": { 285 + "type": "token", 286 + "description": "User clicked through to the reposter of the feed item" 287 + }, 288 + "clickthroughEmbed": { 289 + "type": "token", 290 + "description": "User clicked through to the embedded content of the feed item" 291 + }, 292 + "contentModeUnspecified": { 293 + "type": "token", 294 + "description": "Declares the feed generator returns any types of posts." 295 + }, 296 + "contentModeVideo": { 297 + "type": "token", 298 + "description": "Declares the feed generator returns posts containing app.bsky.embed.video embeds." 299 + }, 300 + "interactionSeen": { 301 + "type": "token", 302 + "description": "Feed item was seen by user" 303 + }, 304 + "interactionLike": { 305 + "type": "token", 306 + "description": "User liked the feed item" 307 + }, 308 + "interactionRepost": { 309 + "type": "token", 310 + "description": "User reposted the feed item" 311 + }, 312 + "interactionReply": { 313 + "type": "token", 314 + "description": "User replied to the feed item" 315 + }, 316 + "interactionQuote": { 317 + "type": "token", 318 + "description": "User quoted the feed item" 319 + }, 320 + "interactionShare": { 321 + "type": "token", 322 + "description": "User shared the feed item" 323 + } 324 + } 325 + }
+41
viewserver/lexicons/app/bsky/feed/getActorFeeds.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.feed.getActorFeeds", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a list of feeds (feed generator records) created by the actor (in the actor's repo).", 8 + "parameters": { 9 + "type": "params", 10 + "required": ["actor"], 11 + "properties": { 12 + "actor": { "type": "string", "format": "at-identifier" }, 13 + "limit": { 14 + "type": "integer", 15 + "minimum": 1, 16 + "maximum": 100, 17 + "default": 50 18 + }, 19 + "cursor": { "type": "string" } 20 + } 21 + }, 22 + "output": { 23 + "encoding": "application/json", 24 + "schema": { 25 + "type": "object", 26 + "required": ["feeds"], 27 + "properties": { 28 + "cursor": { "type": "string" }, 29 + "feeds": { 30 + "type": "array", 31 + "items": { 32 + "type": "ref", 33 + "ref": "app.bsky.feed.defs#generatorView" 34 + } 35 + } 36 + } 37 + } 38 + } 39 + } 40 + } 41 + }
+42
viewserver/lexicons/app/bsky/feed/getFeedGenerator.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.feed.getFeedGenerator", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get information about a feed generator. Implemented by AppView.", 8 + "parameters": { 9 + "type": "params", 10 + "required": ["feed"], 11 + "properties": { 12 + "feed": { 13 + "type": "string", 14 + "format": "at-uri", 15 + "description": "AT-URI of the feed generator record." 16 + } 17 + } 18 + }, 19 + "output": { 20 + "encoding": "application/json", 21 + "schema": { 22 + "type": "object", 23 + "required": ["view", "isOnline", "isValid"], 24 + "properties": { 25 + "view": { 26 + "type": "ref", 27 + "ref": "app.bsky.feed.defs#generatorView" 28 + }, 29 + "isOnline": { 30 + "type": "boolean", 31 + "description": "Indicates whether the feed generator service has been online recently, or else seems to be inactive." 32 + }, 33 + "isValid": { 34 + "type": "boolean", 35 + "description": "Indicates whether the feed generator service is compatible with the record declaration." 36 + } 37 + } 38 + } 39 + } 40 + } 41 + } 42 + }
+36
viewserver/lexicons/app/bsky/feed/getFeedGenerators.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.feed.getFeedGenerators", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get information about a list of feed generators.", 8 + "parameters": { 9 + "type": "params", 10 + "required": ["feeds"], 11 + "properties": { 12 + "feeds": { 13 + "type": "array", 14 + "items": { "type": "string", "format": "at-uri" } 15 + } 16 + } 17 + }, 18 + "output": { 19 + "encoding": "application/json", 20 + "schema": { 21 + "type": "object", 22 + "required": ["feeds"], 23 + "properties": { 24 + "feeds": { 25 + "type": "array", 26 + "items": { 27 + "type": "ref", 28 + "ref": "app.bsky.feed.defs#generatorView" 29 + } 30 + } 31 + } 32 + } 33 + } 34 + } 35 + } 36 + }
+35
viewserver/lexicons/app/bsky/feed/getPosts.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.feed.getPosts", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Gets post views for a specified list of posts (by AT-URI). This is sometimes referred to as 'hydrating' a 'feed skeleton'.", 8 + "parameters": { 9 + "type": "params", 10 + "required": ["uris"], 11 + "properties": { 12 + "uris": { 13 + "type": "array", 14 + "description": "List of post AT-URIs to return hydrated views for.", 15 + "items": { "type": "string", "format": "at-uri" }, 16 + "maxLength": 25 17 + } 18 + } 19 + }, 20 + "output": { 21 + "encoding": "application/json", 22 + "schema": { 23 + "type": "object", 24 + "required": ["posts"], 25 + "properties": { 26 + "posts": { 27 + "type": "array", 28 + "items": { "type": "ref", "ref": "app.bsky.feed.defs#postView" } 29 + } 30 + } 31 + } 32 + } 33 + } 34 + } 35 + }
+46
viewserver/lexicons/app/bsky/feed/postgate.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.feed.postgate", 4 + "defs": { 5 + "main": { 6 + "type": "record", 7 + "key": "tid", 8 + "description": "Record defining interaction rules for a post. The record key (rkey) of the postgate record must match the record key of the post, and that record must be in the same repository.", 9 + "record": { 10 + "type": "object", 11 + "required": ["post", "createdAt"], 12 + "properties": { 13 + "createdAt": { "type": "string", "format": "datetime" }, 14 + "post": { 15 + "type": "string", 16 + "format": "at-uri", 17 + "description": "Reference (AT-URI) to the post record." 18 + }, 19 + "detachedEmbeddingUris": { 20 + "type": "array", 21 + "maxLength": 50, 22 + "items": { 23 + "type": "string", 24 + "format": "at-uri" 25 + }, 26 + "description": "List of AT-URIs embedding this post that the author has detached from." 27 + }, 28 + "embeddingRules": { 29 + "description": "List of rules defining who can embed this post. If value is an empty array or is undefined, no particular rules apply and anyone can embed.", 30 + "type": "array", 31 + "maxLength": 5, 32 + "items": { 33 + "type": "union", 34 + "refs": ["#disableRule"] 35 + } 36 + } 37 + } 38 + } 39 + }, 40 + "disableRule": { 41 + "type": "object", 42 + "description": "Disables embedding of this post.", 43 + "properties": {} 44 + } 45 + } 46 + }
+69
viewserver/lexicons/app/bsky/feed/threadgate.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.feed.threadgate", 4 + "defs": { 5 + "main": { 6 + "type": "record", 7 + "key": "tid", 8 + "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.", 9 + "record": { 10 + "type": "object", 11 + "required": ["post", "createdAt"], 12 + "properties": { 13 + "post": { 14 + "type": "string", 15 + "format": "at-uri", 16 + "description": "Reference (AT-URI) to the post record." 17 + }, 18 + "allow": { 19 + "description": "List of rules defining who can reply to this post. If value is an empty array, no one can reply. If value is undefined, anyone can reply.", 20 + "type": "array", 21 + "maxLength": 5, 22 + "items": { 23 + "type": "union", 24 + "refs": [ 25 + "#mentionRule", 26 + "#followerRule", 27 + "#followingRule", 28 + "#listRule" 29 + ] 30 + } 31 + }, 32 + "createdAt": { "type": "string", "format": "datetime" }, 33 + "hiddenReplies": { 34 + "type": "array", 35 + "maxLength": 50, 36 + "items": { 37 + "type": "string", 38 + "format": "at-uri" 39 + }, 40 + "description": "List of hidden reply URIs." 41 + } 42 + } 43 + } 44 + }, 45 + "mentionRule": { 46 + "type": "object", 47 + "description": "Allow replies from actors mentioned in your post.", 48 + "properties": {} 49 + }, 50 + "followerRule": { 51 + "type": "object", 52 + "description": "Allow replies from actors who follow you.", 53 + "properties": {} 54 + }, 55 + "followingRule": { 56 + "type": "object", 57 + "description": "Allow replies from actors you follow.", 58 + "properties": {} 59 + }, 60 + "listRule": { 61 + "type": "object", 62 + "description": "Allow replies from actors on a list.", 63 + "required": ["list"], 64 + "properties": { 65 + "list": { "type": "string", "format": "at-uri" } 66 + } 67 + } 68 + } 69 + }
+166
viewserver/lexicons/app/bsky/graph/defs.json
···
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.graph.defs", 4 + "defs": { 5 + "listViewBasic": { 6 + "type": "object", 7 + "required": ["uri", "cid", "name", "purpose"], 8 + "properties": { 9 + "uri": { "type": "string", "format": "at-uri" }, 10 + "cid": { "type": "string", "format": "cid" }, 11 + "name": { "type": "string", "maxLength": 64, "minLength": 1 }, 12 + "purpose": { "type": "ref", "ref": "#listPurpose" }, 13 + "avatar": { "type": "string", "format": "uri" }, 14 + "listItemCount": { "type": "integer", "minimum": 0 }, 15 + "labels": { 16 + "type": "array", 17 + "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 18 + }, 19 + "viewer": { "type": "ref", "ref": "#listViewerState" }, 20 + "indexedAt": { "type": "string", "format": "datetime" } 21 + } 22 + }, 23 + "listView": { 24 + "type": "object", 25 + "required": ["uri", "cid", "creator", "name", "purpose", "indexedAt"], 26 + "properties": { 27 + "uri": { "type": "string", "format": "at-uri" }, 28 + "cid": { "type": "string", "format": "cid" }, 29 + "creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" }, 30 + "name": { "type": "string", "maxLength": 64, "minLength": 1 }, 31 + "purpose": { "type": "ref", "ref": "#listPurpose" }, 32 + "description": { 33 + "type": "string", 34 + "maxGraphemes": 300, 35 + "maxLength": 3000 36 + }, 37 + "descriptionFacets": { 38 + "type": "array", 39 + "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } 40 + }, 41 + "avatar": { "type": "string", "format": "uri" }, 42 + "listItemCount": { "type": "integer", "minimum": 0 }, 43 + "labels": { 44 + "type": "array", 45 + "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 46 + }, 47 + "viewer": { "type": "ref", "ref": "#listViewerState" }, 48 + "indexedAt": { "type": "string", "format": "datetime" } 49 + } 50 + }, 51 + "listItemView": { 52 + "type": "object", 53 + "required": ["uri", "subject"], 54 + "properties": { 55 + "uri": { "type": "string", "format": "at-uri" }, 56 + "subject": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" } 57 + } 58 + }, 59 + "starterPackView": { 60 + "type": "object", 61 + "required": ["uri", "cid", "record", "creator", "indexedAt"], 62 + "properties": { 63 + "uri": { "type": "string", "format": "at-uri" }, 64 + "cid": { "type": "string", "format": "cid" }, 65 + "record": { "type": "unknown" }, 66 + "creator": { 67 + "type": "ref", 68 + "ref": "app.bsky.actor.defs#profileViewBasic" 69 + }, 70 + "list": { "type": "ref", "ref": "#listViewBasic" }, 71 + "listItemsSample": { 72 + "type": "array", 73 + "maxLength": 12, 74 + "items": { "type": "ref", "ref": "#listItemView" } 75 + }, 76 + "feeds": { 77 + "type": "array", 78 + "maxLength": 3, 79 + "items": { "type": "ref", "ref": "app.bsky.feed.defs#generatorView" } 80 + }, 81 + "joinedWeekCount": { "type": "integer", "minimum": 0 }, 82 + "joinedAllTimeCount": { "type": "integer", "minimum": 0 }, 83 + "labels": { 84 + "type": "array", 85 + "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 86 + }, 87 + "indexedAt": { "type": "string", "format": "datetime" } 88 + } 89 + }, 90 + "starterPackViewBasic": { 91 + "type": "object", 92 + "required": ["uri", "cid", "record", "creator", "indexedAt"], 93 + "properties": { 94 + "uri": { "type": "string", "format": "at-uri" }, 95 + "cid": { "type": "string", "format": "cid" }, 96 + "record": { "type": "unknown" }, 97 + "creator": { 98 + "type": "ref", 99 + "ref": "app.bsky.actor.defs#profileViewBasic" 100 + }, 101 + "listItemCount": { "type": "integer", "minimum": 0 }, 102 + "joinedWeekCount": { "type": "integer", "minimum": 0 }, 103 + "joinedAllTimeCount": { "type": "integer", "minimum": 0 }, 104 + "labels": { 105 + "type": "array", 106 + "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 107 + }, 108 + "indexedAt": { "type": "string", "format": "datetime" } 109 + } 110 + }, 111 + "listPurpose": { 112 + "type": "string", 113 + "knownValues": [ 114 + "app.bsky.graph.defs#modlist", 115 + "app.bsky.graph.defs#curatelist", 116 + "app.bsky.graph.defs#referencelist" 117 + ] 118 + }, 119 + "modlist": { 120 + "type": "token", 121 + "description": "A list of actors to apply an aggregate moderation action (mute/block) on." 122 + }, 123 + "curatelist": { 124 + "type": "token", 125 + "description": "A list of actors used for curation purposes such as list feeds or interaction gating." 126 + }, 127 + "referencelist": { 128 + "type": "token", 129 + "description": "A list of actors used for only for reference purposes such as within a starter pack." 130 + }, 131 + "listViewerState": { 132 + "type": "object", 133 + "properties": { 134 + "muted": { "type": "boolean" }, 135 + "blocked": { "type": "string", "format": "at-uri" } 136 + } 137 + }, 138 + "notFoundActor": { 139 + "type": "object", 140 + "description": "indicates that a handle or DID could not be resolved", 141 + "required": ["actor", "notFound"], 142 + "properties": { 143 + "actor": { "type": "string", "format": "at-identifier" }, 144 + "notFound": { "type": "boolean", "const": true } 145 + } 146 + }, 147 + "relationship": { 148 + "type": "object", 149 + "description": "lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)", 150 + "required": ["did"], 151 + "properties": { 152 + "did": { "type": "string", "format": "did" }, 153 + "following": { 154 + "type": "string", 155 + "format": "at-uri", 156 + "description": "if the actor follows this DID, this is the AT-URI of the follow record" 157 + }, 158 + "followedBy": { 159 + "type": "string", 160 + "format": "at-uri", 161 + "description": "if the actor is followed by this DID, contains the AT-URI of the follow record" 162 + } 163 + } 164 + } 165 + } 166 + }
+424
viewserver/types/app/bsky/feed/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + import type * as AppBskyActorDefs from '../actor/defs.ts' 13 + import type * as AppBskyEmbedImages from '../embed/images.ts' 14 + import type * as AppBskyEmbedVideo from '../embed/video.ts' 15 + import type * as AppBskyEmbedExternal from '../embed/external.ts' 16 + import type * as AppBskyEmbedRecord from '../embed/record.ts' 17 + import type * as AppBskyEmbedRecordWithMedia from '../embed/recordWithMedia.ts' 18 + import type * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs.ts' 19 + import type * as AppBskyRichtextFacet from '../richtext/facet.ts' 20 + import type * as AppBskyGraphDefs from '../graph/defs.ts' 21 + 22 + const is$typed = _is$typed, 23 + validate = _validate 24 + const id = 'app.bsky.feed.defs' 25 + 26 + export interface PostView { 27 + $type?: 'app.bsky.feed.defs#postView' 28 + uri: string 29 + cid: string 30 + author: AppBskyActorDefs.ProfileViewBasic 31 + record: { [_ in string]: unknown } 32 + embed?: 33 + | $Typed<AppBskyEmbedImages.View> 34 + | $Typed<AppBskyEmbedVideo.View> 35 + | $Typed<AppBskyEmbedExternal.View> 36 + | $Typed<AppBskyEmbedRecord.View> 37 + | $Typed<AppBskyEmbedRecordWithMedia.View> 38 + | { $type: string } 39 + replyCount?: number 40 + repostCount?: number 41 + likeCount?: number 42 + quoteCount?: number 43 + indexedAt: string 44 + viewer?: ViewerState 45 + labels?: ComAtprotoLabelDefs.Label[] 46 + threadgate?: ThreadgateView 47 + } 48 + 49 + const hashPostView = 'postView' 50 + 51 + export function isPostView<V>(v: V) { 52 + return is$typed(v, id, hashPostView) 53 + } 54 + 55 + export function validatePostView<V>(v: V) { 56 + return validate<PostView & V>(v, id, hashPostView) 57 + } 58 + 59 + /** Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests. */ 60 + export interface ViewerState { 61 + $type?: 'app.bsky.feed.defs#viewerState' 62 + repost?: string 63 + like?: string 64 + threadMuted?: boolean 65 + replyDisabled?: boolean 66 + embeddingDisabled?: boolean 67 + pinned?: boolean 68 + } 69 + 70 + const hashViewerState = 'viewerState' 71 + 72 + export function isViewerState<V>(v: V) { 73 + return is$typed(v, id, hashViewerState) 74 + } 75 + 76 + export function validateViewerState<V>(v: V) { 77 + return validate<ViewerState & V>(v, id, hashViewerState) 78 + } 79 + 80 + /** Metadata about this post within the context of the thread it is in. */ 81 + export interface ThreadContext { 82 + $type?: 'app.bsky.feed.defs#threadContext' 83 + rootAuthorLike?: string 84 + } 85 + 86 + const hashThreadContext = 'threadContext' 87 + 88 + export function isThreadContext<V>(v: V) { 89 + return is$typed(v, id, hashThreadContext) 90 + } 91 + 92 + export function validateThreadContext<V>(v: V) { 93 + return validate<ThreadContext & V>(v, id, hashThreadContext) 94 + } 95 + 96 + export interface FeedViewPost { 97 + $type?: 'app.bsky.feed.defs#feedViewPost' 98 + post: PostView 99 + reply?: ReplyRef 100 + reason?: $Typed<ReasonRepost> | $Typed<ReasonPin> | { $type: string } 101 + /** Context provided by feed generator that may be passed back alongside interactions. */ 102 + feedContext?: string 103 + /** Unique identifier per request that may be passed back alongside interactions. */ 104 + reqId?: string 105 + } 106 + 107 + const hashFeedViewPost = 'feedViewPost' 108 + 109 + export function isFeedViewPost<V>(v: V) { 110 + return is$typed(v, id, hashFeedViewPost) 111 + } 112 + 113 + export function validateFeedViewPost<V>(v: V) { 114 + return validate<FeedViewPost & V>(v, id, hashFeedViewPost) 115 + } 116 + 117 + export interface ReplyRef { 118 + $type?: 'app.bsky.feed.defs#replyRef' 119 + root: 120 + | $Typed<PostView> 121 + | $Typed<NotFoundPost> 122 + | $Typed<BlockedPost> 123 + | { $type: string } 124 + parent: 125 + | $Typed<PostView> 126 + | $Typed<NotFoundPost> 127 + | $Typed<BlockedPost> 128 + | { $type: string } 129 + grandparentAuthor?: AppBskyActorDefs.ProfileViewBasic 130 + } 131 + 132 + const hashReplyRef = 'replyRef' 133 + 134 + export function isReplyRef<V>(v: V) { 135 + return is$typed(v, id, hashReplyRef) 136 + } 137 + 138 + export function validateReplyRef<V>(v: V) { 139 + return validate<ReplyRef & V>(v, id, hashReplyRef) 140 + } 141 + 142 + export interface ReasonRepost { 143 + $type?: 'app.bsky.feed.defs#reasonRepost' 144 + by: AppBskyActorDefs.ProfileViewBasic 145 + uri?: string 146 + cid?: string 147 + indexedAt: string 148 + } 149 + 150 + const hashReasonRepost = 'reasonRepost' 151 + 152 + export function isReasonRepost<V>(v: V) { 153 + return is$typed(v, id, hashReasonRepost) 154 + } 155 + 156 + export function validateReasonRepost<V>(v: V) { 157 + return validate<ReasonRepost & V>(v, id, hashReasonRepost) 158 + } 159 + 160 + export interface ReasonPin { 161 + $type?: 'app.bsky.feed.defs#reasonPin' 162 + } 163 + 164 + const hashReasonPin = 'reasonPin' 165 + 166 + export function isReasonPin<V>(v: V) { 167 + return is$typed(v, id, hashReasonPin) 168 + } 169 + 170 + export function validateReasonPin<V>(v: V) { 171 + return validate<ReasonPin & V>(v, id, hashReasonPin) 172 + } 173 + 174 + export interface ThreadViewPost { 175 + $type?: 'app.bsky.feed.defs#threadViewPost' 176 + post: PostView 177 + parent?: 178 + | $Typed<ThreadViewPost> 179 + | $Typed<NotFoundPost> 180 + | $Typed<BlockedPost> 181 + | { $type: string } 182 + replies?: ( 183 + | $Typed<ThreadViewPost> 184 + | $Typed<NotFoundPost> 185 + | $Typed<BlockedPost> 186 + | { $type: string } 187 + )[] 188 + threadContext?: ThreadContext 189 + } 190 + 191 + const hashThreadViewPost = 'threadViewPost' 192 + 193 + export function isThreadViewPost<V>(v: V) { 194 + return is$typed(v, id, hashThreadViewPost) 195 + } 196 + 197 + export function validateThreadViewPost<V>(v: V) { 198 + return validate<ThreadViewPost & V>(v, id, hashThreadViewPost) 199 + } 200 + 201 + export interface NotFoundPost { 202 + $type?: 'app.bsky.feed.defs#notFoundPost' 203 + uri: string 204 + notFound: true 205 + } 206 + 207 + const hashNotFoundPost = 'notFoundPost' 208 + 209 + export function isNotFoundPost<V>(v: V) { 210 + return is$typed(v, id, hashNotFoundPost) 211 + } 212 + 213 + export function validateNotFoundPost<V>(v: V) { 214 + return validate<NotFoundPost & V>(v, id, hashNotFoundPost) 215 + } 216 + 217 + export interface BlockedPost { 218 + $type?: 'app.bsky.feed.defs#blockedPost' 219 + uri: string 220 + blocked: true 221 + author: BlockedAuthor 222 + } 223 + 224 + const hashBlockedPost = 'blockedPost' 225 + 226 + export function isBlockedPost<V>(v: V) { 227 + return is$typed(v, id, hashBlockedPost) 228 + } 229 + 230 + export function validateBlockedPost<V>(v: V) { 231 + return validate<BlockedPost & V>(v, id, hashBlockedPost) 232 + } 233 + 234 + export interface BlockedAuthor { 235 + $type?: 'app.bsky.feed.defs#blockedAuthor' 236 + did: string 237 + viewer?: AppBskyActorDefs.ViewerState 238 + } 239 + 240 + const hashBlockedAuthor = 'blockedAuthor' 241 + 242 + export function isBlockedAuthor<V>(v: V) { 243 + return is$typed(v, id, hashBlockedAuthor) 244 + } 245 + 246 + export function validateBlockedAuthor<V>(v: V) { 247 + return validate<BlockedAuthor & V>(v, id, hashBlockedAuthor) 248 + } 249 + 250 + export interface GeneratorView { 251 + $type?: 'app.bsky.feed.defs#generatorView' 252 + uri: string 253 + cid: string 254 + did: string 255 + creator: AppBskyActorDefs.ProfileView 256 + displayName: string 257 + description?: string 258 + descriptionFacets?: AppBskyRichtextFacet.Main[] 259 + avatar?: string 260 + likeCount?: number 261 + acceptsInteractions?: boolean 262 + labels?: ComAtprotoLabelDefs.Label[] 263 + viewer?: GeneratorViewerState 264 + contentMode?: 265 + | 'app.bsky.feed.defs#contentModeUnspecified' 266 + | 'app.bsky.feed.defs#contentModeVideo' 267 + | (string & {}) 268 + indexedAt: string 269 + } 270 + 271 + const hashGeneratorView = 'generatorView' 272 + 273 + export function isGeneratorView<V>(v: V) { 274 + return is$typed(v, id, hashGeneratorView) 275 + } 276 + 277 + export function validateGeneratorView<V>(v: V) { 278 + return validate<GeneratorView & V>(v, id, hashGeneratorView) 279 + } 280 + 281 + export interface GeneratorViewerState { 282 + $type?: 'app.bsky.feed.defs#generatorViewerState' 283 + like?: string 284 + } 285 + 286 + const hashGeneratorViewerState = 'generatorViewerState' 287 + 288 + export function isGeneratorViewerState<V>(v: V) { 289 + return is$typed(v, id, hashGeneratorViewerState) 290 + } 291 + 292 + export function validateGeneratorViewerState<V>(v: V) { 293 + return validate<GeneratorViewerState & V>(v, id, hashGeneratorViewerState) 294 + } 295 + 296 + export interface SkeletonFeedPost { 297 + $type?: 'app.bsky.feed.defs#skeletonFeedPost' 298 + post: string 299 + reason?: 300 + | $Typed<SkeletonReasonRepost> 301 + | $Typed<SkeletonReasonPin> 302 + | { $type: string } 303 + /** Context that will be passed through to client and may be passed to feed generator back alongside interactions. */ 304 + feedContext?: string 305 + } 306 + 307 + const hashSkeletonFeedPost = 'skeletonFeedPost' 308 + 309 + export function isSkeletonFeedPost<V>(v: V) { 310 + return is$typed(v, id, hashSkeletonFeedPost) 311 + } 312 + 313 + export function validateSkeletonFeedPost<V>(v: V) { 314 + return validate<SkeletonFeedPost & V>(v, id, hashSkeletonFeedPost) 315 + } 316 + 317 + export interface SkeletonReasonRepost { 318 + $type?: 'app.bsky.feed.defs#skeletonReasonRepost' 319 + repost: string 320 + } 321 + 322 + const hashSkeletonReasonRepost = 'skeletonReasonRepost' 323 + 324 + export function isSkeletonReasonRepost<V>(v: V) { 325 + return is$typed(v, id, hashSkeletonReasonRepost) 326 + } 327 + 328 + export function validateSkeletonReasonRepost<V>(v: V) { 329 + return validate<SkeletonReasonRepost & V>(v, id, hashSkeletonReasonRepost) 330 + } 331 + 332 + export interface SkeletonReasonPin { 333 + $type?: 'app.bsky.feed.defs#skeletonReasonPin' 334 + } 335 + 336 + const hashSkeletonReasonPin = 'skeletonReasonPin' 337 + 338 + export function isSkeletonReasonPin<V>(v: V) { 339 + return is$typed(v, id, hashSkeletonReasonPin) 340 + } 341 + 342 + export function validateSkeletonReasonPin<V>(v: V) { 343 + return validate<SkeletonReasonPin & V>(v, id, hashSkeletonReasonPin) 344 + } 345 + 346 + export interface ThreadgateView { 347 + $type?: 'app.bsky.feed.defs#threadgateView' 348 + uri?: string 349 + cid?: string 350 + record?: { [_ in string]: unknown } 351 + lists?: AppBskyGraphDefs.ListViewBasic[] 352 + } 353 + 354 + const hashThreadgateView = 'threadgateView' 355 + 356 + export function isThreadgateView<V>(v: V) { 357 + return is$typed(v, id, hashThreadgateView) 358 + } 359 + 360 + export function validateThreadgateView<V>(v: V) { 361 + return validate<ThreadgateView & V>(v, id, hashThreadgateView) 362 + } 363 + 364 + export interface Interaction { 365 + $type?: 'app.bsky.feed.defs#interaction' 366 + item?: string 367 + event?: 368 + | 'app.bsky.feed.defs#requestLess' 369 + | 'app.bsky.feed.defs#requestMore' 370 + | 'app.bsky.feed.defs#clickthroughItem' 371 + | 'app.bsky.feed.defs#clickthroughAuthor' 372 + | 'app.bsky.feed.defs#clickthroughReposter' 373 + | 'app.bsky.feed.defs#clickthroughEmbed' 374 + | 'app.bsky.feed.defs#interactionSeen' 375 + | 'app.bsky.feed.defs#interactionLike' 376 + | 'app.bsky.feed.defs#interactionRepost' 377 + | 'app.bsky.feed.defs#interactionReply' 378 + | 'app.bsky.feed.defs#interactionQuote' 379 + | 'app.bsky.feed.defs#interactionShare' 380 + | (string & {}) 381 + /** Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton. */ 382 + feedContext?: string 383 + /** Unique identifier per request that may be passed back alongside interactions. */ 384 + reqId?: string 385 + } 386 + 387 + const hashInteraction = 'interaction' 388 + 389 + export function isInteraction<V>(v: V) { 390 + return is$typed(v, id, hashInteraction) 391 + } 392 + 393 + export function validateInteraction<V>(v: V) { 394 + return validate<Interaction & V>(v, id, hashInteraction) 395 + } 396 + 397 + /** Request that less content like the given feed item be shown in the feed */ 398 + export const REQUESTLESS = `${id}#requestLess` 399 + /** Request that more content like the given feed item be shown in the feed */ 400 + export const REQUESTMORE = `${id}#requestMore` 401 + /** User clicked through to the feed item */ 402 + export const CLICKTHROUGHITEM = `${id}#clickthroughItem` 403 + /** User clicked through to the author of the feed item */ 404 + export const CLICKTHROUGHAUTHOR = `${id}#clickthroughAuthor` 405 + /** User clicked through to the reposter of the feed item */ 406 + export const CLICKTHROUGHREPOSTER = `${id}#clickthroughReposter` 407 + /** User clicked through to the embedded content of the feed item */ 408 + export const CLICKTHROUGHEMBED = `${id}#clickthroughEmbed` 409 + /** Declares the feed generator returns any types of posts. */ 410 + export const CONTENTMODEUNSPECIFIED = `${id}#contentModeUnspecified` 411 + /** Declares the feed generator returns posts containing app.bsky.embed.video embeds. */ 412 + export const CONTENTMODEVIDEO = `${id}#contentModeVideo` 413 + /** Feed item was seen by user */ 414 + export const INTERACTIONSEEN = `${id}#interactionSeen` 415 + /** User liked the feed item */ 416 + export const INTERACTIONLIKE = `${id}#interactionLike` 417 + /** User reposted the feed item */ 418 + export const INTERACTIONREPOST = `${id}#interactionRepost` 419 + /** User replied to the feed item */ 420 + export const INTERACTIONREPLY = `${id}#interactionReply` 421 + /** User quoted the feed item */ 422 + export const INTERACTIONQUOTE = `${id}#interactionQuote` 423 + /** User shared the feed item */ 424 + export const INTERACTIONSHARE = `${id}#interactionShare`
+43
viewserver/types/app/bsky/feed/getActorFeeds.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + import type * as AppBskyFeedDefs from './defs.ts' 13 + 14 + const is$typed = _is$typed, 15 + validate = _validate 16 + const id = 'app.bsky.feed.getActorFeeds' 17 + 18 + export type QueryParams = { 19 + actor: string 20 + limit: number 21 + cursor?: string 22 + } 23 + export type InputSchema = undefined 24 + 25 + export interface OutputSchema { 26 + cursor?: string 27 + feeds: AppBskyFeedDefs.GeneratorView[] 28 + } 29 + 30 + export type HandlerInput = void 31 + 32 + export interface HandlerSuccess { 33 + encoding: 'application/json' 34 + body: OutputSchema 35 + headers?: { [key: string]: string } 36 + } 37 + 38 + export interface HandlerError { 39 + status: number 40 + message?: string 41 + } 42 + 43 + export type HandlerOutput = HandlerError | HandlerSuccess
+45
viewserver/types/app/bsky/feed/getFeedGenerator.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + import type * as AppBskyFeedDefs from './defs.ts' 13 + 14 + const is$typed = _is$typed, 15 + validate = _validate 16 + const id = 'app.bsky.feed.getFeedGenerator' 17 + 18 + export type QueryParams = { 19 + /** AT-URI of the feed generator record. */ 20 + feed: string 21 + } 22 + export type InputSchema = undefined 23 + 24 + export interface OutputSchema { 25 + view: AppBskyFeedDefs.GeneratorView 26 + /** Indicates whether the feed generator service has been online recently, or else seems to be inactive. */ 27 + isOnline: boolean 28 + /** Indicates whether the feed generator service is compatible with the record declaration. */ 29 + isValid: boolean 30 + } 31 + 32 + export type HandlerInput = void 33 + 34 + export interface HandlerSuccess { 35 + encoding: 'application/json' 36 + body: OutputSchema 37 + headers?: { [key: string]: string } 38 + } 39 + 40 + export interface HandlerError { 41 + status: number 42 + message?: string 43 + } 44 + 45 + export type HandlerOutput = HandlerError | HandlerSuccess
+40
viewserver/types/app/bsky/feed/getFeedGenerators.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + import type * as AppBskyFeedDefs from './defs.ts' 13 + 14 + const is$typed = _is$typed, 15 + validate = _validate 16 + const id = 'app.bsky.feed.getFeedGenerators' 17 + 18 + export type QueryParams = { 19 + feeds: string[] 20 + } 21 + export type InputSchema = undefined 22 + 23 + export interface OutputSchema { 24 + feeds: AppBskyFeedDefs.GeneratorView[] 25 + } 26 + 27 + export type HandlerInput = void 28 + 29 + export interface HandlerSuccess { 30 + encoding: 'application/json' 31 + body: OutputSchema 32 + headers?: { [key: string]: string } 33 + } 34 + 35 + export interface HandlerError { 36 + status: number 37 + message?: string 38 + } 39 + 40 + export type HandlerOutput = HandlerError | HandlerSuccess
+41
viewserver/types/app/bsky/feed/getPosts.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + import type * as AppBskyFeedDefs from './defs.ts' 13 + 14 + const is$typed = _is$typed, 15 + validate = _validate 16 + const id = 'app.bsky.feed.getPosts' 17 + 18 + export type QueryParams = { 19 + /** List of post AT-URIs to return hydrated views for. */ 20 + uris: string[] 21 + } 22 + export type InputSchema = undefined 23 + 24 + export interface OutputSchema { 25 + posts: AppBskyFeedDefs.PostView[] 26 + } 27 + 28 + export type HandlerInput = void 29 + 30 + export interface HandlerSuccess { 31 + encoding: 'application/json' 32 + body: OutputSchema 33 + headers?: { [key: string]: string } 34 + } 35 + 36 + export interface HandlerError { 37 + status: number 38 + message?: string 39 + } 40 + 41 + export type HandlerOutput = HandlerError | HandlerSuccess
+52
viewserver/types/app/bsky/feed/postgate.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'app.bsky.feed.postgate' 16 + 17 + export interface Record { 18 + $type: 'app.bsky.feed.postgate' 19 + createdAt: string 20 + /** Reference (AT-URI) to the post record. */ 21 + post: string 22 + /** List of AT-URIs embedding this post that the author has detached from. */ 23 + detachedEmbeddingUris?: string[] 24 + /** List of rules defining who can embed this post. If value is an empty array or is undefined, no particular rules apply and anyone can embed. */ 25 + embeddingRules?: ($Typed<DisableRule> | { $type: string })[] 26 + [k: string]: unknown 27 + } 28 + 29 + const hashRecord = 'main' 30 + 31 + export function isRecord<V>(v: V) { 32 + return is$typed(v, id, hashRecord) 33 + } 34 + 35 + export function validateRecord<V>(v: V) { 36 + return validate<Record & V>(v, id, hashRecord, true) 37 + } 38 + 39 + /** Disables embedding of this post. */ 40 + export interface DisableRule { 41 + $type?: 'app.bsky.feed.postgate#disableRule' 42 + } 43 + 44 + const hashDisableRule = 'disableRule' 45 + 46 + export function isDisableRule<V>(v: V) { 47 + return is$typed(v, id, hashDisableRule) 48 + } 49 + 50 + export function validateDisableRule<V>(v: V) { 51 + return validate<DisableRule & V>(v, id, hashDisableRule) 52 + }
+104
viewserver/types/app/bsky/feed/threadgate.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'app.bsky.feed.threadgate' 16 + 17 + export interface Record { 18 + $type: 'app.bsky.feed.threadgate' 19 + /** Reference (AT-URI) to the post record. */ 20 + post: string 21 + /** List of rules defining who can reply to this post. If value is an empty array, no one can reply. If value is undefined, anyone can reply. */ 22 + allow?: ( 23 + | $Typed<MentionRule> 24 + | $Typed<FollowerRule> 25 + | $Typed<FollowingRule> 26 + | $Typed<ListRule> 27 + | { $type: string } 28 + )[] 29 + createdAt: string 30 + /** List of hidden reply URIs. */ 31 + hiddenReplies?: string[] 32 + [k: string]: unknown 33 + } 34 + 35 + const hashRecord = 'main' 36 + 37 + export function isRecord<V>(v: V) { 38 + return is$typed(v, id, hashRecord) 39 + } 40 + 41 + export function validateRecord<V>(v: V) { 42 + return validate<Record & V>(v, id, hashRecord, true) 43 + } 44 + 45 + /** Allow replies from actors mentioned in your post. */ 46 + export interface MentionRule { 47 + $type?: 'app.bsky.feed.threadgate#mentionRule' 48 + } 49 + 50 + const hashMentionRule = 'mentionRule' 51 + 52 + export function isMentionRule<V>(v: V) { 53 + return is$typed(v, id, hashMentionRule) 54 + } 55 + 56 + export function validateMentionRule<V>(v: V) { 57 + return validate<MentionRule & V>(v, id, hashMentionRule) 58 + } 59 + 60 + /** Allow replies from actors who follow you. */ 61 + export interface FollowerRule { 62 + $type?: 'app.bsky.feed.threadgate#followerRule' 63 + } 64 + 65 + const hashFollowerRule = 'followerRule' 66 + 67 + export function isFollowerRule<V>(v: V) { 68 + return is$typed(v, id, hashFollowerRule) 69 + } 70 + 71 + export function validateFollowerRule<V>(v: V) { 72 + return validate<FollowerRule & V>(v, id, hashFollowerRule) 73 + } 74 + 75 + /** Allow replies from actors you follow. */ 76 + export interface FollowingRule { 77 + $type?: 'app.bsky.feed.threadgate#followingRule' 78 + } 79 + 80 + const hashFollowingRule = 'followingRule' 81 + 82 + export function isFollowingRule<V>(v: V) { 83 + return is$typed(v, id, hashFollowingRule) 84 + } 85 + 86 + export function validateFollowingRule<V>(v: V) { 87 + return validate<FollowingRule & V>(v, id, hashFollowingRule) 88 + } 89 + 90 + /** Allow replies from actors on a list. */ 91 + export interface ListRule { 92 + $type?: 'app.bsky.feed.threadgate#listRule' 93 + list: string 94 + } 95 + 96 + const hashListRule = 'listRule' 97 + 98 + export function isListRule<V>(v: V) { 99 + return is$typed(v, id, hashListRule) 100 + } 101 + 102 + export function validateListRule<V>(v: V) { 103 + return validate<ListRule & V>(v, id, hashListRule) 104 + }
+142
viewserver/types/app/bsky/notification/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'app.bsky.notification.defs' 16 + 17 + export interface RecordDeleted { 18 + $type?: 'app.bsky.notification.defs#recordDeleted' 19 + } 20 + 21 + const hashRecordDeleted = 'recordDeleted' 22 + 23 + export function isRecordDeleted<V>(v: V) { 24 + return is$typed(v, id, hashRecordDeleted) 25 + } 26 + 27 + export function validateRecordDeleted<V>(v: V) { 28 + return validate<RecordDeleted & V>(v, id, hashRecordDeleted) 29 + } 30 + 31 + export interface ChatPreference { 32 + $type?: 'app.bsky.notification.defs#chatPreference' 33 + include: 'all' | 'accepted' | (string & {}) 34 + push: boolean 35 + } 36 + 37 + const hashChatPreference = 'chatPreference' 38 + 39 + export function isChatPreference<V>(v: V) { 40 + return is$typed(v, id, hashChatPreference) 41 + } 42 + 43 + export function validateChatPreference<V>(v: V) { 44 + return validate<ChatPreference & V>(v, id, hashChatPreference) 45 + } 46 + 47 + export interface FilterablePreference { 48 + $type?: 'app.bsky.notification.defs#filterablePreference' 49 + include: 'all' | 'follows' | (string & {}) 50 + list: boolean 51 + push: boolean 52 + } 53 + 54 + const hashFilterablePreference = 'filterablePreference' 55 + 56 + export function isFilterablePreference<V>(v: V) { 57 + return is$typed(v, id, hashFilterablePreference) 58 + } 59 + 60 + export function validateFilterablePreference<V>(v: V) { 61 + return validate<FilterablePreference & V>(v, id, hashFilterablePreference) 62 + } 63 + 64 + export interface Preference { 65 + $type?: 'app.bsky.notification.defs#preference' 66 + list: boolean 67 + push: boolean 68 + } 69 + 70 + const hashPreference = 'preference' 71 + 72 + export function isPreference<V>(v: V) { 73 + return is$typed(v, id, hashPreference) 74 + } 75 + 76 + export function validatePreference<V>(v: V) { 77 + return validate<Preference & V>(v, id, hashPreference) 78 + } 79 + 80 + export interface Preferences { 81 + $type?: 'app.bsky.notification.defs#preferences' 82 + chat: ChatPreference 83 + follow: FilterablePreference 84 + like: FilterablePreference 85 + likeViaRepost: FilterablePreference 86 + mention: FilterablePreference 87 + quote: FilterablePreference 88 + reply: FilterablePreference 89 + repost: FilterablePreference 90 + repostViaRepost: FilterablePreference 91 + starterpackJoined: Preference 92 + subscribedPost: Preference 93 + unverified: Preference 94 + verified: Preference 95 + } 96 + 97 + const hashPreferences = 'preferences' 98 + 99 + export function isPreferences<V>(v: V) { 100 + return is$typed(v, id, hashPreferences) 101 + } 102 + 103 + export function validatePreferences<V>(v: V) { 104 + return validate<Preferences & V>(v, id, hashPreferences) 105 + } 106 + 107 + export interface ActivitySubscription { 108 + $type?: 'app.bsky.notification.defs#activitySubscription' 109 + post: boolean 110 + reply: boolean 111 + } 112 + 113 + const hashActivitySubscription = 'activitySubscription' 114 + 115 + export function isActivitySubscription<V>(v: V) { 116 + return is$typed(v, id, hashActivitySubscription) 117 + } 118 + 119 + export function validateActivitySubscription<V>(v: V) { 120 + return validate<ActivitySubscription & V>(v, id, hashActivitySubscription) 121 + } 122 + 123 + /** Object used to store activity subscription data in stash. */ 124 + export interface SubjectActivitySubscription { 125 + $type?: 'app.bsky.notification.defs#subjectActivitySubscription' 126 + subject: string 127 + activitySubscription: ActivitySubscription 128 + } 129 + 130 + const hashSubjectActivitySubscription = 'subjectActivitySubscription' 131 + 132 + export function isSubjectActivitySubscription<V>(v: V) { 133 + return is$typed(v, id, hashSubjectActivitySubscription) 134 + } 135 + 136 + export function validateSubjectActivitySubscription<V>(v: V) { 137 + return validate<SubjectActivitySubscription & V>( 138 + v, 139 + id, 140 + hashSubjectActivitySubscription, 141 + ) 142 + }
+97
viewserver/types/app/bsky/richtext/facet.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'app.bsky.richtext.facet' 16 + 17 + /** Annotation of a sub-string within rich text. */ 18 + export interface Main { 19 + $type?: 'app.bsky.richtext.facet' 20 + index: ByteSlice 21 + features: ($Typed<Mention> | $Typed<Link> | $Typed<Tag> | { $type: string })[] 22 + } 23 + 24 + const hashMain = 'main' 25 + 26 + export function isMain<V>(v: V) { 27 + return is$typed(v, id, hashMain) 28 + } 29 + 30 + export function validateMain<V>(v: V) { 31 + return validate<Main & V>(v, id, hashMain) 32 + } 33 + 34 + /** Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID. */ 35 + export interface Mention { 36 + $type?: 'app.bsky.richtext.facet#mention' 37 + did: string 38 + } 39 + 40 + const hashMention = 'mention' 41 + 42 + export function isMention<V>(v: V) { 43 + return is$typed(v, id, hashMention) 44 + } 45 + 46 + export function validateMention<V>(v: V) { 47 + return validate<Mention & V>(v, id, hashMention) 48 + } 49 + 50 + /** Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL. */ 51 + export interface Link { 52 + $type?: 'app.bsky.richtext.facet#link' 53 + uri: string 54 + } 55 + 56 + const hashLink = 'link' 57 + 58 + export function isLink<V>(v: V) { 59 + return is$typed(v, id, hashLink) 60 + } 61 + 62 + export function validateLink<V>(v: V) { 63 + return validate<Link & V>(v, id, hashLink) 64 + } 65 + 66 + /** 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'). */ 67 + export interface Tag { 68 + $type?: 'app.bsky.richtext.facet#tag' 69 + tag: string 70 + } 71 + 72 + const hashTag = 'tag' 73 + 74 + export function isTag<V>(v: V) { 75 + return is$typed(v, id, hashTag) 76 + } 77 + 78 + export function validateTag<V>(v: V) { 79 + return validate<Tag & V>(v, id, hashTag) 80 + } 81 + 82 + /** 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. */ 83 + export interface ByteSlice { 84 + $type?: 'app.bsky.richtext.facet#byteSlice' 85 + byteStart: number 86 + byteEnd: number 87 + } 88 + 89 + const hashByteSlice = 'byteSlice' 90 + 91 + export function isByteSlice<V>(v: V) { 92 + return is$typed(v, id, hashByteSlice) 93 + } 94 + 95 + export function validateByteSlice<V>(v: V) { 96 + return validate<ByteSlice & V>(v, id, hashByteSlice) 97 + }
+146
viewserver/types/com/atproto/label/defs.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'com.atproto.label.defs' 16 + 17 + /** Metadata tag on an atproto resource (eg, repo or record). */ 18 + export interface Label { 19 + $type?: 'com.atproto.label.defs#label' 20 + /** The AT Protocol version of the label object. */ 21 + ver?: number 22 + /** DID of the actor who created this label. */ 23 + src: string 24 + /** AT URI of the record, repository (account), or other resource that this label applies to. */ 25 + uri: string 26 + /** Optionally, CID specifying the specific version of 'uri' resource this label applies to. */ 27 + cid?: string 28 + /** The short string name of the value or type of this label. */ 29 + val: string 30 + /** If true, this is a negation label, overwriting a previous label. */ 31 + neg?: boolean 32 + /** Timestamp when this label was created. */ 33 + cts: string 34 + /** Timestamp at which this label expires (no longer applies). */ 35 + exp?: string 36 + /** Signature of dag-cbor encoded label. */ 37 + sig?: Uint8Array 38 + } 39 + 40 + const hashLabel = 'label' 41 + 42 + export function isLabel<V>(v: V) { 43 + return is$typed(v, id, hashLabel) 44 + } 45 + 46 + export function validateLabel<V>(v: V) { 47 + return validate<Label & V>(v, id, hashLabel) 48 + } 49 + 50 + /** Metadata tags on an atproto record, published by the author within the record. */ 51 + export interface SelfLabels { 52 + $type?: 'com.atproto.label.defs#selfLabels' 53 + values: SelfLabel[] 54 + } 55 + 56 + const hashSelfLabels = 'selfLabels' 57 + 58 + export function isSelfLabels<V>(v: V) { 59 + return is$typed(v, id, hashSelfLabels) 60 + } 61 + 62 + export function validateSelfLabels<V>(v: V) { 63 + return validate<SelfLabels & V>(v, id, hashSelfLabels) 64 + } 65 + 66 + /** Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel. */ 67 + export interface SelfLabel { 68 + $type?: 'com.atproto.label.defs#selfLabel' 69 + /** The short string name of the value or type of this label. */ 70 + val: string 71 + } 72 + 73 + const hashSelfLabel = 'selfLabel' 74 + 75 + export function isSelfLabel<V>(v: V) { 76 + return is$typed(v, id, hashSelfLabel) 77 + } 78 + 79 + export function validateSelfLabel<V>(v: V) { 80 + return validate<SelfLabel & V>(v, id, hashSelfLabel) 81 + } 82 + 83 + /** Declares a label value and its expected interpretations and behaviors. */ 84 + export interface LabelValueDefinition { 85 + $type?: 'com.atproto.label.defs#labelValueDefinition' 86 + /** The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+). */ 87 + identifier: string 88 + /** How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing. */ 89 + severity: 'inform' | 'alert' | 'none' | (string & {}) 90 + /** What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing. */ 91 + blurs: 'content' | 'media' | 'none' | (string & {}) 92 + /** The default setting for this label. */ 93 + defaultSetting: 'ignore' | 'warn' | 'hide' | (string & {}) 94 + /** Does the user need to have adult content enabled in order to configure this label? */ 95 + adultOnly?: boolean 96 + locales: LabelValueDefinitionStrings[] 97 + } 98 + 99 + const hashLabelValueDefinition = 'labelValueDefinition' 100 + 101 + export function isLabelValueDefinition<V>(v: V) { 102 + return is$typed(v, id, hashLabelValueDefinition) 103 + } 104 + 105 + export function validateLabelValueDefinition<V>(v: V) { 106 + return validate<LabelValueDefinition & V>(v, id, hashLabelValueDefinition) 107 + } 108 + 109 + /** Strings which describe the label in the UI, localized into a specific language. */ 110 + export interface LabelValueDefinitionStrings { 111 + $type?: 'com.atproto.label.defs#labelValueDefinitionStrings' 112 + /** The code of the language these strings are written in. */ 113 + lang: string 114 + /** A short human-readable name for the label. */ 115 + name: string 116 + /** A longer description of what the label means and why it might be applied. */ 117 + description: string 118 + } 119 + 120 + const hashLabelValueDefinitionStrings = 'labelValueDefinitionStrings' 121 + 122 + export function isLabelValueDefinitionStrings<V>(v: V) { 123 + return is$typed(v, id, hashLabelValueDefinitionStrings) 124 + } 125 + 126 + export function validateLabelValueDefinitionStrings<V>(v: V) { 127 + return validate<LabelValueDefinitionStrings & V>( 128 + v, 129 + id, 130 + hashLabelValueDefinitionStrings, 131 + ) 132 + } 133 + 134 + export type LabelValue = 135 + | '!hide' 136 + | '!no-promote' 137 + | '!warn' 138 + | '!no-unauthenticated' 139 + | 'dmca-violation' 140 + | 'doxxing' 141 + | 'porn' 142 + | 'sexual' 143 + | 'nudity' 144 + | 'nsfl' 145 + | 'gore' 146 + | (string & {})
+31
viewserver/types/com/atproto/repo/strongRef.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { type ValidationResult, BlobRef } from 'npm:@atproto/lexicon' 5 + import { CID } from 'npm:multiformats/cid' 6 + import { validate as _validate } from '../../../../lexicons.ts' 7 + import { 8 + type $Typed, 9 + is$typed as _is$typed, 10 + type OmitKey, 11 + } from '../../../../util.ts' 12 + 13 + const is$typed = _is$typed, 14 + validate = _validate 15 + const id = 'com.atproto.repo.strongRef' 16 + 17 + export interface Main { 18 + $type?: 'com.atproto.repo.strongRef' 19 + uri: string 20 + cid: string 21 + } 22 + 23 + const hashMain = 'main' 24 + 25 + export function isMain<V>(v: V) { 26 + return is$typed(v, id, hashMain) 27 + } 28 + 29 + export function validateMain<V>(v: V) { 30 + return validate<Main & V>(v, id, hashMain) 31 + }
+82
viewserver/util.ts
···
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + 5 + import { type ValidationResult } from 'npm:@atproto/lexicon' 6 + 7 + export type OmitKey<T, K extends keyof T> = { 8 + [K2 in keyof T as K2 extends K ? never : K2]: T[K2] 9 + } 10 + 11 + export type $Typed<V, T extends string = string> = V & { $type: T } 12 + export type Un$Typed<V extends { $type?: string }> = OmitKey<V, '$type'> 13 + 14 + export type $Type<Id extends string, Hash extends string> = Hash extends 'main' 15 + ? Id 16 + : `${Id}#${Hash}` 17 + 18 + function isObject<V>(v: V): v is V & object { 19 + return v != null && typeof v === 'object' 20 + } 21 + 22 + function is$type<Id extends string, Hash extends string>( 23 + $type: unknown, 24 + id: Id, 25 + hash: Hash, 26 + ): $type is $Type<Id, Hash> { 27 + return hash === 'main' 28 + ? $type === id 29 + : // $type === `${id}#${hash}` 30 + typeof $type === 'string' && 31 + $type.length === id.length + 1 + hash.length && 32 + $type.charCodeAt(id.length) === 35 /* '#' */ && 33 + $type.startsWith(id) && 34 + $type.endsWith(hash) 35 + } 36 + 37 + export type $TypedObject< 38 + V, 39 + Id extends string, 40 + Hash extends string, 41 + > = V extends { 42 + $type: $Type<Id, Hash> 43 + } 44 + ? V 45 + : V extends { $type?: string } 46 + ? V extends { $type?: infer T extends $Type<Id, Hash> } 47 + ? V & { $type: T } 48 + : never 49 + : V & { $type: $Type<Id, Hash> } 50 + 51 + export function is$typed<V, Id extends string, Hash extends string>( 52 + v: V, 53 + id: Id, 54 + hash: Hash, 55 + ): v is $TypedObject<V, Id, Hash> { 56 + return isObject(v) && '$type' in v && is$type(v.$type, id, hash) 57 + } 58 + 59 + export function maybe$typed<V, Id extends string, Hash extends string>( 60 + v: V, 61 + id: Id, 62 + hash: Hash, 63 + ): v is V & object & { $type?: $Type<Id, Hash> } { 64 + return ( 65 + isObject(v) && 66 + ('$type' in v ? v.$type === undefined || is$type(v.$type, id, hash) : true) 67 + ) 68 + } 69 + 70 + export type Validator<R = unknown> = (v: unknown) => ValidationResult<R> 71 + export type ValidatorParam<V extends Validator> = 72 + V extends Validator<infer R> ? R : never 73 + 74 + /** 75 + * Utility function that allows to convert a "validate*" utility function into a 76 + * type predicate. 77 + */ 78 + export function asPredicate<V extends Validator>(validate: V) { 79 + return function <T>(v: T): v is T & ValidatorParam<V> { 80 + return validate(v).success 81 + } 82 + }
xrpc/index.ts viewserver/index.ts
xrpc/lexicons.ts viewserver/lexicons.ts
xrpc/lexicons/app/bsky/actor/defs.json indexserver/lexicons/app/bsky/actor/defs.json
xrpc/lexicons/app/bsky/actor/getPreferences.json viewserver/lexicons/app/bsky/actor/getPreferences.json
xrpc/lexicons/app/bsky/actor/getProfile.json indexserver/lexicons/app/bsky/actor/getProfile.json
xrpc/lexicons/app/bsky/actor/getProfiles.json indexserver/lexicons/app/bsky/actor/getProfiles.json
xrpc/lexicons/app/bsky/actor/getSuggestions.json viewserver/lexicons/app/bsky/actor/getSuggestions.json
xrpc/lexicons/app/bsky/actor/profile.json viewserver/lexicons/app/bsky/actor/profile.json
xrpc/lexicons/app/bsky/actor/putPreferences.json viewserver/lexicons/app/bsky/actor/putPreferences.json
xrpc/lexicons/app/bsky/actor/searchActors.json viewserver/lexicons/app/bsky/actor/searchActors.json
xrpc/lexicons/app/bsky/actor/searchActorsTypeahead.json viewserver/lexicons/app/bsky/actor/searchActorsTypeahead.json
xrpc/lexicons/app/bsky/actor/status.json viewserver/lexicons/app/bsky/actor/status.json
xrpc/lexicons/app/bsky/embed/defs.json indexserver/lexicons/app/bsky/embed/defs.json
xrpc/lexicons/app/bsky/embed/external.json indexserver/lexicons/app/bsky/embed/external.json
xrpc/lexicons/app/bsky/embed/images.json indexserver/lexicons/app/bsky/embed/images.json
xrpc/lexicons/app/bsky/embed/record.json indexserver/lexicons/app/bsky/embed/record.json
xrpc/lexicons/app/bsky/embed/recordWithMedia.json indexserver/lexicons/app/bsky/embed/recordWithMedia.json
xrpc/lexicons/app/bsky/embed/video.json indexserver/lexicons/app/bsky/embed/video.json
xrpc/lexicons/app/bsky/feed/defs.json indexserver/lexicons/app/bsky/feed/defs.json
xrpc/lexicons/app/bsky/feed/describeFeedGenerator.json viewserver/lexicons/app/bsky/feed/describeFeedGenerator.json
xrpc/lexicons/app/bsky/feed/generator.json viewserver/lexicons/app/bsky/feed/generator.json
xrpc/lexicons/app/bsky/feed/getActorFeeds.json indexserver/lexicons/app/bsky/feed/getActorFeeds.json
xrpc/lexicons/app/bsky/feed/getActorLikes.json viewserver/lexicons/app/bsky/feed/getActorLikes.json
xrpc/lexicons/app/bsky/feed/getAuthorFeed.json viewserver/lexicons/app/bsky/feed/getAuthorFeed.json
xrpc/lexicons/app/bsky/feed/getFeed.json viewserver/lexicons/app/bsky/feed/getFeed.json
xrpc/lexicons/app/bsky/feed/getFeedGenerator.json indexserver/lexicons/app/bsky/feed/getFeedGenerator.json
xrpc/lexicons/app/bsky/feed/getFeedGenerators.json indexserver/lexicons/app/bsky/feed/getFeedGenerators.json
xrpc/lexicons/app/bsky/feed/getFeedSkeleton.json viewserver/lexicons/app/bsky/feed/getFeedSkeleton.json
xrpc/lexicons/app/bsky/feed/getLikes.json viewserver/lexicons/app/bsky/feed/getLikes.json
xrpc/lexicons/app/bsky/feed/getListFeed.json viewserver/lexicons/app/bsky/feed/getListFeed.json
xrpc/lexicons/app/bsky/feed/getPostThread.json viewserver/lexicons/app/bsky/feed/getPostThread.json
xrpc/lexicons/app/bsky/feed/getPosts.json indexserver/lexicons/app/bsky/feed/getPosts.json
xrpc/lexicons/app/bsky/feed/getQuotes.json viewserver/lexicons/app/bsky/feed/getQuotes.json
xrpc/lexicons/app/bsky/feed/getRepostedBy.json viewserver/lexicons/app/bsky/feed/getRepostedBy.json
xrpc/lexicons/app/bsky/feed/getSuggestedFeeds.json viewserver/lexicons/app/bsky/feed/getSuggestedFeeds.json
xrpc/lexicons/app/bsky/feed/getTimeline.json viewserver/lexicons/app/bsky/feed/getTimeline.json
xrpc/lexicons/app/bsky/feed/like.json viewserver/lexicons/app/bsky/feed/like.json
xrpc/lexicons/app/bsky/feed/post.json viewserver/lexicons/app/bsky/feed/post.json
xrpc/lexicons/app/bsky/feed/postgate.json indexserver/lexicons/app/bsky/feed/postgate.json
xrpc/lexicons/app/bsky/feed/repost.json viewserver/lexicons/app/bsky/feed/repost.json
xrpc/lexicons/app/bsky/feed/searchPosts.json viewserver/lexicons/app/bsky/feed/searchPosts.json
xrpc/lexicons/app/bsky/feed/sendInteractions.json viewserver/lexicons/app/bsky/feed/sendInteractions.json
xrpc/lexicons/app/bsky/feed/threadgate.json indexserver/lexicons/app/bsky/feed/threadgate.json
xrpc/lexicons/app/bsky/graph/block.json viewserver/lexicons/app/bsky/graph/block.json
xrpc/lexicons/app/bsky/graph/defs.json indexserver/lexicons/app/bsky/graph/defs.json
xrpc/lexicons/app/bsky/graph/follow.json viewserver/lexicons/app/bsky/graph/follow.json
xrpc/lexicons/app/bsky/graph/getActorStarterPacks.json viewserver/lexicons/app/bsky/graph/getActorStarterPacks.json
xrpc/lexicons/app/bsky/graph/getBlocks.json viewserver/lexicons/app/bsky/graph/getBlocks.json
xrpc/lexicons/app/bsky/graph/getFollowers.json viewserver/lexicons/app/bsky/graph/getFollowers.json
xrpc/lexicons/app/bsky/graph/getFollows.json viewserver/lexicons/app/bsky/graph/getFollows.json
xrpc/lexicons/app/bsky/graph/getKnownFollowers.json viewserver/lexicons/app/bsky/graph/getKnownFollowers.json
xrpc/lexicons/app/bsky/graph/getList.json viewserver/lexicons/app/bsky/graph/getList.json
xrpc/lexicons/app/bsky/graph/getListBlocks.json viewserver/lexicons/app/bsky/graph/getListBlocks.json
xrpc/lexicons/app/bsky/graph/getListMutes.json viewserver/lexicons/app/bsky/graph/getListMutes.json
xrpc/lexicons/app/bsky/graph/getLists.json viewserver/lexicons/app/bsky/graph/getLists.json
xrpc/lexicons/app/bsky/graph/getListsWithMembership.json viewserver/lexicons/app/bsky/graph/getListsWithMembership.json
xrpc/lexicons/app/bsky/graph/getMutes.json viewserver/lexicons/app/bsky/graph/getMutes.json
xrpc/lexicons/app/bsky/graph/getRelationships.json viewserver/lexicons/app/bsky/graph/getRelationships.json
xrpc/lexicons/app/bsky/graph/getStarterPack.json viewserver/lexicons/app/bsky/graph/getStarterPack.json
xrpc/lexicons/app/bsky/graph/getStarterPacks.json viewserver/lexicons/app/bsky/graph/getStarterPacks.json
xrpc/lexicons/app/bsky/graph/getStarterPacksWithMembership.json viewserver/lexicons/app/bsky/graph/getStarterPacksWithMembership.json
xrpc/lexicons/app/bsky/graph/getSuggestedFollowsByActor.json viewserver/lexicons/app/bsky/graph/getSuggestedFollowsByActor.json
xrpc/lexicons/app/bsky/graph/list.json viewserver/lexicons/app/bsky/graph/list.json
xrpc/lexicons/app/bsky/graph/listblock.json viewserver/lexicons/app/bsky/graph/listblock.json
xrpc/lexicons/app/bsky/graph/listitem.json viewserver/lexicons/app/bsky/graph/listitem.json
xrpc/lexicons/app/bsky/graph/muteActor.json viewserver/lexicons/app/bsky/graph/muteActor.json
xrpc/lexicons/app/bsky/graph/muteActorList.json viewserver/lexicons/app/bsky/graph/muteActorList.json
xrpc/lexicons/app/bsky/graph/muteThread.json viewserver/lexicons/app/bsky/graph/muteThread.json
xrpc/lexicons/app/bsky/graph/searchStarterPacks.json viewserver/lexicons/app/bsky/graph/searchStarterPacks.json
xrpc/lexicons/app/bsky/graph/starterpack.json viewserver/lexicons/app/bsky/graph/starterpack.json
xrpc/lexicons/app/bsky/graph/unmuteActor.json viewserver/lexicons/app/bsky/graph/unmuteActor.json
xrpc/lexicons/app/bsky/graph/unmuteActorList.json viewserver/lexicons/app/bsky/graph/unmuteActorList.json
xrpc/lexicons/app/bsky/graph/unmuteThread.json viewserver/lexicons/app/bsky/graph/unmuteThread.json
xrpc/lexicons/app/bsky/graph/verification.json viewserver/lexicons/app/bsky/graph/verification.json
xrpc/lexicons/app/bsky/labeler/defs.json viewserver/lexicons/app/bsky/labeler/defs.json
xrpc/lexicons/app/bsky/labeler/getServices.json viewserver/lexicons/app/bsky/labeler/getServices.json
xrpc/lexicons/app/bsky/labeler/service.json viewserver/lexicons/app/bsky/labeler/service.json
xrpc/lexicons/app/bsky/notification/declaration.json viewserver/lexicons/app/bsky/notification/declaration.json
xrpc/lexicons/app/bsky/notification/defs.json viewserver/lexicons/app/bsky/notification/defs.json
xrpc/lexicons/app/bsky/notification/getPreferences.json viewserver/lexicons/app/bsky/notification/getPreferences.json
xrpc/lexicons/app/bsky/notification/getUnreadCount.json viewserver/lexicons/app/bsky/notification/getUnreadCount.json
xrpc/lexicons/app/bsky/notification/listActivitySubscriptions.json viewserver/lexicons/app/bsky/notification/listActivitySubscriptions.json
xrpc/lexicons/app/bsky/notification/listNotifications.json viewserver/lexicons/app/bsky/notification/listNotifications.json
xrpc/lexicons/app/bsky/notification/putActivitySubscription.json viewserver/lexicons/app/bsky/notification/putActivitySubscription.json
xrpc/lexicons/app/bsky/notification/putPreferences.json viewserver/lexicons/app/bsky/notification/putPreferences.json
xrpc/lexicons/app/bsky/notification/putPreferencesV2.json viewserver/lexicons/app/bsky/notification/putPreferencesV2.json
xrpc/lexicons/app/bsky/notification/registerPush.json viewserver/lexicons/app/bsky/notification/registerPush.json
xrpc/lexicons/app/bsky/notification/unregisterPush.json viewserver/lexicons/app/bsky/notification/unregisterPush.json
xrpc/lexicons/app/bsky/notification/updateSeen.json viewserver/lexicons/app/bsky/notification/updateSeen.json
xrpc/lexicons/app/bsky/richtext/facet.json viewserver/lexicons/app/bsky/richtext/facet.json
xrpc/lexicons/app/bsky/unspecced/defs.json viewserver/lexicons/app/bsky/unspecced/defs.json
xrpc/lexicons/app/bsky/unspecced/getAgeAssuranceState.json viewserver/lexicons/app/bsky/unspecced/getAgeAssuranceState.json
xrpc/lexicons/app/bsky/unspecced/getConfig.json viewserver/lexicons/app/bsky/unspecced/getConfig.json
xrpc/lexicons/app/bsky/unspecced/getPopularFeedGenerators.json viewserver/lexicons/app/bsky/unspecced/getPopularFeedGenerators.json
xrpc/lexicons/app/bsky/unspecced/getPostThreadOtherV2.json viewserver/lexicons/app/bsky/unspecced/getPostThreadOtherV2.json
xrpc/lexicons/app/bsky/unspecced/getPostThreadV2.json viewserver/lexicons/app/bsky/unspecced/getPostThreadV2.json
xrpc/lexicons/app/bsky/unspecced/getSuggestedFeeds.json viewserver/lexicons/app/bsky/unspecced/getSuggestedFeeds.json
xrpc/lexicons/app/bsky/unspecced/getSuggestedFeedsSkeleton.json viewserver/lexicons/app/bsky/unspecced/getSuggestedFeedsSkeleton.json
xrpc/lexicons/app/bsky/unspecced/getSuggestedStarterPacks.json viewserver/lexicons/app/bsky/unspecced/getSuggestedStarterPacks.json
xrpc/lexicons/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.json viewserver/lexicons/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.json
xrpc/lexicons/app/bsky/unspecced/getSuggestedUsers.json viewserver/lexicons/app/bsky/unspecced/getSuggestedUsers.json
xrpc/lexicons/app/bsky/unspecced/getSuggestedUsersSkeleton.json viewserver/lexicons/app/bsky/unspecced/getSuggestedUsersSkeleton.json
xrpc/lexicons/app/bsky/unspecced/getSuggestionsSkeleton.json viewserver/lexicons/app/bsky/unspecced/getSuggestionsSkeleton.json
xrpc/lexicons/app/bsky/unspecced/getTaggedSuggestions.json viewserver/lexicons/app/bsky/unspecced/getTaggedSuggestions.json
xrpc/lexicons/app/bsky/unspecced/getTrendingTopics.json viewserver/lexicons/app/bsky/unspecced/getTrendingTopics.json
xrpc/lexicons/app/bsky/unspecced/getTrends.json viewserver/lexicons/app/bsky/unspecced/getTrends.json
xrpc/lexicons/app/bsky/unspecced/getTrendsSkeleton.json viewserver/lexicons/app/bsky/unspecced/getTrendsSkeleton.json
xrpc/lexicons/app/bsky/unspecced/initAgeAssurance.json viewserver/lexicons/app/bsky/unspecced/initAgeAssurance.json
xrpc/lexicons/app/bsky/unspecced/searchActorsSkeleton.json viewserver/lexicons/app/bsky/unspecced/searchActorsSkeleton.json
xrpc/lexicons/app/bsky/unspecced/searchPostsSkeleton.json viewserver/lexicons/app/bsky/unspecced/searchPostsSkeleton.json
xrpc/lexicons/app/bsky/unspecced/searchStarterPacksSkeleton.json viewserver/lexicons/app/bsky/unspecced/searchStarterPacksSkeleton.json
xrpc/lexicons/app/bsky/video/defs.json viewserver/lexicons/app/bsky/video/defs.json
xrpc/lexicons/app/bsky/video/getJobStatus.json viewserver/lexicons/app/bsky/video/getJobStatus.json
xrpc/lexicons/app/bsky/video/getUploadLimits.json viewserver/lexicons/app/bsky/video/getUploadLimits.json
xrpc/lexicons/app/bsky/video/uploadVideo.json viewserver/lexicons/app/bsky/video/uploadVideo.json
xrpc/lexicons/chat/bsky/actor/declaration.json viewserver/lexicons/chat/bsky/actor/declaration.json
xrpc/lexicons/chat/bsky/actor/defs.json viewserver/lexicons/chat/bsky/actor/defs.json
xrpc/lexicons/chat/bsky/actor/deleteAccount.json viewserver/lexicons/chat/bsky/actor/deleteAccount.json
xrpc/lexicons/chat/bsky/actor/exportAccountData.json viewserver/lexicons/chat/bsky/actor/exportAccountData.json
xrpc/lexicons/chat/bsky/convo/acceptConvo.json viewserver/lexicons/chat/bsky/convo/acceptConvo.json
xrpc/lexicons/chat/bsky/convo/addReaction.json viewserver/lexicons/chat/bsky/convo/addReaction.json
xrpc/lexicons/chat/bsky/convo/defs.json viewserver/lexicons/chat/bsky/convo/defs.json
xrpc/lexicons/chat/bsky/convo/deleteMessageForSelf.json viewserver/lexicons/chat/bsky/convo/deleteMessageForSelf.json
xrpc/lexicons/chat/bsky/convo/getConvo.json viewserver/lexicons/chat/bsky/convo/getConvo.json
xrpc/lexicons/chat/bsky/convo/getConvoAvailability.json viewserver/lexicons/chat/bsky/convo/getConvoAvailability.json
xrpc/lexicons/chat/bsky/convo/getConvoForMembers.json viewserver/lexicons/chat/bsky/convo/getConvoForMembers.json
xrpc/lexicons/chat/bsky/convo/getLog.json viewserver/lexicons/chat/bsky/convo/getLog.json
xrpc/lexicons/chat/bsky/convo/getMessages.json viewserver/lexicons/chat/bsky/convo/getMessages.json
xrpc/lexicons/chat/bsky/convo/leaveConvo.json viewserver/lexicons/chat/bsky/convo/leaveConvo.json
xrpc/lexicons/chat/bsky/convo/listConvos.json viewserver/lexicons/chat/bsky/convo/listConvos.json
xrpc/lexicons/chat/bsky/convo/muteConvo.json viewserver/lexicons/chat/bsky/convo/muteConvo.json
xrpc/lexicons/chat/bsky/convo/removeReaction.json viewserver/lexicons/chat/bsky/convo/removeReaction.json
xrpc/lexicons/chat/bsky/convo/sendMessage.json viewserver/lexicons/chat/bsky/convo/sendMessage.json
xrpc/lexicons/chat/bsky/convo/sendMessageBatch.json viewserver/lexicons/chat/bsky/convo/sendMessageBatch.json
xrpc/lexicons/chat/bsky/convo/unmuteConvo.json viewserver/lexicons/chat/bsky/convo/unmuteConvo.json
xrpc/lexicons/chat/bsky/convo/updateAllRead.json viewserver/lexicons/chat/bsky/convo/updateAllRead.json
xrpc/lexicons/chat/bsky/convo/updateRead.json viewserver/lexicons/chat/bsky/convo/updateRead.json
xrpc/lexicons/chat/bsky/moderation/getActorMetadata.json viewserver/lexicons/chat/bsky/moderation/getActorMetadata.json
xrpc/lexicons/chat/bsky/moderation/getMessageContext.json viewserver/lexicons/chat/bsky/moderation/getMessageContext.json
xrpc/lexicons/chat/bsky/moderation/updateActorAccess.json viewserver/lexicons/chat/bsky/moderation/updateActorAccess.json
xrpc/lexicons/com/atproto/admin/defs.json viewserver/lexicons/com/atproto/admin/defs.json
xrpc/lexicons/com/atproto/admin/deleteAccount.json viewserver/lexicons/com/atproto/admin/deleteAccount.json
xrpc/lexicons/com/atproto/admin/disableAccountInvites.json viewserver/lexicons/com/atproto/admin/disableAccountInvites.json
xrpc/lexicons/com/atproto/admin/disableInviteCodes.json viewserver/lexicons/com/atproto/admin/disableInviteCodes.json
xrpc/lexicons/com/atproto/admin/enableAccountInvites.json viewserver/lexicons/com/atproto/admin/enableAccountInvites.json
xrpc/lexicons/com/atproto/admin/getAccountInfo.json viewserver/lexicons/com/atproto/admin/getAccountInfo.json
xrpc/lexicons/com/atproto/admin/getAccountInfos.json viewserver/lexicons/com/atproto/admin/getAccountInfos.json
xrpc/lexicons/com/atproto/admin/getInviteCodes.json viewserver/lexicons/com/atproto/admin/getInviteCodes.json
xrpc/lexicons/com/atproto/admin/getSubjectStatus.json viewserver/lexicons/com/atproto/admin/getSubjectStatus.json
xrpc/lexicons/com/atproto/admin/searchAccounts.json viewserver/lexicons/com/atproto/admin/searchAccounts.json
xrpc/lexicons/com/atproto/admin/sendEmail.json viewserver/lexicons/com/atproto/admin/sendEmail.json
xrpc/lexicons/com/atproto/admin/updateAccountEmail.json viewserver/lexicons/com/atproto/admin/updateAccountEmail.json
xrpc/lexicons/com/atproto/admin/updateAccountHandle.json viewserver/lexicons/com/atproto/admin/updateAccountHandle.json
xrpc/lexicons/com/atproto/admin/updateAccountPassword.json viewserver/lexicons/com/atproto/admin/updateAccountPassword.json
xrpc/lexicons/com/atproto/admin/updateAccountSigningKey.json viewserver/lexicons/com/atproto/admin/updateAccountSigningKey.json
xrpc/lexicons/com/atproto/admin/updateSubjectStatus.json viewserver/lexicons/com/atproto/admin/updateSubjectStatus.json
xrpc/lexicons/com/atproto/identity/defs.json viewserver/lexicons/com/atproto/identity/defs.json
xrpc/lexicons/com/atproto/identity/getRecommendedDidCredentials.json viewserver/lexicons/com/atproto/identity/getRecommendedDidCredentials.json
xrpc/lexicons/com/atproto/identity/refreshIdentity.json viewserver/lexicons/com/atproto/identity/refreshIdentity.json
xrpc/lexicons/com/atproto/identity/requestPlcOperationSignature.json viewserver/lexicons/com/atproto/identity/requestPlcOperationSignature.json
xrpc/lexicons/com/atproto/identity/resolveDid.json viewserver/lexicons/com/atproto/identity/resolveDid.json
xrpc/lexicons/com/atproto/identity/resolveHandle.json viewserver/lexicons/com/atproto/identity/resolveHandle.json
xrpc/lexicons/com/atproto/identity/resolveIdentity.json viewserver/lexicons/com/atproto/identity/resolveIdentity.json
xrpc/lexicons/com/atproto/identity/signPlcOperation.json viewserver/lexicons/com/atproto/identity/signPlcOperation.json
xrpc/lexicons/com/atproto/identity/submitPlcOperation.json viewserver/lexicons/com/atproto/identity/submitPlcOperation.json
xrpc/lexicons/com/atproto/identity/updateHandle.json viewserver/lexicons/com/atproto/identity/updateHandle.json
xrpc/lexicons/com/atproto/label/defs.json viewserver/lexicons/com/atproto/label/defs.json
xrpc/lexicons/com/atproto/label/queryLabels.json viewserver/lexicons/com/atproto/label/queryLabels.json
xrpc/lexicons/com/atproto/label/subscribeLabels.json viewserver/lexicons/com/atproto/label/subscribeLabels.json
xrpc/lexicons/com/atproto/lexicon/schema.json viewserver/lexicons/com/atproto/lexicon/schema.json
xrpc/lexicons/com/atproto/moderation/createReport.json viewserver/lexicons/com/atproto/moderation/createReport.json
xrpc/lexicons/com/atproto/moderation/defs.json viewserver/lexicons/com/atproto/moderation/defs.json
xrpc/lexicons/com/atproto/repo/applyWrites.json viewserver/lexicons/com/atproto/repo/applyWrites.json
xrpc/lexicons/com/atproto/repo/createRecord.json viewserver/lexicons/com/atproto/repo/createRecord.json
xrpc/lexicons/com/atproto/repo/defs.json viewserver/lexicons/com/atproto/repo/defs.json
xrpc/lexicons/com/atproto/repo/deleteRecord.json viewserver/lexicons/com/atproto/repo/deleteRecord.json
xrpc/lexicons/com/atproto/repo/describeRepo.json viewserver/lexicons/com/atproto/repo/describeRepo.json
xrpc/lexicons/com/atproto/repo/getRecord.json viewserver/lexicons/com/atproto/repo/getRecord.json
xrpc/lexicons/com/atproto/repo/importRepo.json viewserver/lexicons/com/atproto/repo/importRepo.json
xrpc/lexicons/com/atproto/repo/listMissingBlobs.json viewserver/lexicons/com/atproto/repo/listMissingBlobs.json
xrpc/lexicons/com/atproto/repo/listRecords.json viewserver/lexicons/com/atproto/repo/listRecords.json
xrpc/lexicons/com/atproto/repo/putRecord.json viewserver/lexicons/com/atproto/repo/putRecord.json
xrpc/lexicons/com/atproto/repo/strongRef.json viewserver/lexicons/com/atproto/repo/strongRef.json
xrpc/lexicons/com/atproto/repo/uploadBlob.json viewserver/lexicons/com/atproto/repo/uploadBlob.json
xrpc/lexicons/com/atproto/server/activateAccount.json viewserver/lexicons/com/atproto/server/activateAccount.json
xrpc/lexicons/com/atproto/server/checkAccountStatus.json viewserver/lexicons/com/atproto/server/checkAccountStatus.json
xrpc/lexicons/com/atproto/server/confirmEmail.json viewserver/lexicons/com/atproto/server/confirmEmail.json
xrpc/lexicons/com/atproto/server/createAccount.json viewserver/lexicons/com/atproto/server/createAccount.json
xrpc/lexicons/com/atproto/server/createAppPassword.json viewserver/lexicons/com/atproto/server/createAppPassword.json
xrpc/lexicons/com/atproto/server/createInviteCode.json viewserver/lexicons/com/atproto/server/createInviteCode.json
xrpc/lexicons/com/atproto/server/createInviteCodes.json viewserver/lexicons/com/atproto/server/createInviteCodes.json
xrpc/lexicons/com/atproto/server/createSession.json viewserver/lexicons/com/atproto/server/createSession.json
xrpc/lexicons/com/atproto/server/deactivateAccount.json viewserver/lexicons/com/atproto/server/deactivateAccount.json
xrpc/lexicons/com/atproto/server/defs.json viewserver/lexicons/com/atproto/server/defs.json
xrpc/lexicons/com/atproto/server/deleteAccount.json viewserver/lexicons/com/atproto/server/deleteAccount.json
xrpc/lexicons/com/atproto/server/deleteSession.json viewserver/lexicons/com/atproto/server/deleteSession.json
xrpc/lexicons/com/atproto/server/describeServer.json viewserver/lexicons/com/atproto/server/describeServer.json
xrpc/lexicons/com/atproto/server/getAccountInviteCodes.json viewserver/lexicons/com/atproto/server/getAccountInviteCodes.json
xrpc/lexicons/com/atproto/server/getServiceAuth.json viewserver/lexicons/com/atproto/server/getServiceAuth.json
xrpc/lexicons/com/atproto/server/getSession.json viewserver/lexicons/com/atproto/server/getSession.json
xrpc/lexicons/com/atproto/server/listAppPasswords.json viewserver/lexicons/com/atproto/server/listAppPasswords.json
xrpc/lexicons/com/atproto/server/refreshSession.json viewserver/lexicons/com/atproto/server/refreshSession.json
xrpc/lexicons/com/atproto/server/requestAccountDelete.json viewserver/lexicons/com/atproto/server/requestAccountDelete.json
xrpc/lexicons/com/atproto/server/requestEmailConfirmation.json viewserver/lexicons/com/atproto/server/requestEmailConfirmation.json
xrpc/lexicons/com/atproto/server/requestEmailUpdate.json viewserver/lexicons/com/atproto/server/requestEmailUpdate.json
xrpc/lexicons/com/atproto/server/requestPasswordReset.json viewserver/lexicons/com/atproto/server/requestPasswordReset.json
xrpc/lexicons/com/atproto/server/reserveSigningKey.json viewserver/lexicons/com/atproto/server/reserveSigningKey.json
xrpc/lexicons/com/atproto/server/resetPassword.json viewserver/lexicons/com/atproto/server/resetPassword.json
xrpc/lexicons/com/atproto/server/revokeAppPassword.json viewserver/lexicons/com/atproto/server/revokeAppPassword.json
xrpc/lexicons/com/atproto/server/updateEmail.json viewserver/lexicons/com/atproto/server/updateEmail.json
xrpc/lexicons/com/atproto/sync/defs.json viewserver/lexicons/com/atproto/sync/defs.json
xrpc/lexicons/com/atproto/sync/getBlob.json viewserver/lexicons/com/atproto/sync/getBlob.json
xrpc/lexicons/com/atproto/sync/getBlocks.json viewserver/lexicons/com/atproto/sync/getBlocks.json
xrpc/lexicons/com/atproto/sync/getCheckout.json viewserver/lexicons/com/atproto/sync/getCheckout.json
xrpc/lexicons/com/atproto/sync/getHead.json viewserver/lexicons/com/atproto/sync/getHead.json
xrpc/lexicons/com/atproto/sync/getHostStatus.json viewserver/lexicons/com/atproto/sync/getHostStatus.json
xrpc/lexicons/com/atproto/sync/getLatestCommit.json viewserver/lexicons/com/atproto/sync/getLatestCommit.json
xrpc/lexicons/com/atproto/sync/getRecord.json viewserver/lexicons/com/atproto/sync/getRecord.json
xrpc/lexicons/com/atproto/sync/getRepo.json viewserver/lexicons/com/atproto/sync/getRepo.json
xrpc/lexicons/com/atproto/sync/getRepoStatus.json viewserver/lexicons/com/atproto/sync/getRepoStatus.json
xrpc/lexicons/com/atproto/sync/listBlobs.json viewserver/lexicons/com/atproto/sync/listBlobs.json
xrpc/lexicons/com/atproto/sync/listHosts.json viewserver/lexicons/com/atproto/sync/listHosts.json
xrpc/lexicons/com/atproto/sync/listRepos.json viewserver/lexicons/com/atproto/sync/listRepos.json
xrpc/lexicons/com/atproto/sync/listReposByCollection.json viewserver/lexicons/com/atproto/sync/listReposByCollection.json
xrpc/lexicons/com/atproto/sync/notifyOfUpdate.json viewserver/lexicons/com/atproto/sync/notifyOfUpdate.json
xrpc/lexicons/com/atproto/sync/requestCrawl.json viewserver/lexicons/com/atproto/sync/requestCrawl.json
xrpc/lexicons/com/atproto/sync/subscribeRepos.json viewserver/lexicons/com/atproto/sync/subscribeRepos.json
xrpc/lexicons/com/atproto/temp/addReservedHandle.json viewserver/lexicons/com/atproto/temp/addReservedHandle.json
xrpc/lexicons/com/atproto/temp/checkHandleAvailability.json viewserver/lexicons/com/atproto/temp/checkHandleAvailability.json
xrpc/lexicons/com/atproto/temp/checkSignupQueue.json viewserver/lexicons/com/atproto/temp/checkSignupQueue.json
xrpc/lexicons/com/atproto/temp/fetchLabels.json viewserver/lexicons/com/atproto/temp/fetchLabels.json
xrpc/lexicons/com/atproto/temp/requestPhoneVerification.json viewserver/lexicons/com/atproto/temp/requestPhoneVerification.json
xrpc/lexicons/tools/ozone/communication/createTemplate.json viewserver/lexicons/tools/ozone/communication/createTemplate.json
xrpc/lexicons/tools/ozone/communication/defs.json viewserver/lexicons/tools/ozone/communication/defs.json
xrpc/lexicons/tools/ozone/communication/deleteTemplate.json viewserver/lexicons/tools/ozone/communication/deleteTemplate.json
xrpc/lexicons/tools/ozone/communication/listTemplates.json viewserver/lexicons/tools/ozone/communication/listTemplates.json
xrpc/lexicons/tools/ozone/communication/updateTemplate.json viewserver/lexicons/tools/ozone/communication/updateTemplate.json
xrpc/lexicons/tools/ozone/hosting/getAccountHistory.json viewserver/lexicons/tools/ozone/hosting/getAccountHistory.json
xrpc/lexicons/tools/ozone/moderation/defs.json viewserver/lexicons/tools/ozone/moderation/defs.json
xrpc/lexicons/tools/ozone/moderation/emitEvent.json viewserver/lexicons/tools/ozone/moderation/emitEvent.json
xrpc/lexicons/tools/ozone/moderation/getAccountTimeline.json viewserver/lexicons/tools/ozone/moderation/getAccountTimeline.json
xrpc/lexicons/tools/ozone/moderation/getEvent.json viewserver/lexicons/tools/ozone/moderation/getEvent.json
xrpc/lexicons/tools/ozone/moderation/getRecord.json viewserver/lexicons/tools/ozone/moderation/getRecord.json
xrpc/lexicons/tools/ozone/moderation/getRecords.json viewserver/lexicons/tools/ozone/moderation/getRecords.json
xrpc/lexicons/tools/ozone/moderation/getRepo.json viewserver/lexicons/tools/ozone/moderation/getRepo.json
xrpc/lexicons/tools/ozone/moderation/getReporterStats.json viewserver/lexicons/tools/ozone/moderation/getReporterStats.json
xrpc/lexicons/tools/ozone/moderation/getRepos.json viewserver/lexicons/tools/ozone/moderation/getRepos.json
xrpc/lexicons/tools/ozone/moderation/getSubjects.json viewserver/lexicons/tools/ozone/moderation/getSubjects.json
xrpc/lexicons/tools/ozone/moderation/queryEvents.json viewserver/lexicons/tools/ozone/moderation/queryEvents.json
xrpc/lexicons/tools/ozone/moderation/queryStatuses.json viewserver/lexicons/tools/ozone/moderation/queryStatuses.json
xrpc/lexicons/tools/ozone/moderation/searchRepos.json viewserver/lexicons/tools/ozone/moderation/searchRepos.json
xrpc/lexicons/tools/ozone/safelink/addRule.json viewserver/lexicons/tools/ozone/safelink/addRule.json
xrpc/lexicons/tools/ozone/safelink/defs.json viewserver/lexicons/tools/ozone/safelink/defs.json
xrpc/lexicons/tools/ozone/safelink/queryEvents.json viewserver/lexicons/tools/ozone/safelink/queryEvents.json
xrpc/lexicons/tools/ozone/safelink/queryRules.json viewserver/lexicons/tools/ozone/safelink/queryRules.json
xrpc/lexicons/tools/ozone/safelink/removeRule.json viewserver/lexicons/tools/ozone/safelink/removeRule.json
xrpc/lexicons/tools/ozone/safelink/updateRule.json viewserver/lexicons/tools/ozone/safelink/updateRule.json
xrpc/lexicons/tools/ozone/server/getConfig.json viewserver/lexicons/tools/ozone/server/getConfig.json
xrpc/lexicons/tools/ozone/set/addValues.json viewserver/lexicons/tools/ozone/set/addValues.json
xrpc/lexicons/tools/ozone/set/defs.json viewserver/lexicons/tools/ozone/set/defs.json
xrpc/lexicons/tools/ozone/set/deleteSet.json viewserver/lexicons/tools/ozone/set/deleteSet.json
xrpc/lexicons/tools/ozone/set/deleteValues.json viewserver/lexicons/tools/ozone/set/deleteValues.json
xrpc/lexicons/tools/ozone/set/getValues.json viewserver/lexicons/tools/ozone/set/getValues.json
xrpc/lexicons/tools/ozone/set/querySets.json viewserver/lexicons/tools/ozone/set/querySets.json
xrpc/lexicons/tools/ozone/set/upsertSet.json viewserver/lexicons/tools/ozone/set/upsertSet.json
xrpc/lexicons/tools/ozone/setting/defs.json viewserver/lexicons/tools/ozone/setting/defs.json
xrpc/lexicons/tools/ozone/setting/listOptions.json viewserver/lexicons/tools/ozone/setting/listOptions.json
xrpc/lexicons/tools/ozone/setting/removeOptions.json viewserver/lexicons/tools/ozone/setting/removeOptions.json
xrpc/lexicons/tools/ozone/setting/upsertOption.json viewserver/lexicons/tools/ozone/setting/upsertOption.json
xrpc/lexicons/tools/ozone/signature/defs.json viewserver/lexicons/tools/ozone/signature/defs.json
xrpc/lexicons/tools/ozone/signature/findCorrelation.json viewserver/lexicons/tools/ozone/signature/findCorrelation.json
xrpc/lexicons/tools/ozone/signature/findRelatedAccounts.json viewserver/lexicons/tools/ozone/signature/findRelatedAccounts.json
xrpc/lexicons/tools/ozone/signature/searchAccounts.json viewserver/lexicons/tools/ozone/signature/searchAccounts.json
xrpc/lexicons/tools/ozone/team/addMember.json viewserver/lexicons/tools/ozone/team/addMember.json
xrpc/lexicons/tools/ozone/team/defs.json viewserver/lexicons/tools/ozone/team/defs.json
xrpc/lexicons/tools/ozone/team/deleteMember.json viewserver/lexicons/tools/ozone/team/deleteMember.json
xrpc/lexicons/tools/ozone/team/listMembers.json viewserver/lexicons/tools/ozone/team/listMembers.json
xrpc/lexicons/tools/ozone/team/updateMember.json viewserver/lexicons/tools/ozone/team/updateMember.json
xrpc/lexicons/tools/ozone/verification/defs.json viewserver/lexicons/tools/ozone/verification/defs.json
xrpc/lexicons/tools/ozone/verification/grantVerifications.json viewserver/lexicons/tools/ozone/verification/grantVerifications.json
xrpc/lexicons/tools/ozone/verification/listVerifications.json viewserver/lexicons/tools/ozone/verification/listVerifications.json
xrpc/lexicons/tools/ozone/verification/revokeVerifications.json viewserver/lexicons/tools/ozone/verification/revokeVerifications.json
xrpc/types/app/bsky/actor/defs.ts viewserver/types/app/bsky/actor/defs.ts
xrpc/types/app/bsky/actor/getPreferences.ts viewserver/types/app/bsky/actor/getPreferences.ts
xrpc/types/app/bsky/actor/getProfile.ts viewserver/types/app/bsky/actor/getProfile.ts
xrpc/types/app/bsky/actor/getProfiles.ts viewserver/types/app/bsky/actor/getProfiles.ts
xrpc/types/app/bsky/actor/getSuggestions.ts viewserver/types/app/bsky/actor/getSuggestions.ts
xrpc/types/app/bsky/actor/profile.ts viewserver/types/app/bsky/actor/profile.ts
xrpc/types/app/bsky/actor/putPreferences.ts viewserver/types/app/bsky/actor/putPreferences.ts
xrpc/types/app/bsky/actor/searchActors.ts viewserver/types/app/bsky/actor/searchActors.ts
xrpc/types/app/bsky/actor/searchActorsTypeahead.ts viewserver/types/app/bsky/actor/searchActorsTypeahead.ts
xrpc/types/app/bsky/actor/status.ts viewserver/types/app/bsky/actor/status.ts
xrpc/types/app/bsky/embed/defs.ts viewserver/types/app/bsky/embed/defs.ts
xrpc/types/app/bsky/embed/external.ts viewserver/types/app/bsky/embed/external.ts
xrpc/types/app/bsky/embed/images.ts viewserver/types/app/bsky/embed/images.ts
xrpc/types/app/bsky/embed/record.ts viewserver/types/app/bsky/embed/record.ts
xrpc/types/app/bsky/embed/recordWithMedia.ts viewserver/types/app/bsky/embed/recordWithMedia.ts
xrpc/types/app/bsky/embed/video.ts viewserver/types/app/bsky/embed/video.ts
xrpc/types/app/bsky/feed/defs.ts indexserver/types/app/bsky/feed/defs.ts
xrpc/types/app/bsky/feed/describeFeedGenerator.ts viewserver/types/app/bsky/feed/describeFeedGenerator.ts
xrpc/types/app/bsky/feed/generator.ts viewserver/types/app/bsky/feed/generator.ts
xrpc/types/app/bsky/feed/getActorFeeds.ts indexserver/types/app/bsky/feed/getActorFeeds.ts
xrpc/types/app/bsky/feed/getActorLikes.ts viewserver/types/app/bsky/feed/getActorLikes.ts
xrpc/types/app/bsky/feed/getAuthorFeed.ts viewserver/types/app/bsky/feed/getAuthorFeed.ts
xrpc/types/app/bsky/feed/getFeed.ts viewserver/types/app/bsky/feed/getFeed.ts
xrpc/types/app/bsky/feed/getFeedGenerator.ts indexserver/types/app/bsky/feed/getFeedGenerator.ts
xrpc/types/app/bsky/feed/getFeedGenerators.ts indexserver/types/app/bsky/feed/getFeedGenerators.ts
xrpc/types/app/bsky/feed/getFeedSkeleton.ts viewserver/types/app/bsky/feed/getFeedSkeleton.ts
xrpc/types/app/bsky/feed/getLikes.ts viewserver/types/app/bsky/feed/getLikes.ts
xrpc/types/app/bsky/feed/getListFeed.ts viewserver/types/app/bsky/feed/getListFeed.ts
xrpc/types/app/bsky/feed/getPostThread.ts viewserver/types/app/bsky/feed/getPostThread.ts
xrpc/types/app/bsky/feed/getPosts.ts indexserver/types/app/bsky/feed/getPosts.ts
xrpc/types/app/bsky/feed/getQuotes.ts viewserver/types/app/bsky/feed/getQuotes.ts
xrpc/types/app/bsky/feed/getRepostedBy.ts viewserver/types/app/bsky/feed/getRepostedBy.ts
xrpc/types/app/bsky/feed/getSuggestedFeeds.ts viewserver/types/app/bsky/feed/getSuggestedFeeds.ts
xrpc/types/app/bsky/feed/getTimeline.ts viewserver/types/app/bsky/feed/getTimeline.ts
xrpc/types/app/bsky/feed/like.ts viewserver/types/app/bsky/feed/like.ts
xrpc/types/app/bsky/feed/post.ts viewserver/types/app/bsky/feed/post.ts
xrpc/types/app/bsky/feed/postgate.ts indexserver/types/app/bsky/feed/postgate.ts
xrpc/types/app/bsky/feed/repost.ts viewserver/types/app/bsky/feed/repost.ts
xrpc/types/app/bsky/feed/searchPosts.ts viewserver/types/app/bsky/feed/searchPosts.ts
xrpc/types/app/bsky/feed/sendInteractions.ts viewserver/types/app/bsky/feed/sendInteractions.ts
xrpc/types/app/bsky/feed/threadgate.ts indexserver/types/app/bsky/feed/threadgate.ts
xrpc/types/app/bsky/graph/block.ts viewserver/types/app/bsky/graph/block.ts
xrpc/types/app/bsky/graph/defs.ts viewserver/types/app/bsky/graph/defs.ts
xrpc/types/app/bsky/graph/follow.ts viewserver/types/app/bsky/graph/follow.ts
xrpc/types/app/bsky/graph/getActorStarterPacks.ts viewserver/types/app/bsky/graph/getActorStarterPacks.ts
xrpc/types/app/bsky/graph/getBlocks.ts viewserver/types/app/bsky/graph/getBlocks.ts
xrpc/types/app/bsky/graph/getFollowers.ts viewserver/types/app/bsky/graph/getFollowers.ts
xrpc/types/app/bsky/graph/getFollows.ts viewserver/types/app/bsky/graph/getFollows.ts
xrpc/types/app/bsky/graph/getKnownFollowers.ts viewserver/types/app/bsky/graph/getKnownFollowers.ts
xrpc/types/app/bsky/graph/getList.ts viewserver/types/app/bsky/graph/getList.ts
xrpc/types/app/bsky/graph/getListBlocks.ts viewserver/types/app/bsky/graph/getListBlocks.ts
xrpc/types/app/bsky/graph/getListMutes.ts viewserver/types/app/bsky/graph/getListMutes.ts
xrpc/types/app/bsky/graph/getLists.ts viewserver/types/app/bsky/graph/getLists.ts
xrpc/types/app/bsky/graph/getListsWithMembership.ts viewserver/types/app/bsky/graph/getListsWithMembership.ts
xrpc/types/app/bsky/graph/getMutes.ts viewserver/types/app/bsky/graph/getMutes.ts
xrpc/types/app/bsky/graph/getRelationships.ts viewserver/types/app/bsky/graph/getRelationships.ts
xrpc/types/app/bsky/graph/getStarterPack.ts viewserver/types/app/bsky/graph/getStarterPack.ts
xrpc/types/app/bsky/graph/getStarterPacks.ts viewserver/types/app/bsky/graph/getStarterPacks.ts
xrpc/types/app/bsky/graph/getStarterPacksWithMembership.ts viewserver/types/app/bsky/graph/getStarterPacksWithMembership.ts
xrpc/types/app/bsky/graph/getSuggestedFollowsByActor.ts viewserver/types/app/bsky/graph/getSuggestedFollowsByActor.ts
xrpc/types/app/bsky/graph/list.ts viewserver/types/app/bsky/graph/list.ts
xrpc/types/app/bsky/graph/listblock.ts viewserver/types/app/bsky/graph/listblock.ts
xrpc/types/app/bsky/graph/listitem.ts viewserver/types/app/bsky/graph/listitem.ts
xrpc/types/app/bsky/graph/muteActor.ts viewserver/types/app/bsky/graph/muteActor.ts
xrpc/types/app/bsky/graph/muteActorList.ts viewserver/types/app/bsky/graph/muteActorList.ts
xrpc/types/app/bsky/graph/muteThread.ts viewserver/types/app/bsky/graph/muteThread.ts
xrpc/types/app/bsky/graph/searchStarterPacks.ts viewserver/types/app/bsky/graph/searchStarterPacks.ts
xrpc/types/app/bsky/graph/starterpack.ts viewserver/types/app/bsky/graph/starterpack.ts
xrpc/types/app/bsky/graph/unmuteActor.ts viewserver/types/app/bsky/graph/unmuteActor.ts
xrpc/types/app/bsky/graph/unmuteActorList.ts viewserver/types/app/bsky/graph/unmuteActorList.ts
xrpc/types/app/bsky/graph/unmuteThread.ts viewserver/types/app/bsky/graph/unmuteThread.ts
xrpc/types/app/bsky/graph/verification.ts viewserver/types/app/bsky/graph/verification.ts
xrpc/types/app/bsky/labeler/defs.ts viewserver/types/app/bsky/labeler/defs.ts
xrpc/types/app/bsky/labeler/getServices.ts viewserver/types/app/bsky/labeler/getServices.ts
xrpc/types/app/bsky/labeler/service.ts viewserver/types/app/bsky/labeler/service.ts
xrpc/types/app/bsky/notification/declaration.ts viewserver/types/app/bsky/notification/declaration.ts
xrpc/types/app/bsky/notification/defs.ts indexserver/types/app/bsky/notification/defs.ts
xrpc/types/app/bsky/notification/getPreferences.ts viewserver/types/app/bsky/notification/getPreferences.ts
xrpc/types/app/bsky/notification/getUnreadCount.ts viewserver/types/app/bsky/notification/getUnreadCount.ts
xrpc/types/app/bsky/notification/listActivitySubscriptions.ts viewserver/types/app/bsky/notification/listActivitySubscriptions.ts
xrpc/types/app/bsky/notification/listNotifications.ts viewserver/types/app/bsky/notification/listNotifications.ts
xrpc/types/app/bsky/notification/putActivitySubscription.ts viewserver/types/app/bsky/notification/putActivitySubscription.ts
xrpc/types/app/bsky/notification/putPreferences.ts viewserver/types/app/bsky/notification/putPreferences.ts
xrpc/types/app/bsky/notification/putPreferencesV2.ts viewserver/types/app/bsky/notification/putPreferencesV2.ts
xrpc/types/app/bsky/notification/registerPush.ts viewserver/types/app/bsky/notification/registerPush.ts
xrpc/types/app/bsky/notification/unregisterPush.ts viewserver/types/app/bsky/notification/unregisterPush.ts
xrpc/types/app/bsky/notification/updateSeen.ts viewserver/types/app/bsky/notification/updateSeen.ts
xrpc/types/app/bsky/richtext/facet.ts indexserver/types/app/bsky/richtext/facet.ts
xrpc/types/app/bsky/unspecced/defs.ts viewserver/types/app/bsky/unspecced/defs.ts
xrpc/types/app/bsky/unspecced/getAgeAssuranceState.ts viewserver/types/app/bsky/unspecced/getAgeAssuranceState.ts
xrpc/types/app/bsky/unspecced/getConfig.ts viewserver/types/app/bsky/unspecced/getConfig.ts
xrpc/types/app/bsky/unspecced/getPopularFeedGenerators.ts viewserver/types/app/bsky/unspecced/getPopularFeedGenerators.ts
xrpc/types/app/bsky/unspecced/getPostThreadOtherV2.ts viewserver/types/app/bsky/unspecced/getPostThreadOtherV2.ts
xrpc/types/app/bsky/unspecced/getPostThreadV2.ts viewserver/types/app/bsky/unspecced/getPostThreadV2.ts
xrpc/types/app/bsky/unspecced/getSuggestedFeeds.ts viewserver/types/app/bsky/unspecced/getSuggestedFeeds.ts
xrpc/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.ts viewserver/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.ts
xrpc/types/app/bsky/unspecced/getSuggestedStarterPacks.ts viewserver/types/app/bsky/unspecced/getSuggestedStarterPacks.ts
xrpc/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts viewserver/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts
xrpc/types/app/bsky/unspecced/getSuggestedUsers.ts viewserver/types/app/bsky/unspecced/getSuggestedUsers.ts
xrpc/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts viewserver/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts
xrpc/types/app/bsky/unspecced/getSuggestionsSkeleton.ts viewserver/types/app/bsky/unspecced/getSuggestionsSkeleton.ts
xrpc/types/app/bsky/unspecced/getTaggedSuggestions.ts viewserver/types/app/bsky/unspecced/getTaggedSuggestions.ts
xrpc/types/app/bsky/unspecced/getTrendingTopics.ts viewserver/types/app/bsky/unspecced/getTrendingTopics.ts
xrpc/types/app/bsky/unspecced/getTrends.ts viewserver/types/app/bsky/unspecced/getTrends.ts
xrpc/types/app/bsky/unspecced/getTrendsSkeleton.ts viewserver/types/app/bsky/unspecced/getTrendsSkeleton.ts
xrpc/types/app/bsky/unspecced/initAgeAssurance.ts viewserver/types/app/bsky/unspecced/initAgeAssurance.ts
xrpc/types/app/bsky/unspecced/searchActorsSkeleton.ts viewserver/types/app/bsky/unspecced/searchActorsSkeleton.ts
xrpc/types/app/bsky/unspecced/searchPostsSkeleton.ts viewserver/types/app/bsky/unspecced/searchPostsSkeleton.ts
xrpc/types/app/bsky/unspecced/searchStarterPacksSkeleton.ts viewserver/types/app/bsky/unspecced/searchStarterPacksSkeleton.ts
xrpc/types/app/bsky/video/defs.ts viewserver/types/app/bsky/video/defs.ts
xrpc/types/app/bsky/video/getJobStatus.ts viewserver/types/app/bsky/video/getJobStatus.ts
xrpc/types/app/bsky/video/getUploadLimits.ts viewserver/types/app/bsky/video/getUploadLimits.ts
xrpc/types/app/bsky/video/uploadVideo.ts viewserver/types/app/bsky/video/uploadVideo.ts
xrpc/types/chat/bsky/actor/declaration.ts viewserver/types/chat/bsky/actor/declaration.ts
xrpc/types/chat/bsky/actor/defs.ts viewserver/types/chat/bsky/actor/defs.ts
xrpc/types/chat/bsky/actor/deleteAccount.ts viewserver/types/chat/bsky/actor/deleteAccount.ts
xrpc/types/chat/bsky/actor/exportAccountData.ts viewserver/types/chat/bsky/actor/exportAccountData.ts
xrpc/types/chat/bsky/convo/acceptConvo.ts viewserver/types/chat/bsky/convo/acceptConvo.ts
xrpc/types/chat/bsky/convo/addReaction.ts viewserver/types/chat/bsky/convo/addReaction.ts
xrpc/types/chat/bsky/convo/defs.ts viewserver/types/chat/bsky/convo/defs.ts
xrpc/types/chat/bsky/convo/deleteMessageForSelf.ts viewserver/types/chat/bsky/convo/deleteMessageForSelf.ts
xrpc/types/chat/bsky/convo/getConvo.ts viewserver/types/chat/bsky/convo/getConvo.ts
xrpc/types/chat/bsky/convo/getConvoAvailability.ts viewserver/types/chat/bsky/convo/getConvoAvailability.ts
xrpc/types/chat/bsky/convo/getConvoForMembers.ts viewserver/types/chat/bsky/convo/getConvoForMembers.ts
xrpc/types/chat/bsky/convo/getLog.ts viewserver/types/chat/bsky/convo/getLog.ts
xrpc/types/chat/bsky/convo/getMessages.ts viewserver/types/chat/bsky/convo/getMessages.ts
xrpc/types/chat/bsky/convo/leaveConvo.ts viewserver/types/chat/bsky/convo/leaveConvo.ts
xrpc/types/chat/bsky/convo/listConvos.ts viewserver/types/chat/bsky/convo/listConvos.ts
xrpc/types/chat/bsky/convo/muteConvo.ts viewserver/types/chat/bsky/convo/muteConvo.ts
xrpc/types/chat/bsky/convo/removeReaction.ts viewserver/types/chat/bsky/convo/removeReaction.ts
xrpc/types/chat/bsky/convo/sendMessage.ts viewserver/types/chat/bsky/convo/sendMessage.ts
xrpc/types/chat/bsky/convo/sendMessageBatch.ts viewserver/types/chat/bsky/convo/sendMessageBatch.ts
xrpc/types/chat/bsky/convo/unmuteConvo.ts viewserver/types/chat/bsky/convo/unmuteConvo.ts
xrpc/types/chat/bsky/convo/updateAllRead.ts viewserver/types/chat/bsky/convo/updateAllRead.ts
xrpc/types/chat/bsky/convo/updateRead.ts viewserver/types/chat/bsky/convo/updateRead.ts
xrpc/types/chat/bsky/moderation/getActorMetadata.ts viewserver/types/chat/bsky/moderation/getActorMetadata.ts
xrpc/types/chat/bsky/moderation/getMessageContext.ts viewserver/types/chat/bsky/moderation/getMessageContext.ts
xrpc/types/chat/bsky/moderation/updateActorAccess.ts viewserver/types/chat/bsky/moderation/updateActorAccess.ts
xrpc/types/com/atproto/admin/defs.ts viewserver/types/com/atproto/admin/defs.ts
xrpc/types/com/atproto/admin/deleteAccount.ts viewserver/types/com/atproto/admin/deleteAccount.ts
xrpc/types/com/atproto/admin/disableAccountInvites.ts viewserver/types/com/atproto/admin/disableAccountInvites.ts
xrpc/types/com/atproto/admin/disableInviteCodes.ts viewserver/types/com/atproto/admin/disableInviteCodes.ts
xrpc/types/com/atproto/admin/enableAccountInvites.ts viewserver/types/com/atproto/admin/enableAccountInvites.ts
xrpc/types/com/atproto/admin/getAccountInfo.ts viewserver/types/com/atproto/admin/getAccountInfo.ts
xrpc/types/com/atproto/admin/getAccountInfos.ts viewserver/types/com/atproto/admin/getAccountInfos.ts
xrpc/types/com/atproto/admin/getInviteCodes.ts viewserver/types/com/atproto/admin/getInviteCodes.ts
xrpc/types/com/atproto/admin/getSubjectStatus.ts viewserver/types/com/atproto/admin/getSubjectStatus.ts
xrpc/types/com/atproto/admin/searchAccounts.ts viewserver/types/com/atproto/admin/searchAccounts.ts
xrpc/types/com/atproto/admin/sendEmail.ts viewserver/types/com/atproto/admin/sendEmail.ts
xrpc/types/com/atproto/admin/updateAccountEmail.ts viewserver/types/com/atproto/admin/updateAccountEmail.ts
xrpc/types/com/atproto/admin/updateAccountHandle.ts viewserver/types/com/atproto/admin/updateAccountHandle.ts
xrpc/types/com/atproto/admin/updateAccountPassword.ts viewserver/types/com/atproto/admin/updateAccountPassword.ts
xrpc/types/com/atproto/admin/updateAccountSigningKey.ts viewserver/types/com/atproto/admin/updateAccountSigningKey.ts
xrpc/types/com/atproto/admin/updateSubjectStatus.ts viewserver/types/com/atproto/admin/updateSubjectStatus.ts
xrpc/types/com/atproto/identity/defs.ts viewserver/types/com/atproto/identity/defs.ts
xrpc/types/com/atproto/identity/getRecommendedDidCredentials.ts viewserver/types/com/atproto/identity/getRecommendedDidCredentials.ts
xrpc/types/com/atproto/identity/refreshIdentity.ts viewserver/types/com/atproto/identity/refreshIdentity.ts
xrpc/types/com/atproto/identity/requestPlcOperationSignature.ts viewserver/types/com/atproto/identity/requestPlcOperationSignature.ts
xrpc/types/com/atproto/identity/resolveDid.ts viewserver/types/com/atproto/identity/resolveDid.ts
xrpc/types/com/atproto/identity/resolveHandle.ts viewserver/types/com/atproto/identity/resolveHandle.ts
xrpc/types/com/atproto/identity/resolveIdentity.ts viewserver/types/com/atproto/identity/resolveIdentity.ts
xrpc/types/com/atproto/identity/signPlcOperation.ts viewserver/types/com/atproto/identity/signPlcOperation.ts
xrpc/types/com/atproto/identity/submitPlcOperation.ts viewserver/types/com/atproto/identity/submitPlcOperation.ts
xrpc/types/com/atproto/identity/updateHandle.ts viewserver/types/com/atproto/identity/updateHandle.ts
xrpc/types/com/atproto/label/defs.ts indexserver/types/com/atproto/label/defs.ts
xrpc/types/com/atproto/label/queryLabels.ts viewserver/types/com/atproto/label/queryLabels.ts
xrpc/types/com/atproto/label/subscribeLabels.ts viewserver/types/com/atproto/label/subscribeLabels.ts
xrpc/types/com/atproto/lexicon/schema.ts viewserver/types/com/atproto/lexicon/schema.ts
xrpc/types/com/atproto/moderation/createReport.ts viewserver/types/com/atproto/moderation/createReport.ts
xrpc/types/com/atproto/moderation/defs.ts viewserver/types/com/atproto/moderation/defs.ts
xrpc/types/com/atproto/repo/applyWrites.ts viewserver/types/com/atproto/repo/applyWrites.ts
xrpc/types/com/atproto/repo/createRecord.ts viewserver/types/com/atproto/repo/createRecord.ts
xrpc/types/com/atproto/repo/defs.ts viewserver/types/com/atproto/repo/defs.ts
xrpc/types/com/atproto/repo/deleteRecord.ts viewserver/types/com/atproto/repo/deleteRecord.ts
xrpc/types/com/atproto/repo/describeRepo.ts viewserver/types/com/atproto/repo/describeRepo.ts
xrpc/types/com/atproto/repo/getRecord.ts viewserver/types/com/atproto/repo/getRecord.ts
xrpc/types/com/atproto/repo/importRepo.ts viewserver/types/com/atproto/repo/importRepo.ts
xrpc/types/com/atproto/repo/listMissingBlobs.ts viewserver/types/com/atproto/repo/listMissingBlobs.ts
xrpc/types/com/atproto/repo/listRecords.ts viewserver/types/com/atproto/repo/listRecords.ts
xrpc/types/com/atproto/repo/putRecord.ts viewserver/types/com/atproto/repo/putRecord.ts
xrpc/types/com/atproto/repo/strongRef.ts indexserver/types/com/atproto/repo/strongRef.ts
xrpc/types/com/atproto/repo/uploadBlob.ts viewserver/types/com/atproto/repo/uploadBlob.ts
xrpc/types/com/atproto/server/activateAccount.ts viewserver/types/com/atproto/server/activateAccount.ts
xrpc/types/com/atproto/server/checkAccountStatus.ts viewserver/types/com/atproto/server/checkAccountStatus.ts
xrpc/types/com/atproto/server/confirmEmail.ts viewserver/types/com/atproto/server/confirmEmail.ts
xrpc/types/com/atproto/server/createAccount.ts viewserver/types/com/atproto/server/createAccount.ts
xrpc/types/com/atproto/server/createAppPassword.ts viewserver/types/com/atproto/server/createAppPassword.ts
xrpc/types/com/atproto/server/createInviteCode.ts viewserver/types/com/atproto/server/createInviteCode.ts
xrpc/types/com/atproto/server/createInviteCodes.ts viewserver/types/com/atproto/server/createInviteCodes.ts
xrpc/types/com/atproto/server/createSession.ts viewserver/types/com/atproto/server/createSession.ts
xrpc/types/com/atproto/server/deactivateAccount.ts viewserver/types/com/atproto/server/deactivateAccount.ts
xrpc/types/com/atproto/server/defs.ts viewserver/types/com/atproto/server/defs.ts
xrpc/types/com/atproto/server/deleteAccount.ts viewserver/types/com/atproto/server/deleteAccount.ts
xrpc/types/com/atproto/server/deleteSession.ts viewserver/types/com/atproto/server/deleteSession.ts
xrpc/types/com/atproto/server/describeServer.ts viewserver/types/com/atproto/server/describeServer.ts
xrpc/types/com/atproto/server/getAccountInviteCodes.ts viewserver/types/com/atproto/server/getAccountInviteCodes.ts
xrpc/types/com/atproto/server/getServiceAuth.ts viewserver/types/com/atproto/server/getServiceAuth.ts
xrpc/types/com/atproto/server/getSession.ts viewserver/types/com/atproto/server/getSession.ts
xrpc/types/com/atproto/server/listAppPasswords.ts viewserver/types/com/atproto/server/listAppPasswords.ts
xrpc/types/com/atproto/server/refreshSession.ts viewserver/types/com/atproto/server/refreshSession.ts
xrpc/types/com/atproto/server/requestAccountDelete.ts viewserver/types/com/atproto/server/requestAccountDelete.ts
xrpc/types/com/atproto/server/requestEmailConfirmation.ts viewserver/types/com/atproto/server/requestEmailConfirmation.ts
xrpc/types/com/atproto/server/requestEmailUpdate.ts viewserver/types/com/atproto/server/requestEmailUpdate.ts
xrpc/types/com/atproto/server/requestPasswordReset.ts viewserver/types/com/atproto/server/requestPasswordReset.ts
xrpc/types/com/atproto/server/reserveSigningKey.ts viewserver/types/com/atproto/server/reserveSigningKey.ts
xrpc/types/com/atproto/server/resetPassword.ts viewserver/types/com/atproto/server/resetPassword.ts
xrpc/types/com/atproto/server/revokeAppPassword.ts viewserver/types/com/atproto/server/revokeAppPassword.ts
xrpc/types/com/atproto/server/updateEmail.ts viewserver/types/com/atproto/server/updateEmail.ts
xrpc/types/com/atproto/sync/defs.ts viewserver/types/com/atproto/sync/defs.ts
xrpc/types/com/atproto/sync/getBlob.ts viewserver/types/com/atproto/sync/getBlob.ts
xrpc/types/com/atproto/sync/getBlocks.ts viewserver/types/com/atproto/sync/getBlocks.ts
xrpc/types/com/atproto/sync/getCheckout.ts viewserver/types/com/atproto/sync/getCheckout.ts
xrpc/types/com/atproto/sync/getHead.ts viewserver/types/com/atproto/sync/getHead.ts
xrpc/types/com/atproto/sync/getHostStatus.ts viewserver/types/com/atproto/sync/getHostStatus.ts
xrpc/types/com/atproto/sync/getLatestCommit.ts viewserver/types/com/atproto/sync/getLatestCommit.ts
xrpc/types/com/atproto/sync/getRecord.ts viewserver/types/com/atproto/sync/getRecord.ts
xrpc/types/com/atproto/sync/getRepo.ts viewserver/types/com/atproto/sync/getRepo.ts
xrpc/types/com/atproto/sync/getRepoStatus.ts viewserver/types/com/atproto/sync/getRepoStatus.ts
xrpc/types/com/atproto/sync/listBlobs.ts viewserver/types/com/atproto/sync/listBlobs.ts
xrpc/types/com/atproto/sync/listHosts.ts viewserver/types/com/atproto/sync/listHosts.ts
xrpc/types/com/atproto/sync/listRepos.ts viewserver/types/com/atproto/sync/listRepos.ts
xrpc/types/com/atproto/sync/listReposByCollection.ts viewserver/types/com/atproto/sync/listReposByCollection.ts
xrpc/types/com/atproto/sync/notifyOfUpdate.ts viewserver/types/com/atproto/sync/notifyOfUpdate.ts
xrpc/types/com/atproto/sync/requestCrawl.ts viewserver/types/com/atproto/sync/requestCrawl.ts
xrpc/types/com/atproto/sync/subscribeRepos.ts viewserver/types/com/atproto/sync/subscribeRepos.ts
xrpc/types/com/atproto/temp/addReservedHandle.ts viewserver/types/com/atproto/temp/addReservedHandle.ts
xrpc/types/com/atproto/temp/checkHandleAvailability.ts viewserver/types/com/atproto/temp/checkHandleAvailability.ts
xrpc/types/com/atproto/temp/checkSignupQueue.ts viewserver/types/com/atproto/temp/checkSignupQueue.ts
xrpc/types/com/atproto/temp/fetchLabels.ts viewserver/types/com/atproto/temp/fetchLabels.ts
xrpc/types/com/atproto/temp/requestPhoneVerification.ts viewserver/types/com/atproto/temp/requestPhoneVerification.ts
xrpc/types/tools/ozone/communication/createTemplate.ts viewserver/types/tools/ozone/communication/createTemplate.ts
xrpc/types/tools/ozone/communication/defs.ts viewserver/types/tools/ozone/communication/defs.ts
xrpc/types/tools/ozone/communication/deleteTemplate.ts viewserver/types/tools/ozone/communication/deleteTemplate.ts
xrpc/types/tools/ozone/communication/listTemplates.ts viewserver/types/tools/ozone/communication/listTemplates.ts
xrpc/types/tools/ozone/communication/updateTemplate.ts viewserver/types/tools/ozone/communication/updateTemplate.ts
xrpc/types/tools/ozone/hosting/getAccountHistory.ts viewserver/types/tools/ozone/hosting/getAccountHistory.ts
xrpc/types/tools/ozone/moderation/defs.ts viewserver/types/tools/ozone/moderation/defs.ts
xrpc/types/tools/ozone/moderation/emitEvent.ts viewserver/types/tools/ozone/moderation/emitEvent.ts
xrpc/types/tools/ozone/moderation/getAccountTimeline.ts viewserver/types/tools/ozone/moderation/getAccountTimeline.ts
xrpc/types/tools/ozone/moderation/getEvent.ts viewserver/types/tools/ozone/moderation/getEvent.ts
xrpc/types/tools/ozone/moderation/getRecord.ts viewserver/types/tools/ozone/moderation/getRecord.ts
xrpc/types/tools/ozone/moderation/getRecords.ts viewserver/types/tools/ozone/moderation/getRecords.ts
xrpc/types/tools/ozone/moderation/getRepo.ts viewserver/types/tools/ozone/moderation/getRepo.ts
xrpc/types/tools/ozone/moderation/getReporterStats.ts viewserver/types/tools/ozone/moderation/getReporterStats.ts
xrpc/types/tools/ozone/moderation/getRepos.ts viewserver/types/tools/ozone/moderation/getRepos.ts
xrpc/types/tools/ozone/moderation/getSubjects.ts viewserver/types/tools/ozone/moderation/getSubjects.ts
xrpc/types/tools/ozone/moderation/queryEvents.ts viewserver/types/tools/ozone/moderation/queryEvents.ts
xrpc/types/tools/ozone/moderation/queryStatuses.ts viewserver/types/tools/ozone/moderation/queryStatuses.ts
xrpc/types/tools/ozone/moderation/searchRepos.ts viewserver/types/tools/ozone/moderation/searchRepos.ts
xrpc/types/tools/ozone/safelink/addRule.ts viewserver/types/tools/ozone/safelink/addRule.ts
xrpc/types/tools/ozone/safelink/defs.ts viewserver/types/tools/ozone/safelink/defs.ts
xrpc/types/tools/ozone/safelink/queryEvents.ts viewserver/types/tools/ozone/safelink/queryEvents.ts
xrpc/types/tools/ozone/safelink/queryRules.ts viewserver/types/tools/ozone/safelink/queryRules.ts
xrpc/types/tools/ozone/safelink/removeRule.ts viewserver/types/tools/ozone/safelink/removeRule.ts
xrpc/types/tools/ozone/safelink/updateRule.ts viewserver/types/tools/ozone/safelink/updateRule.ts
xrpc/types/tools/ozone/server/getConfig.ts viewserver/types/tools/ozone/server/getConfig.ts
xrpc/types/tools/ozone/set/addValues.ts viewserver/types/tools/ozone/set/addValues.ts
xrpc/types/tools/ozone/set/defs.ts viewserver/types/tools/ozone/set/defs.ts
xrpc/types/tools/ozone/set/deleteSet.ts viewserver/types/tools/ozone/set/deleteSet.ts
xrpc/types/tools/ozone/set/deleteValues.ts viewserver/types/tools/ozone/set/deleteValues.ts
xrpc/types/tools/ozone/set/getValues.ts viewserver/types/tools/ozone/set/getValues.ts
xrpc/types/tools/ozone/set/querySets.ts viewserver/types/tools/ozone/set/querySets.ts
xrpc/types/tools/ozone/set/upsertSet.ts viewserver/types/tools/ozone/set/upsertSet.ts
xrpc/types/tools/ozone/setting/defs.ts viewserver/types/tools/ozone/setting/defs.ts
xrpc/types/tools/ozone/setting/listOptions.ts viewserver/types/tools/ozone/setting/listOptions.ts
xrpc/types/tools/ozone/setting/removeOptions.ts viewserver/types/tools/ozone/setting/removeOptions.ts
xrpc/types/tools/ozone/setting/upsertOption.ts viewserver/types/tools/ozone/setting/upsertOption.ts
xrpc/types/tools/ozone/signature/defs.ts viewserver/types/tools/ozone/signature/defs.ts
xrpc/types/tools/ozone/signature/findCorrelation.ts viewserver/types/tools/ozone/signature/findCorrelation.ts
xrpc/types/tools/ozone/signature/findRelatedAccounts.ts viewserver/types/tools/ozone/signature/findRelatedAccounts.ts
xrpc/types/tools/ozone/signature/searchAccounts.ts viewserver/types/tools/ozone/signature/searchAccounts.ts
xrpc/types/tools/ozone/team/addMember.ts viewserver/types/tools/ozone/team/addMember.ts
xrpc/types/tools/ozone/team/defs.ts viewserver/types/tools/ozone/team/defs.ts
xrpc/types/tools/ozone/team/deleteMember.ts viewserver/types/tools/ozone/team/deleteMember.ts
xrpc/types/tools/ozone/team/listMembers.ts viewserver/types/tools/ozone/team/listMembers.ts
xrpc/types/tools/ozone/team/updateMember.ts viewserver/types/tools/ozone/team/updateMember.ts
xrpc/types/tools/ozone/verification/defs.ts viewserver/types/tools/ozone/verification/defs.ts
xrpc/types/tools/ozone/verification/grantVerifications.ts viewserver/types/tools/ozone/verification/grantVerifications.ts
xrpc/types/tools/ozone/verification/listVerifications.ts viewserver/types/tools/ozone/verification/listVerifications.ts
xrpc/types/tools/ozone/verification/revokeVerifications.ts viewserver/types/tools/ozone/verification/revokeVerifications.ts
xrpc/util.ts indexserver/util.ts