Merge branch 'main' of github.com:bluesky-social/social-app into app-2774
# Conflicts: # package.json # pnpm-lock.yaml # src/screens/Settings/PrivacyAndSecuritySettings.tsx
This commit is contained in:
@@ -22,7 +22,14 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
job:
|
||||
[lint, prettier, 'typecheck:ios', 'typecheck:android', 'typecheck:web']
|
||||
[
|
||||
lint,
|
||||
prettier,
|
||||
'lexicons:verify',
|
||||
'typecheck:ios',
|
||||
'typecheck:android',
|
||||
'typecheck:web',
|
||||
]
|
||||
steps:
|
||||
- name: ⬇️ Check out Git repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
|
||||
@@ -117,6 +117,9 @@ src/locale/locales/**/messages.js
|
||||
src/locale/locales/**/messages.mjs
|
||||
src/locale/locales/**/messages.ts
|
||||
|
||||
# generated lexicon schemas (pnpm lexicons:generate)
|
||||
src/lexicons/
|
||||
|
||||
# local builds
|
||||
*.apk
|
||||
*.aab
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
/**
|
||||
* Codemod to replace BskyAgent with AtpAgent
|
||||
*
|
||||
* Before:
|
||||
* import {BskyAgent} from '@atproto/api`
|
||||
* BskyAgent.appLabelers.includes(labeler)
|
||||
*
|
||||
* After:
|
||||
* import {AtpAgent} from '@atproto/api`
|
||||
* AtpAgent.appLabelers.includes(labeler)
|
||||
*
|
||||
* Handles import specifiers, type annotations, static member access
|
||||
* (BskyAgent.configure), `extends BskyAgent`, and `new BskyAgent()`. Whole
|
||||
* identifiers only, so names like `OpaqueBskyAgent` are left untouched.
|
||||
*
|
||||
* Usage: jscodeshift -t .jscodeshift/repo/bsky-agent.js <file-path>
|
||||
* Example: jscodeshift -t .jscodeshift/repo/bsky-agent.js src/lib/moderation.ts
|
||||
*/
|
||||
|
||||
/* eslint-disable */
|
||||
|
||||
export const parser = 'tsx'
|
||||
|
||||
export default function transformer(file, api) {
|
||||
const j = api.jscodeshift
|
||||
const root = j(file.source)
|
||||
|
||||
// Replace every standalone `BskyAgent` identifier with `AtpAgent`. This
|
||||
// covers imports, type references, member expressions, `extends`, and `new`.
|
||||
root
|
||||
.find(j.Identifier, {name: 'BskyAgent'})
|
||||
.replaceWith(() => j.identifier('AtpAgent'))
|
||||
|
||||
// Renaming can leave a duplicate `AtpAgent` specifier on the @atproto/api
|
||||
// import if the file already imported it. Dedupe by imported name, keeping
|
||||
// the type-only modifier only if every duplicate was type-only.
|
||||
root
|
||||
.find(j.ImportDeclaration, {source: {value: '@atproto/api'}})
|
||||
.forEach(path => {
|
||||
const seen = new Map()
|
||||
for (const spec of path.value.specifiers) {
|
||||
if (spec.type !== 'ImportSpecifier') {
|
||||
seen.set(Symbol(), spec)
|
||||
continue
|
||||
}
|
||||
const name = spec.imported.name
|
||||
const existing = seen.get(name)
|
||||
if (!existing) {
|
||||
seen.set(name, spec)
|
||||
} else if (
|
||||
existing.importKind === 'type' &&
|
||||
spec.importKind !== 'type'
|
||||
) {
|
||||
// Prefer the value (non-type) import if either usage needs it.
|
||||
seen.set(name, spec)
|
||||
}
|
||||
}
|
||||
path.value.specifiers = Array.from(seen.values())
|
||||
})
|
||||
|
||||
return root.toSource()
|
||||
}
|
||||
+4
-6
@@ -60,8 +60,10 @@
|
||||
"bskyweb/**",
|
||||
"bskyembed/**",
|
||||
"bskyogcard/**",
|
||||
"lint-rules/**",
|
||||
"src/locale/locales/_build/**",
|
||||
"src/locale/locales/**/*.js",
|
||||
"src/lexicons/**",
|
||||
"*.e2e.ts",
|
||||
"*.e2e.tsx",
|
||||
"eslint.config.mjs",
|
||||
@@ -238,7 +240,6 @@
|
||||
}
|
||||
}
|
||||
],
|
||||
"bsky-internal/use-exact-imports": "error",
|
||||
"bsky-internal/use-prefixed-imports": "error",
|
||||
"bsky-internal/lingui-msg-rule": "error",
|
||||
"react/display-name": "error",
|
||||
@@ -259,7 +260,6 @@
|
||||
"react/no-unsafe": "off",
|
||||
"react/react-in-jsx-scope": "off",
|
||||
"react/hook-use-state": "warn",
|
||||
"react-native/no-inline-styles": "off",
|
||||
"react-native-a11y/has-accessibility-hint": "error",
|
||||
"react-native-a11y/has-accessibility-props": "error",
|
||||
"react-native-a11y/has-valid-accessibility-actions": "error",
|
||||
@@ -274,7 +274,7 @@
|
||||
"react-native-a11y/has-valid-accessibility-ignores-invert-colors": "error",
|
||||
"react-native-a11y/has-valid-accessibility-live-region": "error",
|
||||
"react-native-a11y/has-valid-important-for-accessibility": "error",
|
||||
"react-compiler/react-compiler": "warn",
|
||||
"react/react-compiler": "warn",
|
||||
"simple-import-sort/imports": [
|
||||
"error",
|
||||
{
|
||||
@@ -374,9 +374,7 @@
|
||||
},
|
||||
"jsPlugins": [
|
||||
"eslint-plugin-bsky-internal",
|
||||
"eslint-plugin-react-native",
|
||||
"eslint-plugin-react-native-a11y",
|
||||
"eslint-plugin-react-compiler",
|
||||
"eslint-plugin-simple-import-sort"
|
||||
],
|
||||
"env": {
|
||||
@@ -404,4 +402,4 @@
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
android
|
||||
ios
|
||||
src/locale/locales
|
||||
src/lexicons
|
||||
lib/react-compiler-runtime
|
||||
bskyweb/static
|
||||
coverage
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {RichText} from '@atproto/api'
|
||||
import {RichText} from '@bsky/sdk/richtext'
|
||||
import {i18n} from '@lingui/core'
|
||||
|
||||
import {parseEmbedPlayerFromUrl} from '#/lib/strings/embed-player'
|
||||
|
||||
+7
-1
@@ -35,7 +35,13 @@ module.exports = function (api) {
|
||||
// cannot use `env` field because it will put them after
|
||||
// the `react-native-worklets/plugin` plugin
|
||||
...(api.env('test')
|
||||
? ['@babel/plugin-transform-class-static-block']
|
||||
? [
|
||||
'@babel/plugin-transform-class-static-block',
|
||||
// Compile `import()` to require so jest (which runs without
|
||||
// `--experimental-vm-modules`) can execute lazily-loaded modules
|
||||
// like `@ipld/dag-cbor` via its moduleNameMapper.
|
||||
'@babel/plugin-transform-dynamic-import',
|
||||
]
|
||||
: []),
|
||||
...(api.env('production') ? ['transform-remove-console'] : []),
|
||||
|
||||
|
||||
@@ -7,5 +7,4 @@ export const isView = AppBskyGraphDefs.isStarterPackView
|
||||
* Matches any starter pack view exported by our SDK
|
||||
*/
|
||||
export type AnyStarterPackView =
|
||||
| AppBskyGraphDefs.StarterPackViewBasic
|
||||
| AppBskyGraphDefs.StarterPackView
|
||||
AppBskyGraphDefs.StarterPackViewBasic | AppBskyGraphDefs.StarterPackView
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ Double check yourself by ensuring that the `version` in `package.json` matches
|
||||
what's in the latest release.
|
||||
|
||||
This new OTA branch should follow the format `1.X.0-ota-1`. If one or more OTAs
|
||||
have already been deployed for this release, incremement the branch name e.g.
|
||||
have already been deployed for this release, increment the branch name e.g.
|
||||
`1.x.0-ota-2`.
|
||||
|
||||
### 4. Add commits to the OTA branch
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 50 KiB |
@@ -1,32 +0,0 @@
|
||||
const BANNED_IMPORTS = [
|
||||
'@fortawesome/free-regular-svg-icons',
|
||||
'@fortawesome/free-solid-svg-icons',
|
||||
]
|
||||
|
||||
/** @type {import('eslint').Rule.RuleModule} */
|
||||
module.exports = {
|
||||
meta: {
|
||||
type: 'suggestion',
|
||||
docs: {
|
||||
description: 'Prevent importing entire icon packages',
|
||||
},
|
||||
schema: [],
|
||||
},
|
||||
create(context) {
|
||||
return {
|
||||
ImportDeclaration(node) {
|
||||
const source = node.source
|
||||
if (typeof source.value !== 'string') {
|
||||
return
|
||||
}
|
||||
if (BANNED_IMPORTS.includes(source.value)) {
|
||||
context.report({
|
||||
node,
|
||||
message:
|
||||
'Import the specific thing you want instead of the entire package',
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
+1332
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "app.bsky.actor.contentVisibilityDeclaration",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "record",
|
||||
"description": "A declaration of an account's preferences for appearing in content discovery surfaces.",
|
||||
"key": "literal:self",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": ["hideFromAlgorithmicRecommendations"],
|
||||
"properties": {
|
||||
"hideFromAlgorithmicRecommendations": {
|
||||
"type": "boolean",
|
||||
"description": "Whether the account requests that its posts be hidden from algorithmic recommendations. Consumers must treat a missing record as false."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,994 @@
|
||||
{
|
||||
"id": "app.bsky.actor.defs",
|
||||
"defs": {
|
||||
"nux": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"id",
|
||||
"completed"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"maxLength": 100
|
||||
},
|
||||
"data": {
|
||||
"type": "string",
|
||||
"maxLength": 3000,
|
||||
"description": "Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.",
|
||||
"maxGraphemes": 300
|
||||
},
|
||||
"completed": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"expiresAt": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "The date and time at which the NUX will expire and should be considered completed."
|
||||
}
|
||||
},
|
||||
"description": "A new user experiences (NUX) storage object"
|
||||
},
|
||||
"mutedWord": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"value",
|
||||
"targets"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"value": {
|
||||
"type": "string",
|
||||
"maxLength": 10000,
|
||||
"description": "The muted word itself.",
|
||||
"maxGraphemes": 1000
|
||||
},
|
||||
"targets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#mutedWordTarget",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": "The intended targets of the muted word."
|
||||
},
|
||||
"expiresAt": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "The date and time at which the muted word will expire and no longer be applied."
|
||||
},
|
||||
"actorTarget": {
|
||||
"type": "string",
|
||||
"default": "all",
|
||||
"description": "Groups of users to apply the muted word to. If undefined, applies to all users.",
|
||||
"knownValues": [
|
||||
"all",
|
||||
"exclude-following"
|
||||
]
|
||||
}
|
||||
},
|
||||
"description": "A word that the account owner has muted."
|
||||
},
|
||||
"savedFeed": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"id",
|
||||
"type",
|
||||
"value",
|
||||
"pinned"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"feed",
|
||||
"list",
|
||||
"timeline"
|
||||
]
|
||||
},
|
||||
"value": {
|
||||
"type": "string"
|
||||
},
|
||||
"pinned": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"statusView": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"status",
|
||||
"record"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"embed": {
|
||||
"refs": [
|
||||
"app.bsky.embed.external#view"
|
||||
],
|
||||
"type": "union",
|
||||
"description": "An optional embed associated with the status."
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.label.defs#label",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"record": {
|
||||
"type": "unknown"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "The status for the account.",
|
||||
"knownValues": [
|
||||
"app.bsky.actor.status#live"
|
||||
]
|
||||
},
|
||||
"isActive": {
|
||||
"type": "boolean",
|
||||
"description": "True if the status is not expired, false if it is expired. Only present if expiration was set."
|
||||
},
|
||||
"expiresAt": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "The date when this status will expire. The application might choose to no longer return the status after expiration."
|
||||
},
|
||||
"isDisabled": {
|
||||
"type": "boolean",
|
||||
"description": "True if the user's go-live access has been disabled by a moderator, false otherwise."
|
||||
}
|
||||
}
|
||||
},
|
||||
"preferences": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"#adultContentPref",
|
||||
"#contentLabelPref",
|
||||
"#savedFeedsPref",
|
||||
"#savedFeedsPrefV2",
|
||||
"#personalDetailsPref",
|
||||
"#declaredAgePref",
|
||||
"#feedViewPref",
|
||||
"#threadViewPref",
|
||||
"#interestsPref",
|
||||
"#mutedWordsPref",
|
||||
"#hiddenPostsPref",
|
||||
"#bskyAppStatePref",
|
||||
"#labelersPref",
|
||||
"#postInteractionSettingsPref",
|
||||
"#verificationPrefs",
|
||||
"#liveEventPreferences"
|
||||
],
|
||||
"type": "union"
|
||||
}
|
||||
},
|
||||
"profileView": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"did",
|
||||
"handle"
|
||||
],
|
||||
"properties": {
|
||||
"did": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
},
|
||||
"debug": {
|
||||
"type": "unknown",
|
||||
"description": "Debug information for internal development"
|
||||
},
|
||||
"avatar": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"handle": {
|
||||
"type": "string",
|
||||
"format": "handle"
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.label.defs#label",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"ref": "#statusView",
|
||||
"type": "ref"
|
||||
},
|
||||
"viewer": {
|
||||
"ref": "#viewerState",
|
||||
"type": "ref"
|
||||
},
|
||||
"pronouns": {
|
||||
"type": "string"
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"indexedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"associated": {
|
||||
"ref": "#profileAssociated",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"maxLength": 2560,
|
||||
"maxGraphemes": 256
|
||||
},
|
||||
"displayName": {
|
||||
"type": "string",
|
||||
"maxLength": 640,
|
||||
"maxGraphemes": 64
|
||||
},
|
||||
"verification": {
|
||||
"ref": "#verificationState",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"viewerState": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"muted": {
|
||||
"type": "boolean",
|
||||
"description": "Whether the account is fully muted, directly or via a mutelist. False when the mute is scoped to specific kinds; see mutedOnlyReposts and mutedOnlyQuoteposts."
|
||||
},
|
||||
"blocking": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"blockedBy": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"following": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"followedBy": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"mutedByList": {
|
||||
"ref": "app.bsky.graph.defs#listViewBasic",
|
||||
"type": "ref"
|
||||
},
|
||||
"blockingByList": {
|
||||
"ref": "app.bsky.graph.defs#listViewBasic",
|
||||
"type": "ref"
|
||||
},
|
||||
"knownFollowers": {
|
||||
"ref": "#knownFollowers",
|
||||
"type": "ref",
|
||||
"description": "This property is present only in selected cases, as an optimization."
|
||||
},
|
||||
"mutedOnlyReposts": {
|
||||
"type": "boolean",
|
||||
"description": "Whether the account's reposts are muted. Scoped mutes are exclusive with muted: this can be true while muted is false. If muted is true, this will be false."
|
||||
},
|
||||
"mutedOnlyQuoteposts": {
|
||||
"type": "boolean",
|
||||
"description": "Whether the account's quote posts are muted. Scoped mutes are exclusive with muted: this can be true while muted is false. If muted is true, this will be false."
|
||||
},
|
||||
"activitySubscription": {
|
||||
"ref": "app.bsky.notification.defs#activitySubscription",
|
||||
"type": "ref",
|
||||
"description": "This property is present only in selected cases, as an optimization."
|
||||
}
|
||||
},
|
||||
"description": "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests."
|
||||
},
|
||||
"feedViewPref": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"feed"
|
||||
],
|
||||
"properties": {
|
||||
"feed": {
|
||||
"type": "string",
|
||||
"description": "The URI of the feed, or an identifier which describes the feed."
|
||||
},
|
||||
"hideReplies": {
|
||||
"type": "boolean",
|
||||
"description": "Hide replies in the feed."
|
||||
},
|
||||
"hideReposts": {
|
||||
"type": "boolean",
|
||||
"description": "Hide reposts in the feed."
|
||||
},
|
||||
"hideQuotePosts": {
|
||||
"type": "boolean",
|
||||
"description": "Hide quote posts in the feed."
|
||||
},
|
||||
"hideRepliesByLikeCount": {
|
||||
"type": "integer",
|
||||
"description": "Hide replies in the feed if they do not have this number of likes."
|
||||
},
|
||||
"hideRepliesByUnfollowed": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Hide replies in the feed if they are not by followed users."
|
||||
}
|
||||
}
|
||||
},
|
||||
"labelersPref": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"labelers"
|
||||
],
|
||||
"properties": {
|
||||
"labelers": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#labelerPrefItem",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"interestsPref": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"tags"
|
||||
],
|
||||
"properties": {
|
||||
"tags": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"maxLength": 640,
|
||||
"maxGraphemes": 64
|
||||
},
|
||||
"maxLength": 100,
|
||||
"description": "A list of tags which describe the account owner's interests gathered during onboarding."
|
||||
}
|
||||
}
|
||||
},
|
||||
"knownFollowers": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"count",
|
||||
"followers"
|
||||
],
|
||||
"properties": {
|
||||
"count": {
|
||||
"type": "integer"
|
||||
},
|
||||
"followers": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#profileViewBasic",
|
||||
"type": "ref"
|
||||
},
|
||||
"maxLength": 5,
|
||||
"minLength": 0
|
||||
}
|
||||
},
|
||||
"description": "The subject's followers whom you also follow"
|
||||
},
|
||||
"mutedWordsPref": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"items"
|
||||
],
|
||||
"properties": {
|
||||
"items": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#mutedWord",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": "A list of words the account owner has muted."
|
||||
}
|
||||
}
|
||||
},
|
||||
"savedFeedsPref": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"pinned",
|
||||
"saved"
|
||||
],
|
||||
"properties": {
|
||||
"saved": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
}
|
||||
},
|
||||
"pinned": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
}
|
||||
},
|
||||
"timelineIndex": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"threadViewPref": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"sort": {
|
||||
"type": "string",
|
||||
"description": "Sorting mode for threads.",
|
||||
"knownValues": [
|
||||
"oldest",
|
||||
"newest",
|
||||
"most-likes",
|
||||
"random",
|
||||
"hotness"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"declaredAgePref": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"isOverAge13": {
|
||||
"type": "boolean",
|
||||
"description": "Indicates if the user has declared that they are over 13 years of age."
|
||||
},
|
||||
"isOverAge16": {
|
||||
"type": "boolean",
|
||||
"description": "Indicates if the user has declared that they are over 16 years of age."
|
||||
},
|
||||
"isOverAge18": {
|
||||
"type": "boolean",
|
||||
"description": "Indicates if the user has declared that they are over 18 years of age."
|
||||
}
|
||||
},
|
||||
"description": "Read-only preference containing value(s) inferred from the user's declared birthdate. Absence of this preference object in the response indicates that the user has not made a declaration."
|
||||
},
|
||||
"hiddenPostsPref": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"items"
|
||||
],
|
||||
"properties": {
|
||||
"items": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"description": "A list of URIs of posts the account owner has hidden."
|
||||
}
|
||||
}
|
||||
},
|
||||
"labelerPrefItem": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"did"
|
||||
],
|
||||
"properties": {
|
||||
"did": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
}
|
||||
}
|
||||
},
|
||||
"mutedWordTarget": {
|
||||
"type": "string",
|
||||
"maxLength": 640,
|
||||
"knownValues": [
|
||||
"content",
|
||||
"tag"
|
||||
],
|
||||
"maxGraphemes": 64
|
||||
},
|
||||
"adultContentPref": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"enabled"
|
||||
],
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"bskyAppStatePref": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"nuxs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#nux",
|
||||
"type": "ref"
|
||||
},
|
||||
"maxLength": 100,
|
||||
"description": "Storage for NUXs the user has encountered."
|
||||
},
|
||||
"isBetaUser": {
|
||||
"type": "boolean",
|
||||
"description": "Indicates if the user is participating in the beta features program."
|
||||
},
|
||||
"queuedNudges": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"maxLength": 100
|
||||
},
|
||||
"maxLength": 1000,
|
||||
"description": "An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user."
|
||||
},
|
||||
"activeProgressGuide": {
|
||||
"ref": "#bskyAppProgressGuide",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"description": "A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this."
|
||||
},
|
||||
"contentLabelPref": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"label",
|
||||
"visibility"
|
||||
],
|
||||
"properties": {
|
||||
"label": {
|
||||
"type": "string"
|
||||
},
|
||||
"labelerDid": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "Which labeler does this preference apply to? If undefined, applies globally."
|
||||
},
|
||||
"visibility": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"ignore",
|
||||
"show",
|
||||
"warn",
|
||||
"hide"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"profileViewBasic": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"did",
|
||||
"handle"
|
||||
],
|
||||
"properties": {
|
||||
"did": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
},
|
||||
"debug": {
|
||||
"type": "unknown",
|
||||
"description": "Debug information for internal development"
|
||||
},
|
||||
"avatar": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"handle": {
|
||||
"type": "string",
|
||||
"format": "handle"
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.label.defs#label",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"ref": "#statusView",
|
||||
"type": "ref"
|
||||
},
|
||||
"viewer": {
|
||||
"ref": "#viewerState",
|
||||
"type": "ref"
|
||||
},
|
||||
"pronouns": {
|
||||
"type": "string"
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"associated": {
|
||||
"ref": "#profileAssociated",
|
||||
"type": "ref"
|
||||
},
|
||||
"displayName": {
|
||||
"type": "string",
|
||||
"maxLength": 640,
|
||||
"maxGraphemes": 64
|
||||
},
|
||||
"verification": {
|
||||
"ref": "#verificationState",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"savedFeedsPrefV2": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"items"
|
||||
],
|
||||
"properties": {
|
||||
"items": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#savedFeed",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"verificationView": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"issuer",
|
||||
"uri",
|
||||
"isValid",
|
||||
"createdAt"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "The AT-URI of the verification record."
|
||||
},
|
||||
"issuer": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "The user who issued this verification."
|
||||
},
|
||||
"isValid": {
|
||||
"type": "boolean",
|
||||
"description": "True if the verification passes validation, otherwise false."
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "Timestamp when the verification was created."
|
||||
},
|
||||
"issuerHandle": {
|
||||
"type": "string",
|
||||
"format": "handle",
|
||||
"description": "The handle of the issuer."
|
||||
},
|
||||
"issuerDisplayName": {
|
||||
"type": "string",
|
||||
"description": "The display name of the issuer."
|
||||
}
|
||||
},
|
||||
"description": "An individual verification for an associated subject."
|
||||
},
|
||||
"profileAssociated": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"chat": {
|
||||
"ref": "#profileAssociatedChat",
|
||||
"type": "ref"
|
||||
},
|
||||
"germ": {
|
||||
"ref": "#profileAssociatedGerm",
|
||||
"type": "ref"
|
||||
},
|
||||
"lists": {
|
||||
"type": "integer"
|
||||
},
|
||||
"labeler": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"feedgens": {
|
||||
"type": "integer"
|
||||
},
|
||||
"starterPacks": {
|
||||
"type": "integer"
|
||||
},
|
||||
"activitySubscription": {
|
||||
"ref": "#profileAssociatedActivitySubscription",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"verificationPrefs": {
|
||||
"type": "object",
|
||||
"required": [],
|
||||
"properties": {
|
||||
"hideBadges": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Hide the blue check badges for verified accounts and trusted verifiers."
|
||||
}
|
||||
},
|
||||
"description": "Preferences for how verified accounts appear in the app."
|
||||
},
|
||||
"verificationState": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"verifications",
|
||||
"verifiedStatus",
|
||||
"trustedVerifierStatus"
|
||||
],
|
||||
"properties": {
|
||||
"verifications": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#verificationView",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": "All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included."
|
||||
},
|
||||
"verifiedStatus": {
|
||||
"type": "string",
|
||||
"description": "The user's status as a verified account.",
|
||||
"knownValues": [
|
||||
"valid",
|
||||
"invalid",
|
||||
"none"
|
||||
]
|
||||
},
|
||||
"trustedVerifierStatus": {
|
||||
"type": "string",
|
||||
"description": "The user's status as a trusted verifier.",
|
||||
"knownValues": [
|
||||
"valid",
|
||||
"invalid",
|
||||
"none"
|
||||
]
|
||||
}
|
||||
},
|
||||
"description": "Represents the verification information about the user this object is attached to."
|
||||
},
|
||||
"personalDetailsPref": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"birthDate": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "The birth date of account owner."
|
||||
}
|
||||
}
|
||||
},
|
||||
"profileViewDetailed": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"did",
|
||||
"handle"
|
||||
],
|
||||
"properties": {
|
||||
"did": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
},
|
||||
"debug": {
|
||||
"type": "unknown",
|
||||
"description": "Debug information for internal development"
|
||||
},
|
||||
"avatar": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"banner": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"handle": {
|
||||
"type": "string",
|
||||
"format": "handle"
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.label.defs#label",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"ref": "#statusView",
|
||||
"type": "ref"
|
||||
},
|
||||
"viewer": {
|
||||
"ref": "#viewerState",
|
||||
"type": "ref"
|
||||
},
|
||||
"website": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"pronouns": {
|
||||
"type": "string"
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"indexedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"associated": {
|
||||
"ref": "#profileAssociated",
|
||||
"type": "ref"
|
||||
},
|
||||
"pinnedPost": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
},
|
||||
"postsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"maxLength": 2560,
|
||||
"maxGraphemes": 256
|
||||
},
|
||||
"displayName": {
|
||||
"type": "string",
|
||||
"maxLength": 640,
|
||||
"maxGraphemes": 64
|
||||
},
|
||||
"followsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"verification": {
|
||||
"ref": "#verificationState",
|
||||
"type": "ref"
|
||||
},
|
||||
"followersCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"joinedViaStarterPack": {
|
||||
"ref": "app.bsky.graph.defs#starterPackViewBasic",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"bskyAppProgressGuide": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"guide"
|
||||
],
|
||||
"properties": {
|
||||
"guide": {
|
||||
"type": "string",
|
||||
"maxLength": 100
|
||||
}
|
||||
},
|
||||
"description": "If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress."
|
||||
},
|
||||
"liveEventPreferences": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hideAllFeeds": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether to hide all feeds from live events."
|
||||
},
|
||||
"hiddenFeedIds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "A list of feed IDs that the user has hidden from live events."
|
||||
}
|
||||
},
|
||||
"description": "Preferences for live events."
|
||||
},
|
||||
"profileAssociatedChat": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"allowIncoming"
|
||||
],
|
||||
"properties": {
|
||||
"allowIncoming": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"all",
|
||||
"none",
|
||||
"following"
|
||||
]
|
||||
},
|
||||
"allowGroupInvites": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"all",
|
||||
"none",
|
||||
"following"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"profileAssociatedGerm": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"showButtonTo",
|
||||
"messageMeUrl"
|
||||
],
|
||||
"properties": {
|
||||
"messageMeUrl": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"showButtonTo": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"usersIFollow",
|
||||
"everyone"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"postInteractionSettingsPref": {
|
||||
"type": "object",
|
||||
"required": [],
|
||||
"properties": {
|
||||
"threadgateAllowRules": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"app.bsky.feed.threadgate#mentionRule",
|
||||
"app.bsky.feed.threadgate#followerRule",
|
||||
"app.bsky.feed.threadgate#followingRule",
|
||||
"app.bsky.feed.threadgate#listRule"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"maxLength": 5,
|
||||
"description": "Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply."
|
||||
},
|
||||
"postgateEmbeddingRules": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"app.bsky.feed.postgate#disableRule"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"maxLength": 5,
|
||||
"description": "Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed."
|
||||
}
|
||||
},
|
||||
"description": "Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly."
|
||||
},
|
||||
"profileAssociatedActivitySubscription": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"allowSubscriptions"
|
||||
],
|
||||
"properties": {
|
||||
"allowSubscriptions": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"followers",
|
||||
"mutuals",
|
||||
"none"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"id": "app.bsky.actor.getPreferences",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"preferences"
|
||||
],
|
||||
"properties": {
|
||||
"preferences": {
|
||||
"ref": "app.bsky.actor.defs#preferences",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {}
|
||||
},
|
||||
"description": "Get private preferences attached to the current account. Expected use is synchronization between multiple devices, and import/export during account migration. Requires auth."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"id": "app.bsky.actor.getProfile",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"ref": "app.bsky.actor.defs#profileViewDetailed",
|
||||
"type": "ref"
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier",
|
||||
"description": "Handle or DID of account to fetch profile of."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"id": "app.bsky.actor.getProfiles",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"profiles"
|
||||
],
|
||||
"properties": {
|
||||
"profiles": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#profileViewDetailed",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actors"
|
||||
],
|
||||
"properties": {
|
||||
"actors": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"maxLength": 25
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get detailed profile views of multiple actors."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"id": "app.bsky.actor.getSuggestions",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"actors"
|
||||
],
|
||||
"properties": {
|
||||
"recId": {
|
||||
"type": "integer",
|
||||
"description": "DEPRECATED: use recIdStr instead."
|
||||
},
|
||||
"actors": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"recIdStr": {
|
||||
"type": "string",
|
||||
"description": "Snowflake for this recommendation, use when submitting recommendation events."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get a list of suggested actors. Expected use is discovery of accounts to follow during new account onboarding."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"id": "app.bsky.actor.profile",
|
||||
"defs": {
|
||||
"main": {
|
||||
"key": "literal:self",
|
||||
"type": "record",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"avatar": {
|
||||
"type": "blob",
|
||||
"accept": [
|
||||
"image/png",
|
||||
"image/jpeg"
|
||||
],
|
||||
"maxSize": 1000000,
|
||||
"description": "Small image to be displayed next to posts from account. AKA, 'profile picture'"
|
||||
},
|
||||
"banner": {
|
||||
"type": "blob",
|
||||
"accept": [
|
||||
"image/png",
|
||||
"image/jpeg"
|
||||
],
|
||||
"maxSize": 1000000,
|
||||
"description": "Larger horizontal image to display behind profile view."
|
||||
},
|
||||
"labels": {
|
||||
"refs": [
|
||||
"com.atproto.label.defs#selfLabels"
|
||||
],
|
||||
"type": "union",
|
||||
"description": "Self-label values, specific to the Bluesky application, on the overall account."
|
||||
},
|
||||
"website": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"pronouns": {
|
||||
"type": "string",
|
||||
"maxLength": 200,
|
||||
"description": "Free-form pronouns text.",
|
||||
"maxGraphemes": 20
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"pinnedPost": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"maxLength": 2560,
|
||||
"description": "Free-form profile description text.",
|
||||
"maxGraphemes": 256
|
||||
},
|
||||
"displayName": {
|
||||
"type": "string",
|
||||
"maxLength": 640,
|
||||
"maxGraphemes": 64
|
||||
},
|
||||
"joinedViaStarterPack": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "A declaration of a Bluesky account profile."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "app.bsky.actor.putPreferences",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"preferences"
|
||||
],
|
||||
"properties": {
|
||||
"preferences": {
|
||||
"ref": "app.bsky.actor.defs#preferences",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "Set the private preferences attached to the account."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"id": "app.bsky.actor.searchActors",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"actors"
|
||||
],
|
||||
"properties": {
|
||||
"actors": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"q": {
|
||||
"type": "string",
|
||||
"description": "Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended."
|
||||
},
|
||||
"term": {
|
||||
"type": "string",
|
||||
"description": "DEPRECATED: use 'q' instead."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 25,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Find actors (profiles) matching search criteria. Does not require auth."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"id": "app.bsky.actor.searchActorsTypeahead",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"actors"
|
||||
],
|
||||
"properties": {
|
||||
"actors": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#profileViewBasic",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"q": {
|
||||
"type": "string",
|
||||
"description": "Search query prefix; not a full query string."
|
||||
},
|
||||
"term": {
|
||||
"type": "string",
|
||||
"description": "DEPRECATED: use 'q' instead."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 10,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Find actor suggestions for a prefix search term. Expected use is for auto-completion during text field entry. Does not require auth."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"id": "app.bsky.actor.status",
|
||||
"defs": {
|
||||
"live": {
|
||||
"type": "token",
|
||||
"description": "Advertises an account as currently offering live content."
|
||||
},
|
||||
"main": {
|
||||
"key": "literal:self",
|
||||
"type": "record",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"status",
|
||||
"createdAt"
|
||||
],
|
||||
"properties": {
|
||||
"embed": {
|
||||
"refs": [
|
||||
"app.bsky.embed.external"
|
||||
],
|
||||
"type": "union",
|
||||
"description": "An optional embed associated with the status."
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "The status for the account.",
|
||||
"knownValues": [
|
||||
"app.bsky.actor.status#live"
|
||||
]
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"durationMinutes": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"description": "The duration of the status in minutes. Applications can choose to impose minimum and maximum limits."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "A declaration of a Bluesky account status."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"id": "app.bsky.ageassurance.begin",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"email",
|
||||
"language",
|
||||
"countryCode"
|
||||
],
|
||||
"properties": {
|
||||
"email": {
|
||||
"type": "string",
|
||||
"description": "The user's email address to receive Age Assurance instructions."
|
||||
},
|
||||
"language": {
|
||||
"type": "string",
|
||||
"description": "The user's preferred language for communication during the Age Assurance process."
|
||||
},
|
||||
"regionCode": {
|
||||
"type": "string",
|
||||
"description": "An optional ISO 3166-2 code of the user's region or state within the country."
|
||||
},
|
||||
"countryCode": {
|
||||
"type": "string",
|
||||
"description": "An ISO 3166-1 alpha-2 code of the user's location."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "InvalidEmail"
|
||||
},
|
||||
{
|
||||
"name": "DidTooLong"
|
||||
},
|
||||
{
|
||||
"name": "InvalidInitiation"
|
||||
},
|
||||
{
|
||||
"name": "RegionNotSupported"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"ref": "app.bsky.ageassurance.defs#state",
|
||||
"type": "ref"
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "Initiate Age Assurance for an account."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,333 @@
|
||||
{
|
||||
"id": "app.bsky.ageassurance.defs",
|
||||
"defs": {
|
||||
"event": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"createdAt",
|
||||
"status",
|
||||
"access",
|
||||
"attemptId",
|
||||
"countryCode"
|
||||
],
|
||||
"properties": {
|
||||
"email": {
|
||||
"type": "string",
|
||||
"description": "The email used for Age Assurance."
|
||||
},
|
||||
"access": {
|
||||
"type": "string",
|
||||
"description": "The access level granted based on Age Assurance data we've processed.",
|
||||
"knownValues": [
|
||||
"unknown",
|
||||
"none",
|
||||
"safe",
|
||||
"full"
|
||||
]
|
||||
},
|
||||
"initIp": {
|
||||
"type": "string",
|
||||
"description": "The IP address used when initiating the Age Assurance flow."
|
||||
},
|
||||
"initUa": {
|
||||
"type": "string",
|
||||
"description": "The user agent used when initiating the Age Assurance flow."
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "The status of the Age Assurance process.",
|
||||
"knownValues": [
|
||||
"unknown",
|
||||
"pending",
|
||||
"assured",
|
||||
"blocked"
|
||||
]
|
||||
},
|
||||
"attemptId": {
|
||||
"type": "string",
|
||||
"description": "The unique identifier for this instance of the Age Assurance flow, in UUID format."
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "The date and time of this write operation."
|
||||
},
|
||||
"completeIp": {
|
||||
"type": "string",
|
||||
"description": "The IP address used when completing the Age Assurance flow."
|
||||
},
|
||||
"completeUa": {
|
||||
"type": "string",
|
||||
"description": "The user agent used when completing the Age Assurance flow."
|
||||
},
|
||||
"regionCode": {
|
||||
"type": "string",
|
||||
"description": "The ISO 3166-2 region code provided when beginning the Age Assurance flow."
|
||||
},
|
||||
"countryCode": {
|
||||
"type": "string",
|
||||
"description": "The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow."
|
||||
}
|
||||
},
|
||||
"description": "Object used to store Age Assurance data in stash."
|
||||
},
|
||||
"state": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"status",
|
||||
"access"
|
||||
],
|
||||
"properties": {
|
||||
"access": {
|
||||
"ref": "app.bsky.ageassurance.defs#access",
|
||||
"type": "ref"
|
||||
},
|
||||
"status": {
|
||||
"ref": "app.bsky.ageassurance.defs#status",
|
||||
"type": "ref"
|
||||
},
|
||||
"lastInitiatedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "The timestamp when this state was last updated."
|
||||
}
|
||||
},
|
||||
"description": "The user's computed Age Assurance state."
|
||||
},
|
||||
"access": {
|
||||
"type": "string",
|
||||
"description": "The access level granted based on Age Assurance data we've processed.",
|
||||
"knownValues": [
|
||||
"unknown",
|
||||
"none",
|
||||
"safe",
|
||||
"full"
|
||||
]
|
||||
},
|
||||
"config": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"regions"
|
||||
],
|
||||
"properties": {
|
||||
"regions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.ageassurance.defs#configRegion",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": "The per-region Age Assurance configuration."
|
||||
}
|
||||
},
|
||||
"description": ""
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "The status of the Age Assurance process.",
|
||||
"knownValues": [
|
||||
"unknown",
|
||||
"pending",
|
||||
"assured",
|
||||
"blocked"
|
||||
]
|
||||
},
|
||||
"configRegion": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"countryCode",
|
||||
"minAccessAge",
|
||||
"rules"
|
||||
],
|
||||
"properties": {
|
||||
"rules": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"#configRegionRuleDefault",
|
||||
"#configRegionRuleIfDeclaredOverAge",
|
||||
"#configRegionRuleIfDeclaredUnderAge",
|
||||
"#configRegionRuleIfAssuredOverAge",
|
||||
"#configRegionRuleIfAssuredUnderAge",
|
||||
"#configRegionRuleIfAccountNewerThan",
|
||||
"#configRegionRuleIfAccountOlderThan"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"description": "The ordered list of Age Assurance rules that apply to this region. Rules should be applied in order, and the first matching rule determines the access level granted. The rules array should always include a default rule as the last item."
|
||||
},
|
||||
"platforms": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"web",
|
||||
"ios",
|
||||
"android"
|
||||
]
|
||||
},
|
||||
"description": "The platforms this configuration applies to. If omitted, the configuration applies to all platforms."
|
||||
},
|
||||
"regionCode": {
|
||||
"type": "string",
|
||||
"description": "The ISO 3166-2 region code this configuration applies to. If omitted, the configuration applies to the entire country."
|
||||
},
|
||||
"countryCode": {
|
||||
"type": "string",
|
||||
"description": "The ISO 3166-1 alpha-2 country code this configuration applies to."
|
||||
},
|
||||
"minAccessAge": {
|
||||
"type": "integer",
|
||||
"description": "The minimum age (as a whole integer) required to use Bluesky in this region."
|
||||
},
|
||||
"additionalVerificationMethods": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"device"
|
||||
]
|
||||
},
|
||||
"description": "Verification methods permitted in this region in addition to the third-party (KWS) flow, which is always supported. `device` permits using the native on-device age APIs (e.g. Apple Declared Age Range, Google Play Age Signals)."
|
||||
}
|
||||
},
|
||||
"description": "The Age Assurance configuration for a specific region."
|
||||
},
|
||||
"stateMetadata": {
|
||||
"type": "object",
|
||||
"required": [],
|
||||
"properties": {
|
||||
"accountCreatedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "The account creation timestamp."
|
||||
}
|
||||
},
|
||||
"description": "Additional metadata needed to compute Age Assurance state client-side."
|
||||
},
|
||||
"configRegionRuleDefault": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"access"
|
||||
],
|
||||
"properties": {
|
||||
"access": {
|
||||
"ref": "app.bsky.ageassurance.defs#access",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"description": "Age Assurance rule that applies by default."
|
||||
},
|
||||
"configRegionRuleIfAssuredOverAge": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"age",
|
||||
"access"
|
||||
],
|
||||
"properties": {
|
||||
"age": {
|
||||
"type": "integer",
|
||||
"description": "The age threshold as a whole integer."
|
||||
},
|
||||
"access": {
|
||||
"ref": "app.bsky.ageassurance.defs#access",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"description": "Age Assurance rule that applies if the user has been assured to be equal-to or over a certain age."
|
||||
},
|
||||
"configRegionRuleIfAssuredUnderAge": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"age",
|
||||
"access"
|
||||
],
|
||||
"properties": {
|
||||
"age": {
|
||||
"type": "integer",
|
||||
"description": "The age threshold as a whole integer."
|
||||
},
|
||||
"access": {
|
||||
"ref": "app.bsky.ageassurance.defs#access",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"description": "Age Assurance rule that applies if the user has been assured to be under a certain age."
|
||||
},
|
||||
"configRegionRuleIfDeclaredOverAge": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"age",
|
||||
"access"
|
||||
],
|
||||
"properties": {
|
||||
"age": {
|
||||
"type": "integer",
|
||||
"description": "The age threshold as a whole integer."
|
||||
},
|
||||
"access": {
|
||||
"ref": "app.bsky.ageassurance.defs#access",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"description": "Age Assurance rule that applies if the user has declared themselves equal-to or over a certain age."
|
||||
},
|
||||
"configRegionRuleIfAccountNewerThan": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"date",
|
||||
"access"
|
||||
],
|
||||
"properties": {
|
||||
"date": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "The date threshold as a datetime string."
|
||||
},
|
||||
"access": {
|
||||
"ref": "app.bsky.ageassurance.defs#access",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"description": "Age Assurance rule that applies if the account is equal-to or newer than a certain date."
|
||||
},
|
||||
"configRegionRuleIfAccountOlderThan": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"date",
|
||||
"access"
|
||||
],
|
||||
"properties": {
|
||||
"date": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "The date threshold as a datetime string."
|
||||
},
|
||||
"access": {
|
||||
"ref": "app.bsky.ageassurance.defs#access",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"description": "Age Assurance rule that applies if the account is older than a certain date."
|
||||
},
|
||||
"configRegionRuleIfDeclaredUnderAge": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"age",
|
||||
"access"
|
||||
],
|
||||
"properties": {
|
||||
"age": {
|
||||
"type": "integer",
|
||||
"description": "The age threshold as a whole integer."
|
||||
},
|
||||
"access": {
|
||||
"ref": "app.bsky.ageassurance.defs#access",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"description": "Age Assurance rule that applies if the user has declared themselves under a certain age."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"id": "app.bsky.ageassurance.getConfig",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"ref": "app.bsky.ageassurance.defs#config",
|
||||
"type": "ref"
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "Returns Age Assurance configuration for use on the client."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"id": "app.bsky.ageassurance.getState",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"state",
|
||||
"metadata"
|
||||
],
|
||||
"properties": {
|
||||
"state": {
|
||||
"ref": "app.bsky.ageassurance.defs#state",
|
||||
"type": "ref"
|
||||
},
|
||||
"metadata": {
|
||||
"ref": "app.bsky.ageassurance.defs#stateMetadata",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"countryCode"
|
||||
],
|
||||
"properties": {
|
||||
"regionCode": {
|
||||
"type": "string"
|
||||
},
|
||||
"countryCode": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Returns server-computed Age Assurance state, if available, and any additional metadata needed to compute Age Assurance state client-side."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"id": "app.bsky.bookmark.createBookmark",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"cid"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "UnsupportedCollection",
|
||||
"description": "The URI to be bookmarked is for an unsupported collection."
|
||||
}
|
||||
],
|
||||
"description": "Creates a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"id": "app.bsky.bookmark.defs",
|
||||
"defs": {
|
||||
"bookmark": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"subject"
|
||||
],
|
||||
"properties": {
|
||||
"subject": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref",
|
||||
"description": "A strong ref to the record to be bookmarked. Currently, only `app.bsky.feed.post` records are supported."
|
||||
}
|
||||
},
|
||||
"description": "Object used to store bookmark data in stash."
|
||||
},
|
||||
"bookmarkView": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"subject",
|
||||
"item"
|
||||
],
|
||||
"properties": {
|
||||
"item": {
|
||||
"refs": [
|
||||
"app.bsky.feed.defs#blockedPost",
|
||||
"app.bsky.feed.defs#notFoundPost",
|
||||
"app.bsky.feed.defs#postView"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"subject": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref",
|
||||
"description": "A strong ref to the bookmarked record."
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"id": "app.bsky.bookmark.deleteBookmark",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "UnsupportedCollection",
|
||||
"description": "The URI to be bookmarked is for an unsupported collection."
|
||||
}
|
||||
],
|
||||
"description": "Deletes a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"id": "app.bsky.bookmark.getBookmarks",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"bookmarks"
|
||||
],
|
||||
"properties": {
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"bookmarks": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.bookmark.defs#bookmarkView",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Gets views of records bookmarked by the authenticated user. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"id": "app.bsky.contact.defs",
|
||||
"defs": {
|
||||
"syncStatus": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"syncedAt",
|
||||
"matchesCount"
|
||||
],
|
||||
"properties": {
|
||||
"syncedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "Last date when contacts where imported."
|
||||
},
|
||||
"matchesCount": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "Number of existing contact matches resulting of the user imports and of their imported contacts having imported the user. Matches stop being counted when the user either follows the matched contact or dismisses the match."
|
||||
}
|
||||
}
|
||||
},
|
||||
"notification": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"from",
|
||||
"to"
|
||||
],
|
||||
"properties": {
|
||||
"to": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "The DID of who this notification should go to."
|
||||
},
|
||||
"from": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "The DID of who this notification comes from."
|
||||
}
|
||||
},
|
||||
"description": "A stash object to be sent via bsync representing a notification to be created."
|
||||
},
|
||||
"matchAndContactIndex": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"match",
|
||||
"contactIndex"
|
||||
],
|
||||
"properties": {
|
||||
"match": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref",
|
||||
"description": "Profile of the matched user."
|
||||
},
|
||||
"contactIndex": {
|
||||
"type": "integer",
|
||||
"maximum": 999,
|
||||
"minimum": 0,
|
||||
"description": "The index of this match in the import contact input."
|
||||
}
|
||||
},
|
||||
"description": "Associates a profile with the positional index of the contact import input in the call to `app.bsky.contact.importContacts`, so clients can know which phone caused a particular match."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"id": "app.bsky.contact.dismissMatch",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"subject"
|
||||
],
|
||||
"properties": {
|
||||
"subject": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "The subject's DID to dismiss the match with."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "InvalidDid"
|
||||
},
|
||||
{
|
||||
"name": "InternalError"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "Removes a match that was found via contact import. It shouldn't appear again if the same contact is re-imported. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"id": "app.bsky.contact.getMatches",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"errors": [
|
||||
{
|
||||
"name": "InvalidDid"
|
||||
},
|
||||
{
|
||||
"name": "InvalidLimit"
|
||||
},
|
||||
{
|
||||
"name": "InvalidCursor"
|
||||
},
|
||||
{
|
||||
"name": "InternalError"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"matches"
|
||||
],
|
||||
"properties": {
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"matches": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Returns the matched contacts (contacts that were mutually imported). Excludes dismissed matches. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"id": "app.bsky.contact.getSyncStatus",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"errors": [
|
||||
{
|
||||
"name": "InvalidDid"
|
||||
},
|
||||
{
|
||||
"name": "InternalError"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"syncStatus": {
|
||||
"ref": "app.bsky.contact.defs#syncStatus",
|
||||
"type": "ref",
|
||||
"description": "If present, indicates the user has imported their contacts. If not present, indicates the user never used the feature or called `app.bsky.contact.removeData` and didn't import again since."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {}
|
||||
},
|
||||
"description": "Gets the user's current contact import status. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"id": "app.bsky.contact.importContacts",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"token",
|
||||
"contacts"
|
||||
],
|
||||
"properties": {
|
||||
"token": {
|
||||
"type": "string",
|
||||
"description": "JWT to authenticate the call. Use the JWT received as a response to the call to `app.bsky.contact.verifyPhone`."
|
||||
},
|
||||
"contacts": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"maxLength": 1000,
|
||||
"minLength": 1,
|
||||
"description": "List of phone numbers in global E.164 format (e.g., '+12125550123'). Phone numbers that cannot be normalized into a valid phone number will be discarded. Should not repeat the 'phone' input used in `app.bsky.contact.verifyPhone`."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "InvalidDid"
|
||||
},
|
||||
{
|
||||
"name": "InvalidContacts"
|
||||
},
|
||||
{
|
||||
"name": "TooManyContacts"
|
||||
},
|
||||
{
|
||||
"name": "InvalidToken"
|
||||
},
|
||||
{
|
||||
"name": "InternalError"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"matchesAndContactIndexes"
|
||||
],
|
||||
"properties": {
|
||||
"matchesAndContactIndexes": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.contact.defs#matchAndContactIndex",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": "The users that matched during import and their indexes on the input contacts, so the client can correlate with its local list."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "Import contacts for securely matching with other users. This follows the protocol explained in https://docs.bsky.app/blog/contact-import-rfc. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"id": "app.bsky.contact.removeData",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "InvalidDid"
|
||||
},
|
||||
{
|
||||
"name": "InternalError"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "Removes all stored hashes used for contact matching, existing matches, and sync status. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"id": "app.bsky.contact.sendNotification",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"from",
|
||||
"to"
|
||||
],
|
||||
"properties": {
|
||||
"to": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "The DID of who this notification should go to."
|
||||
},
|
||||
"from": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "The DID of who this notification comes from."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "System endpoint to send notifications related to contact imports. Requires role authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"id": "app.bsky.contact.startPhoneVerification",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"phone"
|
||||
],
|
||||
"properties": {
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"description": "The phone number to receive the code via SMS."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "RateLimitExceeded"
|
||||
},
|
||||
{
|
||||
"name": "InvalidDid"
|
||||
},
|
||||
{
|
||||
"name": "InvalidPhone"
|
||||
},
|
||||
{
|
||||
"name": "InternalError"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "Starts a phone verification flow. The phone passed will receive a code via SMS that should be passed to `app.bsky.contact.verifyPhone`. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"id": "app.bsky.contact.verifyPhone",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"phone",
|
||||
"code"
|
||||
],
|
||||
"properties": {
|
||||
"code": {
|
||||
"type": "string",
|
||||
"description": "The code received via SMS as a result of the call to `app.bsky.contact.startPhoneVerification`."
|
||||
},
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"description": "The phone number to verify. Should be the same as the one passed to `app.bsky.contact.startPhoneVerification`."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "RateLimitExceeded"
|
||||
},
|
||||
{
|
||||
"name": "InvalidDid"
|
||||
},
|
||||
{
|
||||
"name": "InvalidPhone"
|
||||
},
|
||||
{
|
||||
"name": "InvalidCode"
|
||||
},
|
||||
{
|
||||
"name": "InternalError"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"token"
|
||||
],
|
||||
"properties": {
|
||||
"token": {
|
||||
"type": "string",
|
||||
"description": "JWT to be used in a call to `app.bsky.contact.importContacts`. It is only valid for a single call."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "Verifies control over a phone number with a code received via SMS and starts a contact import session. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"id": "app.bsky.draft.createDraft",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"draft"
|
||||
],
|
||||
"properties": {
|
||||
"draft": {
|
||||
"ref": "app.bsky.draft.defs#draft",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "DraftLimitReached",
|
||||
"description": "Trying to insert a new draft when the limit was already reached."
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"id"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"format": "tid",
|
||||
"description": "The ID of the created draft."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "Inserts a draft using private storage (stash). An upper limit of drafts might be enforced. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,296 @@
|
||||
{
|
||||
"id": "app.bsky.draft.defs",
|
||||
"defs": {
|
||||
"draft": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"posts"
|
||||
],
|
||||
"properties": {
|
||||
"langs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "language"
|
||||
},
|
||||
"maxLength": 3,
|
||||
"description": "Indicates human language of posts primary text content."
|
||||
},
|
||||
"posts": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#draftPost",
|
||||
"type": "ref"
|
||||
},
|
||||
"maxLength": 100,
|
||||
"minLength": 1,
|
||||
"description": "Array of draft posts that compose this draft."
|
||||
},
|
||||
"deviceId": {
|
||||
"type": "string",
|
||||
"maxLength": 100,
|
||||
"description": "UUIDv4 identifier of the device that created this draft."
|
||||
},
|
||||
"deviceName": {
|
||||
"type": "string",
|
||||
"maxLength": 100,
|
||||
"description": "The device and/or platform on which the draft was created."
|
||||
},
|
||||
"threadgateAllow": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"app.bsky.feed.threadgate#mentionRule",
|
||||
"app.bsky.feed.threadgate#followerRule",
|
||||
"app.bsky.feed.threadgate#followingRule",
|
||||
"app.bsky.feed.threadgate#listRule"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"maxLength": 5,
|
||||
"description": "Allow-rules for the threadgate to be created when this draft is published."
|
||||
},
|
||||
"postgateEmbeddingRules": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"app.bsky.feed.postgate#disableRule"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"maxLength": 5,
|
||||
"description": "Embedding rules for the postgates to be created when this draft is published."
|
||||
}
|
||||
},
|
||||
"description": "A draft containing an array of draft posts."
|
||||
},
|
||||
"draftPost": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"text"
|
||||
],
|
||||
"properties": {
|
||||
"text": {
|
||||
"type": "string",
|
||||
"maxLength": 10000,
|
||||
"description": "The primary post content. It has a higher limit than post contents to allow storing a larger text that can later be refined into smaller posts.",
|
||||
"maxGraphemes": 1000
|
||||
},
|
||||
"labels": {
|
||||
"refs": [
|
||||
"com.atproto.label.defs#selfLabels"
|
||||
],
|
||||
"type": "union",
|
||||
"description": "Self-label values for this post. Effectively content warnings."
|
||||
},
|
||||
"embedImages": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#draftEmbedImage",
|
||||
"type": "ref"
|
||||
},
|
||||
"maxLength": 4
|
||||
},
|
||||
"embedVideos": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#draftEmbedVideo",
|
||||
"type": "ref"
|
||||
},
|
||||
"maxLength": 1
|
||||
},
|
||||
"embedGallery": {
|
||||
"ref": "#draftEmbedGallery",
|
||||
"type": "ref"
|
||||
},
|
||||
"embedRecords": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#draftEmbedRecord",
|
||||
"type": "ref"
|
||||
},
|
||||
"maxLength": 1
|
||||
},
|
||||
"embedExternals": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#draftEmbedExternal",
|
||||
"type": "ref"
|
||||
},
|
||||
"maxLength": 1
|
||||
}
|
||||
},
|
||||
"description": "One of the posts that compose a draft."
|
||||
},
|
||||
"draftView": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"id",
|
||||
"draft",
|
||||
"createdAt",
|
||||
"updatedAt"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"format": "tid",
|
||||
"description": "A TID to be used as a draft identifier."
|
||||
},
|
||||
"draft": {
|
||||
"ref": "#draft",
|
||||
"type": "ref"
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "The time the draft was created."
|
||||
},
|
||||
"updatedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "The time the draft was last updated."
|
||||
}
|
||||
},
|
||||
"description": "View to present drafts data to users."
|
||||
},
|
||||
"draftWithId": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"id",
|
||||
"draft"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"format": "tid",
|
||||
"description": "A TID to be used as a draft identifier."
|
||||
},
|
||||
"draft": {
|
||||
"ref": "#draft",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"description": "A draft with an identifier, used to store drafts in private storage (stash)."
|
||||
},
|
||||
"draftEmbedImage": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"localRef"
|
||||
],
|
||||
"properties": {
|
||||
"alt": {
|
||||
"type": "string",
|
||||
"maxGraphemes": 2000
|
||||
},
|
||||
"localRef": {
|
||||
"ref": "#draftEmbedLocalRef",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"draftEmbedVideo": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"localRef"
|
||||
],
|
||||
"properties": {
|
||||
"alt": {
|
||||
"type": "string",
|
||||
"maxGraphemes": 2000
|
||||
},
|
||||
"captions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#draftEmbedCaption",
|
||||
"type": "ref"
|
||||
},
|
||||
"maxLength": 20
|
||||
},
|
||||
"localRef": {
|
||||
"ref": "#draftEmbedLocalRef",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"draftEmbedRecord": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"record"
|
||||
],
|
||||
"properties": {
|
||||
"record": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"draftEmbedCaption": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"lang",
|
||||
"content"
|
||||
],
|
||||
"properties": {
|
||||
"lang": {
|
||||
"type": "string",
|
||||
"format": "language"
|
||||
},
|
||||
"content": {
|
||||
"type": "string",
|
||||
"maxLength": 10000
|
||||
}
|
||||
}
|
||||
},
|
||||
"draftEmbedGallery": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"items"
|
||||
],
|
||||
"properties": {
|
||||
"items": {
|
||||
"ref": "#draftEmbedGalleryItems",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"draftEmbedExternal": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
}
|
||||
}
|
||||
},
|
||||
"draftEmbedLocalRef": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"path"
|
||||
],
|
||||
"properties": {
|
||||
"path": {
|
||||
"type": "string",
|
||||
"maxLength": 1024,
|
||||
"minLength": 1,
|
||||
"description": "Local, on-device ref to file to be embedded. Embeds are currently device-bound for drafts."
|
||||
}
|
||||
}
|
||||
},
|
||||
"draftEmbedGalleryItems": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"#draftEmbedImage"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"maxLength": 20,
|
||||
"description": "The schema-level maxLength of 20 is a future-proof ceiling. Clients should currently enforce a soft limit of 10 items in authoring UIs."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "app.bsky.draft.deleteDraft",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"id"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"format": "tid"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "Deletes a draft by ID. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"id": "app.bsky.draft.getDrafts",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"drafts"
|
||||
],
|
||||
"properties": {
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"drafts": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.draft.defs#draftView",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Gets views of user drafts. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "app.bsky.draft.updateDraft",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"draft"
|
||||
],
|
||||
"properties": {
|
||||
"draft": {
|
||||
"ref": "app.bsky.draft.defs#draftWithId",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "Updates a draft using private storage (stash). If the draft ID points to a non-existing ID, the update will be silently ignored. This is done because updates don't enforce draft limit, so it accepts all writes, but will ignore invalid ones. Requires authentication."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"id": "app.bsky.embed.defs",
|
||||
"defs": {
|
||||
"aspectRatio": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"width",
|
||||
"height"
|
||||
],
|
||||
"properties": {
|
||||
"width": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"height": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
}
|
||||
},
|
||||
"description": "width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,210 @@
|
||||
{
|
||||
"id": "app.bsky.embed.external",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"external"
|
||||
],
|
||||
"properties": {
|
||||
"external": {
|
||||
"ref": "#external",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"description": "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post)."
|
||||
},
|
||||
"view": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"external"
|
||||
],
|
||||
"properties": {
|
||||
"external": {
|
||||
"ref": "#viewExternal",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"colorRGB": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"r",
|
||||
"g",
|
||||
"b"
|
||||
],
|
||||
"properties": {
|
||||
"b": {
|
||||
"type": "integer",
|
||||
"maximum": 255,
|
||||
"minimum": 0
|
||||
},
|
||||
"g": {
|
||||
"type": "integer",
|
||||
"maximum": 255,
|
||||
"minimum": 0
|
||||
},
|
||||
"r": {
|
||||
"type": "integer",
|
||||
"maximum": 255,
|
||||
"minimum": 0
|
||||
}
|
||||
},
|
||||
"description": "RGB color definition, inspired by site.standard.theme.color#rgb"
|
||||
},
|
||||
"external": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"title",
|
||||
"description"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"thumb": {
|
||||
"type": "blob",
|
||||
"accept": [
|
||||
"image/*"
|
||||
],
|
||||
"maxSize": 1000000
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"associatedRefs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": "StrongRefs (uri+cid) of the Atmosphere records that backed this view."
|
||||
}
|
||||
}
|
||||
},
|
||||
"viewExternal": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"title",
|
||||
"description"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"thumb": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.label.defs#label",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"source": {
|
||||
"ref": "#viewExternalSource",
|
||||
"type": "ref"
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "When the external content was created, if available. Example: a publication date, for an article."
|
||||
},
|
||||
"updatedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "When the external content was updated, if available."
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"readingTime": {
|
||||
"type": "integer",
|
||||
"description": "Estimated reading time in minutes, if applicable and available."
|
||||
},
|
||||
"associatedRefs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": "StrongRefs (uri+cid) of the Atmosphere records that backed this view."
|
||||
},
|
||||
"associatedProfiles": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#profileViewBasic",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": "Profiles of the owners of the Atmosphere records that backed this view."
|
||||
}
|
||||
}
|
||||
},
|
||||
"viewExternalSource": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"title"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "URI of the source, if available. Example: the https:// URL of a site.standard.publication record."
|
||||
},
|
||||
"icon": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Fully-qualified URL where an icon representing the source can be fetched. For example, CDN location provided by the App View."
|
||||
},
|
||||
"theme": {
|
||||
"ref": "#viewExternalSourceTheme",
|
||||
"type": "ref"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"description": "The source of an external embed, such as a standard.site publication."
|
||||
},
|
||||
"viewExternalSourceTheme": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"accentRGB": {
|
||||
"ref": "#colorRGB",
|
||||
"type": "ref"
|
||||
},
|
||||
"backgroundRGB": {
|
||||
"ref": "#colorRGB",
|
||||
"type": "ref"
|
||||
},
|
||||
"foregroundRGB": {
|
||||
"ref": "#colorRGB",
|
||||
"type": "ref"
|
||||
},
|
||||
"accentForegroundRGB": {
|
||||
"ref": "#colorRGB",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"description": "The theme colors of an external source, such as a site.standard.publication. These colors may be used when rendering an embed from that source."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"id": "app.bsky.embed.gallery",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"items"
|
||||
],
|
||||
"properties": {
|
||||
"items": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"#image"
|
||||
],
|
||||
"type": "union",
|
||||
"description": "The media items in the gallery. Each item may be of a different type, but all types must be supported by the client."
|
||||
},
|
||||
"maxLength": 20,
|
||||
"description": "The schema-level maxLength of 20 is a future-proof ceiling. Clients should currently enforce a soft limit of 10 items in authoring UIs."
|
||||
}
|
||||
}
|
||||
},
|
||||
"view": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"items"
|
||||
],
|
||||
"properties": {
|
||||
"items": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"#viewImage"
|
||||
],
|
||||
"type": "union"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"image": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"image",
|
||||
"alt",
|
||||
"aspectRatio"
|
||||
],
|
||||
"properties": {
|
||||
"alt": {
|
||||
"type": "string",
|
||||
"description": "Alt text description of the image, for accessibility."
|
||||
},
|
||||
"image": {
|
||||
"type": "blob",
|
||||
"accept": [
|
||||
"image/*"
|
||||
],
|
||||
"maxSize": 2000000
|
||||
},
|
||||
"aspectRatio": {
|
||||
"ref": "app.bsky.embed.defs#aspectRatio",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"viewImage": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"thumbnail",
|
||||
"fullsize",
|
||||
"alt",
|
||||
"aspectRatio"
|
||||
],
|
||||
"properties": {
|
||||
"alt": {
|
||||
"type": "string",
|
||||
"description": "Alt text description of the image, for accessibility."
|
||||
},
|
||||
"fullsize": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View."
|
||||
},
|
||||
"thumbnail": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View."
|
||||
},
|
||||
"aspectRatio": {
|
||||
"ref": "app.bsky.embed.defs#aspectRatio",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1,
|
||||
"description": "An assortment of media embedded in a Bluesky record (eg, a post)."
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"id": "app.bsky.embed.getEmbedExternalView",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"view": {
|
||||
"ref": "app.bsky.embed.external#view",
|
||||
"type": "ref",
|
||||
"description": "Hydrated view of the embed. Present only when the resolved records back the requested URL and supply enough information to populate the required `viewExternal` fields. Omitted alongside the rest of the response when no records resolved or validation failed."
|
||||
},
|
||||
"associatedRefs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": "StrongRefs (URI+CID) of the Atmosphere records that backed this view, suitable for embedding into a post's external.associatedRefs."
|
||||
},
|
||||
"associatedRecords": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "unknown",
|
||||
"description": "The raw record data of the Atmosphere records that backed this view. This is returned for convenience, to avoid the need for the client to separately fetch the record data for the associatedRefs. Example: the site.standard.document and site.standard.publication records that backed this view."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"url",
|
||||
"uris"
|
||||
],
|
||||
"properties": {
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "The canonical web URL the embed represents (typically the URL the user pasted into the composer). Used as the returned view's `uri`. May be used for validation in the future."
|
||||
},
|
||||
"uris": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"maxLength": 4,
|
||||
"description": "AT-URIs of any Atmosphere records that can be resolved and used to construct #externalView views. Example: a site.standard.document and optionally its associated site.standard.publication."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Resolve one or more AT-URIs into the data needed to render an enhanced external embed. Returns `associatedRefs` (strongRefs to embed into a post's external.associatedRefs), the raw `associatedRecords`, and a hydrated `view`. The response is empty (`{}`) when no records were resolvable, or when validation determined the resolved records don't actually back the requested URL; clients should fall back to their own link-card rendering in that case and skip writing strongRefs to the post."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"id": "app.bsky.embed.images",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"images"
|
||||
],
|
||||
"properties": {
|
||||
"images": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#image",
|
||||
"type": "ref"
|
||||
},
|
||||
"maxLength": 4
|
||||
}
|
||||
}
|
||||
},
|
||||
"view": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"images"
|
||||
],
|
||||
"properties": {
|
||||
"images": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#viewImage",
|
||||
"type": "ref"
|
||||
},
|
||||
"maxLength": 4
|
||||
}
|
||||
}
|
||||
},
|
||||
"image": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"image",
|
||||
"alt"
|
||||
],
|
||||
"properties": {
|
||||
"alt": {
|
||||
"type": "string",
|
||||
"description": "Alt text description of the image, for accessibility."
|
||||
},
|
||||
"image": {
|
||||
"type": "blob",
|
||||
"accept": [
|
||||
"image/*"
|
||||
],
|
||||
"maxSize": 2000000,
|
||||
"description": "The raw image file. May be up to 2 MB, formerly limited to 1 MB."
|
||||
},
|
||||
"aspectRatio": {
|
||||
"ref": "app.bsky.embed.defs#aspectRatio",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"viewImage": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"thumb",
|
||||
"fullsize",
|
||||
"alt"
|
||||
],
|
||||
"properties": {
|
||||
"alt": {
|
||||
"type": "string",
|
||||
"description": "Alt text description of the image, for accessibility."
|
||||
},
|
||||
"thumb": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View."
|
||||
},
|
||||
"fullsize": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View."
|
||||
},
|
||||
"aspectRatio": {
|
||||
"ref": "app.bsky.embed.defs#aspectRatio",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1,
|
||||
"description": "A set of images embedded in a Bluesky record (eg, a post)."
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
{
|
||||
"id": "app.bsky.embed.record",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"record"
|
||||
],
|
||||
"properties": {
|
||||
"record": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"view": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"record"
|
||||
],
|
||||
"properties": {
|
||||
"record": {
|
||||
"refs": [
|
||||
"#viewRecord",
|
||||
"#viewNotFound",
|
||||
"#viewBlocked",
|
||||
"#viewDetached",
|
||||
"app.bsky.feed.defs#generatorView",
|
||||
"app.bsky.graph.defs#listView",
|
||||
"app.bsky.labeler.defs#labelerView",
|
||||
"app.bsky.graph.defs#starterPackViewBasic"
|
||||
],
|
||||
"type": "union"
|
||||
}
|
||||
}
|
||||
},
|
||||
"viewRecord": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"cid",
|
||||
"author",
|
||||
"value",
|
||||
"indexedAt"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"value": {
|
||||
"type": "unknown",
|
||||
"description": "The record data itself."
|
||||
},
|
||||
"author": {
|
||||
"ref": "app.bsky.actor.defs#profileViewBasic",
|
||||
"type": "ref"
|
||||
},
|
||||
"embeds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"app.bsky.embed.images#view",
|
||||
"app.bsky.embed.video#view",
|
||||
"app.bsky.embed.gallery#view",
|
||||
"app.bsky.embed.external#view",
|
||||
"app.bsky.embed.record#view",
|
||||
"app.bsky.embed.recordWithMedia#view"
|
||||
],
|
||||
"type": "union"
|
||||
}
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.label.defs#label",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"indexedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"likeCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"quoteCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"replyCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"repostCount": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"viewBlocked": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"blocked",
|
||||
"author"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"author": {
|
||||
"ref": "app.bsky.feed.defs#blockedAuthor",
|
||||
"type": "ref"
|
||||
},
|
||||
"blocked": {
|
||||
"type": "boolean",
|
||||
"const": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"viewDetached": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"detached"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"detached": {
|
||||
"type": "boolean",
|
||||
"const": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"viewNotFound": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"notFound"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"notFound": {
|
||||
"type": "boolean",
|
||||
"const": true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1,
|
||||
"description": "A representation of a record embedded in a Bluesky record (eg, a post). For example, a quote-post, or sharing a feed generator record."
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"id": "app.bsky.embed.recordWithMedia",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"record",
|
||||
"media"
|
||||
],
|
||||
"properties": {
|
||||
"media": {
|
||||
"refs": [
|
||||
"app.bsky.embed.images",
|
||||
"app.bsky.embed.video",
|
||||
"app.bsky.embed.gallery",
|
||||
"app.bsky.embed.external"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"record": {
|
||||
"ref": "app.bsky.embed.record",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"view": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"record",
|
||||
"media"
|
||||
],
|
||||
"properties": {
|
||||
"media": {
|
||||
"refs": [
|
||||
"app.bsky.embed.images#view",
|
||||
"app.bsky.embed.video#view",
|
||||
"app.bsky.embed.gallery#view",
|
||||
"app.bsky.embed.external#view"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"record": {
|
||||
"ref": "app.bsky.embed.record#view",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1,
|
||||
"description": "A representation of a record embedded in a Bluesky record (eg, a post), alongside other compatible embeds. For example, a quote post and image, or a quote post and external URL card."
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
{
|
||||
"id": "app.bsky.embed.video",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"video"
|
||||
],
|
||||
"properties": {
|
||||
"alt": {
|
||||
"type": "string",
|
||||
"maxLength": 10000,
|
||||
"description": "Alt text description of the video, for accessibility.",
|
||||
"maxGraphemes": 1000
|
||||
},
|
||||
"video": {
|
||||
"type": "blob",
|
||||
"accept": [
|
||||
"video/mp4"
|
||||
],
|
||||
"maxSize": 100000000,
|
||||
"description": "The mp4 video file. May be up to 100mb, formerly limited to 50mb."
|
||||
},
|
||||
"captions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#caption",
|
||||
"type": "ref"
|
||||
},
|
||||
"maxLength": 20
|
||||
},
|
||||
"aspectRatio": {
|
||||
"ref": "app.bsky.embed.defs#aspectRatio",
|
||||
"type": "ref"
|
||||
},
|
||||
"presentation": {
|
||||
"type": "string",
|
||||
"description": "A hint to the client about how to present the video.",
|
||||
"knownValues": [
|
||||
"default",
|
||||
"gif"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"view": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"cid",
|
||||
"playlist"
|
||||
],
|
||||
"properties": {
|
||||
"alt": {
|
||||
"type": "string",
|
||||
"maxLength": 10000,
|
||||
"maxGraphemes": 1000
|
||||
},
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"playlist": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"thumbnail": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"aspectRatio": {
|
||||
"ref": "app.bsky.embed.defs#aspectRatio",
|
||||
"type": "ref"
|
||||
},
|
||||
"presentation": {
|
||||
"type": "string",
|
||||
"description": "A hint to the client about how to present the video.",
|
||||
"knownValues": [
|
||||
"default",
|
||||
"gif"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"caption": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"lang",
|
||||
"file"
|
||||
],
|
||||
"properties": {
|
||||
"file": {
|
||||
"type": "blob",
|
||||
"accept": [
|
||||
"text/vtt"
|
||||
],
|
||||
"maxSize": 20000
|
||||
},
|
||||
"lang": {
|
||||
"type": "string",
|
||||
"format": "language"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1,
|
||||
"description": "A video embedded in a Bluesky record (eg, a post)."
|
||||
}
|
||||
@@ -0,0 +1,545 @@
|
||||
{
|
||||
"id": "app.bsky.feed.defs",
|
||||
"defs": {
|
||||
"postView": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"cid",
|
||||
"author",
|
||||
"record",
|
||||
"indexedAt"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"debug": {
|
||||
"type": "unknown",
|
||||
"description": "Debug information for internal development"
|
||||
},
|
||||
"embed": {
|
||||
"refs": [
|
||||
"app.bsky.embed.images#view",
|
||||
"app.bsky.embed.video#view",
|
||||
"app.bsky.embed.gallery#view",
|
||||
"app.bsky.embed.external#view",
|
||||
"app.bsky.embed.record#view",
|
||||
"app.bsky.embed.recordWithMedia#view"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"author": {
|
||||
"ref": "app.bsky.actor.defs#profileViewBasic",
|
||||
"type": "ref"
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.label.defs#label",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"record": {
|
||||
"type": "unknown"
|
||||
},
|
||||
"viewer": {
|
||||
"ref": "#viewerState",
|
||||
"type": "ref"
|
||||
},
|
||||
"indexedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"likeCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"quoteCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"replyCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"threadgate": {
|
||||
"ref": "#threadgateView",
|
||||
"type": "ref"
|
||||
},
|
||||
"repostCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"bookmarkCount": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"replyRef": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"root",
|
||||
"parent"
|
||||
],
|
||||
"properties": {
|
||||
"root": {
|
||||
"refs": [
|
||||
"#postView",
|
||||
"#notFoundPost",
|
||||
"#blockedPost"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"parent": {
|
||||
"refs": [
|
||||
"#postView",
|
||||
"#notFoundPost",
|
||||
"#blockedPost"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"grandparentAuthor": {
|
||||
"ref": "app.bsky.actor.defs#profileViewBasic",
|
||||
"type": "ref",
|
||||
"description": "When parent is a reply to another post, this is the author of that post."
|
||||
}
|
||||
}
|
||||
},
|
||||
"reasonPin": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
},
|
||||
"blockedPost": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"blocked",
|
||||
"author"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"author": {
|
||||
"ref": "#blockedAuthor",
|
||||
"type": "ref"
|
||||
},
|
||||
"blocked": {
|
||||
"type": "boolean",
|
||||
"const": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"interaction": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"item": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"event": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"app.bsky.feed.defs#requestLess",
|
||||
"app.bsky.feed.defs#requestMore",
|
||||
"app.bsky.feed.defs#clickthroughItem",
|
||||
"app.bsky.feed.defs#clickthroughAuthor",
|
||||
"app.bsky.feed.defs#clickthroughReposter",
|
||||
"app.bsky.feed.defs#clickthroughEmbed",
|
||||
"app.bsky.feed.defs#interactionSeen",
|
||||
"app.bsky.feed.defs#interactionLike",
|
||||
"app.bsky.feed.defs#interactionRepost",
|
||||
"app.bsky.feed.defs#interactionReply",
|
||||
"app.bsky.feed.defs#interactionQuote",
|
||||
"app.bsky.feed.defs#interactionShare"
|
||||
]
|
||||
},
|
||||
"reqId": {
|
||||
"type": "string",
|
||||
"maxLength": 100,
|
||||
"description": "Unique identifier per request that may be passed back alongside interactions."
|
||||
},
|
||||
"feedContext": {
|
||||
"type": "string",
|
||||
"maxLength": 2000,
|
||||
"description": "Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton."
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestLess": {
|
||||
"type": "token",
|
||||
"description": "Request that less content like the given feed item be shown in the feed"
|
||||
},
|
||||
"requestMore": {
|
||||
"type": "token",
|
||||
"description": "Request that more content like the given feed item be shown in the feed"
|
||||
},
|
||||
"viewerState": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"like": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"pinned": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"repost": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"bookmarked": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"threadMuted": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"replyDisabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"embeddingDisabled": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"description": "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests."
|
||||
},
|
||||
"feedViewPost": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"post"
|
||||
],
|
||||
"properties": {
|
||||
"post": {
|
||||
"ref": "#postView",
|
||||
"type": "ref"
|
||||
},
|
||||
"reply": {
|
||||
"ref": "#replyRef",
|
||||
"type": "ref"
|
||||
},
|
||||
"reqId": {
|
||||
"type": "string",
|
||||
"maxLength": 100,
|
||||
"description": "Unique identifier per request that may be passed back alongside interactions."
|
||||
},
|
||||
"reason": {
|
||||
"refs": [
|
||||
"#reasonRepost",
|
||||
"#reasonPin"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"feedContext": {
|
||||
"type": "string",
|
||||
"maxLength": 2000,
|
||||
"description": "Context provided by feed generator that may be passed back alongside interactions."
|
||||
}
|
||||
}
|
||||
},
|
||||
"notFoundPost": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"notFound"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"notFound": {
|
||||
"type": "boolean",
|
||||
"const": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"reasonRepost": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"by",
|
||||
"indexedAt"
|
||||
],
|
||||
"properties": {
|
||||
"by": {
|
||||
"ref": "app.bsky.actor.defs#profileViewBasic",
|
||||
"type": "ref"
|
||||
},
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"indexedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
}
|
||||
}
|
||||
},
|
||||
"blockedAuthor": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"did"
|
||||
],
|
||||
"properties": {
|
||||
"did": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
},
|
||||
"viewer": {
|
||||
"ref": "app.bsky.actor.defs#viewerState",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"generatorView": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"cid",
|
||||
"did",
|
||||
"creator",
|
||||
"displayName",
|
||||
"indexedAt"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"did": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"avatar": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.label.defs#label",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"viewer": {
|
||||
"ref": "#generatorViewerState",
|
||||
"type": "ref"
|
||||
},
|
||||
"creator": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
},
|
||||
"indexedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"likeCount": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"contentMode": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"app.bsky.feed.defs#contentModeUnspecified",
|
||||
"app.bsky.feed.defs#contentModeVideo"
|
||||
]
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"maxLength": 3000,
|
||||
"maxGraphemes": 300
|
||||
},
|
||||
"displayName": {
|
||||
"type": "string"
|
||||
},
|
||||
"descriptionFacets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.richtext.facet",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"acceptsInteractions": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"threadContext": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"rootAuthorLike": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
}
|
||||
},
|
||||
"description": "Metadata about this post within the context of the thread it is in."
|
||||
},
|
||||
"threadViewPost": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"post"
|
||||
],
|
||||
"properties": {
|
||||
"post": {
|
||||
"ref": "#postView",
|
||||
"type": "ref"
|
||||
},
|
||||
"parent": {
|
||||
"refs": [
|
||||
"#threadViewPost",
|
||||
"#notFoundPost",
|
||||
"#blockedPost"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"replies": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"#threadViewPost",
|
||||
"#notFoundPost",
|
||||
"#blockedPost"
|
||||
],
|
||||
"type": "union"
|
||||
}
|
||||
},
|
||||
"threadContext": {
|
||||
"ref": "#threadContext",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"threadgateView": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"lists": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.graph.defs#listViewBasic",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"record": {
|
||||
"type": "unknown"
|
||||
}
|
||||
}
|
||||
},
|
||||
"interactionLike": {
|
||||
"type": "token",
|
||||
"description": "User liked the feed item"
|
||||
},
|
||||
"interactionSeen": {
|
||||
"type": "token",
|
||||
"description": "Feed item was seen by user"
|
||||
},
|
||||
"clickthroughItem": {
|
||||
"type": "token",
|
||||
"description": "User clicked through to the feed item"
|
||||
},
|
||||
"contentModeVideo": {
|
||||
"type": "token",
|
||||
"description": "Declares the feed generator returns posts containing app.bsky.embed.video embeds."
|
||||
},
|
||||
"interactionQuote": {
|
||||
"type": "token",
|
||||
"description": "User quoted the feed item"
|
||||
},
|
||||
"interactionReply": {
|
||||
"type": "token",
|
||||
"description": "User replied to the feed item"
|
||||
},
|
||||
"interactionShare": {
|
||||
"type": "token",
|
||||
"description": "User shared the feed item"
|
||||
},
|
||||
"skeletonFeedPost": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"post"
|
||||
],
|
||||
"properties": {
|
||||
"post": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"reason": {
|
||||
"refs": [
|
||||
"#skeletonReasonRepost",
|
||||
"#skeletonReasonPin"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"feedContext": {
|
||||
"type": "string",
|
||||
"maxLength": 2000,
|
||||
"description": "Context that will be passed through to client and may be passed to feed generator back alongside interactions."
|
||||
}
|
||||
}
|
||||
},
|
||||
"clickthroughEmbed": {
|
||||
"type": "token",
|
||||
"description": "User clicked through to the embedded content of the feed item"
|
||||
},
|
||||
"interactionRepost": {
|
||||
"type": "token",
|
||||
"description": "User reposted the feed item"
|
||||
},
|
||||
"skeletonReasonPin": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
},
|
||||
"clickthroughAuthor": {
|
||||
"type": "token",
|
||||
"description": "User clicked through to the author of the feed item"
|
||||
},
|
||||
"clickthroughReposter": {
|
||||
"type": "token",
|
||||
"description": "User clicked through to the reposter of the feed item"
|
||||
},
|
||||
"generatorViewerState": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"like": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skeletonReasonRepost": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"repost"
|
||||
],
|
||||
"properties": {
|
||||
"repost": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
}
|
||||
}
|
||||
},
|
||||
"contentModeUnspecified": {
|
||||
"type": "token",
|
||||
"description": "Declares the feed generator returns any types of posts."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"id": "app.bsky.feed.describeFeedGenerator",
|
||||
"defs": {
|
||||
"feed": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
}
|
||||
}
|
||||
},
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"did",
|
||||
"feeds"
|
||||
],
|
||||
"properties": {
|
||||
"did": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
},
|
||||
"feeds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#feed",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
"ref": "#links",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "Get information about a feed generator, including policies and offered feed URIs. Does not require auth; implemented by Feed Generator services (not App View)."
|
||||
},
|
||||
"links": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"privacyPolicy": {
|
||||
"type": "string"
|
||||
},
|
||||
"termsOfService": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"id": "app.bsky.feed.generator",
|
||||
"defs": {
|
||||
"main": {
|
||||
"key": "any",
|
||||
"type": "record",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"did",
|
||||
"displayName",
|
||||
"createdAt"
|
||||
],
|
||||
"properties": {
|
||||
"did": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
},
|
||||
"avatar": {
|
||||
"type": "blob",
|
||||
"accept": [
|
||||
"image/png",
|
||||
"image/jpeg"
|
||||
],
|
||||
"maxSize": 1000000
|
||||
},
|
||||
"labels": {
|
||||
"refs": [
|
||||
"com.atproto.label.defs#selfLabels"
|
||||
],
|
||||
"type": "union",
|
||||
"description": "Self-label values"
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"contentMode": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"app.bsky.feed.defs#contentModeUnspecified",
|
||||
"app.bsky.feed.defs#contentModeVideo"
|
||||
]
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"maxLength": 3000,
|
||||
"maxGraphemes": 300
|
||||
},
|
||||
"displayName": {
|
||||
"type": "string",
|
||||
"maxLength": 240,
|
||||
"maxGraphemes": 24
|
||||
},
|
||||
"descriptionFacets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.richtext.facet",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"acceptsInteractions": {
|
||||
"type": "boolean",
|
||||
"description": "Declaration that a feed accepts feedback interactions from a client through app.bsky.feed.sendInteractions"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Record declaring of the existence of a feed generator, and containing metadata about it. The record can exist in any repository."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getActorFeeds",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"feeds"
|
||||
],
|
||||
"properties": {
|
||||
"feeds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#generatorView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get a list of feeds (feed generator records) created by the actor (in the actor's repo)."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getActorLikes",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"errors": [
|
||||
{
|
||||
"name": "BlockedActor"
|
||||
},
|
||||
{
|
||||
"name": "BlockedByActor"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"feed"
|
||||
],
|
||||
"properties": {
|
||||
"feed": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#feedViewPost",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get a list of posts liked by an actor. Requires auth, actor must be the requesting account."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getAuthorFeed",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"errors": [
|
||||
{
|
||||
"name": "BlockedActor"
|
||||
},
|
||||
{
|
||||
"name": "BlockedByActor"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"feed"
|
||||
],
|
||||
"properties": {
|
||||
"feed": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#feedViewPost",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"filter": {
|
||||
"type": "string",
|
||||
"default": "posts_with_replies",
|
||||
"description": "Combinations of post/repost types to include in response.",
|
||||
"knownValues": [
|
||||
"posts_with_replies",
|
||||
"posts_no_replies",
|
||||
"posts_with_media",
|
||||
"posts_and_author_threads",
|
||||
"posts_with_video"
|
||||
]
|
||||
},
|
||||
"includePins": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getFeed",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"errors": [
|
||||
{
|
||||
"name": "UnknownFeed"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"feed"
|
||||
],
|
||||
"properties": {
|
||||
"feed": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#feedViewPost",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"feed"
|
||||
],
|
||||
"properties": {
|
||||
"feed": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get a hydrated feed from an actor's selected feed generator. Implemented by App View."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getFeedGenerator",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"view",
|
||||
"isOnline",
|
||||
"isValid"
|
||||
],
|
||||
"properties": {
|
||||
"view": {
|
||||
"ref": "app.bsky.feed.defs#generatorView",
|
||||
"type": "ref"
|
||||
},
|
||||
"isValid": {
|
||||
"type": "boolean",
|
||||
"description": "Indicates whether the feed generator service is compatible with the record declaration."
|
||||
},
|
||||
"isOnline": {
|
||||
"type": "boolean",
|
||||
"description": "Indicates whether the feed generator service has been online recently, or else seems to be inactive."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"feed"
|
||||
],
|
||||
"properties": {
|
||||
"feed": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "AT-URI of the feed generator record."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get information about a feed generator. Implemented by AppView."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getFeedGenerators",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"feeds"
|
||||
],
|
||||
"properties": {
|
||||
"feeds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#generatorView",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"feeds"
|
||||
],
|
||||
"properties": {
|
||||
"feeds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get information about a list of feed generators."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getFeedSkeleton",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"errors": [
|
||||
{
|
||||
"name": "UnknownFeed"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"feed"
|
||||
],
|
||||
"properties": {
|
||||
"feed": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#skeletonFeedPost",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"reqId": {
|
||||
"type": "string",
|
||||
"maxLength": 100,
|
||||
"description": "Unique identifier per request that may be passed back alongside interactions."
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"feed"
|
||||
],
|
||||
"properties": {
|
||||
"feed": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "Reference to feed generator record describing the specific feed being requested."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get a skeleton of a feed provided by a feed generator. Auth is optional, depending on provider requirements, and provides the DID of the requester. Implemented by Feed Generator Service."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getLikes",
|
||||
"defs": {
|
||||
"like": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"indexedAt",
|
||||
"createdAt",
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"indexedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
}
|
||||
}
|
||||
},
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"likes"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"likes": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#like",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"uri"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid",
|
||||
"description": "CID of the subject record (aka, specific version of record), to filter likes."
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "AT-URI of the subject (eg, a post record)."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get like records which reference a subject (by AT-URI and CID)."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getListFeed",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"errors": [
|
||||
{
|
||||
"name": "UnknownList"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"feed"
|
||||
],
|
||||
"properties": {
|
||||
"feed": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#feedViewPost",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"list"
|
||||
],
|
||||
"properties": {
|
||||
"list": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "Reference (AT-URI) to the list record."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getPostThread",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"errors": [
|
||||
{
|
||||
"name": "NotFound"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"thread"
|
||||
],
|
||||
"properties": {
|
||||
"thread": {
|
||||
"refs": [
|
||||
"app.bsky.feed.defs#threadViewPost",
|
||||
"app.bsky.feed.defs#notFoundPost",
|
||||
"app.bsky.feed.defs#blockedPost"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"threadgate": {
|
||||
"ref": "app.bsky.feed.defs#threadgateView",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"uri"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "Reference (AT-URI) to post record."
|
||||
},
|
||||
"depth": {
|
||||
"type": "integer",
|
||||
"default": 6,
|
||||
"maximum": 1000,
|
||||
"minimum": 0,
|
||||
"description": "How many levels of reply depth should be included in response."
|
||||
},
|
||||
"parentHeight": {
|
||||
"type": "integer",
|
||||
"default": 80,
|
||||
"maximum": 1000,
|
||||
"minimum": 0,
|
||||
"description": "How many levels of parent (and grandparent, etc) post to include."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getPosts",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"posts"
|
||||
],
|
||||
"properties": {
|
||||
"posts": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#postView",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"uris"
|
||||
],
|
||||
"properties": {
|
||||
"uris": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"maxLength": 25,
|
||||
"description": "List of post AT-URIs to return hydrated views for."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Gets post views for a specified list of posts (by AT-URI). This is sometimes referred to as 'hydrating' a 'feed skeleton'."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getQuotes",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"posts"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"posts": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#postView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"uri"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid",
|
||||
"description": "If supplied, filters to quotes of specific version (by CID) of the post record."
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "Reference (AT-URI) of post record"
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get a list of quotes for a given post."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getRepostedBy",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"repostedBy"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"repostedBy": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"uri"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid",
|
||||
"description": "If supplied, filters to reposts of specific version (by CID) of the post record."
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "Reference (AT-URI) of post record"
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get a list of reposts for a given post."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getSuggestedFeeds",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"feeds"
|
||||
],
|
||||
"properties": {
|
||||
"feeds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#generatorView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get a list of suggested feeds (feed generators) for the requesting account."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"id": "app.bsky.feed.getTimeline",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"feed"
|
||||
],
|
||||
"properties": {
|
||||
"feed": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#feedViewPost",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"algorithm": {
|
||||
"type": "string",
|
||||
"description": "Variant 'algorithm' for timeline. Implementation-specific. NOTE: most feed flexibility has been moved to feed generator mechanism."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get a view of the requesting account's home timeline. This is expected to be some form of reverse-chronological feed."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"id": "app.bsky.feed.like",
|
||||
"defs": {
|
||||
"main": {
|
||||
"key": "tid",
|
||||
"type": "record",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"subject",
|
||||
"createdAt"
|
||||
],
|
||||
"properties": {
|
||||
"via": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
},
|
||||
"subject": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Record declaring a 'like' of a piece of subject content."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"id": "app.bsky.feed.post",
|
||||
"defs": {
|
||||
"main": {
|
||||
"key": "tid",
|
||||
"type": "record",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"text",
|
||||
"createdAt"
|
||||
],
|
||||
"properties": {
|
||||
"tags": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"maxLength": 640,
|
||||
"maxGraphemes": 64
|
||||
},
|
||||
"maxLength": 8,
|
||||
"description": "Additional hashtags, in addition to any included in post text and facets."
|
||||
},
|
||||
"text": {
|
||||
"type": "string",
|
||||
"maxLength": 3000,
|
||||
"description": "The primary post content. May be an empty string, if there are embeds.",
|
||||
"maxGraphemes": 300
|
||||
},
|
||||
"embed": {
|
||||
"refs": [
|
||||
"app.bsky.embed.images",
|
||||
"app.bsky.embed.video",
|
||||
"app.bsky.embed.gallery",
|
||||
"app.bsky.embed.external",
|
||||
"app.bsky.embed.record",
|
||||
"app.bsky.embed.recordWithMedia"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"langs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "language"
|
||||
},
|
||||
"maxLength": 3,
|
||||
"description": "Indicates human language of post primary text content."
|
||||
},
|
||||
"reply": {
|
||||
"ref": "#replyRef",
|
||||
"type": "ref"
|
||||
},
|
||||
"facets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.richtext.facet",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": "Annotations of text (mentions, URLs, hashtags, etc)"
|
||||
},
|
||||
"labels": {
|
||||
"refs": [
|
||||
"com.atproto.label.defs#selfLabels"
|
||||
],
|
||||
"type": "union",
|
||||
"description": "Self-label values for this post. Effectively content warnings."
|
||||
},
|
||||
"entities": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#entity",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": "DEPRECATED: replaced by app.bsky.richtext.facet."
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "Client-declared timestamp when this post was originally created."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Record containing a Bluesky post."
|
||||
},
|
||||
"entity": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"index",
|
||||
"type",
|
||||
"value"
|
||||
],
|
||||
"properties": {
|
||||
"type": {
|
||||
"type": "string",
|
||||
"description": "Expected values are 'mention' and 'link'."
|
||||
},
|
||||
"index": {
|
||||
"ref": "#textSlice",
|
||||
"type": "ref"
|
||||
},
|
||||
"value": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"description": "Deprecated: use facets instead."
|
||||
},
|
||||
"replyRef": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"root",
|
||||
"parent"
|
||||
],
|
||||
"properties": {
|
||||
"root": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
},
|
||||
"parent": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"textSlice": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"start",
|
||||
"end"
|
||||
],
|
||||
"properties": {
|
||||
"end": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"start": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
}
|
||||
},
|
||||
"description": "Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"id": "app.bsky.feed.postgate",
|
||||
"defs": {
|
||||
"main": {
|
||||
"key": "tid",
|
||||
"type": "record",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"post",
|
||||
"createdAt"
|
||||
],
|
||||
"properties": {
|
||||
"post": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "Reference (AT-URI) to the post record."
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"embeddingRules": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"#disableRule"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"maxLength": 5,
|
||||
"description": "List of rules defining who can embed this post. If value is an empty array or is undefined, no particular rules apply and anyone can embed."
|
||||
},
|
||||
"detachedEmbeddingUris": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"maxLength": 50,
|
||||
"description": "List of AT-URIs embedding this post that the author has detached from."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Record defining interaction rules for a post. The record key (rkey) of the postgate record must match the record key of the post, and that record must be in the same repository."
|
||||
},
|
||||
"disableRule": {
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
"description": "Disables embedding of this post."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"id": "app.bsky.feed.repost",
|
||||
"defs": {
|
||||
"main": {
|
||||
"key": "tid",
|
||||
"type": "record",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"subject",
|
||||
"createdAt"
|
||||
],
|
||||
"properties": {
|
||||
"via": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
},
|
||||
"subject": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Record representing a 'repost' of an existing Bluesky post."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
{
|
||||
"id": "app.bsky.feed.searchPosts",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"errors": [
|
||||
{
|
||||
"name": "BadQueryString"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"posts"
|
||||
],
|
||||
"properties": {
|
||||
"posts": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#postView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"hitsTotal": {
|
||||
"type": "integer",
|
||||
"description": "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"q"
|
||||
],
|
||||
"properties": {
|
||||
"q": {
|
||||
"type": "string",
|
||||
"description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended."
|
||||
},
|
||||
"tag": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"maxLength": 640,
|
||||
"maxGraphemes": 64
|
||||
},
|
||||
"description": "Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'AND' matching."
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching."
|
||||
},
|
||||
"lang": {
|
||||
"type": "string",
|
||||
"format": "language",
|
||||
"description": "Filter to posts in the given language. Expected to be based on post language field, though server may override language detection."
|
||||
},
|
||||
"sort": {
|
||||
"type": "string",
|
||||
"default": "latest",
|
||||
"description": "Specifies the ranking order of results.",
|
||||
"knownValues": [
|
||||
"top",
|
||||
"latest"
|
||||
]
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 25,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"since": {
|
||||
"type": "string",
|
||||
"description": "Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD)."
|
||||
},
|
||||
"until": {
|
||||
"type": "string",
|
||||
"description": "Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD)."
|
||||
},
|
||||
"author": {
|
||||
"type": "string",
|
||||
"format": "at-identifier",
|
||||
"description": "Filter to posts by the given account. Handles are resolved to DID before query-time."
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string",
|
||||
"description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set."
|
||||
},
|
||||
"domain": {
|
||||
"type": "string",
|
||||
"description": "Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization."
|
||||
},
|
||||
"mentions": {
|
||||
"type": "string",
|
||||
"format": "at-identifier",
|
||||
"description": "Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Find posts matching search criteria, returning views of those posts. Note that this API endpoint may require authentication (eg, not public) for some service providers and implementations."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,251 @@
|
||||
{
|
||||
"id": "app.bsky.feed.searchPostsV2",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"errors": [
|
||||
{
|
||||
"name": "BadQueryString"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"posts"
|
||||
],
|
||||
"properties": {
|
||||
"posts": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#postView",
|
||||
"type": "ref"
|
||||
},
|
||||
"description": "Hydrated views of matching posts."
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string",
|
||||
"description": "Cursor for the next page of results."
|
||||
},
|
||||
"hitsTotal": {
|
||||
"type": "integer",
|
||||
"description": "Estimated total number of matching hits. May be rounded or truncated."
|
||||
},
|
||||
"detectedQueryLanguages": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"ja",
|
||||
"zh",
|
||||
"ko",
|
||||
"th",
|
||||
"ar"
|
||||
]
|
||||
},
|
||||
"description": "Query languages detected for CJK, Thai, or Arabic text. Empty or omitted for other scripts."
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [],
|
||||
"properties": {
|
||||
"sort": {
|
||||
"type": "string",
|
||||
"description": "Ranking order for results. 'recent' sorts by recency; 'top' uses search ranking.",
|
||||
"knownValues": [
|
||||
"recent",
|
||||
"top"
|
||||
]
|
||||
},
|
||||
"urls": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"description": "Include posts that link to any of these URLs."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 25,
|
||||
"maximum": 100,
|
||||
"minimum": 1,
|
||||
"description": "Maximum number of results to return."
|
||||
},
|
||||
"query": {
|
||||
"type": "string",
|
||||
"description": "Search query string. A query or at least one filter is required."
|
||||
},
|
||||
"since": {
|
||||
"type": "string",
|
||||
"description": "Include posts indexed at or after this timestamp. Can be a datetime, or just an ISO date (YYYY-MM-DD)."
|
||||
},
|
||||
"until": {
|
||||
"type": "string",
|
||||
"description": "Include posts indexed before this timestamp. Defaults to the current time. Can be a datetime, or just an ISO date (YYYY-MM-DD)."
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string",
|
||||
"description": "Optional pagination cursor."
|
||||
},
|
||||
"allTime": {
|
||||
"type": "boolean",
|
||||
"description": "Search the full index instead of the recent-post window."
|
||||
},
|
||||
"authors": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"description": "Include posts by any of these authors. Handles are resolved to DIDs before searching."
|
||||
},
|
||||
"domains": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Include posts that link to any of these domains."
|
||||
},
|
||||
"hasMedia": {
|
||||
"type": "boolean",
|
||||
"description": "Include only posts with media."
|
||||
},
|
||||
"hasVideo": {
|
||||
"type": "boolean",
|
||||
"description": "Include only posts with video."
|
||||
},
|
||||
"hashtags": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"maxLength": 640,
|
||||
"maxGraphemes": 64
|
||||
},
|
||||
"description": "Include posts tagged with any of these hashtags. Do not include the hash (#) prefix."
|
||||
},
|
||||
"mentions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"description": "Include posts that mention any of these accounts. Handles are resolved to DIDs before searching."
|
||||
},
|
||||
"following": {
|
||||
"type": "boolean",
|
||||
"description": "Include only posts from accounts followed by the viewer."
|
||||
},
|
||||
"languages": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "language"
|
||||
},
|
||||
"description": "Include posts whose language matches any of these language codes."
|
||||
},
|
||||
"excludeUrls": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"description": "Exclude posts that link to any of these URLs."
|
||||
},
|
||||
"repliesOnly": {
|
||||
"type": "boolean",
|
||||
"description": "Include only replies. Mutually exclusive with excludeReplies."
|
||||
},
|
||||
"queryLanguage": {
|
||||
"type": "string",
|
||||
"description": "Language analyzer hint for the query text. If unset, the server auto-detects when possible.",
|
||||
"knownValues": [
|
||||
"ja",
|
||||
"zh",
|
||||
"ko",
|
||||
"th",
|
||||
"ar"
|
||||
]
|
||||
},
|
||||
"threadRootUri": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "Include only posts in the thread rooted at this post URI."
|
||||
},
|
||||
"embeddedAtUris": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"description": "Include posts that embed any of these AT URIs."
|
||||
},
|
||||
"excludeAuthors": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"description": "Exclude posts by any of these authors. Handles are resolved to DIDs before searching."
|
||||
},
|
||||
"excludeDomains": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Exclude posts that link to any of these domains."
|
||||
},
|
||||
"excludeReplies": {
|
||||
"type": "boolean",
|
||||
"description": "Exclude replies from results. Mutually exclusive with repliesOnly."
|
||||
},
|
||||
"replyParentUri": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "Include only direct replies to this parent post URI."
|
||||
},
|
||||
"excludeHashtags": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"maxLength": 640,
|
||||
"maxGraphemes": 64
|
||||
},
|
||||
"description": "Exclude posts tagged with any of these hashtags. Do not include the hash (#) prefix."
|
||||
},
|
||||
"excludeMentions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"description": "Exclude posts that mention any of these accounts. Handles are resolved to DIDs before searching."
|
||||
},
|
||||
"excludeLanguages": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "language"
|
||||
},
|
||||
"description": "Exclude posts whose language matches any of these language codes."
|
||||
},
|
||||
"excludeEmbeddedAtUris": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"description": "Exclude posts that embed any of these AT URIs."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Find posts matching a search query or filters, returning search hits for matching post records."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"id": "app.bsky.feed.sendInteractions",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"interactions"
|
||||
],
|
||||
"properties": {
|
||||
"feed": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"interactions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#interaction",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"description": "Send information about interactions with feed items back to the feed generator that served them."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"id": "app.bsky.feed.threadgate",
|
||||
"defs": {
|
||||
"main": {
|
||||
"key": "tid",
|
||||
"type": "record",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"post",
|
||||
"createdAt"
|
||||
],
|
||||
"properties": {
|
||||
"post": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "Reference (AT-URI) to the post record."
|
||||
},
|
||||
"allow": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"#mentionRule",
|
||||
"#followerRule",
|
||||
"#followingRule",
|
||||
"#listRule"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"maxLength": 5,
|
||||
"description": "List of rules defining who can reply to this post. If value is an empty array, no one can reply. If value is undefined, anyone can reply."
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"hiddenReplies": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"maxLength": 300,
|
||||
"description": "List of hidden reply URIs."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Record defining interaction gating rules for a thread (aka, reply controls). The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same repository."
|
||||
},
|
||||
"listRule": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"list"
|
||||
],
|
||||
"properties": {
|
||||
"list": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
}
|
||||
},
|
||||
"description": "Allow replies from actors on a list."
|
||||
},
|
||||
"mentionRule": {
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
"description": "Allow replies from actors mentioned in your post."
|
||||
},
|
||||
"followerRule": {
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
"description": "Allow replies from actors who follow you."
|
||||
},
|
||||
"followingRule": {
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
"description": "Allow replies from actors you follow."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"id": "app.bsky.graph.block",
|
||||
"defs": {
|
||||
"main": {
|
||||
"key": "tid",
|
||||
"type": "record",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"subject",
|
||||
"createdAt"
|
||||
],
|
||||
"properties": {
|
||||
"subject": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "DID of the account to be blocked."
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Record declaring a 'block' relationship against another account. NOTE: blocks are public in Bluesky; see blog posts for details."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,353 @@
|
||||
{
|
||||
"id": "app.bsky.graph.defs",
|
||||
"defs": {
|
||||
"modlist": {
|
||||
"type": "token",
|
||||
"description": "A list of actors to apply an aggregate moderation action (mute/block) on."
|
||||
},
|
||||
"listView": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"cid",
|
||||
"creator",
|
||||
"name",
|
||||
"purpose",
|
||||
"indexedAt"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"maxLength": 64,
|
||||
"minLength": 1
|
||||
},
|
||||
"avatar": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.label.defs#label",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"viewer": {
|
||||
"ref": "#listViewerState",
|
||||
"type": "ref"
|
||||
},
|
||||
"creator": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
},
|
||||
"purpose": {
|
||||
"ref": "#listPurpose",
|
||||
"type": "ref"
|
||||
},
|
||||
"indexedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"maxLength": 3000,
|
||||
"maxGraphemes": 300
|
||||
},
|
||||
"listItemCount": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"descriptionFacets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.richtext.facet",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"curatelist": {
|
||||
"type": "token",
|
||||
"description": "A list of actors used for curation purposes such as list feeds or interaction gating."
|
||||
},
|
||||
"listPurpose": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"app.bsky.graph.defs#modlist",
|
||||
"app.bsky.graph.defs#curatelist",
|
||||
"app.bsky.graph.defs#referencelist"
|
||||
]
|
||||
},
|
||||
"listItemView": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"subject"
|
||||
],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"subject": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"relationship": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"did"
|
||||
],
|
||||
"properties": {
|
||||
"did": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
},
|
||||
"blocking": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "if the actor blocks this DID, this is the AT-URI of the block record"
|
||||
},
|
||||
"blockedBy": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "if the actor is blocked by this DID, contains the AT-URI of the block record"
|
||||
},
|
||||
"following": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "if the actor follows this DID, this is the AT-URI of the follow record"
|
||||
},
|
||||
"followedBy": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "if the actor is followed by this DID, contains the AT-URI of the follow record"
|
||||
},
|
||||
"blockedByList": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "if the actor is blocked by this DID via a block list, contains the AT-URI of the listblock record"
|
||||
},
|
||||
"blockingByList": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "if the actor blocks this DID via a block list, this is the AT-URI of the listblock record"
|
||||
}
|
||||
},
|
||||
"description": "lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)"
|
||||
},
|
||||
"listViewBasic": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"cid",
|
||||
"name",
|
||||
"purpose"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"maxLength": 64,
|
||||
"minLength": 1
|
||||
},
|
||||
"avatar": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.label.defs#label",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"viewer": {
|
||||
"ref": "#listViewerState",
|
||||
"type": "ref"
|
||||
},
|
||||
"purpose": {
|
||||
"ref": "#listPurpose",
|
||||
"type": "ref"
|
||||
},
|
||||
"indexedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"listItemCount": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"notFoundActor": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"actor",
|
||||
"notFound"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"notFound": {
|
||||
"type": "boolean",
|
||||
"const": true
|
||||
}
|
||||
},
|
||||
"description": "indicates that a handle or DID could not be resolved"
|
||||
},
|
||||
"referencelist": {
|
||||
"type": "token",
|
||||
"description": "A list of actors used for only for reference purposes such as within a starter pack."
|
||||
},
|
||||
"listViewerState": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"muted": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"blocked": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
}
|
||||
}
|
||||
},
|
||||
"starterPackView": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"cid",
|
||||
"record",
|
||||
"creator",
|
||||
"indexedAt"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"list": {
|
||||
"ref": "#listViewBasic",
|
||||
"type": "ref"
|
||||
},
|
||||
"feeds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.feed.defs#generatorView",
|
||||
"type": "ref"
|
||||
},
|
||||
"maxLength": 3
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.label.defs#label",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"record": {
|
||||
"type": "unknown"
|
||||
},
|
||||
"creator": {
|
||||
"ref": "app.bsky.actor.defs#profileViewBasic",
|
||||
"type": "ref"
|
||||
},
|
||||
"indexedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"joinedWeekCount": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"listItemsSample": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#listItemView",
|
||||
"type": "ref"
|
||||
},
|
||||
"maxLength": 12
|
||||
},
|
||||
"joinedAllTimeCount": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"starterPackViewBasic": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uri",
|
||||
"cid",
|
||||
"record",
|
||||
"creator",
|
||||
"indexedAt"
|
||||
],
|
||||
"properties": {
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "com.atproto.label.defs#label",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"record": {
|
||||
"type": "unknown"
|
||||
},
|
||||
"creator": {
|
||||
"ref": "app.bsky.actor.defs#profileViewBasic",
|
||||
"type": "ref"
|
||||
},
|
||||
"indexedAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"listItemCount": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"joinedWeekCount": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"joinedAllTimeCount": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"id": "app.bsky.graph.follow",
|
||||
"defs": {
|
||||
"main": {
|
||||
"key": "tid",
|
||||
"type": "record",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"subject",
|
||||
"createdAt"
|
||||
],
|
||||
"properties": {
|
||||
"via": {
|
||||
"ref": "com.atproto.repo.strongRef",
|
||||
"type": "ref"
|
||||
},
|
||||
"subject": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Record declaring a social 'follow' relationship of another account. Duplicate follows will be ignored by the AppView."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getActorStarterPacks",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"starterPacks"
|
||||
],
|
||||
"properties": {
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"starterPacks": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.graph.defs#starterPackViewBasic",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get a list of starter packs created by the actor."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getBlocks",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"blocks"
|
||||
],
|
||||
"properties": {
|
||||
"blocks": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Enumerates which accounts the requesting account is currently blocking. Requires auth."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getFollowers",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"subject",
|
||||
"followers"
|
||||
],
|
||||
"properties": {
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"subject": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
},
|
||||
"followers": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"sort": {
|
||||
"type": "string",
|
||||
"description": "Sort order of the returned followers.",
|
||||
"knownValues": [
|
||||
"latest",
|
||||
"top"
|
||||
]
|
||||
},
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Enumerates accounts which follow a specified account (actor)."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getFollows",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"subject",
|
||||
"follows"
|
||||
],
|
||||
"properties": {
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"follows": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"subject": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"sort": {
|
||||
"type": "string",
|
||||
"description": "Sort order of the returned follows.",
|
||||
"knownValues": [
|
||||
"latest",
|
||||
"top"
|
||||
]
|
||||
},
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Enumerates accounts which a specified account (actor) follows."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getKnownFollowers",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"subject",
|
||||
"followers"
|
||||
],
|
||||
"properties": {
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"subject": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
},
|
||||
"followers": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Enumerates accounts which follow a specified account (actor) and are followed by the viewer."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getList",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"list",
|
||||
"items"
|
||||
],
|
||||
"properties": {
|
||||
"list": {
|
||||
"ref": "app.bsky.graph.defs#listView",
|
||||
"type": "ref"
|
||||
},
|
||||
"items": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.graph.defs#listItemView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"list"
|
||||
],
|
||||
"properties": {
|
||||
"list": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "Reference (AT-URI) of the list record to hydrate."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Gets a 'view' (with additional context) of a specified list."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getListBlocks",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"lists"
|
||||
],
|
||||
"properties": {
|
||||
"lists": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.graph.defs#listView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get mod lists that the requesting account (actor) is blocking. Requires auth."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getListMutes",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"lists"
|
||||
],
|
||||
"properties": {
|
||||
"lists": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.graph.defs#listView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Enumerates mod lists that the requesting account (actor) currently has muted. Requires auth."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getLists",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"lists"
|
||||
],
|
||||
"properties": {
|
||||
"lists": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.graph.defs#listView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier",
|
||||
"description": "The account (actor) to enumerate lists from."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"purposes": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"modlist",
|
||||
"curatelist"
|
||||
]
|
||||
},
|
||||
"description": "Optional filter by list purpose. If not specified, all supported types are returned."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Enumerates the lists created by a specified account (actor)."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getListsWithMembership",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"listsWithMembership"
|
||||
],
|
||||
"properties": {
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"listsWithMembership": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#listWithMembership",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier",
|
||||
"description": "The account (actor) to check for membership."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"purposes": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"modlist",
|
||||
"curatelist"
|
||||
]
|
||||
},
|
||||
"description": "Optional filter by list purpose. If not specified, all supported types are returned."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Enumerates the lists created by the session user, and includes membership information about `actor` in those lists. Only supports curation and moderation lists (no reference lists, used in starter packs). Requires auth."
|
||||
},
|
||||
"listWithMembership": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"list"
|
||||
],
|
||||
"properties": {
|
||||
"list": {
|
||||
"ref": "app.bsky.graph.defs#listView",
|
||||
"type": "ref"
|
||||
},
|
||||
"listItem": {
|
||||
"ref": "app.bsky.graph.defs#listItemView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"description": "A list and an optional list item indicating membership of a target user to that list."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getMutes",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"mutes"
|
||||
],
|
||||
"properties": {
|
||||
"mutes": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Enumerates accounts that the requesting account (actor) currently has fully muted. Mutes scoped to specific kinds of content (only reposts, only quote posts) are not included. Responses may contain more items than the requested limit. Requires auth."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getRelationships",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"errors": [
|
||||
{
|
||||
"name": "ActorNotFound",
|
||||
"description": "the primary actor at-identifier could not be resolved"
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"relationships"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
},
|
||||
"relationships": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"refs": [
|
||||
"app.bsky.graph.defs#relationship",
|
||||
"app.bsky.graph.defs#notFoundActor"
|
||||
],
|
||||
"type": "union"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier",
|
||||
"description": "Primary account requesting relationships for."
|
||||
},
|
||||
"others": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
},
|
||||
"maxLength": 30,
|
||||
"description": "List of 'other' accounts to be related back to the primary."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Enumerates public relationships between one account, and a list of other accounts. Does not require auth."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getStarterPack",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"starterPack"
|
||||
],
|
||||
"properties": {
|
||||
"starterPack": {
|
||||
"ref": "app.bsky.graph.defs#starterPackView",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"starterPack"
|
||||
],
|
||||
"properties": {
|
||||
"starterPack": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "Reference (AT-URI) of the starter pack record."
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Gets a view of a starter pack."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getStarterPacks",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"starterPacks"
|
||||
],
|
||||
"properties": {
|
||||
"starterPacks": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.graph.defs#starterPackViewBasic",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"uris"
|
||||
],
|
||||
"properties": {
|
||||
"uris": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"maxLength": 25
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Get views for a list of starter packs."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getStarterPacksWithMembership",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"starterPacksWithMembership"
|
||||
],
|
||||
"properties": {
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"starterPacksWithMembership": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "#starterPackWithMembership",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier",
|
||||
"description": "The account (actor) to check for membership."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"default": 50,
|
||||
"maximum": 100,
|
||||
"minimum": 1
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Enumerates the starter packs created by the session user, and includes membership information about `actor` in those starter packs. Requires auth."
|
||||
},
|
||||
"starterPackWithMembership": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"starterPack"
|
||||
],
|
||||
"properties": {
|
||||
"listItem": {
|
||||
"ref": "app.bsky.graph.defs#listItemView",
|
||||
"type": "ref"
|
||||
},
|
||||
"starterPack": {
|
||||
"ref": "app.bsky.graph.defs#starterPackView",
|
||||
"type": "ref"
|
||||
}
|
||||
},
|
||||
"description": "A starter pack and an optional list item indicating membership of a target user to that starter pack."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"id": "app.bsky.graph.getSuggestedFollowsByActor",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"output": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"suggestions"
|
||||
],
|
||||
"properties": {
|
||||
"recId": {
|
||||
"type": "integer",
|
||||
"description": "DEPRECATED: use recIdStr instead."
|
||||
},
|
||||
"recIdStr": {
|
||||
"type": "string",
|
||||
"description": "Snowflake for this recommendation, use when submitting recommendation events."
|
||||
},
|
||||
"isFallback": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "DEPRECATED, unused. Previously: if true, response has fallen-back to generic results, and is not scoped using relativeToDid"
|
||||
},
|
||||
"suggestions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.actor.defs#profileView",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"encoding": "application/json"
|
||||
},
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": [
|
||||
"actor"
|
||||
],
|
||||
"properties": {
|
||||
"actor": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Enumerates follows similar to a given account (actor). Expected use is to recommend additional accounts immediately after following one account."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"id": "app.bsky.graph.list",
|
||||
"defs": {
|
||||
"main": {
|
||||
"key": "tid",
|
||||
"type": "record",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"name",
|
||||
"purpose",
|
||||
"createdAt"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"maxLength": 64,
|
||||
"minLength": 1,
|
||||
"description": "Display name for list; can not be empty."
|
||||
},
|
||||
"avatar": {
|
||||
"type": "blob",
|
||||
"accept": [
|
||||
"image/png",
|
||||
"image/jpeg"
|
||||
],
|
||||
"maxSize": 1000000
|
||||
},
|
||||
"labels": {
|
||||
"refs": [
|
||||
"com.atproto.label.defs#selfLabels"
|
||||
],
|
||||
"type": "union"
|
||||
},
|
||||
"purpose": {
|
||||
"ref": "app.bsky.graph.defs#listPurpose",
|
||||
"type": "ref",
|
||||
"description": "Defines the purpose of the list (aka, moderation-oriented or curration-oriented)"
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"maxLength": 3000,
|
||||
"maxGraphemes": 300
|
||||
},
|
||||
"descriptionFacets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"ref": "app.bsky.richtext.facet",
|
||||
"type": "ref"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Record representing a list of accounts (actors). Scope includes both moderation-oriented lists and curration-oriented lists."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"id": "app.bsky.graph.listblock",
|
||||
"defs": {
|
||||
"main": {
|
||||
"key": "tid",
|
||||
"type": "record",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"subject",
|
||||
"createdAt"
|
||||
],
|
||||
"properties": {
|
||||
"subject": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "Reference (AT-URI) to the mod list record."
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Record representing a block relationship against an entire an entire list of accounts (actors)."
|
||||
}
|
||||
},
|
||||
"$type": "com.atproto.lexicon.schema",
|
||||
"lexicon": 1
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user