Compare commits

...

10 Commits

Author SHA1 Message Date
devin ivy
9a887dd8f2
Merge pull request #97 from bluesky-social/bound-service-auth
Update usage of xrpc-server to check bound service auth
2024-08-13 12:48:16 -04:00
dholms
33116e3ceb update usage of xrpc-server to check bound service auth 2024-08-05 17:25:14 -05:00
Daniel Holmgren
3e3f846a9c
simplify db schema + pagination (#94) 2024-07-08 12:59:26 -05:00
L-tan
12073636c7
Switch subscription endpoint (#69)
* Switch subscription endpoint

* Switch on fallback default value
2023-11-21 10:17:40 -06:00
Jaz
f1e9010a9a
Merge pull request #66 from Bossett/patch-1
Remove agent.api.app.bsky.feed.describeFeedGenerator
2023-09-30 14:44:00 -07:00
Bossett
871febdfec
Remove agent.api.app.bsky.feed.describeFeedGenerator
This call appears to just be a gate to stop people publishing custom feeds before the feature was released.

Removed, and publishing appears to have no ill effect. Addresses #65
2023-10-01 08:16:47 +11:00
bnewbold
364865af58
Merge pull request #64 from bluesky-social/bnewbold/deps
update `@atproto/*` package deps to current
2023-09-29 10:13:55 -07:00
bryan newbold
7ea9699b49 update all Lexicons from atproto repo 2023-09-28 17:11:53 -07:00
bryan newbold
64162fa136 fix basic build errors from deps bump 2023-09-28 17:09:15 -07:00
bryan newbold
b9b7462c4f yarn: bump @atproto/* deps 2023-09-28 17:08:55 -07:00
136 changed files with 3597 additions and 723 deletions

View File

@ -8,7 +8,7 @@ FEEDGEN_LISTENHOST="localhost"
FEEDGEN_SQLITE_LOCATION=":memory:" FEEDGEN_SQLITE_LOCATION=":memory:"
# Don't change unless you're working in a different environment than the primary Bluesky network # Don't change unless you're working in a different environment than the primary Bluesky network
FEEDGEN_SUBSCRIPTION_ENDPOINT="wss://bsky.social" FEEDGEN_SUBSCRIPTION_ENDPOINT="wss://bsky.network"
# Set this to the hostname that you intend to run the service at # Set this to the hostname that you intend to run the service at
FEEDGEN_HOSTNAME="example.com" FEEDGEN_HOSTNAME="example.com"

View File

@ -12,12 +12,12 @@
"build": "tsc" "build": "tsc"
}, },
"dependencies": { "dependencies": {
"@atproto/api": "^0.3.7", "@atproto/api": "^0.6.20",
"@atproto/did-resolver": "^0.1.0", "@atproto/identity": "^0.2.1",
"@atproto/lexicon": "^0.1.0", "@atproto/lexicon": "^0.2.2",
"@atproto/repo": "^0.1.0", "@atproto/repo": "^0.3.2",
"@atproto/uri": "^0.0.2", "@atproto/syntax": "^0.1.2",
"@atproto/xrpc-server": "^0.2.0", "@atproto/xrpc-server": "^0.6.0",
"better-sqlite3": "^8.3.0", "better-sqlite3": "^8.3.0",
"dotenv": "^16.0.3", "dotenv": "^16.0.3",
"express": "^4.18.2", "express": "^4.18.2",

View File

@ -45,14 +45,6 @@ const run = async () => {
const agent = new AtpAgent({ service: 'https://bsky.social' }) const agent = new AtpAgent({ service: 'https://bsky.social' })
await agent.login({ identifier: handle, password }) await agent.login({ identifier: handle, password })
try {
await agent.api.app.bsky.feed.describeFeedGenerator()
} catch (err) {
throw new Error(
'The bluesky server is not ready to accept published custom feeds yet',
)
}
let avatarRef: BlobRef | undefined let avatarRef: BlobRef | undefined
if (avatar) { if (avatar) {
let encoding: string let encoding: string

View File

@ -1,4 +1,3 @@
import { InvalidRequestError } from '@atproto/xrpc-server'
import { QueryParams } from '../lexicon/types/app/bsky/feed/getFeedSkeleton' import { QueryParams } from '../lexicon/types/app/bsky/feed/getFeedSkeleton'
import { AppContext } from '../config' import { AppContext } from '../config'
@ -14,15 +13,8 @@ export const handler = async (ctx: AppContext, params: QueryParams) => {
.limit(params.limit) .limit(params.limit)
if (params.cursor) { if (params.cursor) {
const [indexedAt, cid] = params.cursor.split('::') const timeStr = new Date(parseInt(params.cursor, 10)).toISOString()
if (!indexedAt || !cid) { builder = builder.where('post.indexedAt', '<', timeStr)
throw new InvalidRequestError('malformed cursor')
}
const timeStr = new Date(parseInt(indexedAt, 10)).toISOString()
builder = builder
.where('post.indexedAt', '<', timeStr)
.orWhere((qb) => qb.where('post.indexedAt', '=', timeStr))
.where('post.cid', '<', cid)
} }
const res = await builder.execute() const res = await builder.execute()
@ -33,7 +25,7 @@ export const handler = async (ctx: AppContext, params: QueryParams) => {
let cursor: string | undefined let cursor: string | undefined
const last = res.at(-1) const last = res.at(-1)
if (last) { if (last) {
cursor = `${new Date(last.indexedAt).getTime()}::${last.cid}` cursor = new Date(last.indexedAt).getTime().toString(10)
} }
return { return {

View File

@ -1,6 +1,6 @@
import express from 'express' import express from 'express'
import { verifyJwt, AuthRequiredError } from '@atproto/xrpc-server' import { verifyJwt, AuthRequiredError, parseReqNsid } from '@atproto/xrpc-server'
import { DidResolver } from '@atproto/did-resolver' import { DidResolver } from '@atproto/identity'
export const validateAuth = async ( export const validateAuth = async (
req: express.Request, req: express.Request,
@ -12,7 +12,9 @@ export const validateAuth = async (
throw new AuthRequiredError() throw new AuthRequiredError()
} }
const jwt = authorization.replace('Bearer ', '').trim() const jwt = authorization.replace('Bearer ', '').trim()
return verifyJwt(jwt, serviceDid, async (did: string) => { const nsid = parseReqNsid(req)
const parsed = await verifyJwt(jwt, serviceDid, nsid, async (did: string) => {
return didResolver.resolveAtprotoKey(did) return didResolver.resolveAtprotoKey(did)
}) })
return parsed.iss
} }

View File

@ -1,5 +1,5 @@
import { Database } from './db' import { Database } from './db'
import { DidResolver } from '@atproto/did-resolver' import { DidResolver } from '@atproto/identity'
export type AppContext = { export type AppContext = {
db: Database db: Database

View File

@ -14,8 +14,6 @@ migrations['001'] = {
.createTable('post') .createTable('post')
.addColumn('uri', 'varchar', (col) => col.primaryKey()) .addColumn('uri', 'varchar', (col) => col.primaryKey())
.addColumn('cid', 'varchar', (col) => col.notNull()) .addColumn('cid', 'varchar', (col) => col.notNull())
.addColumn('replyParent', 'varchar')
.addColumn('replyRoot', 'varchar')
.addColumn('indexedAt', 'varchar', (col) => col.notNull()) .addColumn('indexedAt', 'varchar', (col) => col.notNull())
.execute() .execute()
await db.schema await db.schema

View File

@ -6,8 +6,6 @@ export type DatabaseSchema = {
export type Post = { export type Post = {
uri: string uri: string
cid: string cid: string
replyParent: string | null
replyRoot: string | null
indexedAt: string indexedAt: string
} }

View File

@ -12,7 +12,7 @@ const run = async () => {
sqliteLocation: maybeStr(process.env.FEEDGEN_SQLITE_LOCATION) ?? ':memory:', sqliteLocation: maybeStr(process.env.FEEDGEN_SQLITE_LOCATION) ?? ':memory:',
subscriptionEndpoint: subscriptionEndpoint:
maybeStr(process.env.FEEDGEN_SUBSCRIPTION_ENDPOINT) ?? maybeStr(process.env.FEEDGEN_SUBSCRIPTION_ENDPOINT) ??
'wss://bsky.social', 'wss://bsky.network',
publisherDid: publisherDid:
maybeStr(process.env.FEEDGEN_PUBLISHER_DID) ?? 'did:example:alice', maybeStr(process.env.FEEDGEN_PUBLISHER_DID) ?? 'did:example:alice',
subscriptionReconnectDelay: subscriptionReconnectDelay:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -107,6 +107,10 @@ export function validateViewerState(v: unknown): ValidationResult {
export type Preferences = ( export type Preferences = (
| AdultContentPref | AdultContentPref
| ContentLabelPref | ContentLabelPref
| SavedFeedsPref
| PersonalDetailsPref
| FeedViewPref
| ThreadViewPref
| { $type: string; [k: string]: unknown } | { $type: string; [k: string]: unknown }
)[] )[]
@ -144,3 +148,87 @@ export function isContentLabelPref(v: unknown): v is ContentLabelPref {
export function validateContentLabelPref(v: unknown): ValidationResult { export function validateContentLabelPref(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.actor.defs#contentLabelPref', v) return lexicons.validate('app.bsky.actor.defs#contentLabelPref', v)
} }
export interface SavedFeedsPref {
pinned: string[]
saved: string[]
[k: string]: unknown
}
export function isSavedFeedsPref(v: unknown): v is SavedFeedsPref {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'app.bsky.actor.defs#savedFeedsPref'
)
}
export function validateSavedFeedsPref(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.actor.defs#savedFeedsPref', v)
}
export interface PersonalDetailsPref {
/** The birth date of the owner of the account. */
birthDate?: string
[k: string]: unknown
}
export function isPersonalDetailsPref(v: unknown): v is PersonalDetailsPref {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'app.bsky.actor.defs#personalDetailsPref'
)
}
export function validatePersonalDetailsPref(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.actor.defs#personalDetailsPref', v)
}
export interface FeedViewPref {
/** The URI of the feed, or an identifier which describes the feed. */
feed: string
/** Hide replies in the feed. */
hideReplies?: boolean
/** Hide replies in the feed if they are not by followed users. */
hideRepliesByUnfollowed?: boolean
/** Hide replies in the feed if they do not have this number of likes. */
hideRepliesByLikeCount?: number
/** Hide reposts in the feed. */
hideReposts?: boolean
/** Hide quote posts in the feed. */
hideQuotePosts?: boolean
[k: string]: unknown
}
export function isFeedViewPref(v: unknown): v is FeedViewPref {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'app.bsky.actor.defs#feedViewPref'
)
}
export function validateFeedViewPref(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.actor.defs#feedViewPref', v)
}
export interface ThreadViewPref {
/** Sorting mode. */
sort?: 'oldest' | 'newest' | 'most-likes' | 'random' | (string & {})
/** Show followed users at the top of all replies. */
prioritizeFollowedUsers?: boolean
[k: string]: unknown
}
export function isThreadViewPref(v: unknown): v is ThreadViewPref {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'app.bsky.actor.defs#threadViewPref'
)
}
export function validateThreadViewPref(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.actor.defs#threadViewPref', v)
}

