Compare commits
187 Commits
445f38c6be
...
f7c3f9afd9
Author | SHA1 | Date | |
---|---|---|---|
f7c3f9afd9 | |||
|
688268b6a5 | ||
|
cf7227f8a1 | ||
|
0f3899dd52 | ||
|
b53e2c5d77 | ||
|
23462184dc | ||
|
231eb48265 | ||
|
1e461eab03 | ||
|
0759f0feed | ||
|
3fcd221111 | ||
|
bf0faed1f8 | ||
|
5720b644af | ||
|
371e04aad2 | ||
|
8b98fec885 | ||
|
26a0777167 | ||
|
3496935e72 | ||
|
ca07871c48 | ||
|
a4af3494bd | ||
|
388e5d3d2b | ||
|
fc61662d7b | ||
|
f329c56454 | ||
|
8b7bf7e8f0 | ||
|
01f2bd13eb | ||
|
e1eeef7025 | ||
|
0e681d3036 | ||
|
6bc8355c40 | ||
|
efb302db1a | ||
|
4db923ca1c | ||
|
02bc8e60c5 | ||
|
04b6230cd2 | ||
|
a26813da21 | ||
|
0eea698bef | ||
|
b0a0f14843 | ||
|
2b7efb6cb1 | ||
|
bdbd3c3e3f | ||
|
713a52d4dc | ||
|
6528943080 | ||
|
c16492f253 | ||
|
9b28184cb9 | ||
|
b4ab5011bc | ||
|
571164100f | ||
|
98d8a677ca | ||
|
be8f5d48e0 | ||
|
9a05892f6f | ||
|
ac6b604e7a | ||
|
01c5e636e3 | ||
|
a5a760c1f0 | ||
|
d0747e8373 | ||
|
076c2f9872 | ||
|
e3969b03f2 | ||
|
44f5c3639f | ||
|
620b10954a | ||
|
00b4095672 | ||
|
ff581e1e0b | ||
|
d87ffc7bfe | ||
|
03ca772612 | ||
|
42807cad56 | ||
|
c777ba6d68 | ||
|
49528e83da | ||
|
c20a3f0685 | ||
|
cc4122652e | ||
|
03fc0aa270 | ||
|
670b6b5de2 | ||
|
a07aca9737 | ||
|
9332c0f315 | ||
|
48f194ffa2 | ||
|
c501715b0d | ||
|
5ada66ceb9 | ||
|
0ae7f416e8 | ||
|
9e3eace8f9 | ||
|
7a7f2c43aa | ||
|
72a5265e05 | ||
|
b20907a705 | ||
|
d96b03956d | ||
|
18fbfa0005 | ||
|
eab9c003f8 | ||
|
8827ff433a | ||
|
c01d7f5d15 | ||
|
f46554bcb8 | ||
|
80c4bb51f6 | ||
|
850e39843c | ||
|
442fcce308 | ||
|
6bcbb6d8cd | ||
|
98aa023420 | ||
|
38320191e5 | ||
|
be800369c5 | ||
|
dc6e4ecb0e | ||
|
48b0a6f7b9 | ||
|
e5d72e8d1c | ||
|
11d8d21bea | ||
|
27b0a7be1e | ||
|
d4e14b7bdc | ||
|
5cce766705 | ||
|
99e2809ca2 | ||
|
e40758c36a | ||
|
78caefd7d4 | ||
|
82d5a2d361 | ||
|
43d2703742 | ||
|
44f81f2eb9 | ||
|
95299e0f62 | ||
|
9b643fbeca | ||
|
5e61126157 | ||
|
6e382f67aa | ||
|
7e3678c089 | ||
|
27bff80a98 | ||
|
b9cb049d94 | ||
|
36ad5b1e82 | ||
|
22af31a898 | ||
|
01874c4be7 | ||
|
2c0435f4ed | ||
|
8b2f0a62c6 | ||
|
88ce852a8d | ||
|
6faf3eb254 | ||
|
7449f8607c | ||
|
7b93618353 | ||
|
a9887f6877 | ||
|
afb3e1cd6c | ||
|
010f10c6f2 | ||
|
b41ff4b4e3 | ||
|
f1d323a6ef | ||
|
bde6f71c4c | ||
|
a3d2204a7e | ||
|
3f58dd0e74 | ||
|
ba5bb6e667 | ||
|
175f89f8fe | ||
|
e69e89a037 | ||
|
20e57bacf9 | ||
|
eb83ae176d | ||
|
6ea9c961af | ||
|
3c7976a0d1 | ||
|
809c7ac5e3 | ||
|
03351a5818 | ||
|
c53d943c8b | ||
|
f90eedc865 | ||
|
709a85b0b6 | ||
|
526bcf8cba | ||
|
636951e472 | ||
|
dc8a7842e6 | ||
|
799dd925e9 | ||
|
87ed907a6b | ||
|
61dc0d60e1 | ||
|
53a577fd4b | ||
|
8a30e0ed92 | ||
|
8f88623c99 | ||
|
1c195a3845 | ||
|
52c687a05c | ||
|
7f52e67354 | ||
|
d377d1a9be | ||
|
8fd5dcea92 | ||
|
cc2a1222bd | ||
|
fb64d50ee2 | ||
|
8810885b8e | ||
|
933b6ba36e | ||
|
a8f06939f9 | ||
|
8c777f041f | ||
|
e5d4c7462d | ||
|
da7a831a73 | ||
|
0904515069 | ||
|
4f2841efeb | ||
|
3aa97a9dd3 | ||
|
8c6c7813a9 | ||
|
b04943191b | ||
|
08a48c16a0 | ||
|
e6bd2ad8d1 | ||
|
c5a4cdb0a5 | ||
|
e6e6aea381 | ||
|
c0a75d310a | ||
|
6b8a51e881 | ||
|
b1dd0504cc | ||
|
1ada2d0934 | ||
|
74ee108262 | ||
|
1015d96925 | ||
|
d3432f0a79 | ||
|
6241f6b00b | ||
|
d80380cb56 | ||
|
50603b4f2e | ||
|
ee9779d074 | ||
|
5417476622 | ||
|
cbf17066f3 | ||
|
9c01281931 | ||
|
4ab7075fde | ||
|
4e43cc0de1 | ||
|
688ff00dde | ||
|
fa96a997ec | ||
|
0832a377d2 | ||
|
c6c8686de4 | ||
|
07f11d3e0c |
5
.changeset/dirty-laws-train.md
Normal file
5
.changeset/dirty-laws-train.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
"@atproto/api": patch
|
||||
---
|
||||
|
||||
Add verification state to profile view lexicons
|
5
.changeset/sweet-parents-tell.md
Normal file
5
.changeset/sweet-parents-tell.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
"@atproto/oauth-provider-frontend": patch
|
||||
---
|
||||
|
||||
Minor UI/UX tweaks
|
70
.eslintrc
70
.eslintrc
@ -1,26 +1,50 @@
|
||||
{
|
||||
"root": true,
|
||||
// parse TypeScript files
|
||||
// https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/parser
|
||||
"parser": "@typescript-eslint/parser",
|
||||
// configure eslint using options described at
|
||||
// https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin
|
||||
"plugins": ["@typescript-eslint"],
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/base",
|
||||
"plugin:@typescript-eslint/eslint-recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
"plugin:prettier/recommended",
|
||||
"prettier"
|
||||
"plugin:import/recommended",
|
||||
"plugin:import/typescript"
|
||||
],
|
||||
"plugins": ["n"],
|
||||
"ignorePatterns": ["dist", "node_modules"],
|
||||
"rules": {
|
||||
"no-var": "error",
|
||||
"prefer-const": "warn",
|
||||
"no-misleading-character-class": "warn",
|
||||
"eqeqeq": ["error", "always", { "null": "ignore" }],
|
||||
"n/global-require": "error",
|
||||
"n/no-extraneous-import": "error",
|
||||
"n/prefer-node-protocol": "error",
|
||||
"import/extensions": ["off", "ignorePackages"],
|
||||
"import/export": "off",
|
||||
"import/namespace": "off",
|
||||
"import/no-deprecated": "error",
|
||||
"import/no-absolute-path": "error",
|
||||
"import/no-dynamic-require": "error",
|
||||
"import/no-self-import": "error",
|
||||
"import/order": [
|
||||
"error",
|
||||
{
|
||||
"named": true,
|
||||
"distinctGroup": true,
|
||||
"alphabetize": { "order": "asc" },
|
||||
"newlines-between": "never",
|
||||
"groups": [
|
||||
"builtin",
|
||||
"external",
|
||||
"internal",
|
||||
"parent",
|
||||
["index", "sibling"],
|
||||
"object"
|
||||
]
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"warn",
|
||||
"error",
|
||||
{ "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }
|
||||
],
|
||||
"@typescript-eslint/ban-ts-comment": "off",
|
||||
@ -43,6 +67,34 @@
|
||||
"rules": {
|
||||
"@typescript-eslint/no-var-requires": "off"
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": ["**/*.test.ts", "**/tests/**/*.ts"],
|
||||
"rules": {
|
||||
"n/no-extraneous-import": [
|
||||
"error",
|
||||
{ "allowModules": ["@atproto/dev-env"] }
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"settings": {
|
||||
"node": { "version": ">=18.7.0" },
|
||||
"import/internal-regex": "^@atproto(?:-labs)?/",
|
||||
"import/parsers": { "@typescript-eslint/parser": [".ts", ".tsx"] },
|
||||
"import/resolver": {
|
||||
"typescript": {
|
||||
"project": [
|
||||
"tsconfig.json",
|
||||
"packages/oauth/*/tsconfig.json",
|
||||
"packages/oauth/*/tsconfig.src.json",
|
||||
"packages/internal/*/tsconfig.json",
|
||||
"packages/*/tsconfig.json"
|
||||
]
|
||||
},
|
||||
"node": {
|
||||
"extensions": [".js", ".jsx", ".json"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ env:
|
||||
jobs:
|
||||
bsky-container-aws:
|
||||
if: github.repository == 'bluesky-social/atproto'
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
@ -3,6 +3,7 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- divy/etcd-dp-host-list
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
USERNAME: ${{ github.actor }}
|
||||
@ -14,7 +15,7 @@ env:
|
||||
jobs:
|
||||
bsky-container-ghcr:
|
||||
if: github.repository == 'bluesky-social/atproto'
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
@ -12,7 +12,7 @@ env:
|
||||
jobs:
|
||||
bsync-container-aws:
|
||||
if: github.repository == 'bluesky-social/atproto'
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
@ -14,7 +14,7 @@ env:
|
||||
jobs:
|
||||
bsync-container-ghcr:
|
||||
if: github.repository == 'bluesky-social/atproto'
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
@ -3,7 +3,7 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- divy/ozone-passthru
|
||||
- divy/ozone-metadata
|
||||
env:
|
||||
REGISTRY: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_REGISTRY }}
|
||||
USERNAME: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_USERNAME }}
|
||||
@ -13,7 +13,7 @@ env:
|
||||
jobs:
|
||||
ozone-container-aws:
|
||||
if: github.repository == 'bluesky-social/atproto'
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
@ -14,7 +14,7 @@ env:
|
||||
jobs:
|
||||
ozone-container-ghcr:
|
||||
if: github.repository == 'bluesky-social/atproto'
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
@ -12,7 +12,7 @@ env:
|
||||
jobs:
|
||||
pds-container-aws:
|
||||
if: github.repository == 'bluesky-social/atproto'
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
@ -14,7 +14,7 @@ env:
|
||||
jobs:
|
||||
pds-container-ghcr:
|
||||
if: github.repository == 'bluesky-social/atproto'
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
2
.github/workflows/publish.yaml
vendored
2
.github/workflows/publish.yaml
vendored
@ -13,7 +13,7 @@ jobs:
|
||||
build:
|
||||
name: Build & Publish
|
||||
if: github.repository == 'bluesky-social/atproto'
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
7
.github/workflows/repo.yaml
vendored
7
.github/workflows/repo.yaml
vendored
@ -12,7 +12,7 @@ concurrency:
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- run: corepack enable && corepack prepare --activate
|
||||
@ -35,6 +35,7 @@ jobs:
|
||||
path: |
|
||||
packages/*/dist
|
||||
packages/*/*/dist
|
||||
packages/oauth/*/src/locales/*/messages.ts
|
||||
retention-days: 1
|
||||
test:
|
||||
name: Test
|
||||
@ -42,7 +43,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
shard: [1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8, 8/8]
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- run: corepack enable && corepack prepare --activate
|
||||
@ -66,7 +67,7 @@ jobs:
|
||||
verify:
|
||||
name: Verify
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- run: corepack enable && corepack prepare --activate
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -5,12 +5,12 @@ yarn-error.log
|
||||
packages/**/dist
|
||||
.idea
|
||||
packages/*/coverage
|
||||
.vscode/
|
||||
test.sqlite
|
||||
.DS_Store
|
||||
*.log
|
||||
*.tsbuildinfo
|
||||
.*.env
|
||||
.env.*
|
||||
.env
|
||||
\#*\#
|
||||
*~
|
||||
|
@ -1,12 +1,19 @@
|
||||
node_modules
|
||||
interop-test-files
|
||||
__snapshots__
|
||||
dist
|
||||
build
|
||||
.nyc_output
|
||||
coverage
|
||||
pnpm-lock.yaml
|
||||
.pnpm*
|
||||
.changeset
|
||||
*.d.ts
|
||||
packages/bsky/src/data-plane/gen
|
||||
CHANGELOG.md
|
||||
|
||||
# Prettier is used to format the code during codegen
|
||||
packages/api/src/client
|
||||
packages/bsky/src/lexicon
|
||||
packages/pds/src/lexicon
|
||||
packages/ozone/src/lexicon
|
||||
|
||||
# Automatically generated by lingui
|
||||
packages/oauth/*/src/locales/*/messages.ts
|
||||
packages/oauth/oauth-provider-frontend/src/routeTree.gen.ts
|
||||
|
||||
|
@ -3,12 +3,20 @@
|
||||
"tabWidth": 2,
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"plugins": ["prettier-plugin-tailwindcss"],
|
||||
"overrides": [
|
||||
{
|
||||
"files": "*.hbs",
|
||||
"options": {
|
||||
"singleQuote": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": [".eslintrc"],
|
||||
"options": {
|
||||
"parser": "json",
|
||||
"trailingComma": "none"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
8
.vscode/extensions.json
vendored
Normal file
8
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"dbaeumer.vscode-eslint",
|
||||
"wengerk.highlight-bad-chars",
|
||||
"esbenp.prettier-vscode",
|
||||
"streetsidesoftware.code-spell-checker"
|
||||
]
|
||||
}
|
51
.vscode/settings.json
vendored
Normal file
51
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"cSpell.language": "en,en-US",
|
||||
"cSpell.userWords": [
|
||||
"algs",
|
||||
"appview",
|
||||
"atproto",
|
||||
"blockstore",
|
||||
"bluesky",
|
||||
"bsky",
|
||||
"bsync",
|
||||
"clsx",
|
||||
"consolas",
|
||||
"dpop",
|
||||
"googleusercontent",
|
||||
"hcaptcha",
|
||||
"hexeditor",
|
||||
"ingester",
|
||||
"insertable",
|
||||
"jwks",
|
||||
"keypair",
|
||||
"kysely",
|
||||
"merkle",
|
||||
"msid",
|
||||
"multibase",
|
||||
"multiformats",
|
||||
"nameserver",
|
||||
"oidc",
|
||||
"pkce",
|
||||
"ponyfill",
|
||||
"proxied",
|
||||
"ssrf",
|
||||
"undici",
|
||||
"webcrypto",
|
||||
"whatwg",
|
||||
"xrpc"
|
||||
],
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.eslint": "explicit",
|
||||
"source.sortImports": "never"
|
||||
},
|
||||
"files.associations": {
|
||||
"**/tsconfig/*.json": "jsonc"
|
||||
},
|
||||
"files.defaultLanguage": "ts",
|
||||
"files.insertFinalNewline": true,
|
||||
"files.trimTrailingWhitespace": true,
|
||||
"prettier.semi": false,
|
||||
"prettier.singleQuote": true,
|
||||
"prettier.trailingComma": "es5",
|
||||
"typescript.tsdk": "node_modules/typescript/lib"
|
||||
}
|
@ -19,3 +19,7 @@ ATProto receives so many contributions that we could never list everyone who des
|
||||
#### [goeo\_](https://bsky.app/profile/did:web:genco.me), Security disclosure, May 2024
|
||||
|
||||
#### [DavidBuchanan314](https://github.com/DavidBuchanan314), Security disclosure, November 2024
|
||||
|
||||
#### [daniel](https://hackerone.com/daniel), Security disclosure, November 2024
|
||||
|
||||
#### [imax](https://github.com/imax9000), Security disclosure, January 2025
|
||||
|
@ -1,6 +1,6 @@
|
||||
Dual MIT/Apache-2.0 License
|
||||
|
||||
Copyright (c) 2022-2024 Bluesky PBC, and Contributors
|
||||
Copyright (c) 2022-2025 Bluesky PBC, and Contributors
|
||||
|
||||
Except as otherwise noted in individual files, this software is licensed under the MIT license (<http://opensource.org/licenses/MIT>), or the Apache License, Version 2.0 (<http://www.apache.org/licenses/LICENSE-2.0>).
|
||||
|
||||
|
11
Makefile
11
Makefile
@ -28,12 +28,7 @@ run-dev-env-logged: ## Run a "development environment" shell (with logging)
|
||||
|
||||
.PHONY: codegen
|
||||
codegen: ## Re-generate packages from lexicon/ files
|
||||
cd packages/api; pnpm run codegen
|
||||
cd packages/pds; pnpm run codegen
|
||||
cd packages/bsky; pnpm run codegen
|
||||
cd packages/ozone; pnpm run codegen
|
||||
# clean up codegen output
|
||||
pnpm format
|
||||
pnpm codegen
|
||||
|
||||
.PHONY: lint
|
||||
lint: ## Run style checks and verify syntax
|
||||
@ -43,6 +38,10 @@ lint: ## Run style checks and verify syntax
|
||||
fmt: ## Run syntax re-formatting
|
||||
pnpm format
|
||||
|
||||
.PHONY: fmt-lexicons
|
||||
fmt-lexicons: ## Run syntax re-formatting, just on .json files
|
||||
pnpm exec eslint ./lexicons/ --ext .json --fix
|
||||
|
||||
.PHONY: deps
|
||||
deps: ## Installs dependent libs using 'pnpm install'
|
||||
pnpm install --frozen-lockfile
|
||||
|
@ -32,3 +32,4 @@ at://did:abc:123/io.nsid.someFunc/-
|
||||
at://did:abc:123/io.nsid.someFunc/_
|
||||
at://did:abc:123/io.nsid.someFunc/~
|
||||
at://did:abc:123/io.nsid.someFunc/...
|
||||
at://did:plc:asdf123/com.atproto.feed.postV2
|
||||
|
@ -3,15 +3,13 @@ com.oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo.foo
|
||||
com.example.oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
|
||||
com.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.foo
|
||||
|
||||
# invliad examples
|
||||
# invalid examples
|
||||
com.example.foo.*
|
||||
com.example.foo.blah*
|
||||
com.example.foo.*blah
|
||||
com.example.f00
|
||||
com.exa💩ple.thing
|
||||
a-0.b-1.c-3
|
||||
a-0.b-1.c-o
|
||||
a0.b1.c3
|
||||
1.0.0.127.record
|
||||
0two.example.foo
|
||||
example.com
|
||||
@ -29,4 +27,4 @@ com.atproto.feed.p*st
|
||||
com.atproto.feed.po#t
|
||||
com.atproto.feed.p!ot
|
||||
com.example-.foo
|
||||
|
||||
com.example.fooBar.2
|
||||
|
@ -5,6 +5,7 @@ com.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle.middle
|
||||
|
||||
# valid examples
|
||||
com.example.fooBar
|
||||
com.example.fooBarV2
|
||||
net.users.bob.ping
|
||||
a.b.c
|
||||
m.xn--masekowski-d0b.pl
|
||||
@ -18,6 +19,8 @@ test.12345.record
|
||||
a01.thing.record
|
||||
a.0.c
|
||||
xn--fiqs8s.xn--fiqa61au8b7zsevnm8ak20mc4a87e.record.two
|
||||
a0.b1.c3
|
||||
com.example.f00
|
||||
|
||||
# allows onion (Tor) NSIDs
|
||||
onion.expyuzz4wqqyqhjn.spec.getThing
|
||||
|
@ -23,7 +23,11 @@
|
||||
"type": "array",
|
||||
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
|
||||
},
|
||||
"createdAt": { "type": "string", "format": "datetime" }
|
||||
"createdAt": { "type": "string", "format": "datetime" },
|
||||
"verification": {
|
||||
"type": "ref",
|
||||
"ref": "#verificationState"
|
||||
}
|
||||
}
|
||||
},
|
||||
"profileView": {
|
||||
@ -53,6 +57,10 @@
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
|
||||
},
|
||||
"verification": {
|
||||
"type": "ref",
|
||||
"ref": "#verificationState"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -95,6 +103,10 @@
|
||||
"pinnedPost": {
|
||||
"type": "ref",
|
||||
"ref": "com.atproto.repo.strongRef"
|
||||
},
|
||||
"verification": {
|
||||
"type": "ref",
|
||||
"ref": "#verificationState"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -158,6 +170,54 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"verificationState": {
|
||||
"type": "object",
|
||||
"description": "Represents the verification information about the user this object is attached to.",
|
||||
"required": ["verifications", "verifiedStatus", "trustedVerifierStatus"],
|
||||
"properties": {
|
||||
"verifications": {
|
||||
"type": "array",
|
||||
"description": "All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.",
|
||||
"items": { "type": "ref", "ref": "#verificationView" }
|
||||
},
|
||||
"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"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"verificationView": {
|
||||
"type": "object",
|
||||
"description": "An individual verification for an associated subject.",
|
||||
"required": ["issuer", "uri", "isValid", "createdAt"],
|
||||
"properties": {
|
||||
"issuer": {
|
||||
"type": "string",
|
||||
"description": "The user who issued this verification.",
|
||||
"format": "did"
|
||||
},
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"description": "The AT-URI of the verification record.",
|
||||
"format": "at-uri"
|
||||
},
|
||||
"isValid": {
|
||||
"type": "boolean",
|
||||
"description": "True if the verification passes validation, otherwise false."
|
||||
},
|
||||
"createdAt": {
|
||||
"type": "string",
|
||||
"description": "Timestamp when the verification was created.",
|
||||
"format": "datetime"
|
||||
}
|
||||
}
|
||||
},
|
||||
"preferences": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
@ -174,7 +234,8 @@
|
||||
"#mutedWordsPref",
|
||||
"#hiddenPostsPref",
|
||||
"#bskyAppStatePref",
|
||||
"#labelersPref"
|
||||
"#labelersPref",
|
||||
"#postInteractionSettingsPref"
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -468,6 +529,36 @@
|
||||
"description": "The date and time at which the NUX will expire and should be considered completed."
|
||||
}
|
||||
}
|
||||
},
|
||||
"postInteractionSettingsPref": {
|
||||
"type": "object",
|
||||
"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.",
|
||||
"required": [],
|
||||
"properties": {
|
||||
"threadgateAllowRules": {
|
||||
"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.",
|
||||
"type": "array",
|
||||
"maxLength": 5,
|
||||
"items": {
|
||||
"type": "union",
|
||||
"refs": [
|
||||
"app.bsky.feed.threadgate#mentionRule",
|
||||
"app.bsky.feed.threadgate#followerRule",
|
||||
"app.bsky.feed.threadgate#followingRule",
|
||||
"app.bsky.feed.threadgate#listRule"
|
||||
]
|
||||
}
|
||||
},
|
||||
"postgateEmbeddingRules": {
|
||||
"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.",
|
||||
"type": "array",
|
||||
"maxLength": 5,
|
||||
"items": {
|
||||
"type": "union",
|
||||
"refs": ["app.bsky.feed.postgate#disableRule"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,8 +9,9 @@
|
||||
"properties": {
|
||||
"video": {
|
||||
"type": "blob",
|
||||
"description": "The mp4 video file. May be up to 100mb, formerly limited to 50mb.",
|
||||
"accept": ["video/mp4"],
|
||||
"maxSize": 50000000
|
||||
"maxSize": 100000000
|
||||
},
|
||||
"captions": {
|
||||
"type": "array",
|
||||
|
@ -48,6 +48,13 @@
|
||||
"pinned": { "type": "boolean" }
|
||||
}
|
||||
},
|
||||
"threadContext": {
|
||||
"type": "object",
|
||||
"description": "Metadata about this post within the context of the thread it is in.",
|
||||
"properties": {
|
||||
"rootAuthorLike": { "type": "string", "format": "at-uri" }
|
||||
}
|
||||
},
|
||||
"feedViewPost": {
|
||||
"type": "object",
|
||||
"required": ["post"],
|
||||
@ -108,7 +115,8 @@
|
||||
"type": "union",
|
||||
"refs": ["#threadViewPost", "#notFoundPost", "#blockedPost"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"threadContext": { "type": "ref", "ref": "#threadContext" }
|
||||
}
|
||||
},
|
||||
"notFoundPost": {
|
||||
@ -162,6 +170,13 @@
|
||||
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
|
||||
},
|
||||
"viewer": { "type": "ref", "ref": "#generatorViewerState" },
|
||||
"contentMode": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"app.bsky.feed.defs#contentModeUnspecified",
|
||||
"app.bsky.feed.defs#contentModeVideo"
|
||||
]
|
||||
},
|
||||
"indexedAt": { "type": "string", "format": "datetime" }
|
||||
}
|
||||
},
|
||||
@ -262,6 +277,14 @@
|
||||
"type": "token",
|
||||
"description": "User clicked through to the embedded content of the feed item"
|
||||
},
|
||||
"contentModeUnspecified": {
|
||||
"type": "token",
|
||||
"description": "Declares the feed generator returns any types of posts."
|
||||
},
|
||||
"contentModeVideo": {
|
||||
"type": "token",
|
||||
"description": "Declares the feed generator returns posts containing app.bsky.embed.video embeds."
|
||||
},
|
||||
"interactionSeen": {
|
||||
"type": "token",
|
||||
"description": "Feed item was seen by user"
|
||||
|
@ -39,6 +39,13 @@
|
||||
"description": "Self-label values",
|
||||
"refs": ["com.atproto.label.defs#selfLabels"]
|
||||
},
|
||||
"contentMode": {
|
||||
"type": "string",
|
||||
"knownValues": [
|
||||
"app.bsky.feed.defs#contentModeUnspecified",
|
||||
"app.bsky.feed.defs#contentModeVideo"
|
||||
]
|
||||
},
|
||||
"createdAt": { "type": "string", "format": "datetime" }
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,8 @@
|
||||
"posts_with_replies",
|
||||
"posts_no_replies",
|
||||
"posts_with_media",
|
||||
"posts_and_author_threads"
|
||||
"posts_and_author_threads",
|
||||
"posts_with_video"
|
||||
],
|
||||
"default": "posts_with_replies"
|
||||
},
|
||||
|
@ -26,6 +26,7 @@
|
||||
"description": "List of AT-URIs embedding this post that the author has detached from."
|
||||
},
|
||||
"embeddingRules": {
|
||||
"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.",
|
||||
"type": "array",
|
||||
"maxLength": 5,
|
||||
"items": {
|
||||
|
@ -16,11 +16,17 @@
|
||||
"description": "Reference (AT-URI) to the post record."
|
||||
},
|
||||
"allow": {
|
||||
"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.",
|
||||
"type": "array",
|
||||
"maxLength": 5,
|
||||
"items": {
|
||||
"type": "union",
|
||||
"refs": ["#mentionRule", "#followingRule", "#listRule"]
|
||||
"refs": [
|
||||
"#mentionRule",
|
||||
"#followerRule",
|
||||
"#followingRule",
|
||||
"#listRule"
|
||||
]
|
||||
}
|
||||
},
|
||||
"createdAt": { "type": "string", "format": "datetime" },
|
||||
@ -41,6 +47,11 @@
|
||||
"description": "Allow replies from actors mentioned in your post.",
|
||||
"properties": {}
|
||||
},
|
||||
"followerRule": {
|
||||
"type": "object",
|
||||
"description": "Allow replies from actors who follow you.",
|
||||
"properties": {}
|
||||
},
|
||||
"followingRule": {
|
||||
"type": "object",
|
||||
"description": "Allow replies from actors you follow.",
|
||||
|
36
lexicons/app/bsky/graph/verification.json
Normal file
36
lexicons/app/bsky/graph/verification.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "app.bsky.graph.verification",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "record",
|
||||
"description": "Record declaring a verification relationship between two accounts. Verifications are only considered valid by an app if issued by an account the app considers trusted.",
|
||||
"key": "tid",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": ["subject", "handle", "displayName", "createdAt"],
|
||||
"properties": {
|
||||
"subject": {
|
||||
"description": "DID of the subject the verification applies to.",
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
},
|
||||
"handle": {
|
||||
"description": "Handle of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current handle matches the one at the time of verifying.",
|
||||
"type": "string",
|
||||
"format": "handle"
|
||||
},
|
||||
"displayName": {
|
||||
"description": "Display name of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current displayName matches the one at the time of verifying.",
|
||||
"type": "string"
|
||||
},
|
||||
"createdAt": {
|
||||
"description": "Date of when the verification was created.",
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -35,6 +35,27 @@
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
|
||||
},
|
||||
"reasonTypes": {
|
||||
"description": "The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed.",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "ref",
|
||||
"ref": "com.atproto.moderation.defs#reasonType"
|
||||
}
|
||||
},
|
||||
"subjectTypes": {
|
||||
"description": "The set of subject types (account, record, etc) this service accepts reports on.",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "ref",
|
||||
"ref": "com.atproto.moderation.defs#subjectType"
|
||||
}
|
||||
},
|
||||
"subjectCollections": {
|
||||
"type": "array",
|
||||
"description": "Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type.",
|
||||
"items": { "type": "string", "format": "nsid" }
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -18,7 +18,28 @@
|
||||
"type": "union",
|
||||
"refs": ["com.atproto.label.defs#selfLabels"]
|
||||
},
|
||||
"createdAt": { "type": "string", "format": "datetime" }
|
||||
"createdAt": { "type": "string", "format": "datetime" },
|
||||
"reasonTypes": {
|
||||
"description": "The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed.",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "ref",
|
||||
"ref": "com.atproto.moderation.defs#reasonType"
|
||||
}
|
||||
},
|
||||
"subjectTypes": {
|
||||
"description": "The set of subject types (account, record, etc) this service accepts reports on.",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "ref",
|
||||
"ref": "com.atproto.moderation.defs#subjectType"
|
||||
}
|
||||
},
|
||||
"subjectCollections": {
|
||||
"type": "array",
|
||||
"description": "Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type.",
|
||||
"items": { "type": "string", "format": "nsid" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,6 +32,60 @@
|
||||
"description": { "type": "string" },
|
||||
"link": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"skeletonTrend": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"topic",
|
||||
"displayName",
|
||||
"link",
|
||||
"startedAt",
|
||||
"postCount",
|
||||
"dids"
|
||||
],
|
||||
"properties": {
|
||||
"topic": { "type": "string" },
|
||||
"displayName": { "type": "string" },
|
||||
"link": { "type": "string" },
|
||||
"startedAt": { "type": "string", "format": "datetime" },
|
||||
"postCount": { "type": "integer" },
|
||||
"status": { "type": "string", "knownValues": ["hot"] },
|
||||
"category": { "type": "string" },
|
||||
"dids": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"trendView": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"topic",
|
||||
"displayName",
|
||||
"link",
|
||||
"startedAt",
|
||||
"postCount",
|
||||
"actors"
|
||||
],
|
||||
"properties": {
|
||||
"topic": { "type": "string" },
|
||||
"displayName": { "type": "string" },
|
||||
"link": { "type": "string" },
|
||||
"startedAt": { "type": "string", "format": "datetime" },
|
||||
"postCount": { "type": "integer" },
|
||||
"status": { "type": "string", "knownValues": ["hot"] },
|
||||
"category": { "type": "string" },
|
||||
"actors": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "ref",
|
||||
"ref": "app.bsky.actor.defs#profileViewBasic"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
37
lexicons/app/bsky/unspecced/getSuggestedFeeds.json
Normal file
37
lexicons/app/bsky/unspecced/getSuggestedFeeds.json
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "app.bsky.unspecced.getSuggestedFeeds",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Get a list of suggested feeds",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 25,
|
||||
"default": 10
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["feeds"],
|
||||
"properties": {
|
||||
"feeds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "ref",
|
||||
"ref": "app.bsky.feed.defs#generatorView"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
42
lexicons/app/bsky/unspecced/getSuggestedFeedsSkeleton.json
Normal file
42
lexicons/app/bsky/unspecced/getSuggestedFeedsSkeleton.json
Normal file
@ -0,0 +1,42 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "app.bsky.unspecced.getSuggestedFeedsSkeleton",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Get a skeleton of suggested feeds. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedFeeds",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"viewer": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "DID of the account making the request (not included for public/unauthenticated queries)."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 25,
|
||||
"default": 10
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["feeds"],
|
||||
"properties": {
|
||||
"feeds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
37
lexicons/app/bsky/unspecced/getSuggestedStarterPacks.json
Normal file
37
lexicons/app/bsky/unspecced/getSuggestedStarterPacks.json
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "app.bsky.unspecced.getSuggestedStarterPacks",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Get a list of suggested starterpacks",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 25,
|
||||
"default": 10
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["starterPacks"],
|
||||
"properties": {
|
||||
"starterPacks": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "ref",
|
||||
"ref": "app.bsky.graph.defs#starterPackView"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "app.bsky.unspecced.getSuggestedStarterPacksSkeleton",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Get a skeleton of suggested starterpacks. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedStarterpacks",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"viewer": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "DID of the account making the request (not included for public/unauthenticated queries)."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 25,
|
||||
"default": 10
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["starterPacks"],
|
||||
"properties": {
|
||||
"starterPacks": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "at-uri"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
41
lexicons/app/bsky/unspecced/getSuggestedUsers.json
Normal file
41
lexicons/app/bsky/unspecced/getSuggestedUsers.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "app.bsky.unspecced.getSuggestedUsers",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Get a list of suggested users",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"category": {
|
||||
"type": "string",
|
||||
"description": "Category of users to get suggestions for."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 50,
|
||||
"default": 25
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["actors"],
|
||||
"properties": {
|
||||
"actors": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "ref",
|
||||
"ref": "app.bsky.actor.defs#profileView"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
46
lexicons/app/bsky/unspecced/getSuggestedUsersSkeleton.json
Normal file
46
lexicons/app/bsky/unspecced/getSuggestedUsersSkeleton.json
Normal file
@ -0,0 +1,46 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "app.bsky.unspecced.getSuggestedUsersSkeleton",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Get a skeleton of suggested users. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsers",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"viewer": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "DID of the account making the request (not included for public/unauthenticated queries)."
|
||||
},
|
||||
"category": {
|
||||
"type": "string",
|
||||
"description": "Category of users to get suggestions for."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 50,
|
||||
"default": 25
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["dids"],
|
||||
"properties": {
|
||||
"dids": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
37
lexicons/app/bsky/unspecced/getTrends.json
Normal file
37
lexicons/app/bsky/unspecced/getTrends.json
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "app.bsky.unspecced.getTrends",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Get the current trends on the network",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 25,
|
||||
"default": 10
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["trends"],
|
||||
"properties": {
|
||||
"trends": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "ref",
|
||||
"ref": "app.bsky.unspecced.defs#trendView"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
42
lexicons/app/bsky/unspecced/getTrendsSkeleton.json
Normal file
42
lexicons/app/bsky/unspecced/getTrendsSkeleton.json
Normal file
@ -0,0 +1,42 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "app.bsky.unspecced.getTrendsSkeleton",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Get the skeleton of trends on the network. Intended to be called and then hydrated through app.bsky.unspecced.getTrends",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"viewer": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "DID of the account making the request (not included for public/unauthenticated queries)."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 25,
|
||||
"default": 10
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["trends"],
|
||||
"properties": {
|
||||
"trends": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "ref",
|
||||
"ref": "app.bsky.unspecced.defs#skeletonTrend"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
31
lexicons/chat/bsky/convo/acceptConvo.json
Normal file
31
lexicons/chat/bsky/convo/acceptConvo.json
Normal file
@ -0,0 +1,31 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "chat.bsky.convo.acceptConvo",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["convoId"],
|
||||
"properties": {
|
||||
"convoId": { "type": "string" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"rev": {
|
||||
"description": "Rev when the convo was accepted. If not present, the convo was already accepted.",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
55
lexicons/chat/bsky/convo/addReaction.json
Normal file
55
lexicons/chat/bsky/convo/addReaction.json
Normal file
@ -0,0 +1,55 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "chat.bsky.convo.addReaction",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"description": "Adds an emoji reaction to a message. Requires authentication. It is idempotent, so multiple calls from the same user with the same emoji result in a single reaction.",
|
||||
"input": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["convoId", "messageId", "value"],
|
||||
"properties": {
|
||||
"convoId": { "type": "string" },
|
||||
"messageId": { "type": "string" },
|
||||
"value": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 64,
|
||||
"minGraphemes": 1,
|
||||
"maxGraphemes": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["message"],
|
||||
"properties": {
|
||||
"message": {
|
||||
"type": "ref",
|
||||
"ref": "chat.bsky.convo.defs#messageView"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "ReactionMessageDeleted",
|
||||
"description": "Indicates that the message has been deleted and reactions can no longer be added/removed."
|
||||
},
|
||||
{
|
||||
"name": "ReactionLimitReached",
|
||||
"description": "Indicates that the message has the maximum number of reactions allowed for a single user, and the requested reaction wasn't yet present. If it was already present, the request will not fail since it is idempotent."
|
||||
},
|
||||
{
|
||||
"name": "ReactionInvalidValue",
|
||||
"description": "Indicates the value for the reaction is not acceptable. In general, this means it is not an emoji."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -51,6 +51,11 @@
|
||||
"type": "union",
|
||||
"refs": ["app.bsky.embed.record#view"]
|
||||
},
|
||||
"reactions": {
|
||||
"type": "array",
|
||||
"description": "Reactions to this message, in ascending order of creation time.",
|
||||
"items": { "type": "ref", "ref": "#reactionView" }
|
||||
},
|
||||
"sender": { "type": "ref", "ref": "#messageViewSender" },
|
||||
"sentAt": { "type": "string", "format": "datetime" }
|
||||
}
|
||||
@ -72,6 +77,30 @@
|
||||
"did": { "type": "string", "format": "did" }
|
||||
}
|
||||
},
|
||||
"reactionView": {
|
||||
"type": "object",
|
||||
"required": ["value", "sender", "createdAt"],
|
||||
"properties": {
|
||||
"value": { "type": "string" },
|
||||
"sender": { "type": "ref", "ref": "#reactionViewSender" },
|
||||
"createdAt": { "type": "string", "format": "datetime" }
|
||||
}
|
||||
},
|
||||
"reactionViewSender": {
|
||||
"type": "object",
|
||||
"required": ["did"],
|
||||
"properties": {
|
||||
"did": { "type": "string", "format": "did" }
|
||||
}
|
||||
},
|
||||
"messageAndReactionView": {
|
||||
"type": "object",
|
||||
"required": ["message", "reaction"],
|
||||
"properties": {
|
||||
"message": { "type": "ref", "ref": "#messageView" },
|
||||
"reaction": { "type": "ref", "ref": "#reactionView" }
|
||||
}
|
||||
},
|
||||
"convoView": {
|
||||
"type": "object",
|
||||
"required": ["id", "rev", "members", "muted", "unreadCount"],
|
||||
@ -89,8 +118,15 @@
|
||||
"type": "union",
|
||||
"refs": ["#messageView", "#deletedMessageView"]
|
||||
},
|
||||
"lastReaction": {
|
||||
"type": "union",
|
||||
"refs": ["#messageAndReactionView"]
|
||||
},
|
||||
"muted": { "type": "boolean" },
|
||||
"opened": { "type": "boolean" },
|
||||
"status": {
|
||||
"type": "string",
|
||||
"knownValues": ["request", "accepted"]
|
||||
},
|
||||
"unreadCount": { "type": "integer" }
|
||||
}
|
||||
},
|
||||
@ -102,6 +138,14 @@
|
||||
"convoId": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"logAcceptConvo": {
|
||||
"type": "object",
|
||||
"required": ["rev", "convoId"],
|
||||
"properties": {
|
||||
"rev": { "type": "string" },
|
||||
"convoId": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"logLeaveConvo": {
|
||||
"type": "object",
|
||||
"required": ["rev", "convoId"],
|
||||
@ -110,6 +154,22 @@
|
||||
"convoId": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"logMuteConvo": {
|
||||
"type": "object",
|
||||
"required": ["rev", "convoId"],
|
||||
"properties": {
|
||||
"rev": { "type": "string" },
|
||||
"convoId": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"logUnmuteConvo": {
|
||||
"type": "object",
|
||||
"required": ["rev", "convoId"],
|
||||
"properties": {
|
||||
"rev": { "type": "string" },
|
||||
"convoId": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"logCreateMessage": {
|
||||
"type": "object",
|
||||
"required": ["rev", "convoId", "message"],
|
||||
@ -133,6 +193,44 @@
|
||||
"refs": ["#messageView", "#deletedMessageView"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"logReadMessage": {
|
||||
"type": "object",
|
||||
"required": ["rev", "convoId", "message"],
|
||||
"properties": {
|
||||
"rev": { "type": "string" },
|
||||
"convoId": { "type": "string" },
|
||||
"message": {
|
||||
"type": "union",
|
||||
"refs": ["#messageView", "#deletedMessageView"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"logAddReaction": {
|
||||
"type": "object",
|
||||
"required": ["rev", "convoId", "message", "reaction"],
|
||||
"properties": {
|
||||
"rev": { "type": "string" },
|
||||
"convoId": { "type": "string" },
|
||||
"message": {
|
||||
"type": "union",
|
||||
"refs": ["#messageView", "#deletedMessageView"]
|
||||
},
|
||||
"reaction": { "type": "ref", "ref": "#reactionView" }
|
||||
}
|
||||
},
|
||||
"logRemoveReaction": {
|
||||
"type": "object",
|
||||
"required": ["rev", "convoId", "message", "reaction"],
|
||||
"properties": {
|
||||
"rev": { "type": "string" },
|
||||
"convoId": { "type": "string" },
|
||||
"message": {
|
||||
"type": "union",
|
||||
"refs": ["#messageView", "#deletedMessageView"]
|
||||
},
|
||||
"reaction": { "type": "ref", "ref": "#reactionView" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
41
lexicons/chat/bsky/convo/getConvoAvailability.json
Normal file
41
lexicons/chat/bsky/convo/getConvoAvailability.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "chat.bsky.convo.getConvoAvailability",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Get whether the requester and the other members can chat. If an existing convo is found for these members, it is returned.",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": ["members"],
|
||||
"properties": {
|
||||
"members": {
|
||||
"type": "array",
|
||||
"minLength": 1,
|
||||
"maxLength": 10,
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["canChat"],
|
||||
"properties": {
|
||||
"canChat": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"convo": {
|
||||
"type": "ref",
|
||||
"ref": "chat.bsky.convo.defs#convoView"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -24,9 +24,15 @@
|
||||
"type": "union",
|
||||
"refs": [
|
||||
"chat.bsky.convo.defs#logBeginConvo",
|
||||
"chat.bsky.convo.defs#logAcceptConvo",
|
||||
"chat.bsky.convo.defs#logLeaveConvo",
|
||||
"chat.bsky.convo.defs#logMuteConvo",
|
||||
"chat.bsky.convo.defs#logUnmuteConvo",
|
||||
"chat.bsky.convo.defs#logCreateMessage",
|
||||
"chat.bsky.convo.defs#logDeleteMessage"
|
||||
"chat.bsky.convo.defs#logDeleteMessage",
|
||||
"chat.bsky.convo.defs#logReadMessage",
|
||||
"chat.bsky.convo.defs#logAddReaction",
|
||||
"chat.bsky.convo.defs#logRemoveReaction"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,15 @@
|
||||
"maximum": 100,
|
||||
"default": 50
|
||||
},
|
||||
"cursor": { "type": "string" }
|
||||
"cursor": { "type": "string" },
|
||||
"readState": {
|
||||
"type": "string",
|
||||
"knownValues": ["unread"]
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"knownValues": ["request", "accepted"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
|
51
lexicons/chat/bsky/convo/removeReaction.json
Normal file
51
lexicons/chat/bsky/convo/removeReaction.json
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "chat.bsky.convo.removeReaction",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"description": "Removes an emoji reaction from a message. Requires authentication. It is idempotent, so multiple calls from the same user with the same emoji result in that reaction not being present, even if it already wasn't.",
|
||||
"input": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["convoId", "messageId", "value"],
|
||||
"properties": {
|
||||
"convoId": { "type": "string" },
|
||||
"messageId": { "type": "string" },
|
||||
"value": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 64,
|
||||
"minGraphemes": 1,
|
||||
"maxGraphemes": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["message"],
|
||||
"properties": {
|
||||
"message": {
|
||||
"type": "ref",
|
||||
"ref": "chat.bsky.convo.defs#messageView"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "ReactionMessageDeleted",
|
||||
"description": "Indicates that the message has been deleted and reactions can no longer be added/removed."
|
||||
},
|
||||
{
|
||||
"name": "ReactionInvalidValue",
|
||||
"description": "Indicates the value for the reaction is not acceptable. In general, this means it is not an emoji."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
34
lexicons/chat/bsky/convo/updateAllRead.json
Normal file
34
lexicons/chat/bsky/convo/updateAllRead.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "chat.bsky.convo.updateAllRead",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"input": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"status": {
|
||||
"type": "string",
|
||||
"knownValues": ["request", "accepted"]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["updatedCount"],
|
||||
"properties": {
|
||||
"updatedCount": {
|
||||
"description": "The count of updated convos.",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
25
lexicons/com/atproto/admin/updateAccountSigningKey.json
Normal file
25
lexicons/com/atproto/admin/updateAccountSigningKey.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "com.atproto.admin.updateAccountSigningKey",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"description": "Administrative action to update an account's signing key in their Did document.",
|
||||
"input": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["did", "signingKey"],
|
||||
"properties": {
|
||||
"did": { "type": "string", "format": "did" },
|
||||
"signingKey": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "Did-key formatted public key"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
22
lexicons/com/atproto/identity/defs.json
Normal file
22
lexicons/com/atproto/identity/defs.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "com.atproto.identity.defs",
|
||||
"defs": {
|
||||
"identityInfo": {
|
||||
"type": "object",
|
||||
"required": ["did", "handle", "didDoc"],
|
||||
"properties": {
|
||||
"did": { "type": "string", "format": "did" },
|
||||
"handle": {
|
||||
"type": "string",
|
||||
"format": "handle",
|
||||
"description": "The validated handle of the account; or 'handle.invalid' if the handle did not bi-directionally match the DID document."
|
||||
},
|
||||
"didDoc": {
|
||||
"type": "unknown",
|
||||
"description": "The complete DID document for the identity."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
44
lexicons/com/atproto/identity/refreshIdentity.json
Normal file
44
lexicons/com/atproto/identity/refreshIdentity.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "com.atproto.identity.refreshIdentity",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"description": "Request that the server re-resolve an identity (DID and handle). The server may ignore this request, or require authentication, depending on the role, implementation, and policy of the server.",
|
||||
"input": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["identifier"],
|
||||
"properties": {
|
||||
"identifier": {
|
||||
"type": "string",
|
||||
"format": "at-identifier"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "ref",
|
||||
"ref": "com.atproto.identity.defs#identityInfo"
|
||||
}
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "HandleNotFound",
|
||||
"description": "The resolution process confirmed that the handle does not resolve to any DID."
|
||||
},
|
||||
{
|
||||
"name": "DidNotFound",
|
||||
"description": "The DID resolution process confirmed that there is no current DID."
|
||||
},
|
||||
{
|
||||
"name": "DidDeactivated",
|
||||
"description": "The DID previously existed, but has been deactivated."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
44
lexicons/com/atproto/identity/resolveDid.json
Normal file
44
lexicons/com/atproto/identity/resolveDid.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "com.atproto.identity.resolveDid",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Resolves DID to DID document. Does not bi-directionally verify handle.",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": ["did"],
|
||||
"properties": {
|
||||
"did": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "DID to resolve."
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["didDoc"],
|
||||
"properties": {
|
||||
"didDoc": {
|
||||
"type": "unknown",
|
||||
"description": "The complete DID document for the identity."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "DidNotFound",
|
||||
"description": "The DID resolution process confirmed that there is no current DID."
|
||||
},
|
||||
{
|
||||
"name": "DidDeactivated",
|
||||
"description": "The DID previously existed, but has been deactivated."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -4,7 +4,7 @@
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Resolves a handle (domain name) to a DID.",
|
||||
"description": "Resolves an atproto handle (hostname) to a DID. Does not necessarily bi-directionally verify against the the DID document.",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": ["handle"],
|
||||
@ -25,7 +25,13 @@
|
||||
"did": { "type": "string", "format": "did" }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "HandleNotFound",
|
||||
"description": "The resolution process confirmed that the handle does not resolve to any DID."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
42
lexicons/com/atproto/identity/resolveIdentity.json
Normal file
42
lexicons/com/atproto/identity/resolveIdentity.json
Normal file
@ -0,0 +1,42 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "com.atproto.identity.resolveIdentity",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Resolves an identity (DID or Handle) to a full identity (DID document and verified handle).",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": ["identifier"],
|
||||
"properties": {
|
||||
"identifier": {
|
||||
"type": "string",
|
||||
"format": "at-identifier",
|
||||
"description": "Handle or DID to resolve."
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "ref",
|
||||
"ref": "com.atproto.identity.defs#identityInfo"
|
||||
}
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"name": "HandleNotFound",
|
||||
"description": "The resolution process confirmed that the handle does not resolve to any DID."
|
||||
},
|
||||
{
|
||||
"name": "DidNotFound",
|
||||
"description": "The DID resolution process confirmed that there is no current DID."
|
||||
},
|
||||
{
|
||||
"name": "DidDeactivated",
|
||||
"description": "The DID previously existed, but has been deactivated."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
21
lexicons/com/atproto/lexicon/schema.json
Normal file
21
lexicons/com/atproto/lexicon/schema.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "com.atproto.lexicon.schema",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "record",
|
||||
"description": "Representation of Lexicon schemas themselves, when published as atproto records. Note that the schema language is not defined in Lexicon; this meta schema currently only includes a single version field ('lexicon'). See the atproto specifications for description of the other expected top-level fields ('id', 'defs', etc).",
|
||||
"key": "nsid",
|
||||
"record": {
|
||||
"type": "object",
|
||||
"required": ["lexicon"],
|
||||
"properties": {
|
||||
"lexicon": {
|
||||
"type": "integer",
|
||||
"description": "Indicates the 'version' of the Lexicon language. Must be '1' for the current atproto/Lexicon schema system."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -41,6 +41,11 @@
|
||||
"reasonAppeal": {
|
||||
"type": "token",
|
||||
"description": "Appeal: appeal a previously taken moderation action"
|
||||
},
|
||||
"subjectType": {
|
||||
"type": "string",
|
||||
"description": "Tag describing a type of subject that might be reported.",
|
||||
"knownValues": ["account", "record", "chat"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -70,7 +70,12 @@
|
||||
"required": ["collection", "value"],
|
||||
"properties": {
|
||||
"collection": { "type": "string", "format": "nsid" },
|
||||
"rkey": { "type": "string", "maxLength": 512 },
|
||||
"rkey": {
|
||||
"type": "string",
|
||||
"maxLength": 512,
|
||||
"format": "record-key",
|
||||
"description": "NOTE: maxLength is redundant with record-key format. Keeping it temporarily to ensure backwards compatibility."
|
||||
},
|
||||
"value": { "type": "unknown" }
|
||||
}
|
||||
},
|
||||
@ -80,7 +85,7 @@
|
||||
"required": ["collection", "rkey", "value"],
|
||||
"properties": {
|
||||
"collection": { "type": "string", "format": "nsid" },
|
||||
"rkey": { "type": "string" },
|
||||
"rkey": { "type": "string", "format": "record-key" },
|
||||
"value": { "type": "unknown" }
|
||||
}
|
||||
},
|
||||
@ -90,7 +95,7 @@
|
||||
"required": ["collection", "rkey"],
|
||||
"properties": {
|
||||
"collection": { "type": "string", "format": "nsid" },
|
||||
"rkey": { "type": "string" }
|
||||
"rkey": { "type": "string", "format": "record-key" }
|
||||
}
|
||||
},
|
||||
"createResult": {
|
||||
|
@ -23,6 +23,7 @@
|
||||
},
|
||||
"rkey": {
|
||||
"type": "string",
|
||||
"format": "record-key",
|
||||
"description": "The Record Key.",
|
||||
"maxLength": 512
|
||||
},
|
||||
|
@ -7,7 +7,7 @@
|
||||
"required": ["cid", "rev"],
|
||||
"properties": {
|
||||
"cid": { "type": "string", "format": "cid" },
|
||||
"rev": { "type": "string" }
|
||||
"rev": { "type": "string", "format": "tid" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,7 @@
|
||||
},
|
||||
"rkey": {
|
||||
"type": "string",
|
||||
"format": "record-key",
|
||||
"description": "The Record Key."
|
||||
},
|
||||
"swapRecord": {
|
||||
|
@ -19,7 +19,11 @@
|
||||
"format": "nsid",
|
||||
"description": "The NSID of the record collection."
|
||||
},
|
||||
"rkey": { "type": "string", "description": "The Record Key." },
|
||||
"rkey": {
|
||||
"type": "string",
|
||||
"description": "The Record Key.",
|
||||
"format": "record-key"
|
||||
},
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid",
|
||||
|
@ -27,14 +27,6 @@
|
||||
"description": "The number of records to return."
|
||||
},
|
||||
"cursor": { "type": "string" },
|
||||
"rkeyStart": {
|
||||
"type": "string",
|
||||
"description": "DEPRECATED: The lowest sort-ordered rkey to start from (exclusive)"
|
||||
},
|
||||
"rkeyEnd": {
|
||||
"type": "string",
|
||||
"description": "DEPRECATED: The highest sort-ordered rkey to stop at (exclusive)"
|
||||
},
|
||||
"reverse": {
|
||||
"type": "boolean",
|
||||
"description": "Flag to reverse the order of the returned records."
|
||||
|
@ -24,6 +24,7 @@
|
||||
},
|
||||
"rkey": {
|
||||
"type": "string",
|
||||
"format": "record-key",
|
||||
"description": "The Record Key.",
|
||||
"maxLength": 512
|
||||
},
|
||||
|
10
lexicons/com/atproto/sync/defs.json
Normal file
10
lexicons/com/atproto/sync/defs.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "com.atproto.sync.defs",
|
||||
"defs": {
|
||||
"hostStatus": {
|
||||
"type": "string",
|
||||
"knownValues": ["active", "idle", "offline", "throttled", "banned"]
|
||||
}
|
||||
}
|
||||
}
|
43
lexicons/com/atproto/sync/getHostStatus.json
Normal file
43
lexicons/com/atproto/sync/getHostStatus.json
Normal file
@ -0,0 +1,43 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "com.atproto.sync.getHostStatus",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Returns information about a specified upstream host, as consumed by the server. Implemented by relays.",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": ["hostname"],
|
||||
"properties": {
|
||||
"hostname": {
|
||||
"type": "string",
|
||||
"description": "Hostname of the host (eg, PDS or relay) being queried."
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["hostname"],
|
||||
"properties": {
|
||||
"hostname": { "type": "string" },
|
||||
"seq": {
|
||||
"type": "integer",
|
||||
"description": "Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor)."
|
||||
},
|
||||
"accountCount": {
|
||||
"type": "integer",
|
||||
"description": "Number of accounts on the server which are associated with the upstream host. Note that the upstream may actually have more accounts."
|
||||
},
|
||||
"status": {
|
||||
"type": "ref",
|
||||
"ref": "com.atproto.sync.defs#hostStatus"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"errors": [{ "name": "HostNotFound" }]
|
||||
}
|
||||
}
|
||||
}
|
@ -23,7 +23,7 @@
|
||||
"required": ["cid", "rev"],
|
||||
"properties": {
|
||||
"cid": { "type": "string", "format": "cid" },
|
||||
"rev": { "type": "string" }
|
||||
"rev": { "type": "string", "format": "tid" }
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -15,11 +15,10 @@
|
||||
"description": "The DID of the repo."
|
||||
},
|
||||
"collection": { "type": "string", "format": "nsid" },
|
||||
"rkey": { "type": "string", "description": "Record Key" },
|
||||
"commit": {
|
||||
"rkey": {
|
||||
"type": "string",
|
||||
"format": "cid",
|
||||
"description": "DEPRECATED: referenced a repo commit by CID, and retrieved record as of that commit"
|
||||
"description": "Record Key",
|
||||
"format": "record-key"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -16,6 +16,7 @@
|
||||
},
|
||||
"since": {
|
||||
"type": "string",
|
||||
"format": "tid",
|
||||
"description": "The revision ('rev') of the repo to create a diff from."
|
||||
}
|
||||
}
|
||||
|
@ -27,10 +27,18 @@
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.",
|
||||
"knownValues": ["takendown", "suspended", "deactivated"]
|
||||
"knownValues": [
|
||||
"takendown",
|
||||
"suspended",
|
||||
"deleted",
|
||||
"deactivated",
|
||||
"desynchronized",
|
||||
"throttled"
|
||||
]
|
||||
},
|
||||
"rev": {
|
||||
"type": "string",
|
||||
"format": "tid",
|
||||
"description": "Optional field, the current rev of the repo, if active=true"
|
||||
}
|
||||
}
|
||||
|
@ -16,6 +16,7 @@
|
||||
},
|
||||
"since": {
|
||||
"type": "string",
|
||||
"format": "tid",
|
||||
"description": "Optional revision of the repo to list blobs since."
|
||||
},
|
||||
"limit": {
|
||||
|
56
lexicons/com/atproto/sync/listHosts.json
Normal file
56
lexicons/com/atproto/sync/listHosts.json
Normal file
@ -0,0 +1,56 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "com.atproto.sync.listHosts",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Enumerates upstream hosts (eg, PDS or relay instances) that this service consumes from. Implemented by relays.",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 1000,
|
||||
"default": 200
|
||||
},
|
||||
"cursor": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["hosts"],
|
||||
"properties": {
|
||||
"cursor": { "type": "string" },
|
||||
"hosts": {
|
||||
"type": "array",
|
||||
"items": { "type": "ref", "ref": "#host" },
|
||||
"description": "Sort order is not formally specified. Recommended order is by time host was first seen by the server, with oldest first."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"host": {
|
||||
"type": "object",
|
||||
"required": ["hostname"],
|
||||
"properties": {
|
||||
"hostname": {
|
||||
"type": "string",
|
||||
"description": "hostname of server; not a URL (no scheme)"
|
||||
},
|
||||
"seq": {
|
||||
"type": "integer",
|
||||
"description": "Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor)."
|
||||
},
|
||||
"accountCount": { "type": "integer" },
|
||||
"status": {
|
||||
"type": "ref",
|
||||
"ref": "com.atproto.sync.defs#hostStatus"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -42,12 +42,19 @@
|
||||
"format": "cid",
|
||||
"description": "Current repo commit CID"
|
||||
},
|
||||
"rev": { "type": "string" },
|
||||
"rev": { "type": "string", "format": "tid" },
|
||||
"active": { "type": "boolean" },
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.",
|
||||
"knownValues": ["takendown", "suspended", "deactivated"]
|
||||
"knownValues": [
|
||||
"takendown",
|
||||
"suspended",
|
||||
"deleted",
|
||||
"deactivated",
|
||||
"desynchronized",
|
||||
"throttled"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
46
lexicons/com/atproto/sync/listReposByCollection.json
Normal file
46
lexicons/com/atproto/sync/listReposByCollection.json
Normal file
@ -0,0 +1,46 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "com.atproto.sync.listReposByCollection",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Enumerates all the DIDs which have records with the given collection NSID.",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": ["collection"],
|
||||
"properties": {
|
||||
"collection": { "type": "string", "format": "nsid" },
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"description": "Maximum size of response set. Recommend setting a large maximum (1000+) when enumerating large DID lists.",
|
||||
"minimum": 1,
|
||||
"maximum": 2000,
|
||||
"default": 500
|
||||
},
|
||||
"cursor": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["repos"],
|
||||
"properties": {
|
||||
"cursor": { "type": "string" },
|
||||
"repos": {
|
||||
"type": "array",
|
||||
"items": { "type": "ref", "ref": "#repo" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"repo": {
|
||||
"type": "object",
|
||||
"required": ["did"],
|
||||
"properties": {
|
||||
"did": { "type": "string", "format": "did" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -4,7 +4,7 @@
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "procedure",
|
||||
"description": "Notify a crawling service of a recent update, and that crawling should resume. Intended use is after a gap between repo stream events caused the crawling service to disconnect. Does not require auth; implemented by Relay.",
|
||||
"description": "Notify a crawling service of a recent update, and that crawling should resume. Intended use is after a gap between repo stream events caused the crawling service to disconnect. Does not require auth; implemented by Relay. DEPRECATED: just use com.atproto.sync.requestCrawl",
|
||||
"input": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
|
@ -17,7 +17,8 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"errors": [{ "name": "HostBanned" }]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,15 +17,7 @@
|
||||
"message": {
|
||||
"schema": {
|
||||
"type": "union",
|
||||
"refs": [
|
||||
"#commit",
|
||||
"#identity",
|
||||
"#account",
|
||||
"#handle",
|
||||
"#migrate",
|
||||
"#tombstone",
|
||||
"#info"
|
||||
]
|
||||
"refs": ["#commit", "#sync", "#identity", "#account", "#info"]
|
||||
}
|
||||
},
|
||||
"errors": [
|
||||
@ -52,7 +44,7 @@
|
||||
"blobs",
|
||||
"time"
|
||||
],
|
||||
"nullable": ["prev", "since"],
|
||||
"nullable": ["since"],
|
||||
"properties": {
|
||||
"seq": {
|
||||
"type": "integer",
|
||||
@ -61,33 +53,31 @@
|
||||
"rebase": { "type": "boolean", "description": "DEPRECATED -- unused" },
|
||||
"tooBig": {
|
||||
"type": "boolean",
|
||||
"description": "Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data."
|
||||
"description": "DEPRECATED -- replaced by #sync event and data limits. Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data."
|
||||
},
|
||||
"repo": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "The repo this event comes from."
|
||||
"description": "The repo this event comes from. Note that all other message types name this field 'did'."
|
||||
},
|
||||
"commit": {
|
||||
"type": "cid-link",
|
||||
"description": "Repo commit object CID."
|
||||
},
|
||||
"prev": {
|
||||
"type": "cid-link",
|
||||
"description": "DEPRECATED -- unused. WARNING -- nullable and optional; stick with optional to ensure golang interoperability."
|
||||
},
|
||||
"rev": {
|
||||
"type": "string",
|
||||
"format": "tid",
|
||||
"description": "The rev of the emitted commit. Note that this information is also in the commit object included in blocks, unless this is a tooBig event."
|
||||
},
|
||||
"since": {
|
||||
"type": "string",
|
||||
"format": "tid",
|
||||
"description": "The rev of the last emitted commit from this repo (if any)."
|
||||
},
|
||||
"blocks": {
|
||||
"type": "bytes",
|
||||
"description": "CAR file containing relevant blocks, as a diff since the previous repo state.",
|
||||
"maxLength": 1000000
|
||||
"description": "CAR file containing relevant blocks, as a diff since the previous repo state. The commit must be included as a block, and the commit block CID must be the first entry in the CAR header 'roots' list.",
|
||||
"maxLength": 2000000
|
||||
},
|
||||
"ops": {
|
||||
"type": "array",
|
||||
@ -102,9 +92,43 @@
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "cid-link",
|
||||
"description": "List of new blobs (by CID) referenced by records in this commit."
|
||||
"description": "DEPRECATED -- will soon always be empty. List of new blobs (by CID) referenced by records in this commit."
|
||||
}
|
||||
},
|
||||
"prevData": {
|
||||
"type": "cid-link",
|
||||
"description": "The root CID of the MST tree for the previous commit from this repo (indicated by the 'since' revision field in this message). Corresponds to the 'data' field in the repo commit object. NOTE: this field is effectively required for the 'inductive' version of firehose."
|
||||
},
|
||||
"time": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
"description": "Timestamp of when this message was originally broadcast."
|
||||
}
|
||||
}
|
||||
},
|
||||
"sync": {
|
||||
"type": "object",
|
||||
"description": "Updates the repo to a new state, without necessarily including that state on the firehose. Used to recover from broken commit streams, data loss incidents, or in situations where upstream host does not know recent state of the repository.",
|
||||
"required": ["seq", "did", "blocks", "rev", "time"],
|
||||
"properties": {
|
||||
"seq": {
|
||||
"type": "integer",
|
||||
"description": "The stream sequence number of this message."
|
||||
},
|
||||
"did": {
|
||||
"type": "string",
|
||||
"format": "did",
|
||||
"description": "The account this repo event corresponds to. Must match that in the commit object."
|
||||
},
|
||||
"blocks": {
|
||||
"type": "bytes",
|
||||
"description": "CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first 'root'.",
|
||||
"maxLength": 10000
|
||||
},
|
||||
"rev": {
|
||||
"type": "string",
|
||||
"description": "The rev of the commit. This value must match that in the commit object."
|
||||
},
|
||||
"time": {
|
||||
"type": "string",
|
||||
"format": "datetime",
|
||||
@ -142,43 +166,17 @@
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "If active=false, this optional field indicates a reason for why the account is not active.",
|
||||
"knownValues": ["takendown", "suspended", "deleted", "deactivated"]
|
||||
"knownValues": [
|
||||
"takendown",
|
||||
"suspended",
|
||||
"deleted",
|
||||
"deactivated",
|
||||
"desynchronized",
|
||||
"throttled"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"handle": {
|
||||
"type": "object",
|
||||
"description": "DEPRECATED -- Use #identity event instead",
|
||||
"required": ["seq", "did", "handle", "time"],
|
||||
"properties": {
|
||||
"seq": { "type": "integer" },
|
||||
"did": { "type": "string", "format": "did" },
|
||||
"handle": { "type": "string", "format": "handle" },
|
||||
"time": { "type": "string", "format": "datetime" }
|
||||
}
|
||||
},
|
||||
"migrate": {
|
||||
"type": "object",
|
||||
"description": "DEPRECATED -- Use #account event instead",
|
||||
"required": ["seq", "did", "migrateTo", "time"],
|
||||
"nullable": ["migrateTo"],
|
||||
"properties": {
|
||||
"seq": { "type": "integer" },
|
||||
"did": { "type": "string", "format": "did" },
|
||||
"migrateTo": { "type": "string" },
|
||||
"time": { "type": "string", "format": "datetime" }
|
||||
}
|
||||
},
|
||||
"tombstone": {
|
||||
"type": "object",
|
||||
"description": "DEPRECATED -- Use #account event instead",
|
||||
"required": ["seq", "did", "time"],
|
||||
"properties": {
|
||||
"seq": { "type": "integer" },
|
||||
"did": { "type": "string", "format": "did" },
|
||||
"time": { "type": "string", "format": "datetime" }
|
||||
}
|
||||
},
|
||||
"info": {
|
||||
"type": "object",
|
||||
"required": ["name"],
|
||||
@ -206,6 +204,10 @@
|
||||
"cid": {
|
||||
"type": "cid-link",
|
||||
"description": "For creates and updates, the new record CID. For deletions, null."
|
||||
},
|
||||
"prev": {
|
||||
"type": "cid-link",
|
||||
"description": "For updates and deletes, the previous record CID (required for inductive firehose). For creations, field should not be defined."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -34,7 +34,8 @@
|
||||
"#modEventTag",
|
||||
"#accountEvent",
|
||||
"#identityEvent",
|
||||
"#recordEvent"
|
||||
"#recordEvent",
|
||||
"#modEventPriorityScore"
|
||||
]
|
||||
},
|
||||
"subject": {
|
||||
@ -84,7 +85,8 @@
|
||||
"#modEventTag",
|
||||
"#accountEvent",
|
||||
"#identityEvent",
|
||||
"#recordEvent"
|
||||
"#recordEvent",
|
||||
"#modEventPriorityScore"
|
||||
]
|
||||
},
|
||||
"subject": {
|
||||
@ -143,6 +145,12 @@
|
||||
"type": "string",
|
||||
"description": "Sticky comment on the subject."
|
||||
},
|
||||
"priorityScore": {
|
||||
"type": "integer",
|
||||
"description": "Numeric value representing the level of priority. Higher score means higher priority.",
|
||||
"minimum": 0,
|
||||
"maximum": 100
|
||||
},
|
||||
"muteUntil": {
|
||||
"type": "string",
|
||||
"format": "datetime"
|
||||
@ -182,6 +190,110 @@
|
||||
"tags": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" }
|
||||
},
|
||||
"accountStats": {
|
||||
"description": "Statistics related to the account subject",
|
||||
"type": "ref",
|
||||
"ref": "#accountStats"
|
||||
},
|
||||
"recordsStats": {
|
||||
"description": "Statistics related to the record subjects authored by the subject's account",
|
||||
"type": "ref",
|
||||
"ref": "#recordsStats"
|
||||
}
|
||||
}
|
||||
},
|
||||
"subjectView": {
|
||||
"description": "Detailed view of a subject. For record subjects, the author's repo and profile will be returned.",
|
||||
"type": "object",
|
||||
"required": ["type", "subject"],
|
||||
"properties": {
|
||||
"type": {
|
||||
"type": "ref",
|
||||
"ref": "com.atproto.moderation.defs#subjectType"
|
||||
},
|
||||
"subject": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"type": "ref",
|
||||
"ref": "#subjectStatusView"
|
||||
},
|
||||
"repo": {
|
||||
"type": "ref",
|
||||
"ref": "#repoViewDetail"
|
||||
},
|
||||
"profile": {
|
||||
"type": "union",
|
||||
"refs": []
|
||||
},
|
||||
"record": {
|
||||
"type": "ref",
|
||||
"ref": "#recordViewDetail"
|
||||
}
|
||||
}
|
||||
},
|
||||
"accountStats": {
|
||||
"description": "Statistics about a particular account subject",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"reportCount": {
|
||||
"description": "Total number of reports on the account",
|
||||
"type": "integer"
|
||||
},
|
||||
"appealCount": {
|
||||
"description": "Total number of appeals against a moderation action on the account",
|
||||
"type": "integer"
|
||||
},
|
||||
"suspendCount": {
|
||||
"description": "Number of times the account was suspended",
|
||||
"type": "integer"
|
||||
},
|
||||
"escalateCount": {
|
||||
"description": "Number of times the account was escalated",
|
||||
"type": "integer"
|
||||
},
|
||||
"takedownCount": {
|
||||
"description": "Number of times the account was taken down",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"recordsStats": {
|
||||
"description": "Statistics about a set of record subject items",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"totalReports": {
|
||||
"description": "Cumulative sum of the number of reports on the items in the set",
|
||||
"type": "integer"
|
||||
},
|
||||
"reportedCount": {
|
||||
"description": "Number of items that were reported at least once",
|
||||
"type": "integer"
|
||||
},
|
||||
"escalatedCount": {
|
||||
"description": "Number of items that were escalated at least once",
|
||||
"type": "integer"
|
||||
},
|
||||
"appealedCount": {
|
||||
"description": "Number of items that were appealed at least once",
|
||||
"type": "integer"
|
||||
},
|
||||
"subjectCount": {
|
||||
"description": "Total number of item in the set",
|
||||
"type": "integer"
|
||||
},
|
||||
"pendingCount": {
|
||||
"description": "Number of item currently in \"reviewOpen\" or \"reviewEscalated\" state",
|
||||
"type": "integer"
|
||||
},
|
||||
"processedCount": {
|
||||
"description": "Number of item currently in \"reviewNone\" or \"reviewClosed\" state",
|
||||
"type": "integer"
|
||||
},
|
||||
"takendownCount": {
|
||||
"description": "Number of item currently taken down",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -255,8 +367,7 @@
|
||||
},
|
||||
"modEventComment": {
|
||||
"type": "object",
|
||||
"description": "Add a comment to a subject",
|
||||
"required": ["comment"],
|
||||
"description": "Add a comment to a subject. An empty comment will clear any previously set sticky comment.",
|
||||
"properties": {
|
||||
"comment": {
|
||||
"type": "string"
|
||||
@ -300,6 +411,25 @@
|
||||
"negateLabelVals": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" }
|
||||
},
|
||||
"durationInHours": {
|
||||
"type": "integer",
|
||||
"description": "Indicates how long the label will remain on the subject. Only applies on labels that are being added."
|
||||
}
|
||||
}
|
||||
},
|
||||
"modEventPriorityScore": {
|
||||
"type": "object",
|
||||
"description": "Set priority score of the subject. Higher score means higher priority.",
|
||||
"required": ["score"],
|
||||
"properties": {
|
||||
"comment": {
|
||||
"type": "string"
|
||||
},
|
||||
"score": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 100
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -711,6 +841,58 @@
|
||||
"format": "datetime"
|
||||
}
|
||||
}
|
||||
},
|
||||
"reporterStats": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"did",
|
||||
"accountReportCount",
|
||||
"recordReportCount",
|
||||
"reportedAccountCount",
|
||||
"reportedRecordCount",
|
||||
"takendownAccountCount",
|
||||
"takendownRecordCount",
|
||||
"labeledAccountCount",
|
||||
"labeledRecordCount"
|
||||
],
|
||||
"properties": {
|
||||
"did": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
},
|
||||
"accountReportCount": {
|
||||
"type": "integer",
|
||||
"description": "The total number of reports made by the user on accounts."
|
||||
},
|
||||
"recordReportCount": {
|
||||
"type": "integer",
|
||||
"description": "The total number of reports made by the user on records."
|
||||
},
|
||||
"reportedAccountCount": {
|
||||
"type": "integer",
|
||||
"description": "The total number of accounts reported by the user."
|
||||
},
|
||||
"reportedRecordCount": {
|
||||
"type": "integer",
|
||||
"description": "The total number of records reported by the user."
|
||||
},
|
||||
"takendownAccountCount": {
|
||||
"type": "integer",
|
||||
"description": "The total number of accounts taken down as a result of the user's reports."
|
||||
},
|
||||
"takendownRecordCount": {
|
||||
"type": "integer",
|
||||
"description": "The total number of records taken down as a result of the user's reports."
|
||||
},
|
||||
"labeledAccountCount": {
|
||||
"type": "integer",
|
||||
"description": "The total number of accounts labeled as a result of the user's reports."
|
||||
},
|
||||
"labeledRecordCount": {
|
||||
"type": "integer",
|
||||
"description": "The total number of records labeled as a result of the user's reports."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -27,10 +27,12 @@
|
||||
"tools.ozone.moderation.defs#modEventReverseTakedown",
|
||||
"tools.ozone.moderation.defs#modEventResolveAppeal",
|
||||
"tools.ozone.moderation.defs#modEventEmail",
|
||||
"tools.ozone.moderation.defs#modEventDivert",
|
||||
"tools.ozone.moderation.defs#modEventTag",
|
||||
"tools.ozone.moderation.defs#accountEvent",
|
||||
"tools.ozone.moderation.defs#identityEvent",
|
||||
"tools.ozone.moderation.defs#recordEvent"
|
||||
"tools.ozone.moderation.defs#recordEvent",
|
||||
"tools.ozone.moderation.defs#modEventPriorityScore"
|
||||
]
|
||||
},
|
||||
"subject": {
|
||||
|
40
lexicons/tools/ozone/moderation/getReporterStats.json
Normal file
40
lexicons/tools/ozone/moderation/getReporterStats.json
Normal file
@ -0,0 +1,40 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "tools.ozone.moderation.getReporterStats",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Get reporter stats for a list of users.",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": ["dids"],
|
||||
"properties": {
|
||||
"dids": {
|
||||
"type": "array",
|
||||
"maxLength": 100,
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "did"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["stats"],
|
||||
"properties": {
|
||||
"stats": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "ref",
|
||||
"ref": "tools.ozone.moderation.defs#reporterStats"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
40
lexicons/tools/ozone/moderation/getSubjects.json
Normal file
40
lexicons/tools/ozone/moderation/getSubjects.json
Normal file
@ -0,0 +1,40 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "tools.ozone.moderation.getSubjects",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Get details about subjects.",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": ["subjects"],
|
||||
"properties": {
|
||||
"subjects": {
|
||||
"type": "array",
|
||||
"maxLength": 100,
|
||||
"minLength": 1,
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["subjects"],
|
||||
"properties": {
|
||||
"subjects": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "ref",
|
||||
"ref": "tools.ozone.moderation.defs#subjectView"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -107,7 +107,13 @@
|
||||
"sortField": {
|
||||
"type": "string",
|
||||
"default": "lastReportedAt",
|
||||
"enum": ["lastReviewedAt", "lastReportedAt"]
|
||||
"enum": [
|
||||
"lastReviewedAt",
|
||||
"lastReportedAt",
|
||||
"reportedRecordsCount",
|
||||
"takendownRecordsCount",
|
||||
"priorityScore"
|
||||
]
|
||||
},
|
||||
"sortDirection": {
|
||||
"type": "string",
|
||||
@ -158,6 +164,24 @@
|
||||
"type": "string",
|
||||
"description": "If specified, subjects of the given type (account or record) will be returned. When this is set to 'account' the 'collections' parameter will be ignored. When includeAllUserRecords or subject is set, this will be ignored.",
|
||||
"knownValues": ["account", "record"]
|
||||
},
|
||||
"minAccountSuspendCount": {
|
||||
"type": "integer",
|
||||
"description": "If specified, only subjects that belong to an account that has at least this many suspensions will be returned."
|
||||
},
|
||||
"minReportedRecordsCount": {
|
||||
"type": "integer",
|
||||
"description": "If specified, only subjects that belong to an account that has at least this many reported records will be returned."
|
||||
},
|
||||
"minTakendownRecordsCount": {
|
||||
"type": "integer",
|
||||
"description": "If specified, only subjects that belong to an account that has at least this many taken down records will be returned."
|
||||
},
|
||||
"minPriorityScore": {
|
||||
"minimum": 0,
|
||||
"maximum": 100,
|
||||
"type": "integer",
|
||||
"description": "If specified, only subjects that have priority score value above the given value will be returned."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -8,13 +8,27 @@
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"properties": {
|
||||
"q": {
|
||||
"type": "string"
|
||||
},
|
||||
"disabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"roles": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 100,
|
||||
"default": 50
|
||||
},
|
||||
"cursor": { "type": "string" }
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
@ -23,7 +37,9 @@
|
||||
"type": "object",
|
||||
"required": ["members"],
|
||||
"properties": {
|
||||
"cursor": { "type": "string" },
|
||||
"cursor": {
|
||||
"type": "string"
|
||||
},
|
||||
"members": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
25
package.json
25
package.json
@ -6,12 +6,12 @@
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"node": "18"
|
||||
"node": ">=18.7.0"
|
||||
},
|
||||
"packageManager": "pnpm@8.15.9",
|
||||
"packageManager": "pnpm@8.15.9+sha512.499434c9d8fdd1a2794ebf4552b3b25c0a633abcee5bb15e7b5de90f32f47b513aca98cd5cfd001c31f0db454bc3804edccd578501e4ca293a6816166bbd9f81",
|
||||
"scripts": {
|
||||
"lint:fix": "pnpm lint --fix",
|
||||
"lint": "eslint . --ext .ts,.js",
|
||||
"lint": "eslint . --ext .ts,.js,.tsx,.jsx",
|
||||
"style:fix": "prettier --write .",
|
||||
"style": "prettier --check .",
|
||||
"verify": "pnpm --stream '/^verify:.+$/'",
|
||||
@ -19,12 +19,13 @@
|
||||
"verify:lint": "pnpm lint",
|
||||
"verify:types": "tsc --build tsconfig.json",
|
||||
"format": "pnpm lint:fix && pnpm style:fix",
|
||||
"build": "pnpm --recursive --stream build",
|
||||
"dev": "NODE_ENV=development pnpm --stream '/^dev:.+$/'",
|
||||
"dev:tsc": "tsc --build tsconfig.json --watch",
|
||||
"dev:pkg": "pnpm --recursive --parallel --stream dev",
|
||||
"test": "LOG_ENABLED=false ./packages/dev-infra/with-test-redis-and-db.sh pnpm --stream -r test",
|
||||
"test:withFlags": "LOG_ENABLED=false ./packages/dev-infra/with-test-redis-and-db.sh pnpm --stream -r test --",
|
||||
"precodegen": "pnpm run --recursive --stream --filter '@atproto/lex-cli...' build --force",
|
||||
"codegen": "pnpm run --sort --recursive --stream --parallel codegen",
|
||||
"build": "pnpm run --sort --recursive --stream '/^(build|build:.+)$/'",
|
||||
"dev": "NODE_ENV=development pnpm run --recursive --parallel --stream '/^(dev|dev:.+)$/'",
|
||||
"dev:tsc": "tsc --build tsconfig.json --preserveWatchOutput --watch",
|
||||
"test": "LOG_ENABLED=false ./packages/dev-infra/with-test-redis-and-db.sh pnpm test --stream --recursive",
|
||||
"test:withFlags": "pnpm run test --",
|
||||
"changeset": "changeset",
|
||||
"release": "pnpm build && changeset publish",
|
||||
"version-packages": "changeset version && git add ."
|
||||
@ -42,13 +43,17 @@
|
||||
"dotenv": "^16.0.3",
|
||||
"eslint": "^8.57.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-import-resolver-typescript": "^3.7.0",
|
||||
"eslint-plugin-import": "^2.31.0",
|
||||
"eslint-plugin-n": "^17.15.0",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"jest": "^28.1.2",
|
||||
"node-gyp": "^9.3.1",
|
||||
"pino-pretty": "^9.1.0",
|
||||
"prettier": "^3.2.5",
|
||||
"prettier-config-standard": "^7.0.0",
|
||||
"typescript": "^5.6.3"
|
||||
"prettier-plugin-tailwindcss": "^0.6.11",
|
||||
"typescript": "^5.8.2"
|
||||
},
|
||||
"workspaces": {
|
||||
"packages": [
|
||||
|
@ -1,5 +1,260 @@
|
||||
# @atproto/api
|
||||
|
||||
## 0.15.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- [#3715](https://github.com/bluesky-social/atproto/pull/3715) [`23462184d`](https://github.com/bluesky-social/atproto/commit/23462184dc941ba2fc3b4d054985a53715585020) Thanks [@knotbin](https://github.com/knotbin)! - run codegen for changes in lex-cli
|
||||
|
||||
## 0.14.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3714](https://github.com/bluesky-social/atproto/pull/3714) [`fc61662d7`](https://github.com/bluesky-social/atproto/commit/fc61662d7b88597f78383e37ee54264a8bb4b670) Thanks [@bnewbold](https://github.com/bnewbold)! - new lexicons: listHosts and getHostStatus endpoints under com.atproto.sync
|
||||
|
||||
- [#3741](https://github.com/bluesky-social/atproto/pull/3741) [`ca07871c4`](https://github.com/bluesky-social/atproto/commit/ca07871c487abc99fe7b7f8671aa8d98eb5dc4bb) Thanks [@rafaelbsky](https://github.com/rafaelbsky)! - Update reaction limit on chat lexicon
|
||||
|
||||
## 0.14.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3724](https://github.com/bluesky-social/atproto/pull/3724) [`8b7bf7e8f`](https://github.com/bluesky-social/atproto/commit/8b7bf7e8f0e5447c68633a87a2a3cff99f9e7e1c) Thanks [@haileyok](https://github.com/haileyok)! - Return `ProfileView` from `getSuggestedUsers` unspecced endpoint
|
||||
|
||||
## 0.14.20
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3713](https://github.com/bluesky-social/atproto/pull/3713) [`0e681d303`](https://github.com/bluesky-social/atproto/commit/0e681d3036fd0b35c6d2198638392051b2ce4c81) Thanks [@haileyok](https://github.com/haileyok)! - add `getSuggestedUsers` and `getSuggestedUsersSkeleton`
|
||||
|
||||
## 0.14.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3680](https://github.com/bluesky-social/atproto/pull/3680) [`efb302db1`](https://github.com/bluesky-social/atproto/commit/efb302db1a615b68795c725a22489dbd0400e011) Thanks [@haileyok](https://github.com/haileyok)! - Add unspecced `getSuggestedFeeds` and associated types
|
||||
|
||||
- Updated dependencies [[`4db923ca1`](https://github.com/bluesky-social/atproto/commit/4db923ca1c4fadd31d41c851933659e5186ee144)]:
|
||||
- @atproto/common-web@0.4.1
|
||||
- @atproto/lexicon@0.4.10
|
||||
- @atproto/xrpc@0.6.12
|
||||
|
||||
## 0.14.18
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3706](https://github.com/bluesky-social/atproto/pull/3706) [`04b6230cd`](https://github.com/bluesky-social/atproto/commit/04b6230cd2fbfe4a06cb00ab8ccb8e6c87c6c546) Thanks [@estrattonbailey](https://github.com/estrattonbailey)! - Return `StarterPackView` instead of `StarterPackViewBasic` from `getSuggestedStarterPacks`
|
||||
|
||||
## 0.14.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2519](https://github.com/bluesky-social/atproto/pull/2519) [`bdbd3c3e3`](https://github.com/bluesky-social/atproto/commit/bdbd3c3e3f8fe8476a3fecac73810554846c938f) Thanks [@dholms](https://github.com/dholms)! - Add com.atproto.admin.updateAccountSigningKey
|
||||
|
||||
- [#3673](https://github.com/bluesky-social/atproto/pull/3673) [`2b7efb6cb`](https://github.com/bluesky-social/atproto/commit/2b7efb6cb1c93a108570efdafe9d9ec3f1018dfa) Thanks [@haileyok](https://github.com/haileyok)! - Add `getTrends`, `getTrendsSkeleton`, and associated types
|
||||
|
||||
- [#3705](https://github.com/bluesky-social/atproto/pull/3705) [`b0a0f1484`](https://github.com/bluesky-social/atproto/commit/b0a0f1484378adeb5e2aa20b9b6ff2c2eca0f740) Thanks [@dholms](https://github.com/dholms)! - Fix codegent for com.atproto.admin.updateAccountSigningKey
|
||||
|
||||
- [#3677](https://github.com/bluesky-social/atproto/pull/3677) [`0eea698be`](https://github.com/bluesky-social/atproto/commit/0eea698bef76520ae4cc0e1f2efbb588a0459556) Thanks [@haileyok](https://github.com/haileyok)! - Add `getSuggestedStarterPacks`, `getSuggestedStarterPacksSkeleton`, and associated types
|
||||
|
||||
## 0.14.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3695](https://github.com/bluesky-social/atproto/pull/3695) [`652894308`](https://github.com/bluesky-social/atproto/commit/65289430806976ec13177ed9c9f0e883e8f9330c) Thanks [@rafaelbsky](https://github.com/rafaelbsky)! - Fix last reaction lexicon
|
||||
|
||||
## 0.14.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3692](https://github.com/bluesky-social/atproto/pull/3692) [`b4ab5011b`](https://github.com/bluesky-social/atproto/commit/b4ab5011bcc64f9f05122a8773806af8e0c13146) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Support more ways to instantiate an `Agent`
|
||||
|
||||
## 0.14.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3685](https://github.com/bluesky-social/atproto/pull/3685) [`9a05892f6`](https://github.com/bluesky-social/atproto/commit/9a05892f6fd405bf6bb96c9c8d2a9a89d5e94bc5) Thanks [@rafaelbsky](https://github.com/rafaelbsky)! - Update chat reaction lexicon
|
||||
|
||||
## 0.14.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3651](https://github.com/bluesky-social/atproto/pull/3651) [`076c2f987`](https://github.com/bluesky-social/atproto/commit/076c2f9872387217806624306e3af08878d1adcd) Thanks [@foysalit](https://github.com/foysalit)! - Add getSubjects endpoint to ozone for fetching detailed view of multiple subjects
|
||||
|
||||
## 0.14.12
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3674](https://github.com/bluesky-social/atproto/pull/3674) [`44f5c3639`](https://github.com/bluesky-social/atproto/commit/44f5c3639fcaf73865d21ec4b0c64baa641006c0) Thanks [@mozzius](https://github.com/mozzius)! - run codegen for changes in chat lexicon
|
||||
|
||||
## 0.14.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3670](https://github.com/bluesky-social/atproto/pull/3670) [`d87ffc7bf`](https://github.com/bluesky-social/atproto/commit/d87ffc7bfe3c1e792dc84a320544eb2e053d61ce) Thanks [@rafaelbsky](https://github.com/rafaelbsky)! - Add DM reactions lexicons
|
||||
|
||||
## 0.14.10
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`670b6b5de`](https://github.com/bluesky-social/atproto/commit/670b6b5de2bf91e6944761c98eb1126fb6a681ee)]:
|
||||
- @atproto/syntax@0.4.0
|
||||
- @atproto/lexicon@0.4.9
|
||||
- @atproto/xrpc@0.6.11
|
||||
|
||||
## 0.14.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3587](https://github.com/bluesky-social/atproto/pull/3587) [`18fbfa000`](https://github.com/bluesky-social/atproto/commit/18fbfa00057dda9ef4eba77d8b4e87994893c952) Thanks [@foysalit](https://github.com/foysalit)! - Add searchable handle and displayName to ozone team members
|
||||
|
||||
## 0.14.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3585](https://github.com/bluesky-social/atproto/pull/3585) [`38320191e`](https://github.com/bluesky-social/atproto/commit/38320191e559f8b928c6e951a9b4a6207240bfc1) Thanks [@dholms](https://github.com/dholms)! - Wrap sync v1.1 semantics. Add #sync event to subscribeRepos and deprecate #handle and #tombstone events
|
||||
|
||||
- [#3602](https://github.com/bluesky-social/atproto/pull/3602) [`6bcbb6d8c`](https://github.com/bluesky-social/atproto/commit/6bcbb6d8cd3696280935ff7892d8e191fd21fa49) Thanks [@devinivy](https://github.com/devinivy)! - Permit 100mb video embeds.
|
||||
|
||||
- [#2264](https://github.com/bluesky-social/atproto/pull/2264) [`dc6e4ecb0`](https://github.com/bluesky-social/atproto/commit/dc6e4ecb0e09bbf4bc7a79c6ac43fb6da4166200) Thanks [@bnewbold](https://github.com/bnewbold)! - new com.atproto.identity endpoints: resolveDid, resolveIdentity, refreshIdentity
|
||||
|
||||
- Updated dependencies [[`850e39843`](https://github.com/bluesky-social/atproto/commit/850e39843cb0ec9ea716675f7568c0c601f45e29)]:
|
||||
- @atproto/syntax@0.3.4
|
||||
- @atproto/lexicon@0.4.8
|
||||
- @atproto/xrpc@0.6.10
|
||||
|
||||
## 0.14.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3521](https://github.com/bluesky-social/atproto/pull/3521) [`99e2809ca`](https://github.com/bluesky-social/atproto/commit/99e2809ca2ebf70acaa10254f140a8dd0fad4305) Thanks [@bnewbold](https://github.com/bnewbold)! - Add `reasonTypes`, `subjectTypes`, and `subjectCollections` properties to labeler service records.
|
||||
|
||||
- [#2506](https://github.com/bluesky-social/atproto/pull/2506) [`27b0a7be1`](https://github.com/bluesky-social/atproto/commit/27b0a7be1ed1b6e098114791d84ec9dc844db552) Thanks [@bnewbold](https://github.com/bnewbold)! - remove some deprecated fields from com.atproto Lexicons
|
||||
|
||||
- [#3579](https://github.com/bluesky-social/atproto/pull/3579) [`11d8d21be`](https://github.com/bluesky-social/atproto/commit/11d8d21beac4b79ac44b930197761f9d08dbb492) Thanks [@estrattonbailey](https://github.com/estrattonbailey)! - Mirror new labeler service record properties on `labelerViewDetailed`.
|
||||
|
||||
## 0.14.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3576](https://github.com/bluesky-social/atproto/pull/3576) [`44f81f2eb`](https://github.com/bluesky-social/atproto/commit/44f81f2eb9229e21aec4472b3a05e855396dbec5) Thanks [@rafaelbsky](https://github.com/rafaelbsky)! - Add chat.bsky.convo.updateAllRead lex
|
||||
|
||||
## 0.14.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3449](https://github.com/bluesky-social/atproto/pull/3449) [`7e3678c08`](https://github.com/bluesky-social/atproto/commit/7e3678c089d2faa1a884a52a4fb80b8116c9854f) Thanks [@dholms](https://github.com/dholms)! - Updated subscribeRepo to include prev CIDs for operations and covering proofs for all ops.
|
||||
|
||||
- [#3572](https://github.com/bluesky-social/atproto/pull/3572) [`9b643fbec`](https://github.com/bluesky-social/atproto/commit/9b643fbecac30de5cfdb80d0671bfa55e9f4512a) Thanks [@foysalit](https://github.com/foysalit)! - Make comment property optional on ozone comment event
|
||||
|
||||
- [#3391](https://github.com/bluesky-social/atproto/pull/3391) [`6e382f67a`](https://github.com/bluesky-social/atproto/commit/6e382f67aa73532efadfea80ff96a27b526cb178) Thanks [@bnewbold](https://github.com/bnewbold)! - update sync lexicons for induction firehose
|
||||
|
||||
## 0.14.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3561](https://github.com/bluesky-social/atproto/pull/3561) [`b9cb049d9`](https://github.com/bluesky-social/atproto/commit/b9cb049d940cc706681142ef498238f74e2f539c) Thanks [@foysalit](https://github.com/foysalit)! - Add Divert event to the list of allowed ozone events
|
||||
|
||||
## 0.14.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3564](https://github.com/bluesky-social/atproto/pull/3564) [`22af31a89`](https://github.com/bluesky-social/atproto/commit/22af31a898476c5e317aea263af366bddda120d6) Thanks [@rafaelbsky](https://github.com/rafaelbsky)! - Update chat lexicons
|
||||
|
||||
- [#2378](https://github.com/bluesky-social/atproto/pull/2378) [`01874c4be`](https://github.com/bluesky-social/atproto/commit/01874c4be73a41ffb8fe28378f674949aa2c938f) Thanks [@bnewbold](https://github.com/bnewbold)! - set 'tid' and 'record-key' formats on com.atproto.sync and com.atproto.repo lexicons
|
||||
|
||||
## 0.14.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3524](https://github.com/bluesky-social/atproto/pull/3524) [`010f10c6f`](https://github.com/bluesky-social/atproto/commit/010f10c6f212f699ad42c0349a58bbcf2172e3cc) Thanks [@bnewbold](https://github.com/bnewbold)! - add com.atproto.sync.listReposByCollection Lexicon
|
||||
|
||||
- [#3546](https://github.com/bluesky-social/atproto/pull/3546) [`a9887f687`](https://github.com/bluesky-social/atproto/commit/a9887f68778c49932d92cfea98aadcfa4d5b62e9) Thanks [@foysalit](https://github.com/foysalit)! - Add reporter stats endpoint on ozone service
|
||||
|
||||
## 0.14.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3535](https://github.com/bluesky-social/atproto/pull/3535) [`ba5bb6e66`](https://github.com/bluesky-social/atproto/commit/ba5bb6e667fb58bbefd332844957de575e102ca3) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Fix bug preventing "logout()" calls from working.
|
||||
|
||||
## 0.14.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- [#2999](https://github.com/bluesky-social/atproto/pull/2999) [`c53d943c8`](https://github.com/bluesky-social/atproto/commit/c53d943c8be5b8886254e020970a68c0f745b14c) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Update Lexicon derived code to better reflect data typings. In particular, Lexicon derived interfaces will now explicitly include the `$type` property that can be present in the data.
|
||||
|
||||
- [#2999](https://github.com/bluesky-social/atproto/pull/2999) [`c53d943c8`](https://github.com/bluesky-social/atproto/commit/c53d943c8be5b8886254e020970a68c0f745b14c) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Helper functions (e.g. `NS.isRecord`) no longer casts the output value. Use `asPredicate(NS.validateRecord)` to create a predicate function that will ensure that an unknown value is indeed an `NS.Record`. The `isX` helper function's purpose is to discriminate between `$type`d values from unions.
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2999](https://github.com/bluesky-social/atproto/pull/2999) [`c53d943c8`](https://github.com/bluesky-social/atproto/commit/c53d943c8be5b8886254e020970a68c0f745b14c) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Fixes a bug that would clear interests prefs when updating hidden posts
|
||||
|
||||
- Updated dependencies [[`c53d943c8`](https://github.com/bluesky-social/atproto/commit/c53d943c8be5b8886254e020970a68c0f745b14c), [`c53d943c8`](https://github.com/bluesky-social/atproto/commit/c53d943c8be5b8886254e020970a68c0f745b14c), [`c53d943c8`](https://github.com/bluesky-social/atproto/commit/c53d943c8be5b8886254e020970a68c0f745b14c)]:
|
||||
- @atproto/syntax@0.3.3
|
||||
- @atproto/lexicon@0.4.7
|
||||
- @atproto/xrpc@0.6.9
|
||||
|
||||
## 0.13.35
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3495](https://github.com/bluesky-social/atproto/pull/3495) [`709a85b0b`](https://github.com/bluesky-social/atproto/commit/709a85b0b633b5483b7161db64b429c746239153) Thanks [@foysalit](https://github.com/foysalit)! - Add a priority score to ozone subjects
|
||||
|
||||
## 0.13.34
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3496](https://github.com/bluesky-social/atproto/pull/3496) [`dc8a7842e`](https://github.com/bluesky-social/atproto/commit/dc8a7842e67f5f3709e88310d2a60d384453b486) Thanks [@rafaelbsky](https://github.com/rafaelbsky)! - Add followerRule threadgate
|
||||
|
||||
- [#3501](https://github.com/bluesky-social/atproto/pull/3501) [`636951e47`](https://github.com/bluesky-social/atproto/commit/636951e4728cd52c2e5355eb93b47d7e869b67e9) Thanks [@estrattonbailey](https://github.com/estrattonbailey)! - Include `followerRule` as valid setting in `postInteractionSettings` pref
|
||||
|
||||
## 0.13.33
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3220](https://github.com/bluesky-social/atproto/pull/3220) [`61dc0d60e`](https://github.com/bluesky-social/atproto/commit/61dc0d60e19b88c6427a54c6d95a391b5f4da7bd) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Apply new linting rules regarding import order
|
||||
|
||||
- [#3494](https://github.com/bluesky-social/atproto/pull/3494) [`87ed907a6`](https://github.com/bluesky-social/atproto/commit/87ed907a6b96b408c02c9af819cec8380a453254) Thanks [@estrattonbailey](https://github.com/estrattonbailey)! - Add `setPostInteractionSettings` for configuring default interaction settings for creation of posts
|
||||
|
||||
- Updated dependencies [[`61dc0d60e`](https://github.com/bluesky-social/atproto/commit/61dc0d60e19b88c6427a54c6d95a391b5f4da7bd), [`8a30e0ed9`](https://github.com/bluesky-social/atproto/commit/8a30e0ed9239cb2037d54fb98e70e8b0cfbc3e39)]:
|
||||
- @atproto/common-web@0.4.0
|
||||
- @atproto/lexicon@0.4.6
|
||||
- @atproto/syntax@0.3.2
|
||||
- @atproto/xrpc@0.6.8
|
||||
|
||||
## 0.13.32
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3352](https://github.com/bluesky-social/atproto/pull/3352) [`7f52e6735`](https://github.com/bluesky-social/atproto/commit/7f52e67354906c3bf9830d7a2924ab58d6160905) Thanks [@foysalit](https://github.com/foysalit)! - Auto resolve appeals when taking down
|
||||
|
||||
- Updated dependencies [[`fb64d50ee`](https://github.com/bluesky-social/atproto/commit/fb64d50ee220316b9f1183e5c3259629489734c9)]:
|
||||
- @atproto/xrpc@0.6.7
|
||||
|
||||
## 0.13.31
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3441](https://github.com/bluesky-social/atproto/pull/3441) [`8c6c7813a`](https://github.com/bluesky-social/atproto/commit/8c6c7813a9c2110c8fe21acdca8f09554a1983ce) Thanks [@mozzius](https://github.com/mozzius)! - Allow passing `allowTakendown` to createSession
|
||||
|
||||
## 0.13.30
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3429](https://github.com/bluesky-social/atproto/pull/3429) [`e6e6aea38`](https://github.com/bluesky-social/atproto/commit/e6e6aea3814e3d0bb42a537f80d77947e85fa73f) Thanks [@rafaelbsky](https://github.com/rafaelbsky)! - add feedViewPost.threadContext defs
|
||||
|
||||
- [#3390](https://github.com/bluesky-social/atproto/pull/3390) [`c0a75d310`](https://github.com/bluesky-social/atproto/commit/c0a75d310aa92c067799a97d1acc5bd0543114c5) Thanks [@rafaelbsky](https://github.com/rafaelbsky)! - posts_with_video filter in getAuthorFeed
|
||||
|
||||
## 0.13.29
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3416](https://github.com/bluesky-social/atproto/pull/3416) [`50603b4f2`](https://github.com/bluesky-social/atproto/commit/50603b4f2ef08bd618730107ec164a57f27dcca6) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Update `tools.ozone.moderation.queryStatuses` lexicon
|
||||
|
||||
## 0.13.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3389](https://github.com/bluesky-social/atproto/pull/3389) [`cbf17066f`](https://github.com/bluesky-social/atproto/commit/cbf17066f314fbc7f2e943127ee4a9f589f8bec2) Thanks [@rafaelbsky](https://github.com/rafaelbsky)! - add feedgen content mode lexicon spec
|
||||
|
||||
## 0.13.27
|
||||
|
||||
### Patch Changes
|
||||
|
@ -85,7 +85,7 @@ are available:
|
||||
- [@atproto/oauth-client-node](https://www.npmjs.com/package/@atproto/oauth-client-node): for
|
||||
Node.js.
|
||||
- [@atproto/oauth-client](https://www.npmjs.com/package/@atproto/oauth-client):
|
||||
Lower lever; compatible with most JS engines.
|
||||
Lower level; compatible with most JS engines.
|
||||
|
||||
Every `@atproto/oauth-client-*` implementation has a different way to obtain an
|
||||
`OAuthSession` instance that can be used to instantiate an `Agent` (from
|
||||
|
@ -1,9 +0,0 @@
|
||||
import { BskyAgent } from '@atproto/api'
|
||||
|
||||
describe('Agent Benchmarks', () => {
|
||||
it('Creates new Agent instance 10 times', () => {
|
||||
for (let i = 0; i < 10; i++) {
|
||||
new BskyAgent({ service: 'https://bsky.social' })
|
||||
}
|
||||
})
|
||||
})
|
@ -5,4 +5,5 @@ module.exports = {
|
||||
testTimeout: 60000,
|
||||
setupFiles: ['<rootDir>/../../jest.setup.ts'],
|
||||
setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],
|
||||
moduleNameMapper: { '^(\\.\\.?\\/.+)\\.js$': ['$1.ts', '$1.js'] },
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@atproto/api",
|
||||
"version": "0.13.27",
|
||||
"version": "0.15.0",
|
||||
"license": "MIT",
|
||||
"description": "Client library for atproto and Bluesky",
|
||||
"keywords": [
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -309,6 +309,7 @@ export class CredentialSession implements SessionManager {
|
||||
identifier: opts.identifier,
|
||||
password: opts.password,
|
||||
authFactorToken: opts.authFactorToken,
|
||||
allowTakendown: opts.allowTakendown,
|
||||
})
|
||||
this.session = {
|
||||
accessJwt: res.data.accessJwt,
|
||||
@ -336,7 +337,7 @@ export class CredentialSession implements SessionManager {
|
||||
try {
|
||||
await this.server.deleteSession(undefined, {
|
||||
headers: {
|
||||
authorization: `Bearer ${this.session.accessJwt}`,
|
||||
authorization: `Bearer ${this.session.refreshJwt}`,
|
||||
},
|
||||
})
|
||||
} catch {
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,15 +1,26 @@
|
||||
/**
|
||||
* GENERATED CODE - DO NOT MODIFY
|
||||
*/
|
||||
import { ValidationResult, BlobRef } from '@atproto/lexicon'
|
||||
import { isObj, hasProp } from '../../../../util'
|
||||
import { lexicons } from '../../../../lexicons'
|
||||
import { type ValidationResult, BlobRef } from '@atproto/lexicon'
|
||||
import { CID } from 'multiformats/cid'
|
||||
import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs'
|
||||
import * as AppBskyGraphDefs from '../graph/defs'
|
||||
import * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef'
|
||||
import { validate as _validate } from '../../../../lexicons'
|
||||
import {
|
||||
type $Typed,
|
||||
is$typed as _is$typed,
|
||||
type OmitKey,
|
||||
} from '../../../../util'
|
||||
import type * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs.js'
|
||||
import type * as AppBskyGraphDefs from '../graph/defs.js'
|
||||
import type * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef.js'
|
||||
import type * as AppBskyFeedThreadgate from '../feed/threadgate.js'
|
||||
import type * as AppBskyFeedPostgate from '../feed/postgate.js'
|
||||
|
||||
const is$typed = _is$typed,
|
||||
validate = _validate
|
||||
const id = 'app.bsky.actor.defs'
|
||||
|
||||
export interface ProfileViewBasic {
|
||||
$type?: 'app.bsky.actor.defs#profileViewBasic'
|
||||
did: string
|
||||
handle: string
|
||||
displayName?: string
|
||||
@ -18,22 +29,21 @@ export interface ProfileViewBasic {
|
||||
viewer?: ViewerState
|
||||
labels?: ComAtprotoLabelDefs.Label[]
|
||||
createdAt?: string
|
||||
[k: string]: unknown
|
||||
verification?: VerificationState
|
||||
}
|
||||
|
||||
export function isProfileViewBasic(v: unknown): v is ProfileViewBasic {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#profileViewBasic'
|
||||
)
|
||||
const hashProfileViewBasic = 'profileViewBasic'
|
||||
|
||||
export function isProfileViewBasic<V>(v: V) {
|
||||
return is$typed(v, id, hashProfileViewBasic)
|
||||
}
|
||||
|
||||
export function validateProfileViewBasic(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#profileViewBasic', v)
|
||||
export function validateProfileViewBasic<V>(v: V) {
|
||||
return validate<ProfileViewBasic & V>(v, id, hashProfileViewBasic)
|
||||
}
|
||||
|
||||
export interface ProfileView {
|
||||
$type?: 'app.bsky.actor.defs#profileView'
|
||||
did: string
|
||||
handle: string
|
||||
displayName?: string
|
||||
@ -44,22 +54,21 @@ export interface ProfileView {
|
||||
createdAt?: string
|
||||
viewer?: ViewerState
|
||||
labels?: ComAtprotoLabelDefs.Label[]
|
||||
[k: string]: unknown
|
||||
verification?: VerificationState
|
||||
}
|
||||
|
||||
export function isProfileView(v: unknown): v is ProfileView {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#profileView'
|
||||
)
|
||||
const hashProfileView = 'profileView'
|
||||
|
||||
export function isProfileView<V>(v: V) {
|
||||
return is$typed(v, id, hashProfileView)
|
||||
}
|
||||
|
||||
export function validateProfileView(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#profileView', v)
|
||||
export function validateProfileView<V>(v: V) {
|
||||
return validate<ProfileView & V>(v, id, hashProfileView)
|
||||
}
|
||||
|
||||
export interface ProfileViewDetailed {
|
||||
$type?: 'app.bsky.actor.defs#profileViewDetailed'
|
||||
did: string
|
||||
handle: string
|
||||
displayName?: string
|
||||
@ -76,63 +85,56 @@ export interface ProfileViewDetailed {
|
||||
viewer?: ViewerState
|
||||
labels?: ComAtprotoLabelDefs.Label[]
|
||||
pinnedPost?: ComAtprotoRepoStrongRef.Main
|
||||
[k: string]: unknown
|
||||
verification?: VerificationState
|
||||
}
|
||||
|
||||
export function isProfileViewDetailed(v: unknown): v is ProfileViewDetailed {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#profileViewDetailed'
|
||||
)
|
||||
const hashProfileViewDetailed = 'profileViewDetailed'
|
||||
|
||||
export function isProfileViewDetailed<V>(v: V) {
|
||||
return is$typed(v, id, hashProfileViewDetailed)
|
||||
}
|
||||
|
||||
export function validateProfileViewDetailed(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#profileViewDetailed', v)
|
||||
export function validateProfileViewDetailed<V>(v: V) {
|
||||
return validate<ProfileViewDetailed & V>(v, id, hashProfileViewDetailed)
|
||||
}
|
||||
|
||||
export interface ProfileAssociated {
|
||||
$type?: 'app.bsky.actor.defs#profileAssociated'
|
||||
lists?: number
|
||||
feedgens?: number
|
||||
starterPacks?: number
|
||||
labeler?: boolean
|
||||
chat?: ProfileAssociatedChat
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isProfileAssociated(v: unknown): v is ProfileAssociated {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#profileAssociated'
|
||||
)
|
||||
const hashProfileAssociated = 'profileAssociated'
|
||||
|
||||
export function isProfileAssociated<V>(v: V) {
|
||||
return is$typed(v, id, hashProfileAssociated)
|
||||
}
|
||||
|
||||
export function validateProfileAssociated(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#profileAssociated', v)
|
||||
export function validateProfileAssociated<V>(v: V) {
|
||||
return validate<ProfileAssociated & V>(v, id, hashProfileAssociated)
|
||||
}
|
||||
|
||||
export interface ProfileAssociatedChat {
|
||||
$type?: 'app.bsky.actor.defs#profileAssociatedChat'
|
||||
allowIncoming: 'all' | 'none' | 'following' | (string & {})
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isProfileAssociatedChat(
|
||||
v: unknown,
|
||||
): v is ProfileAssociatedChat {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#profileAssociatedChat'
|
||||
)
|
||||
const hashProfileAssociatedChat = 'profileAssociatedChat'
|
||||
|
||||
export function isProfileAssociatedChat<V>(v: V) {
|
||||
return is$typed(v, id, hashProfileAssociatedChat)
|
||||
}
|
||||
|
||||
export function validateProfileAssociatedChat(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#profileAssociatedChat', v)
|
||||
export function validateProfileAssociatedChat<V>(v: V) {
|
||||
return validate<ProfileAssociatedChat & V>(v, id, hashProfileAssociatedChat)
|
||||
}
|
||||
|
||||
/** Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests. */
|
||||
export interface ViewerState {
|
||||
$type?: 'app.bsky.actor.defs#viewerState'
|
||||
muted?: boolean
|
||||
mutedByList?: AppBskyGraphDefs.ListViewBasic
|
||||
blockedBy?: boolean
|
||||
@ -141,168 +143,197 @@ export interface ViewerState {
|
||||
following?: string
|
||||
followedBy?: string
|
||||
knownFollowers?: KnownFollowers
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isViewerState(v: unknown): v is ViewerState {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#viewerState'
|
||||
)
|
||||
const hashViewerState = 'viewerState'
|
||||
|
||||
export function isViewerState<V>(v: V) {
|
||||
return is$typed(v, id, hashViewerState)
|
||||
}
|
||||
|
||||
export function validateViewerState(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#viewerState', v)
|
||||
export function validateViewerState<V>(v: V) {
|
||||
return validate<ViewerState & V>(v, id, hashViewerState)
|
||||
}
|
||||
|
||||
/** The subject's followers whom you also follow */
|
||||
export interface KnownFollowers {
|
||||
$type?: 'app.bsky.actor.defs#knownFollowers'
|
||||
count: number
|
||||
followers: ProfileViewBasic[]
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isKnownFollowers(v: unknown): v is KnownFollowers {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#knownFollowers'
|
||||
)
|
||||
const hashKnownFollowers = 'knownFollowers'
|
||||
|
||||
export function isKnownFollowers<V>(v: V) {
|
||||
return is$typed(v, id, hashKnownFollowers)
|
||||
}
|
||||
|
||||
export function validateKnownFollowers(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#knownFollowers', v)
|
||||
export function validateKnownFollowers<V>(v: V) {
|
||||
return validate<KnownFollowers & V>(v, id, hashKnownFollowers)
|
||||
}
|
||||
|
||||
/** Represents the verification information about the user this object is attached to. */
|
||||
export interface VerificationState {
|
||||
$type?: 'app.bsky.actor.defs#verificationState'
|
||||
/** All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included. */
|
||||
verifications: VerificationView[]
|
||||
/** The user's status as a verified account. */
|
||||
verifiedStatus: 'valid' | 'invalid' | 'none' | (string & {})
|
||||
/** The user's status as a trusted verifier. */
|
||||
trustedVerifierStatus: 'valid' | 'invalid' | 'none' | (string & {})
|
||||
}
|
||||
|
||||
const hashVerificationState = 'verificationState'
|
||||
|
||||
export function isVerificationState<V>(v: V) {
|
||||
return is$typed(v, id, hashVerificationState)
|
||||
}
|
||||
|
||||
export function validateVerificationState<V>(v: V) {
|
||||
return validate<VerificationState & V>(v, id, hashVerificationState)
|
||||
}
|
||||
|
||||
/** An individual verification for an associated subject. */
|
||||
export interface VerificationView {
|
||||
$type?: 'app.bsky.actor.defs#verificationView'
|
||||
/** The user who issued this verification. */
|
||||
issuer: string
|
||||
/** The AT-URI of the verification record. */
|
||||
uri: string
|
||||
/** True if the verification passes validation, otherwise false. */
|
||||
isValid: boolean
|
||||
/** Timestamp when the verification was created. */
|
||||
createdAt: string
|
||||
}
|
||||
|
||||
const hashVerificationView = 'verificationView'
|
||||
|
||||
export function isVerificationView<V>(v: V) {
|
||||
return is$typed(v, id, hashVerificationView)
|
||||
}
|
||||
|
||||
export function validateVerificationView<V>(v: V) {
|
||||
return validate<VerificationView & V>(v, id, hashVerificationView)
|
||||
}
|
||||
|
||||
export type Preferences = (
|
||||
| AdultContentPref
|
||||
| ContentLabelPref
|
||||
| SavedFeedsPref
|
||||
| SavedFeedsPrefV2
|
||||
| PersonalDetailsPref
|
||||
| FeedViewPref
|
||||
| ThreadViewPref
|
||||
| InterestsPref
|
||||
| MutedWordsPref
|
||||
| HiddenPostsPref
|
||||
| BskyAppStatePref
|
||||
| LabelersPref
|
||||
| { $type: string; [k: string]: unknown }
|
||||
| $Typed<AdultContentPref>
|
||||
| $Typed<ContentLabelPref>
|
||||
| $Typed<SavedFeedsPref>
|
||||
| $Typed<SavedFeedsPrefV2>
|
||||
| $Typed<PersonalDetailsPref>
|
||||
| $Typed<FeedViewPref>
|
||||
| $Typed<ThreadViewPref>
|
||||
| $Typed<InterestsPref>
|
||||
| $Typed<MutedWordsPref>
|
||||
| $Typed<HiddenPostsPref>
|
||||
| $Typed<BskyAppStatePref>
|
||||
| $Typed<LabelersPref>
|
||||
| $Typed<PostInteractionSettingsPref>
|
||||
| { $type: string }
|
||||
)[]
|
||||
|
||||
export interface AdultContentPref {
|
||||
$type?: 'app.bsky.actor.defs#adultContentPref'
|
||||
enabled: boolean
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isAdultContentPref(v: unknown): v is AdultContentPref {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#adultContentPref'
|
||||
)
|
||||
const hashAdultContentPref = 'adultContentPref'
|
||||
|
||||
export function isAdultContentPref<V>(v: V) {
|
||||
return is$typed(v, id, hashAdultContentPref)
|
||||
}
|
||||
|
||||
export function validateAdultContentPref(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#adultContentPref', v)
|
||||
export function validateAdultContentPref<V>(v: V) {
|
||||
return validate<AdultContentPref & V>(v, id, hashAdultContentPref)
|
||||
}
|
||||
|
||||
export interface ContentLabelPref {
|
||||
$type?: 'app.bsky.actor.defs#contentLabelPref'
|
||||
/** Which labeler does this preference apply to? If undefined, applies globally. */
|
||||
labelerDid?: string
|
||||
label: string
|
||||
visibility: 'ignore' | 'show' | 'warn' | 'hide' | (string & {})
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isContentLabelPref(v: unknown): v is ContentLabelPref {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#contentLabelPref'
|
||||
)
|
||||
const hashContentLabelPref = 'contentLabelPref'
|
||||
|
||||
export function isContentLabelPref<V>(v: V) {
|
||||
return is$typed(v, id, hashContentLabelPref)
|
||||
}
|
||||
|
||||
export function validateContentLabelPref(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#contentLabelPref', v)
|
||||
export function validateContentLabelPref<V>(v: V) {
|
||||
return validate<ContentLabelPref & V>(v, id, hashContentLabelPref)
|
||||
}
|
||||
|
||||
export interface SavedFeed {
|
||||
$type?: 'app.bsky.actor.defs#savedFeed'
|
||||
id: string
|
||||
type: 'feed' | 'list' | 'timeline' | (string & {})
|
||||
value: string
|
||||
pinned: boolean
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isSavedFeed(v: unknown): v is SavedFeed {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#savedFeed'
|
||||
)
|
||||
const hashSavedFeed = 'savedFeed'
|
||||
|
||||
export function isSavedFeed<V>(v: V) {
|
||||
return is$typed(v, id, hashSavedFeed)
|
||||
}
|
||||
|
||||
export function validateSavedFeed(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#savedFeed', v)
|
||||
export function validateSavedFeed<V>(v: V) {
|
||||
return validate<SavedFeed & V>(v, id, hashSavedFeed)
|
||||
}
|
||||
|
||||
export interface SavedFeedsPrefV2 {
|
||||
$type?: 'app.bsky.actor.defs#savedFeedsPrefV2'
|
||||
items: SavedFeed[]
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isSavedFeedsPrefV2(v: unknown): v is SavedFeedsPrefV2 {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#savedFeedsPrefV2'
|
||||
)
|
||||
const hashSavedFeedsPrefV2 = 'savedFeedsPrefV2'
|
||||
|
||||
export function isSavedFeedsPrefV2<V>(v: V) {
|
||||
return is$typed(v, id, hashSavedFeedsPrefV2)
|
||||
}
|
||||
|
||||
export function validateSavedFeedsPrefV2(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#savedFeedsPrefV2', v)
|
||||
export function validateSavedFeedsPrefV2<V>(v: V) {
|
||||
return validate<SavedFeedsPrefV2 & V>(v, id, hashSavedFeedsPrefV2)
|
||||
}
|
||||
|
||||
export interface SavedFeedsPref {
|
||||
$type?: 'app.bsky.actor.defs#savedFeedsPref'
|
||||
pinned: string[]
|
||||
saved: string[]
|
||||
timelineIndex?: number
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isSavedFeedsPref(v: unknown): v is SavedFeedsPref {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#savedFeedsPref'
|
||||
)
|
||||
const hashSavedFeedsPref = 'savedFeedsPref'
|
||||
|
||||
export function isSavedFeedsPref<V>(v: V) {
|
||||
return is$typed(v, id, hashSavedFeedsPref)
|
||||
}
|
||||
|
||||
export function validateSavedFeedsPref(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#savedFeedsPref', v)
|
||||
export function validateSavedFeedsPref<V>(v: V) {
|
||||
return validate<SavedFeedsPref & V>(v, id, hashSavedFeedsPref)
|
||||
}
|
||||
|
||||
export interface PersonalDetailsPref {
|
||||
$type?: 'app.bsky.actor.defs#personalDetailsPref'
|
||||
/** The birth date of account owner. */
|
||||
birthDate?: string
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isPersonalDetailsPref(v: unknown): v is PersonalDetailsPref {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#personalDetailsPref'
|
||||
)
|
||||
const hashPersonalDetailsPref = 'personalDetailsPref'
|
||||
|
||||
export function isPersonalDetailsPref<V>(v: V) {
|
||||
return is$typed(v, id, hashPersonalDetailsPref)
|
||||
}
|
||||
|
||||
export function validatePersonalDetailsPref(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#personalDetailsPref', v)
|
||||
export function validatePersonalDetailsPref<V>(v: V) {
|
||||
return validate<PersonalDetailsPref & V>(v, id, hashPersonalDetailsPref)
|
||||
}
|
||||
|
||||
export interface FeedViewPref {
|
||||
$type?: 'app.bsky.actor.defs#feedViewPref'
|
||||
/** The URI of the feed, or an identifier which describes the feed. */
|
||||
feed: string
|
||||
/** Hide replies in the feed. */
|
||||
@ -315,22 +346,20 @@ export interface FeedViewPref {
|
||||
hideReposts?: boolean
|
||||
/** Hide quote posts in the feed. */
|
||||
hideQuotePosts?: boolean
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isFeedViewPref(v: unknown): v is FeedViewPref {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#feedViewPref'
|
||||
)
|
||||
const hashFeedViewPref = 'feedViewPref'
|
||||
|
||||
export function isFeedViewPref<V>(v: V) {
|
||||
return is$typed(v, id, hashFeedViewPref)
|
||||
}
|
||||
|
||||
export function validateFeedViewPref(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#feedViewPref', v)
|
||||
export function validateFeedViewPref<V>(v: V) {
|
||||
return validate<FeedViewPref & V>(v, id, hashFeedViewPref)
|
||||
}
|
||||
|
||||
export interface ThreadViewPref {
|
||||
$type?: 'app.bsky.actor.defs#threadViewPref'
|
||||
/** Sorting mode for threads. */
|
||||
sort?:
|
||||
| 'oldest'
|
||||
@ -341,43 +370,39 @@ export interface ThreadViewPref {
|
||||
| (string & {})
|
||||
/** Show followed users at the top of all replies. */
|
||||
prioritizeFollowedUsers?: boolean
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isThreadViewPref(v: unknown): v is ThreadViewPref {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#threadViewPref'
|
||||
)
|
||||
const hashThreadViewPref = 'threadViewPref'
|
||||
|
||||
export function isThreadViewPref<V>(v: V) {
|
||||
return is$typed(v, id, hashThreadViewPref)
|
||||
}
|
||||
|
||||
export function validateThreadViewPref(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#threadViewPref', v)
|
||||
export function validateThreadViewPref<V>(v: V) {
|
||||
return validate<ThreadViewPref & V>(v, id, hashThreadViewPref)
|
||||
}
|
||||
|
||||
export interface InterestsPref {
|
||||
$type?: 'app.bsky.actor.defs#interestsPref'
|
||||
/** A list of tags which describe the account owner's interests gathered during onboarding. */
|
||||
tags: string[]
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isInterestsPref(v: unknown): v is InterestsPref {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#interestsPref'
|
||||
)
|
||||
const hashInterestsPref = 'interestsPref'
|
||||
|
||||
export function isInterestsPref<V>(v: V) {
|
||||
return is$typed(v, id, hashInterestsPref)
|
||||
}
|
||||
|
||||
export function validateInterestsPref(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#interestsPref', v)
|
||||
export function validateInterestsPref<V>(v: V) {
|
||||
return validate<InterestsPref & V>(v, id, hashInterestsPref)
|
||||
}
|
||||
|
||||
export type MutedWordTarget = 'content' | 'tag' | (string & {})
|
||||
|
||||
/** A word that the account owner has muted. */
|
||||
export interface MutedWord {
|
||||
$type?: 'app.bsky.actor.defs#mutedWord'
|
||||
id?: string
|
||||
/** The muted word itself. */
|
||||
value: string
|
||||
@ -387,148 +412,165 @@ export interface MutedWord {
|
||||
actorTarget: 'all' | 'exclude-following' | (string & {})
|
||||
/** The date and time at which the muted word will expire and no longer be applied. */
|
||||
expiresAt?: string
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isMutedWord(v: unknown): v is MutedWord {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#mutedWord'
|
||||
)
|
||||
const hashMutedWord = 'mutedWord'
|
||||
|
||||
export function isMutedWord<V>(v: V) {
|
||||
return is$typed(v, id, hashMutedWord)
|
||||
}
|
||||
|
||||
export function validateMutedWord(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#mutedWord', v)
|
||||
export function validateMutedWord<V>(v: V) {
|
||||
return validate<MutedWord & V>(v, id, hashMutedWord)
|
||||
}
|
||||
|
||||
export interface MutedWordsPref {
|
||||
$type?: 'app.bsky.actor.defs#mutedWordsPref'
|
||||
/** A list of words the account owner has muted. */
|
||||
items: MutedWord[]
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isMutedWordsPref(v: unknown): v is MutedWordsPref {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#mutedWordsPref'
|
||||
)
|
||||
const hashMutedWordsPref = 'mutedWordsPref'
|
||||
|
||||
export function isMutedWordsPref<V>(v: V) {
|
||||
return is$typed(v, id, hashMutedWordsPref)
|
||||
}
|
||||
|
||||
export function validateMutedWordsPref(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#mutedWordsPref', v)
|
||||
export function validateMutedWordsPref<V>(v: V) {
|
||||
return validate<MutedWordsPref & V>(v, id, hashMutedWordsPref)
|
||||
}
|
||||
|
||||
export interface HiddenPostsPref {
|
||||
$type?: 'app.bsky.actor.defs#hiddenPostsPref'
|
||||
/** A list of URIs of posts the account owner has hidden. */
|
||||
items: string[]
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isHiddenPostsPref(v: unknown): v is HiddenPostsPref {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#hiddenPostsPref'
|
||||
)
|
||||
const hashHiddenPostsPref = 'hiddenPostsPref'
|
||||
|
||||
export function isHiddenPostsPref<V>(v: V) {
|
||||
return is$typed(v, id, hashHiddenPostsPref)
|
||||
}
|
||||
|
||||
export function validateHiddenPostsPref(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#hiddenPostsPref', v)
|
||||
export function validateHiddenPostsPref<V>(v: V) {
|
||||
return validate<HiddenPostsPref & V>(v, id, hashHiddenPostsPref)
|
||||
}
|
||||
|
||||
export interface LabelersPref {
|
||||
$type?: 'app.bsky.actor.defs#labelersPref'
|
||||
labelers: LabelerPrefItem[]
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isLabelersPref(v: unknown): v is LabelersPref {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#labelersPref'
|
||||
)
|
||||
const hashLabelersPref = 'labelersPref'
|
||||
|
||||
export function isLabelersPref<V>(v: V) {
|
||||
return is$typed(v, id, hashLabelersPref)
|
||||
}
|
||||
|
||||
export function validateLabelersPref(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#labelersPref', v)
|
||||
export function validateLabelersPref<V>(v: V) {
|
||||
return validate<LabelersPref & V>(v, id, hashLabelersPref)
|
||||
}
|
||||
|
||||
export interface LabelerPrefItem {
|
||||
$type?: 'app.bsky.actor.defs#labelerPrefItem'
|
||||
did: string
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isLabelerPrefItem(v: unknown): v is LabelerPrefItem {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#labelerPrefItem'
|
||||
)
|
||||
const hashLabelerPrefItem = 'labelerPrefItem'
|
||||
|
||||
export function isLabelerPrefItem<V>(v: V) {
|
||||
return is$typed(v, id, hashLabelerPrefItem)
|
||||
}
|
||||
|
||||
export function validateLabelerPrefItem(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#labelerPrefItem', v)
|
||||
export function validateLabelerPrefItem<V>(v: V) {
|
||||
return validate<LabelerPrefItem & V>(v, id, hashLabelerPrefItem)
|
||||
}
|
||||
|
||||
/** A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this. */
|
||||
export interface BskyAppStatePref {
|
||||
$type?: 'app.bsky.actor.defs#bskyAppStatePref'
|
||||
activeProgressGuide?: BskyAppProgressGuide
|
||||
/** An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user. */
|
||||
queuedNudges?: string[]
|
||||
/** Storage for NUXs the user has encountered. */
|
||||
nuxs?: Nux[]
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isBskyAppStatePref(v: unknown): v is BskyAppStatePref {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#bskyAppStatePref'
|
||||
)
|
||||
const hashBskyAppStatePref = 'bskyAppStatePref'
|
||||
|
||||
export function isBskyAppStatePref<V>(v: V) {
|
||||
return is$typed(v, id, hashBskyAppStatePref)
|
||||
}
|
||||
|
||||
export function validateBskyAppStatePref(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#bskyAppStatePref', v)
|
||||
export function validateBskyAppStatePref<V>(v: V) {
|
||||
return validate<BskyAppStatePref & V>(v, id, hashBskyAppStatePref)
|
||||
}
|
||||
|
||||
/** If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress. */
|
||||
export interface BskyAppProgressGuide {
|
||||
$type?: 'app.bsky.actor.defs#bskyAppProgressGuide'
|
||||
guide: string
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isBskyAppProgressGuide(v: unknown): v is BskyAppProgressGuide {
|
||||
return (
|
||||
isObj(v) &&
|
||||
hasProp(v, '$type') &&
|
||||
v.$type === 'app.bsky.actor.defs#bskyAppProgressGuide'
|
||||
)
|
||||
const hashBskyAppProgressGuide = 'bskyAppProgressGuide'
|
||||
|
||||
export function isBskyAppProgressGuide<V>(v: V) {
|
||||
return is$typed(v, id, hashBskyAppProgressGuide)
|
||||
}
|
||||
|
||||
export function validateBskyAppProgressGuide(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#bskyAppProgressGuide', v)
|
||||
export function validateBskyAppProgressGuide<V>(v: V) {
|
||||
return validate<BskyAppProgressGuide & V>(v, id, hashBskyAppProgressGuide)
|
||||
}
|
||||
|
||||
/** A new user experiences (NUX) storage object */
|
||||
export interface Nux {
|
||||
$type?: 'app.bsky.actor.defs#nux'
|
||||
id: string
|
||||
completed: boolean
|
||||
/** Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters. */
|
||||
data?: string
|
||||
/** The date and time at which the NUX will expire and should be considered completed. */
|
||||
expiresAt?: string
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export function isNux(v: unknown): v is Nux {
|
||||
return (
|
||||
isObj(v) && hasProp(v, '$type') && v.$type === 'app.bsky.actor.defs#nux'
|
||||
const hashNux = 'nux'
|
||||
|
||||
export function isNux<V>(v: V) {
|
||||
return is$typed(v, id, hashNux)
|
||||
}
|
||||
|
||||
export function validateNux<V>(v: V) {
|
||||
return validate<Nux & V>(v, id, hashNux)
|
||||
}
|
||||
|
||||
/** 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. */
|
||||
export interface PostInteractionSettingsPref {
|
||||
$type?: 'app.bsky.actor.defs#postInteractionSettingsPref'
|
||||
/** 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. */
|
||||
threadgateAllowRules?: (
|
||||
| $Typed<AppBskyFeedThreadgate.MentionRule>
|
||||
| $Typed<AppBskyFeedThreadgate.FollowerRule>
|
||||
| $Typed<AppBskyFeedThreadgate.FollowingRule>
|
||||
| $Typed<AppBskyFeedThreadgate.ListRule>
|
||||
| { $type: string }
|
||||
)[]
|
||||
/** 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. */
|
||||
postgateEmbeddingRules?: (
|
||||
| $Typed<AppBskyFeedPostgate.DisableRule>
|
||||
| { $type: string }
|
||||
)[]
|
||||
}
|
||||
|
||||
const hashPostInteractionSettingsPref = 'postInteractionSettingsPref'
|
||||
|
||||
export function isPostInteractionSettingsPref<V>(v: V) {
|
||||
return is$typed(v, id, hashPostInteractionSettingsPref)
|
||||
}
|
||||
|
||||
export function validatePostInteractionSettingsPref<V>(v: V) {
|
||||
return validate<PostInteractionSettingsPref & V>(
|
||||
v,
|
||||
id,
|
||||
hashPostInteractionSettingsPref,
|
||||
)
|
||||
}
|
||||
|
||||
export function validateNux(v: unknown): ValidationResult {
|
||||
return lexicons.validate('app.bsky.actor.defs#nux', v)
|
||||
}
|
||||
|
@ -2,11 +2,19 @@
|
||||
* GENERATED CODE - DO NOT MODIFY
|
||||
*/
|
||||
import { HeadersMap, XRPCError } from '@atproto/xrpc'
|
||||
import { ValidationResult, BlobRef } from '@atproto/lexicon'
|
||||
import { isObj, hasProp } from '../../../../util'
|
||||
import { lexicons } from '../../../../lexicons'
|
||||
import { type ValidationResult, BlobRef } from '@atproto/lexicon'
|
||||
import { CID } from 'multiformats/cid'
|
||||
import * as AppBskyActorDefs from './defs'
|
||||
import { validate as _validate } from '../../../../lexicons'
|
||||
import {
|
||||
type $Typed,
|
||||
is$typed as _is$typed,
|
||||
type OmitKey,
|
||||
} from '../../../../util'
|
||||
import type * as AppBskyActorDefs from './defs.js'
|
||||
|
||||
const is$typed = _is$typed,
|
||||
validate = _validate
|
||||
const id = 'app.bsky.actor.getPreferences'
|
||||
|
||||
export interface QueryParams {}
|
||||
|
||||
@ -14,7 +22,6 @@ export type InputSchema = undefined
|
||||
|
||||
export interface OutputSchema {
|
||||
preferences: AppBskyActorDefs.Preferences
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export interface CallOptions {
|
||||
|
@ -2,11 +2,19 @@
|
||||
* GENERATED CODE - DO NOT MODIFY
|
||||
*/
|
||||
import { HeadersMap, XRPCError } from '@atproto/xrpc'
|
||||
import { ValidationResult, BlobRef } from '@atproto/lexicon'
|
||||
import { isObj, hasProp } from '../../../../util'
|
||||
import { lexicons } from '../../../../lexicons'
|
||||
import { type ValidationResult, BlobRef } from '@atproto/lexicon'
|
||||
import { CID } from 'multiformats/cid'
|
||||
import * as AppBskyActorDefs from './defs'
|
||||
import { validate as _validate } from '../../../../lexicons'
|
||||
import {
|
||||
type $Typed,
|
||||
is$typed as _is$typed,
|
||||
type OmitKey,
|
||||
} from '../../../../util'
|
||||
import type * as AppBskyActorDefs from './defs.js'
|
||||
|
||||
const is$typed = _is$typed,
|
||||
validate = _validate
|
||||
const id = 'app.bsky.actor.getProfile'
|
||||
|
||||
export interface QueryParams {
|
||||
/** Handle or DID of account to fetch profile of. */
|
||||
|
@ -2,11 +2,19 @@
|
||||
* GENERATED CODE - DO NOT MODIFY
|
||||
*/
|
||||
import { HeadersMap, XRPCError } from '@atproto/xrpc'
|
||||
import { ValidationResult, BlobRef } from '@atproto/lexicon'
|
||||
import { isObj, hasProp } from '../../../../util'
|
||||
import { lexicons } from '../../../../lexicons'
|
||||
import { type ValidationResult, BlobRef } from '@atproto/lexicon'
|
||||
import { CID } from 'multiformats/cid'
|
||||
import * as AppBskyActorDefs from './defs'
|
||||
import { validate as _validate } from '../../../../lexicons'
|
||||
import {
|
||||
type $Typed,
|
||||
is$typed as _is$typed,
|
||||
type OmitKey,
|
||||
} from '../../../../util'
|
||||
import type * as AppBskyActorDefs from './defs.js'
|
||||
|
||||
const is$typed = _is$typed,
|
||||
validate = _validate
|
||||
const id = 'app.bsky.actor.getProfiles'
|
||||
|
||||
export interface QueryParams {
|
||||
actors: string[]
|
||||
@ -16,7 +24,6 @@ export type InputSchema = undefined
|
||||
|
||||
export interface OutputSchema {
|
||||
profiles: AppBskyActorDefs.ProfileViewDetailed[]
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export interface CallOptions {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user