+8
.env
+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
-1
deno.json
+8
deno.lock
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+16
utils/dbsetup.ts
···
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
+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
utils/indexserver.ts
This is a binary file and will not be displayed.
+2
-2
utils/sharders.ts
+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
+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
-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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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/index.ts
viewserver/index.ts
xrpc/lexicons.ts
viewserver/lexicons.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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/listVerifications.json
viewserver/lexicons/tools/ozone/verification/listVerifications.json
xrpc/lexicons/tools/ozone/verification/revokeVerifications.json
viewserver/lexicons/tools/ozone/verification/revokeVerifications.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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/listVerifications.ts
viewserver/types/tools/ozone/verification/listVerifications.ts
xrpc/types/tools/ozone/verification/revokeVerifications.ts
viewserver/types/tools/ozone/verification/revokeVerifications.ts
xrpc/types/tools/ozone/verification/revokeVerifications.ts
viewserver/types/tools/ozone/verification/revokeVerifications.ts
xrpc/util.ts
indexserver/util.ts
xrpc/util.ts
indexserver/util.ts