View File

@ -23,6 +23,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -31,10 +32,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -20,6 +20,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -28,10 +29,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -25,6 +25,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -33,10 +34,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -27,6 +27,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -35,10 +36,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -5,12 +5,16 @@ import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons' import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util' import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid' import { CID } from 'multiformats/cid'
import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs'
export interface Record { export interface Record {
displayName?: string displayName?: string
description?: string description?: string
avatar?: BlobRef avatar?: BlobRef
banner?: BlobRef banner?: BlobRef
labels?:
| ComAtprotoLabelDefs.SelfLabels
| { $type: string; [k: string]: unknown }
[k: string]: unknown [k: string]: unknown
} }

View File

@ -27,10 +27,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -10,7 +10,10 @@ import { HandlerAuth } from '@atproto/xrpc-server'
import * as AppBskyActorDefs from './defs' import * as AppBskyActorDefs from './defs'
export interface QueryParams { export interface QueryParams {
/** DEPRECATED: use 'q' instead */
term?: string term?: string
/** search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended */
q?: string
limit: number limit: number
cursor?: string cursor?: string
} }
@ -28,6 +31,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -36,10 +40,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -10,7 +10,10 @@ import { HandlerAuth } from '@atproto/xrpc-server'
import * as AppBskyActorDefs from './defs' import * as AppBskyActorDefs from './defs'
export interface QueryParams { export interface QueryParams {
/** DEPRECATED: use 'q' instead */
term?: string term?: string
/** search query prefix; not a full query string */
q?: string
limit: number limit: number
} }
@ -26,6 +29,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -34,10 +38,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -27,6 +27,7 @@ export function validateMain(v: unknown): ValidationResult {
export interface Image { export interface Image {
image: BlobRef image: BlobRef
alt: string alt: string
aspectRatio?: AspectRatio
[k: string]: unknown [k: string]: unknown
} }
@ -40,6 +41,25 @@ export function validateImage(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.embed.images#image', v) return lexicons.validate('app.bsky.embed.images#image', v)
} }
/** width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit. */
export interface AspectRatio {
width: number
height: number
[k: string]: unknown
}
export function isAspectRatio(v: unknown): v is AspectRatio {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'app.bsky.embed.images#aspectRatio'
)
}
export function validateAspectRatio(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.embed.images#aspectRatio', v)
}
export interface View { export interface View {
images: ViewImage[] images: ViewImage[]
[k: string]: unknown [k: string]: unknown
@ -59,6 +79,7 @@ export interface ViewImage {
thumb: string thumb: string
fullsize: string fullsize: string
alt: string alt: string
aspectRatio?: AspectRatio
[k: string]: unknown [k: string]: unknown
} }

View File

@ -7,6 +7,7 @@ import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid' import { CID } from 'multiformats/cid'
import * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef' import * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef'
import * as AppBskyFeedDefs from '../feed/defs' import * as AppBskyFeedDefs from '../feed/defs'
import * as AppBskyGraphDefs from '../graph/defs'
import * as AppBskyActorDefs from '../actor/defs' import * as AppBskyActorDefs from '../actor/defs'
import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs' import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs'
import * as AppBskyEmbedImages from './images' import * as AppBskyEmbedImages from './images'
@ -37,6 +38,7 @@ export interface View {
| ViewNotFound | ViewNotFound
| ViewBlocked | ViewBlocked
| AppBskyFeedDefs.GeneratorView | AppBskyFeedDefs.GeneratorView
| AppBskyGraphDefs.ListView
| { $type: string; [k: string]: unknown } | { $type: string; [k: string]: unknown }
[k: string]: unknown [k: string]: unknown
} }
@ -82,6 +84,7 @@ export function validateViewRecord(v: unknown): ValidationResult {
export interface ViewNotFound { export interface ViewNotFound {
uri: string uri: string
notFound: true
[k: string]: unknown [k: string]: unknown
} }
@ -99,6 +102,8 @@ export function validateViewNotFound(v: unknown): ValidationResult {
export interface ViewBlocked { export interface ViewBlocked {
uri: string uri: string
blocked: true
author: AppBskyFeedDefs.BlockedAuthor
[k: string]: unknown [k: string]: unknown
} }

View File

@ -12,6 +12,7 @@ import * as AppBskyEmbedRecord from '../embed/record'
import * as AppBskyEmbedRecordWithMedia from '../embed/recordWithMedia' import * as AppBskyEmbedRecordWithMedia from '../embed/recordWithMedia'
import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs' import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs'
import * as AppBskyRichtextFacet from '../richtext/facet' import * as AppBskyRichtextFacet from '../richtext/facet'
import * as AppBskyGraphDefs from '../graph/defs'
export interface PostView { export interface PostView {
uri: string uri: string
@ -30,6 +31,7 @@ export interface PostView {
indexedAt: string indexedAt: string
viewer?: ViewerState viewer?: ViewerState
labels?: ComAtprotoLabelDefs.Label[] labels?: ComAtprotoLabelDefs.Label[]
threadgate?: ThreadgateView
[k: string]: unknown [k: string]: unknown
} }
@ -135,6 +137,7 @@ export interface ThreadViewPost {
| BlockedPost | BlockedPost
| { $type: string; [k: string]: unknown } | { $type: string; [k: string]: unknown }
)[] )[]
viewer?: ViewerThreadState
[k: string]: unknown [k: string]: unknown
} }
@ -171,6 +174,7 @@ export function validateNotFoundPost(v: unknown): ValidationResult {
export interface BlockedPost { export interface BlockedPost {
uri: string uri: string
blocked: true blocked: true
author: BlockedAuthor
[k: string]: unknown [k: string]: unknown
} }
@ -186,12 +190,47 @@ export function validateBlockedPost(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.feed.defs#blockedPost', v) return lexicons.validate('app.bsky.feed.defs#blockedPost', v)
} }
export interface BlockedAuthor {
did: string
viewer?: AppBskyActorDefs.ViewerState
[k: string]: unknown
}
export function isBlockedAuthor(v: unknown): v is BlockedAuthor {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'app.bsky.feed.defs#blockedAuthor'
)
}
export function validateBlockedAuthor(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.feed.defs#blockedAuthor', v)
}
export interface ViewerThreadState {
canReply?: boolean
[k: string]: unknown
}
export function isViewerThreadState(v: unknown): v is ViewerThreadState {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'app.bsky.feed.defs#viewerThreadState'
)
}
export function validateViewerThreadState(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.feed.defs#viewerThreadState', v)
}
export interface GeneratorView { export interface GeneratorView {
uri: string uri: string
cid: string cid: string
did?: string did: string
creator: AppBskyActorDefs.ProfileView creator: AppBskyActorDefs.ProfileView
displayName?: string displayName: string
description?: string description?: string
descriptionFacets?: AppBskyRichtextFacet.Main[] descriptionFacets?: AppBskyRichtextFacet.Main[]
avatar?: string avatar?: string
@ -214,7 +253,6 @@ export function validateGeneratorView(v: unknown): ValidationResult {
} }
export interface GeneratorViewerState { export interface GeneratorViewerState {
saved?: boolean
like?: string like?: string
[k: string]: unknown [k: string]: unknown
} }
@ -265,3 +303,23 @@ export function isSkeletonReasonRepost(v: unknown): v is SkeletonReasonRepost {
export function validateSkeletonReasonRepost(v: unknown): ValidationResult { export function validateSkeletonReasonRepost(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.feed.defs#skeletonReasonRepost', v) return lexicons.validate('app.bsky.feed.defs#skeletonReasonRepost', v)
} }
export interface ThreadgateView {
uri?: string
cid?: string
record?: {}
lists?: AppBskyGraphDefs.ListViewBasic[]
[k: string]: unknown
}
export function isThreadgateView(v: unknown): v is ThreadgateView {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'app.bsky.feed.defs#threadgateView'
)
}
export function validateThreadgateView(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.feed.defs#threadgateView', v)
}

View File

@ -24,6 +24,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -32,13 +33,16 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput
export interface Feed { export interface Feed {
uri: string uri: string

View File

@ -6,13 +6,17 @@ import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util' import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid' import { CID } from 'multiformats/cid'
import * as AppBskyRichtextFacet from '../richtext/facet' import * as AppBskyRichtextFacet from '../richtext/facet'
import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs'
export interface Record { export interface Record {
did: string did: string
displayName?: string displayName: string
description?: string description?: string
descriptionFacets?: AppBskyRichtextFacet.Main[] descriptionFacets?: AppBskyRichtextFacet.Main[]
avatar?: BlobRef avatar?: BlobRef
labels?:
| ComAtprotoLabelDefs.SelfLabels
| { $type: string; [k: string]: unknown }
createdAt: string createdAt: string
[k: string]: unknown [k: string]: unknown
} }

View File

@ -28,6 +28,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -36,10 +37,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -0,0 +1,50 @@
/**
* GENERATED CODE - DO NOT MODIFY
*/
import express from 'express'
import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid'
import { HandlerAuth } from '@atproto/xrpc-server'
import * as AppBskyFeedDefs from './defs'
export interface QueryParams {
actor: string
limit: number
cursor?: string
}
export type InputSchema = undefined
export interface OutputSchema {
cursor?: string
feed: AppBskyFeedDefs.FeedViewPost[]
[k: string]: unknown
}
export type HandlerInput = undefined
export interface HandlerSuccess {
encoding: 'application/json'
body: OutputSchema
headers?: { [key: string]: string }
}
export interface HandlerError {
status: number
message?: string
error?: 'BlockedActor' | 'BlockedByActor'
}
export type HandlerOutput = HandlerError | HandlerSuccess
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA
params: QueryParams
input: HandlerInput
req: express.Request
res: express.Response
}
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -13,6 +13,11 @@ export interface QueryParams {
actor: string actor: string
limit: number limit: number
cursor?: string cursor?: string
filter:
| 'posts_with_replies'
| 'posts_no_replies'
| 'posts_with_media'
| (string & {})
} }
export type InputSchema = undefined export type InputSchema = undefined
@ -28,6 +33,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -37,10 +43,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -28,6 +28,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -37,10 +38,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -27,6 +27,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -35,10 +36,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -0,0 +1,46 @@
/**
* GENERATED CODE - DO NOT MODIFY
*/
import express from 'express'
import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid'
import { HandlerAuth } from '@atproto/xrpc-server'
import * as AppBskyFeedDefs from './defs'
export interface QueryParams {
feeds: string[]
}
export type InputSchema = undefined
export interface OutputSchema {
feeds: AppBskyFeedDefs.GeneratorView[]
[k: string]: unknown
}
export type HandlerInput = undefined
export interface HandlerSuccess {
encoding: 'application/json'
body: OutputSchema
headers?: { [key: string]: string }
}
export interface HandlerError {
status: number
message?: string
}
export type HandlerOutput = HandlerError | HandlerSuccess
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA
params: QueryParams
input: HandlerInput
req: express.Request
res: express.Response
}
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -28,6 +28,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -37,10 +38,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -31,6 +31,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -39,13 +40,16 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput
export interface Like { export interface Like {
indexedAt: string indexedAt: string

View File

@ -0,0 +1,50 @@
/**
* GENERATED CODE - DO NOT MODIFY
*/
import express from 'express'
import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid'
import { HandlerAuth } from '@atproto/xrpc-server'
import * as AppBskyFeedDefs from './defs'
export interface QueryParams {
list: string
limit: number
cursor?: string
}
export type InputSchema = undefined
export interface OutputSchema {
cursor?: string
feed: AppBskyFeedDefs.FeedViewPost[]
[k: string]: unknown
}
export type HandlerInput = undefined
export interface HandlerSuccess {
encoding: 'application/json'
body: OutputSchema
headers?: { [key: string]: string }
}
export interface HandlerError {
status: number
message?: string
error?: 'UnknownList'
}
export type HandlerOutput = HandlerError | HandlerSuccess
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA
params: QueryParams
input: HandlerInput
req: express.Request
res: express.Response
}
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -11,7 +11,8 @@ import * as AppBskyFeedDefs from './defs'
export interface QueryParams { export interface QueryParams {
uri: string uri: string
depth?: number depth: number
parentHeight: number
} }
export type InputSchema = undefined export type InputSchema = undefined
@ -30,6 +31,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -39,10 +41,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -25,6 +25,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -33,10 +34,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -31,6 +31,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -39,10 +40,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -27,6 +27,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -35,10 +36,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -28,6 +28,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -36,10 +37,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -10,6 +10,7 @@ import * as AppBskyEmbedImages from '../embed/images'
import * as AppBskyEmbedExternal from '../embed/external' import * as AppBskyEmbedExternal from '../embed/external'
import * as AppBskyEmbedRecord from '../embed/record' import * as AppBskyEmbedRecord from '../embed/record'
import * as AppBskyEmbedRecordWithMedia from '../embed/recordWithMedia' import * as AppBskyEmbedRecordWithMedia from '../embed/recordWithMedia'
import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs'
import * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef' import * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef'
export interface Record { export interface Record {
@ -24,6 +25,12 @@ export interface Record {
| AppBskyEmbedRecord.Main | AppBskyEmbedRecord.Main
| AppBskyEmbedRecordWithMedia.Main | AppBskyEmbedRecordWithMedia.Main
| { $type: string; [k: string]: unknown } | { $type: string; [k: string]: unknown }
langs?: string[]
labels?:
| ComAtprotoLabelDefs.SelfLabels
| { $type: string; [k: string]: unknown }
/** Additional non-inline tags describing this post. */
tags?: string[]
createdAt: string createdAt: string
[k: string]: unknown [k: string]: unknown
} }

View File

@ -0,0 +1,54 @@
/**
* GENERATED CODE - DO NOT MODIFY
*/
import express from 'express'
import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid'
import { HandlerAuth } from '@atproto/xrpc-server'
import * as AppBskyFeedDefs from './defs'
export interface QueryParams {
/** search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended */
q: string
limit: number
/** optional pagination mechanism; may not necessarily allow scrolling through entire result set */
cursor?: string
}
export type InputSchema = undefined
export interface OutputSchema {
cursor?: string
/** count of search hits. optional, may be rounded/truncated, and may not be possible to paginate through all hits */
hitsTotal?: number
posts: AppBskyFeedDefs.PostView[]
[k: string]: unknown
}
export type HandlerInput = undefined
export interface HandlerSuccess {
encoding: 'application/json'
body: OutputSchema
headers?: { [key: string]: string }
}
export interface HandlerError {
status: number
message?: string
error?: 'BadQueryString'
}
export type HandlerOutput = HandlerError | HandlerSuccess
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA
params: QueryParams
input: HandlerInput
req: express.Request
res: express.Response
}
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -0,0 +1,84 @@
/**
* GENERATED CODE - DO NOT MODIFY
*/
import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid'
export interface Record {
post: string
allow?: (
| MentionRule
| FollowingRule
| ListRule
| { $type: string; [k: string]: unknown }
)[]
createdAt: string
[k: string]: unknown
}
export function isRecord(v: unknown): v is Record {
return (
isObj(v) &&
hasProp(v, '$type') &&
(v.$type === 'app.bsky.feed.threadgate#main' ||
v.$type === 'app.bsky.feed.threadgate')
)
}
export function validateRecord(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.feed.threadgate#main', v)
}
/** Allow replies from actors mentioned in your post. */
export interface MentionRule {
[k: string]: unknown
}
export function isMentionRule(v: unknown): v is MentionRule {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'app.bsky.feed.threadgate#mentionRule'
)
}
export function validateMentionRule(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.feed.threadgate#mentionRule', v)
}
/** Allow replies from actors you follow. */
export interface FollowingRule {
[k: string]: unknown
}
export function isFollowingRule(v: unknown): v is FollowingRule {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'app.bsky.feed.threadgate#followingRule'
)
}
export function validateFollowingRule(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.feed.threadgate#followingRule', v)
}
/** Allow replies from actors on a list. */
export interface ListRule {
list: string
[k: string]: unknown
}
export function isListRule(v: unknown): v is ListRule {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'app.bsky.feed.threadgate#listRule'
)
}
export function validateListRule(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.feed.threadgate#listRule', v)
}

View File

@ -10,6 +10,7 @@ import * as AppBskyRichtextFacet from '../richtext/facet'
export interface ListViewBasic { export interface ListViewBasic {
uri: string uri: string
cid: string
name: string name: string
purpose: ListPurpose purpose: ListPurpose
avatar?: string avatar?: string
@ -32,6 +33,7 @@ export function validateListViewBasic(v: unknown): ValidationResult {
export interface ListView { export interface ListView {
uri: string uri: string
cid: string
creator: AppBskyActorDefs.ProfileView creator: AppBskyActorDefs.ProfileView
name: string name: string
purpose: ListPurpose purpose: ListPurpose
@ -72,13 +74,19 @@ export function validateListItemView(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.graph.defs#listItemView', v) return lexicons.validate('app.bsky.graph.defs#listItemView', v)
} }
export type ListPurpose = 'app.bsky.graph.defs#modlist' | (string & {}) export type ListPurpose =
| 'app.bsky.graph.defs#modlist'
| 'app.bsky.graph.defs#curatelist'
| (string & {})
/** A list of actors to apply an aggregate moderation action (mute/block) on */ /** A list of actors to apply an aggregate moderation action (mute/block) on */
export const MODLIST = 'app.bsky.graph.defs#modlist' export const MODLIST = 'app.bsky.graph.defs#modlist'
/** A list of actors used for curation purposes such as list feeds or interaction gating */
export const CURATELIST = 'app.bsky.graph.defs#curatelist'
export interface ListViewerState { export interface ListViewerState {
muted?: boolean muted?: boolean
blocked?: string
[k: string]: unknown [k: string]: unknown
} }

View File

@ -27,6 +27,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -35,10 +36,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -29,6 +29,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -37,10 +38,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -29,6 +29,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -37,10 +38,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -29,6 +29,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -37,10 +38,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -0,0 +1,48 @@
/**
* GENERATED CODE - DO NOT MODIFY
*/
import express from 'express'
import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid'
import { HandlerAuth } from '@atproto/xrpc-server'
import * as AppBskyGraphDefs from './defs'
export interface QueryParams {
limit: number
cursor?: string
}
export type InputSchema = undefined
export interface OutputSchema {
cursor?: string
lists: AppBskyGraphDefs.ListView[]
[k: string]: unknown
}
export type HandlerInput = undefined
export interface HandlerSuccess {
encoding: 'application/json'
body: OutputSchema
headers?: { [key: string]: string }
}
export interface HandlerError {
status: number
message?: string
}
export type HandlerOutput = HandlerError | HandlerSuccess
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA
params: QueryParams
input: HandlerInput
req: express.Request
res: express.Response
}
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -27,6 +27,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -35,10 +36,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -28,6 +28,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -36,10 +37,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -27,6 +27,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -35,10 +36,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -0,0 +1,46 @@
/**
* GENERATED CODE - DO NOT MODIFY
*/
import express from 'express'
import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid'
import { HandlerAuth } from '@atproto/xrpc-server'
import * as AppBskyActorDefs from '../actor/defs'
export interface QueryParams {
actor: string
}
export type InputSchema = undefined
export interface OutputSchema {
suggestions: AppBskyActorDefs.ProfileView[]
[k: string]: unknown
}
export type HandlerInput = undefined
export interface HandlerSuccess {
encoding: 'application/json'
body: OutputSchema
headers?: { [key: string]: string }
}
export interface HandlerError {
status: number
message?: string
}
export type HandlerOutput = HandlerError | HandlerSuccess
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA
params: QueryParams
input: HandlerInput
req: express.Request
res: express.Response
}
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -7,6 +7,7 @@ import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid' import { CID } from 'multiformats/cid'
import * as AppBskyGraphDefs from './defs' import * as AppBskyGraphDefs from './defs'
import * as AppBskyRichtextFacet from '../richtext/facet' import * as AppBskyRichtextFacet from '../richtext/facet'
import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs'
export interface Record { export interface Record {
purpose: AppBskyGraphDefs.ListPurpose purpose: AppBskyGraphDefs.ListPurpose
@ -14,6 +15,9 @@ export interface Record {
description?: string description?: string
descriptionFacets?: AppBskyRichtextFacet.Main[] descriptionFacets?: AppBskyRichtextFacet.Main[]
avatar?: BlobRef avatar?: BlobRef
labels?:
| ComAtprotoLabelDefs.SelfLabels
| { $type: string; [k: string]: unknown }
createdAt: string createdAt: string
[k: string]: unknown [k: string]: unknown
} }

View File

@ -0,0 +1,26 @@
/**
* GENERATED CODE - DO NOT MODIFY
*/
import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid'
export interface Record {
subject: string
createdAt: string
[k: string]: unknown
}
export function isRecord(v: unknown): v is Record {
return (
isObj(v) &&
hasProp(v, '$type') &&
(v.$type === 'app.bsky.graph.listblock#main' ||
v.$type === 'app.bsky.graph.listblock')
)
}
export function validateRecord(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.graph.listblock#main', v)
}

View File

@ -26,10 +26,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -26,10 +26,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -26,10 +26,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -26,10 +26,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -24,6 +24,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -32,10 +33,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -29,6 +29,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -37,13 +38,16 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput
export interface Notification { export interface Notification {
uri: string uri: string

View File

@ -11,7 +11,10 @@ import { HandlerAuth } from '@atproto/xrpc-server'
export interface QueryParams {} export interface QueryParams {}
export interface InputSchema { export interface InputSchema {
feed: string serviceDid: string
token: string
platform: 'ios' | 'android' | 'web' | (string & {})
appId: string
[k: string]: unknown [k: string]: unknown
} }
@ -26,10 +29,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -26,10 +26,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -8,7 +8,7 @@ import { CID } from 'multiformats/cid'
export interface Main { export interface Main {
index: ByteSlice index: ByteSlice
features: (Mention | Link | { $type: string; [k: string]: unknown })[] features: (Mention | Link | Tag | { $type: string; [k: string]: unknown })[]
[k: string]: unknown [k: string]: unknown
} }
@ -61,6 +61,22 @@ export function validateLink(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.richtext.facet#link', v) return lexicons.validate('app.bsky.richtext.facet#link', v)
} }
/** A hashtag. */
export interface Tag {
tag: string
[k: string]: unknown
}
export function isTag(v: unknown): v is Tag {
return (
isObj(v) && hasProp(v, '$type') && v.$type === 'app.bsky.richtext.facet#tag'
)
}
export function validateTag(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.richtext.facet#tag', v)
}
/** A text segment. Start is inclusive, end is exclusive. Indices are for utf8-encoded strings. */ /** A text segment. Start is inclusive, end is exclusive. Indices are for utf8-encoded strings. */
export interface ByteSlice { export interface ByteSlice {
byteStart: number byteStart: number

View File

@ -0,0 +1,41 @@
/**
* GENERATED CODE - DO NOT MODIFY
*/
import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid'
export interface SkeletonSearchPost {
uri: string
[k: string]: unknown
}
export function isSkeletonSearchPost(v: unknown): v is SkeletonSearchPost {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'app.bsky.unspecced.defs#skeletonSearchPost'
)
}
export function validateSkeletonSearchPost(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.unspecced.defs#skeletonSearchPost', v)
}
export interface SkeletonSearchActor {
did: string
[k: string]: unknown
}
export function isSkeletonSearchActor(v: unknown): v is SkeletonSearchActor {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'app.bsky.unspecced.defs#skeletonSearchActor'
)
}
export function validateSkeletonSearchActor(v: unknown): ValidationResult {
return lexicons.validate('app.bsky.unspecced.defs#skeletonSearchActor', v)
}

View File

@ -28,6 +28,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -36,10 +37,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -0,0 +1,49 @@
/**
* GENERATED CODE - DO NOT MODIFY
*/
import express from 'express'
import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid'
import { HandlerAuth } from '@atproto/xrpc-server'
import * as AppBskyFeedDefs from '../feed/defs'
export interface QueryParams {
limit: number
cursor?: string
query?: string
}
export type InputSchema = undefined
export interface OutputSchema {
cursor?: string
feeds: AppBskyFeedDefs.GeneratorView[]
[k: string]: unknown
}
export type HandlerInput = undefined
export interface HandlerSuccess {
encoding: 'application/json'
body: OutputSchema
headers?: { [key: string]: string }
}
export interface HandlerError {
status: number
message?: string
}
export type HandlerOutput = HandlerError | HandlerSuccess
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA
params: QueryParams
input: HandlerInput
req: express.Request
res: express.Response
}
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -0,0 +1,49 @@
/**
* GENERATED CODE - DO NOT MODIFY
*/
import express from 'express'
import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid'
import { HandlerAuth } from '@atproto/xrpc-server'
import * as AppBskyFeedDefs from '../feed/defs'
export interface QueryParams {
limit: number
cursor?: string
}
export type InputSchema = undefined
export interface OutputSchema {
cursor?: string
feed: AppBskyFeedDefs.SkeletonFeedPost[]
[k: string]: unknown
}
export type HandlerInput = undefined
export interface HandlerSuccess {
encoding: 'application/json'
body: OutputSchema
headers?: { [key: string]: string }
}
export interface HandlerError {
status: number
message?: string
error?: 'UnknownFeed'
}
export type HandlerOutput = HandlerError | HandlerSuccess
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA
params: QueryParams
input: HandlerInput
req: express.Request
res: express.Response
}
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -0,0 +1,56 @@
/**
* GENERATED CODE - DO NOT MODIFY
*/
import express from 'express'
import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid'
import { HandlerAuth } from '@atproto/xrpc-server'
import * as AppBskyUnspeccedDefs from './defs'
export interface QueryParams {
/** search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended. For typeahead search, only simple term match is supported, not full syntax */
q: string
/** if true, acts as fast/simple 'typeahead' query */
typeahead?: boolean
limit: number
/** optional pagination mechanism; may not necessarily allow scrolling through entire result set */
cursor?: string
}
export type InputSchema = undefined
export interface OutputSchema {
cursor?: string
/** count of search hits. optional, may be rounded/truncated, and may not be possible to paginate through all hits */
hitsTotal?: number
actors: AppBskyUnspeccedDefs.SkeletonSearchActor[]
[k: string]: unknown
}
export type HandlerInput = undefined
export interface HandlerSuccess {
encoding: 'application/json'
body: OutputSchema
headers?: { [key: string]: string }
}
export interface HandlerError {
status: number
message?: string
error?: 'BadQueryString'
}
export type HandlerOutput = HandlerError | HandlerSuccess
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA
params: QueryParams
input: HandlerInput
req: express.Request
res: express.Response
}
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -0,0 +1,54 @@
/**
* GENERATED CODE - DO NOT MODIFY
*/
import express from 'express'
import { ValidationResult, BlobRef } from '@atproto/lexicon'
import { lexicons } from '../../../../lexicons'
import { isObj, hasProp } from '../../../../util'
import { CID } from 'multiformats/cid'
import { HandlerAuth } from '@atproto/xrpc-server'
import * as AppBskyUnspeccedDefs from './defs'
export interface QueryParams {
/** search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended */
q: string
limit: number
/** optional pagination mechanism; may not necessarily allow scrolling through entire result set */
cursor?: string
}
export type InputSchema = undefined
export interface OutputSchema {
cursor?: string
/** count of search hits. optional, may be rounded/truncated, and may not be possible to paginate through all hits */
hitsTotal?: number
posts: AppBskyUnspeccedDefs.SkeletonSearchPost[]
[k: string]: unknown
}
export type HandlerInput = undefined
export interface HandlerSuccess {
encoding: 'application/json'
body: OutputSchema
headers?: { [key: string]: string }
}
export interface HandlerError {
status: number
message?: string
error?: 'BadQueryString'
}
export type HandlerOutput = HandlerError | HandlerSuccess
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA
params: QueryParams
input: HandlerInput
req: express.Request
res: express.Response
}
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -13,6 +13,8 @@ import * as ComAtprotoLabelDefs from '../label/defs'
export interface ActionView { export interface ActionView {
id: number id: number
action: ActionType action: ActionType
/** Indicates how long this action was meant to be in effect before automatically expiring. */
durationInHours?: number
subject: subject:
| RepoRef | RepoRef
| ComAtprotoRepoStrongRef.Main | ComAtprotoRepoStrongRef.Main
@ -43,7 +45,14 @@ export function validateActionView(v: unknown): ValidationResult {
export interface ActionViewDetail { export interface ActionViewDetail {
id: number id: number
action: ActionType action: ActionType
subject: RepoView | RecordView | { $type: string; [k: string]: unknown } /** Indicates how long this action was meant to be in effect before automatically expiring. */
durationInHours?: number
subject:
| RepoView
| RepoViewNotFound
| RecordView
| RecordViewNotFound
| { $type: string; [k: string]: unknown }
subjectBlobs: BlobView[] subjectBlobs: BlobView[]
createLabelVals?: string[] createLabelVals?: string[]
negateLabelVals?: string[] negateLabelVals?: string[]
@ -70,6 +79,8 @@ export function validateActionViewDetail(v: unknown): ValidationResult {
export interface ActionViewCurrent { export interface ActionViewCurrent {
id: number id: number
action: ActionType action: ActionType
/** Indicates how long this action was meant to be in effect before automatically expiring. */
durationInHours?: number
[k: string]: unknown [k: string]: unknown
} }
@ -124,6 +135,7 @@ export interface ReportView {
id: number id: number
reasonType: ComAtprotoModerationDefs.ReasonType reasonType: ComAtprotoModerationDefs.ReasonType
reason?: string reason?: string
subjectRepoHandle?: string
subject: subject:
| RepoRef | RepoRef
| ComAtprotoRepoStrongRef.Main | ComAtprotoRepoStrongRef.Main
@ -150,7 +162,12 @@ export interface ReportViewDetail {
id: number id: number
reasonType: ComAtprotoModerationDefs.ReasonType reasonType: ComAtprotoModerationDefs.ReasonType
reason?: string reason?: string
subject: RepoView | RecordView | { $type: string; [k: string]: unknown } subject:
| RepoView
| RepoViewNotFound
| RecordView
| RecordViewNotFound
| { $type: string; [k: string]: unknown }
reportedBy: string reportedBy: string
createdAt: string createdAt: string
resolvedByActions: ActionView[] resolvedByActions: ActionView[]
@ -178,6 +195,7 @@ export interface RepoView {
moderation: Moderation moderation: Moderation
invitedBy?: ComAtprotoServerDefs.InviteCode invitedBy?: ComAtprotoServerDefs.InviteCode
invitesDisabled?: boolean invitesDisabled?: boolean
inviteNote?: string
[k: string]: unknown [k: string]: unknown
} }
@ -204,6 +222,7 @@ export interface RepoViewDetail {
invitedBy?: ComAtprotoServerDefs.InviteCode invitedBy?: ComAtprotoServerDefs.InviteCode
invites?: ComAtprotoServerDefs.InviteCode[] invites?: ComAtprotoServerDefs.InviteCode[]
invitesDisabled?: boolean invitesDisabled?: boolean
inviteNote?: string
[k: string]: unknown [k: string]: unknown
} }
@ -219,6 +238,23 @@ export function validateRepoViewDetail(v: unknown): ValidationResult {
return lexicons.validate('com.atproto.admin.defs#repoViewDetail', v) return lexicons.validate('com.atproto.admin.defs#repoViewDetail', v)
} }
export interface RepoViewNotFound {
did: string
[k: string]: unknown
}
export function isRepoViewNotFound(v: unknown): v is RepoViewNotFound {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'com.atproto.admin.defs#repoViewNotFound'
)
}
export function validateRepoViewNotFound(v: unknown): ValidationResult {
return lexicons.validate('com.atproto.admin.defs#repoViewNotFound', v)
}
export interface RepoRef { export interface RepoRef {
did: string did: string
[k: string]: unknown [k: string]: unknown
@ -283,6 +319,23 @@ export function validateRecordViewDetail(v: unknown): ValidationResult {
return lexicons.validate('com.atproto.admin.defs#recordViewDetail', v) return lexicons.validate('com.atproto.admin.defs#recordViewDetail', v)
} }
export interface RecordViewNotFound {
uri: string
[k: string]: unknown
}
export function isRecordViewNotFound(v: unknown): v is RecordViewNotFound {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'com.atproto.admin.defs#recordViewNotFound'
)
}
export function validateRecordViewNotFound(v: unknown): ValidationResult {
return lexicons.validate('com.atproto.admin.defs#recordViewNotFound', v)
}
export interface Moderation { export interface Moderation {
currentAction?: ActionViewCurrent currentAction?: ActionViewCurrent
[k: string]: unknown [k: string]: unknown

View File

@ -12,6 +12,8 @@ export interface QueryParams {}
export interface InputSchema { export interface InputSchema {
account: string account: string
/** Additionally add a note describing why the invites were disabled */
note?: string
[k: string]: unknown [k: string]: unknown
} }
@ -26,10 +28,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -27,10 +27,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -12,6 +12,8 @@ export interface QueryParams {}
export interface InputSchema { export interface InputSchema {
account: string account: string
/** Additionally add a note describing why the invites were enabled */
note?: string
[k: string]: unknown [k: string]: unknown
} }
@ -26,10 +28,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -28,6 +28,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -36,10 +37,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -20,6 +20,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -28,10 +29,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -28,6 +28,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -36,10 +37,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -20,6 +20,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -28,10 +29,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -11,6 +11,11 @@ import * as ComAtprotoAdminDefs from './defs'
export interface QueryParams { export interface QueryParams {
subject?: string subject?: string
ignoreSubjects?: string[]
/** Get all reports that were actioned by a specific moderator */
actionedBy?: string
/** Filter reports made by one or more DIDs */
reporters?: string[]
resolved?: boolean resolved?: boolean
actionType?: actionType?:
| 'com.atproto.admin.defs#takedown' | 'com.atproto.admin.defs#takedown'
@ -20,6 +25,8 @@ export interface QueryParams {
| (string & {}) | (string & {})
limit: number limit: number
cursor?: string cursor?: string
/** Reverse the order of the returned records? when true, returns reports in chronological order */
reverse?: boolean
} }
export type InputSchema = undefined export type InputSchema = undefined
@ -35,6 +42,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -43,10 +51,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -21,18 +21,23 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
status: number status: number
message?: string message?: string
error?: 'RecordNotFound'
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -20,18 +20,23 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
status: number status: number
message?: string message?: string
error?: 'RepoNotFound'
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -28,6 +28,7 @@ export interface HandlerInput {
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -36,10 +37,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -28,6 +28,7 @@ export interface HandlerInput {
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -36,10 +37,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -10,7 +10,9 @@ import { HandlerAuth } from '@atproto/xrpc-server'
import * as ComAtprotoAdminDefs from './defs' import * as ComAtprotoAdminDefs from './defs'
export interface QueryParams { export interface QueryParams {
/** DEPRECATED: use 'q' instead */
term?: string term?: string
q?: string
invitedBy?: string invitedBy?: string
limit: number limit: number
cursor?: string cursor?: string
@ -29,6 +31,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -37,10 +40,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -11,7 +11,14 @@ import { HandlerAuth } from '@atproto/xrpc-server'
export interface QueryParams {} export interface QueryParams {}
export interface InputSchema { export interface InputSchema {
feed: string recipientDid: string
content: string
subject?: string
[k: string]: unknown
}
export interface OutputSchema {
sent: boolean
[k: string]: unknown [k: string]: unknown
} }
@ -20,16 +27,25 @@ export interface HandlerInput {
body: InputSchema body: InputSchema
} }
export interface HandlerSuccess {
encoding: 'application/json'
body: OutputSchema
headers?: { [key: string]: string }
}
export interface HandlerError { export interface HandlerError {
status: number status: number
message?: string message?: string
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -26,6 +26,8 @@ export interface InputSchema {
createLabelVals?: string[] createLabelVals?: string[]
negateLabelVals?: string[] negateLabelVals?: string[]
reason: string reason: string
/** Indicates how long this action was meant to be in effect before automatically expiring. */
durationInHours?: number
createdBy: string createdBy: string
[k: string]: unknown [k: string]: unknown
} }
@ -40,6 +42,7 @@ export interface HandlerInput {
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -49,10 +52,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -28,10 +28,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -27,10 +27,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -9,8 +9,8 @@ import { CID } from 'multiformats/cid'
import { HandlerAuth } from '@atproto/xrpc-server' import { HandlerAuth } from '@atproto/xrpc-server'
export interface QueryParams { export interface QueryParams {
/** The handle to resolve. If not supplied, will resolve the host's own handle. */ /** The handle to resolve. */
handle?: string handle: string
} }
export type InputSchema = undefined export type InputSchema = undefined
@ -25,6 +25,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -33,10 +34,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -26,10 +26,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -34,3 +34,40 @@ export function isLabel(v: unknown): v is Label {
export function validateLabel(v: unknown): ValidationResult { export function validateLabel(v: unknown): ValidationResult {
return lexicons.validate('com.atproto.label.defs#label', v) return lexicons.validate('com.atproto.label.defs#label', v)
} }
/** Metadata tags on an atproto record, published by the author within the record. */
export interface SelfLabels {
values: SelfLabel[]
[k: string]: unknown
}
export function isSelfLabels(v: unknown): v is SelfLabels {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'com.atproto.label.defs#selfLabels'
)
}
export function validateSelfLabels(v: unknown): ValidationResult {
return lexicons.validate('com.atproto.label.defs#selfLabels', v)
}
/** Metadata tag on an atproto record, published by the author within the record. Note -- schemas should use #selfLabels, not #selfLabel. */
export interface SelfLabel {
/** the short string name of the value or type of this label */
val: string
[k: string]: unknown
}
export function isSelfLabel(v: unknown): v is SelfLabel {
return (
isObj(v) &&
hasProp(v, '$type') &&
v.$type === 'com.atproto.label.defs#selfLabel'
)
}
export function validateSelfLabel(v: unknown): ValidationResult {
return lexicons.validate('com.atproto.label.defs#selfLabel', v)
}

View File

@ -31,6 +31,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -39,10 +40,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -20,12 +20,15 @@ export type OutputSchema =
| { $type: string; [k: string]: unknown } | { $type: string; [k: string]: unknown }
export type HandlerError = ErrorFrame<'FutureCursor'> export type HandlerError = ErrorFrame<'FutureCursor'>
export type HandlerOutput = HandlerError | OutputSchema export type HandlerOutput = HandlerError | OutputSchema
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
req: IncomingMessage req: IncomingMessage
signal: AbortSignal signal: AbortSignal
}) => AsyncIterable<HandlerOutput> }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => AsyncIterable<HandlerOutput>
export interface Labels { export interface Labels {
seq: number seq: number

View File

@ -44,6 +44,7 @@ export interface HandlerInput {
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -52,10 +53,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -21,7 +21,7 @@ export const REASONSPAM = 'com.atproto.moderation.defs#reasonSpam'
export const REASONVIOLATION = 'com.atproto.moderation.defs#reasonViolation' export const REASONVIOLATION = 'com.atproto.moderation.defs#reasonViolation'
/** Misleading identity, affiliation, or content */ /** Misleading identity, affiliation, or content */
export const REASONMISLEADING = 'com.atproto.moderation.defs#reasonMisleading' export const REASONMISLEADING = 'com.atproto.moderation.defs#reasonMisleading'
/** Unwanted or mis-labeled sexual content */ /** Unwanted or mislabeled sexual content */
export const REASONSEXUAL = 'com.atproto.moderation.defs#reasonSexual' export const REASONSEXUAL = 'com.atproto.moderation.defs#reasonSexual'
/** Rude, harassing, explicit, or otherwise unwelcoming behavior */ /** Rude, harassing, explicit, or otherwise unwelcoming behavior */
export const REASONRUDE = 'com.atproto.moderation.defs#reasonRude' export const REASONRUDE = 'com.atproto.moderation.defs#reasonRude'

View File

@ -32,13 +32,16 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput
/** Create a new record. */ /** Create a new record. */
export interface Create { export interface Create {

View File

@ -40,6 +40,7 @@ export interface HandlerInput {
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -49,10 +50,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -36,10 +36,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | void export type HandlerOutput = HandlerError | void
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -29,6 +29,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -37,10 +38,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -33,6 +33,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -41,10 +42,13 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput

View File

@ -37,6 +37,7 @@ export type HandlerInput = undefined
export interface HandlerSuccess { export interface HandlerSuccess {
encoding: 'application/json' encoding: 'application/json'
body: OutputSchema body: OutputSchema
headers?: { [key: string]: string }
} }
export interface HandlerError { export interface HandlerError {
@ -45,13 +46,16 @@ export interface HandlerError {
} }
export type HandlerOutput = HandlerError | HandlerSuccess export type HandlerOutput = HandlerError | HandlerSuccess
export type Handler<HA extends HandlerAuth = never> = (ctx: { export type HandlerReqCtx<HA extends HandlerAuth = never> = {
auth: HA auth: HA
params: QueryParams params: QueryParams
input: HandlerInput input: HandlerInput
req: express.Request req: express.Request
res: express.Response res: express.Response
}) => Promise<HandlerOutput> | HandlerOutput }
export type Handler<HA extends HandlerAuth = never> = (
ctx: HandlerReqCtx<HA>,
) => Promise<HandlerOutput> | HandlerOutput
export interface Record { export interface Record {
uri: string uri: string

Some files were not shown because too many files have changed in this diff Show More